{
  "contractName": "GameChannel",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "disputes",
      "outputs": [
        {
          "components": [
            {
              "name": "playerNumber",
              "type": "uint256"
            },
            {
              "name": "randomRanges",
              "type": "uint256[2][]"
            },
            {
              "name": "seed",
              "type": "bytes32"
            }
          ],
          "name": "disputeGameData",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "refererReward",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "platform",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "channels",
      "outputs": [
        {
          "name": "state",
          "type": "uint8"
        },
        {
          "name": "player",
          "type": "address"
        },
        {
          "name": "bankroller",
          "type": "address"
        },
        {
          "name": "playerBalance",
          "type": "uint256"
        },
        {
          "name": "bankrollerBalance",
          "type": "uint256"
        },
        {
          "name": "totalBet",
          "type": "uint256"
        },
        {
          "name": "session",
          "type": "uint256"
        },
        {
          "name": "endBlock",
          "type": "uint256"
        },
        {
          "name": "RSAHash",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "playerNumber",
              "type": "uint256"
            },
            {
              "name": "randomRanges",
              "type": "uint256[2][]"
            },
            {
              "name": "seed",
              "type": "bytes32"
            }
          ],
          "name": "_gameData",
          "type": "tuple"
        }
      ],
      "name": "hashGameData",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minBet",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "gameDevReward",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "signidice",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "engine",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "developer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "safeTime",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "playerNumber",
              "type": "uint256"
            },
            {
              "name": "randomRanges",
              "type": "uint256[2][]"
            },
            {
              "name": "seed",
              "type": "bytes32"
            }
          ],
          "name": "_gameData",
          "type": "tuple"
        },
        {
          "name": "_bets",
          "type": "uint256[]"
        }
      ],
      "name": "checkGameData",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "bankrollReward",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "platformReward",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_engine",
          "type": "address"
        },
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_platform",
          "type": "address"
        },
        {
          "name": "_signidice",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "action",
          "type": "string"
        },
        {
          "indexed": false,
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "logChannel",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        },
        {
          "name": "_player",
          "type": "address"
        },
        {
          "name": "_bankroller",
          "type": "address"
        },
        {
          "name": "_playerBalance",
          "type": "uint256"
        },
        {
          "name": "_bankrollerBalance",
          "type": "uint256"
        },
        {
          "name": "_openingBlock",
          "type": "uint256"
        },
        {
          "name": "_N",
          "type": "bytes"
        },
        {
          "name": "_E",
          "type": "bytes"
        },
        {
          "name": "_signature",
          "type": "bytes"
        }
      ],
      "name": "openChannel",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        },
        {
          "name": "_playerBalance",
          "type": "uint256"
        },
        {
          "name": "_bankrollerBalance",
          "type": "uint256"
        },
        {
          "name": "_totalBet",
          "type": "uint256"
        },
        {
          "name": "_session",
          "type": "uint256"
        },
        {
          "name": "_signature",
          "type": "bytes"
        }
      ],
      "name": "updateChannel",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        },
        {
          "name": "_playerBalance",
          "type": "uint256"
        },
        {
          "name": "_bankrollerBalance",
          "type": "uint256"
        },
        {
          "name": "_totalBet",
          "type": "uint256"
        },
        {
          "name": "_session",
          "type": "uint256"
        },
        {
          "name": "_sign",
          "type": "bytes"
        }
      ],
      "name": "closeByConsent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        }
      ],
      "name": "closeByTime",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        },
        {
          "name": "_session",
          "type": "uint256"
        },
        {
          "name": "_disputeBets",
          "type": "uint256[]"
        },
        {
          "components": [
            {
              "name": "playerNumber",
              "type": "uint256"
            },
            {
              "name": "randomRanges",
              "type": "uint256[2][]"
            },
            {
              "name": "seed",
              "type": "bytes32"
            }
          ],
          "name": "_gameData",
          "type": "tuple"
        },
        {
          "name": "_signature",
          "type": "bytes"
        }
      ],
      "name": "openDispute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "bytes32"
        },
        {
          "name": "_N",
          "type": "bytes"
        },
        {
          "name": "_E",
          "type": "bytes"
        },
        {
          "name": "_rsaSignature",
          "type": "bytes"
        }
      ],
      "name": "resolveDispute",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526078600a553480156200001657600080fd5b506040516080806200418c8339810180604052620000389190810190620000a1565b60008054600160a060020a03958616600160a060020a03199182161790915560018054948616948216949094179093556002805492851692841692909217909155600380549190931691161790556200012a565b60006200009a825162000117565b9392505050565b60008060008060808587031215620000b857600080fd5b6000620000c687876200008c565b9450506020620000d9878288016200008c565b9350506040620000ec878288016200008c565b9250506060620000ff878288016200008c565b91505092959194509250565b600160a060020a031690565b600062000124826200010b565b92915050565b614052806200013a6000396000f3006080604052600436106101035763ffffffff60e060020a60003504166311be1997811461010857806315196f2c1461013e57806327fb062b1461016057806333f278e6146101825780634bde38c8146101a257806364629522146101c4578063698b2fc5146101e45780637a7ebd7b146102045780638be2c0c3146102395780639619367d146102595780639d76a1491461026e578063a09dd3af1461028e578063a12fa955146102a3578063c9d4623f146102b8578063ca4b208b146102cd578063dd754511146102ef578063e635844714610304578063ed78462614610331578063f303ea3814610351578063fc0c546a14610366578063fe6551b61461037b575b600080fd5b34801561011457600080fd5b50610128610123366004612e3f565b610390565b6040516101359190613e32565b60405180910390f35b34801561014a57600080fd5b5061015361044c565b6040516101359190613b1f565b34801561016c57600080fd5b5061018061017b366004613012565b610452565b005b34801561018e57600080fd5b5061018061019d3660046130cf565b610967565b3480156101ae57600080fd5b506101b7610d34565b6040516101359190613b9f565b3480156101d057600080fd5b506101806101df366004612f69565b610d43565b3480156101f057600080fd5b506101806101ff3660046130cf565b61117c565b34801561021057600080fd5b5061022461021f366004612e3f565b6115d5565b60405161013599989796959493929190613bad565b34801561024557600080fd5b5061015361025436600461316e565b611627565b34801561026557600080fd5b5061015361170a565b34801561027a57600080fd5b50610180610289366004612e5d565b611710565b34801561029a57600080fd5b50610153611fea565b3480156102af57600080fd5b506101b7611ff0565b3480156102c457600080fd5b506101b7611fff565b3480156102d957600080fd5b506102e261200e565b6040516101359190613ac0565b3480156102fb57600080fd5b5061015361201d565b34801561031057600080fd5b5061032461031f3660046131a3565b612023565b6040516101359190613b11565b34801561033d57600080fd5b5061018061034c366004612e3f565b61208a565b34801561035d57600080fd5b50610153612116565b34801561037257600080fd5b506101b761211c565b34801561038757600080fd5b5061015361212b565b600c60205280600052604060002060009150905080600101606060405190810160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156104335760008481526020902060408051808201918290529160028581029091019182845b81548152602001906001019080831161040c575050505050815260200190600101906103e3565b5050509082525060029190910154602090910152905081565b60075481565b600080600061045f6128ce565b6000898152600b602052604090819020815161012081019092528054829060ff16600381111561048b57fe5b600381111561049657fe5b81528154600160a060020a036101009182900481166020808501919091526001850154821660408501526002850154606085015260038501546080850152600485015460a0850152600585015460c0850152600685015460e0850152600790940154919092015290820151339116148061052557508060400151600160a060020a031633600160a060020a0316145b151561054f5760405160e560020a62461bcd02815260040161054690613c63565b60405180910390fd5b60e081015143106105755760405160e560020a62461bcd02815260040161054690613e02565b60018151600381111561058457fe5b148061059c575060038151600381111561059a57fe5b145b15156105bd5760405160e560020a62461bcd02815260040161054690613dd2565b60008a8152600b6020526040902060058101549095506105e490600163ffffffff61213116565b89146106055760405160e560020a62461bcd02815260040161054690613c33565b61060e87611627565b935073__Utils_________________________________6397aba7f98b8b8b88604051602001808560001916600019168152602001848152602001838051906020019060200280838360005b8381101561067257818101518382015260200161065a565b505050509190910192835250506040805180830381526020928301918290528051909550909350839250908401908083835b602083106106c35780518252601f1990920191602091820191016106a4565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822063ffffffff861660e060020a02835261070d945092508b916004019050613b2d565b60206040518083038186803b15801561072557600080fd5b505af4158015610739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061075d9190810190612da3565b8554909350600160a060020a0380851661010090920416146107945760405160e560020a62461bcd02815260040161054690613d42565b61079e8789612023565b15156107bf5760405160e560020a62461bcd02815260040161054690613cf2565b60038501546000546040517fcaa824f5000000000000000000000000000000000000000000000000000000008152600160a060020a039091169063caa824f59061080f908b908d90600401613e43565b602060405180830381600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108619190810190613202565b11156108825760405160e560020a62461bcd02815260040161054690613cd2565b600a54600686015461089a904363ffffffff61214b16565b10156108ba57600a546108b490439063ffffffff61213116565b60068601555b60408051808201825289815260208082018a905260008d8152600c82529290922081518051929550859391926108f392849201906128ee565b506020828101518051600184019081558183015180519293919261091d9260028701920190612939565b50604091820151600290910155875460ff1916600317885551600080516020613ff9833981519152925061095391508c90613c73565b60405180910390a150505050505050505050565b6000868152600b602052604080822081516101208101909252805483929190829060ff16600381111561099657fe5b60038111156109a157fe5b81528154600160a060020a036101009182900481166020808501919091526001850154821660408501526002850154606085015260038501546080850152600485015460a0850152600585015460c0850152600685015460e08501526007909401549190920152908201513391161480610a3057508060400151600160a060020a031633600160a060020a0316145b1515610a515760405160e560020a62461bcd02815260040161054690613c63565b60e08101514310610a775760405160e560020a62461bcd02815260040161054690613e02565b600181516003811115610a8657fe5b1480610a9e5750600381516003811115610a9c57fe5b145b1515610abf5760405160e560020a62461bcd02815260040161054690613dd2565b6000898152600b602090815260409182902082518083018d90528084018c9052606081018b9052608081018a905260a081018990527f010000000000000000000000000000000000000000000000000000000000000060c0820152835160a181830301815260c190910193849052805191965073__Utils_________________________________936397aba7f993919290918291908401908083835b60208310610b7b5780518252601f199092019160209182019101610b5c565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822063ffffffff861660e060020a028352610bc59450925089916004019050613b2d565b60206040518083038186803b158015610bdd57600080fd5b505af4158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c159190810190612da3565b9150610c328360030154846002015461213190919063ffffffff16565b610c42898963ffffffff61213116565b14610c625760405160e560020a62461bcd02815260040161054690613e22565b600160a060020a038216331415610c8e5760405160e560020a62461bcd02815260040161054690613cb2565b8254600160a060020a03838116610100909204161480610cbd57506001830154600160a060020a038381169116145b1515610cde5760405160e560020a62461bcd02815260040161054690613c92565b60028301889055600383018790556005830185905560048301869055604051600080516020613ff983398151915290610d18908b90613d32565b60405180910390a1610d298961215d565b505050505050505050565b600254600160a060020a031681565b6000848152600b60209081526040808320600c8352818420825160608101845260018201805482526002830180548651818902810189019097528087529497939693958695610e0095858101939190889084015b82821015610de75760008481526020902060408051808201918290529160028581029091019182845b815481526020019060010190808311610dc057505050505081526020019060010190610d97565b5050509082525060029190910154602090910152611627565b915087610e1b6001866005015461213190919063ffffffff16565b84600001846040516020018085600019166000191681526020018481526020018380548015610e6957602002820191906000526020600020905b815481526020019060010190808311610e55575b5050918252506040805180830381526020928301918290528051909550909350839250908401908083835b60208310610eb35780518252601f199092019160209182019101610e94565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120935060039250610eea915050565b845460ff166003811115610efa57fe5b14610f1a5760405160e560020a62461bcd02815260040161054690613c53565b6001840154600160a060020a03163314610f495760405160e560020a62461bcd02815260040161054690613c63565b60078401546040518851899190819060208401908083835b60208310610f805780518252601f199092019160209182019101610f61565b51815160209384036101000a60001901801990921691161790526040519190930181900381208c519095508c945090928392508401908083835b60208310610fd95780518252601f199092019160209182019101610fba565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208282019790975281840196909652825180820384018152606090910192839052805190959294508493509185019190508083835b602083106110535780518252601f199092019160209182019101611034565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415156110a65760405160e560020a62461bcd02815260040161054690613d02565b6003546040517fc658da51000000000000000000000000000000000000000000000000000000008152600160a060020a039091169063c658da51906110f59084908b908b908b90600401613b4d565b602060405180830381600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111479190810190612e21565b15156111685760405160e560020a62461bcd02815260040161054690613d82565b61117288866123d7565b5050505050505050565b6000868152600b602052604080822081516101208101909252805483929190829060ff1660038111156111ab57fe5b60038111156111b657fe5b81528154600160a060020a036101009182900481166020808501919091526001850154821660408501526002850154606085015260038501546080850152600485015460a0850152600585015460c0850152600685015460e0850152600790940154919092015290820151339116148061124557508060400151600160a060020a031633600160a060020a0316145b15156112665760405160e560020a62461bcd02815260040161054690613c63565b60e0810151431061128c5760405160e560020a62461bcd02815260040161054690613e02565b60018151600381111561129b57fe5b14806112b357506003815160038111156112b157fe5b145b15156112d45760405160e560020a62461bcd02815260040161054690613dd2565b6000898152600b602090815260409182902082518083018d90528084018c9052606081018b9052608081018a905260a08082018a90528451808303909101815260c090910193849052805191965073__Utils_________________________________936397aba7f993919290918291908401908083835b6020831061136b5780518252601f19909201916020918201910161134c565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822063ffffffff861660e060020a0283526113b59450925089916004019050613b2d565b60206040518083038186803b1580156113cd57600080fd5b505af41580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114059190810190612da3565b915084836005015410151561142f5760405160e560020a62461bcd02815260040161054690613d52565b600160a060020a03821633141561145b5760405160e560020a62461bcd02815260040161054690613dc2565b8254600160a060020a0383811661010090920416148061148a57506001830154600160a060020a038381169116145b15156114ab5760405160e560020a62461bcd02815260040161054690613c43565b600383015460028401546114c49163ffffffff61213116565b6114d4898963ffffffff61213116565b146114f45760405160e560020a62461bcd02815260040161054690613df2565b600a54600684015461150c904363ffffffff61214b16565b101561152c57600a5461152690439063ffffffff61213116565b60068401555b6005830185905560028301889055600380840188905560048401879055835460ff16600381111561155957fe5b14156115a757825460ff191660011783556000898152600c6020526040812090611583828261298f565b6000600183018181559061159a60028501826129ad565b6002820160009055505050505b600080516020613ff9833981519152896040516115c49190613d22565b60405180910390a1610d29896124f3565b600b602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460079097015460ff871697610100909704600160a060020a03908116979616959089565b6000816000015182602001518360400151604051602001808481526020018380516000925b8184101561168e57602080850284010151604080838360005b8381101561167d578181015183820152602001611665565b50505050905001926001019261164c565b9485525050604080518085038152602094850191829052805190965090945084938601925090508083835b602083106116d85780518252601f1990920191602091820191016116b9565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b60095481565b600061171a6129ce565b73__Utils_________________________________6397aba7f98c8c8c8c8c8c8c8c60405160200180896000191660001916815260200188600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140187600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140186815260200185815260200184815260200183805190602001908083835b602083106117dc5780518252601f1990920191602091820191016117bd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106118245780518252601f199092019160209182019101611805565b6001836020036101000a038019825116818451168082178552505050505050905001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061188e5780518252601f19909201916020918201910161186f565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822063ffffffff861660e060020a0283526118d89450925088916004019050613b2d565b60206040518083038186803b1580156118f057600080fd5b505af4158015611904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119289190810190612da3565b91506000808c8152600b602052604090205460ff16600381111561194857fe5b146119685760405160e560020a62461bcd02815260040161054690613d92565b4361197a87601463ffffffff61213116565b101561199b5760405160e560020a62461bcd02815260040161054690613d12565b6002546040517f155259910000000000000000000000000000000000000000000000000000000081528991600160a060020a0316906315525991906119e4908e90600401613ac0565b602060405180830381600087803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a369190810190613202565b1015611a575760405160e560020a62461bcd02815260040161054690613ce2565b6002546040517f30ccebb5000000000000000000000000000000000000000000000000000000008152600160a060020a03909116906330ccebb590611aa0903090600401613b9f565b602060405180830381600087803b158015611aba57600080fd5b505af1158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af29190810190612e21565b1515611b135760405160e560020a62461bcd02815260040161054690613c53565b89600160a060020a031682600160a060020a03161480611b44575088600160a060020a031682600160a060020a0316145b8015611b59575033600160a060020a03831614155b1515611b7a5760405160e560020a62461bcd02815260040161054690613cb2565b33600160a060020a038b161480611b99575033600160a060020a038a16145b1515611bba5760405160e560020a62461bcd02815260040161054690613c63565b6001546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03909116906323b872dd90611c07908d9030908d90600401613ace565b602060405180830381600087803b158015611c2157600080fd5b505af1158015611c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c599190810190612e21565b1515611c7a5760405160e560020a62461bcd02815260040161054690613e12565b6001546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03909116906323b872dd90611cc7908c9030908c90600401613ace565b602060405180830381600087803b158015611ce157600080fd5b505af1158015611cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d199190810190612e21565b1515611d3a5760405160e560020a62461bcd02815260040161054690613de2565b60408051610120810190915280600181526020018b600160a060020a031681526020018a600160a060020a031681526020018981526020018881526020016000815260200160008152602001611d9a60964361213190919063ffffffff16565b8152602001866040518082805190602001908083835b60208310611dcf5780518252601f199092019160209182019101611db0565b51815160209384036101000a60001901801990921691161790526040519190930181900381208b519095508b945090928392508401908083835b60208310611e285780518252601f199092019160209182019101611e09565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208282019790975281840196909652825180820384018152606090910192839052805190959294508493509185019190508083835b60208310611ea25780518252601f199092019160209182019101611e83565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916815250905080600b60008d6000191660001916815260200190815260200160002060008201518160000160006101000a81548160ff02191690836003811115611f1857fe5b02179055506020820151815474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03928316810291909117835560408085015160018501805473ffffffffffffffffffffffffffffffffffffffff19169190941617909255606084015160028401556080840151600384015560a0840151600484015560c0840151600584015560e084015160068401559092015160079091015551600080516020613ff983398151915290611fd5908d90613db2565b60405180910390a15050505050505050505050565b60045481565b600354600160a060020a031681565b600054600160a060020a031681565b600854600160a060020a031681565b600a5481565b6000600183602001515114158061203b575082516000115b806120485750825161ffff105b80612073575068056bc75e2d6310000082600081518110151561206757fe5b90602001906020020151115b1561208057506000612084565b5060015b92915050565b6000818152600b60205260409020600681015443116120be5760405160e560020a62461bcd02815260040161054690613da2565b6003815460ff1660038111156120d057fe5b14156120e4576120df82612559565b612112565b600080516020613ff9833981519152826040516121019190613d72565b60405180910390a16121128261215d565b5050565b60055481565b600154600160a060020a031681565b60065481565b60008282018381101561214057fe5b8091505b5092915050565b60008282111561215757fe5b50900390565b6000818152600b60205260408120600481015490919081908190819061219e906103e89061219290601463ffffffff61265a16565b9063ffffffff61268516565b93506121ba60646121926005548761265a90919063ffffffff16565b9250846002015491506000905084600301548411156121ea576121e3828563ffffffff61214b16565b9150612214565b6122118461220585886003015461213190919063ffffffff16565b9063ffffffff61214b16565b90505b845461222e906101009004600160a060020a03168561269c565b60018054908601546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283169263a9059cbb9261227f929116908590600401613af6565b600060405180830381600087803b15801561229957600080fd5b505af11580156122ad573d6000803e3d6000fd5b505060015487546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03928316945063a9059cbb935061230692610100909204909116908690600401613af6565b600060405180830381600087803b15801561232057600080fd5b505af1158015612334573d6000803e3d6000fd5b5050865460ff1916600290811780895560009189018290556003808a019290925590925060ff1690508181111561236757fe5b14156123aa576000868152600c6020526040812090612386828261298f565b6000600183018181559061239d60028501826129ad565b6002820160009055505050505b600080516020613ff9833981519152866040516123c79190613cc2565b60405180910390a1505050505050565b6000806123e2612a30565b6000858152600b60209081526040808320600c909252808320925490517f9ff1b6a7000000000000000000000000000000000000000000000000000000008152919550919350600160a060020a0390911690639ff1b6a79061244f90600186019086908990600401613e8d565b6040805180830381600087803b15801561246857600080fd5b505af115801561247c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124a09190810190612e03565b8051600285018054909101908190556020820151016003850155604051909150600080516020613ff9833981519152906124db908790613ca2565b60405180910390a16124ec8561215d565b5050505050565b6009546000828152600b6020526040902060020154108061252357506000818152600b6020526040902060030154155b1561255657600080516020613ff9833981519152816040516125459190613d62565b60405180910390a16125568161215d565b50565b6000818152600b60209081526040808320600c909252808320835491517fc8c432a7000000000000000000000000000000000000000000000000000000008152929390929091600160a060020a03169063c8c432a7906125c29060018601908690600401613e68565b602060405180830381600087803b1580156125dc57600080fd5b505af11580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126149190810190613202565b600384015490915061262c908263ffffffff61214b16565b60038401556002830154612646908263ffffffff61213116565b60028401556126548461215d565b50505050565b60008083151561266d5760009150612144565b5082820282848281151561267d57fe5b041461214057fe5b600080828481151561269357fe5b04949350505050565b6002546040517f15a523020000000000000000000000000000000000000000000000000000000081526000918291600160a060020a03909116906315a52302906126ea908790600401613ac0565b6040805180830381600087803b15801561270357600080fd5b505af1158015612717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061273b9190810190612dc9565b600154600854600454939550919350600160a060020a039081169263a9059cbb92909116906127789060649061219290899063ffffffff61265a16565b6040518363ffffffff1660e060020a028152600401612798929190613af6565b600060405180830381600087803b1580156127b257600080fd5b505af11580156127c6573d6000803e3d6000fd5b5050600154600654600160a060020a03909116925063a9059cbb915084906127fc9060649061219290899063ffffffff61265a16565b6040518363ffffffff1660e060020a02815260040161281c929190613af6565b600060405180830381600087803b15801561283657600080fd5b505af115801561284a573d6000803e3d6000fd5b5050600154600754600160a060020a03909116925063a9059cbb915083906128809060649061219290899063ffffffff61265a16565b6040518363ffffffff1660e060020a0281526004016128a0929190613af6565b600060405180830381600087803b1580156128ba57600080fd5b505af1158015611172573d6000803e3d6000fd5b608060405190810160405280606081526020016128e9612a4b565b905290565b828054828255906000526020600020908101928215612929579160200282015b8281111561292957825182559160200191906001019061290e565b50612935929150612a70565b5090565b828054828255906000526020600020906002028101928215612983579160200282015b828111156129835782516129739083906002612a8d565b509160200191906002019061295c565b50612935929150612aba565b50805460008255906000526020600020908101906125569190612a70565b50805460008255600202906000526020600020908101906125569190612aba565b60408051610120810190915280600081526020016000600160a060020a031681526020016000600160a060020a031681526020016000815260200160008152602001600081526020016000815260200160008152602001600080191681525090565b60408051808201825290600290829080388339509192915050565b6060604051908101604052806000815260200160608152602001600080191681525090565b612a8a91905b808211156129355760008155600101612a76565b90565b8260028101928215612929579160200282018281111561292957825182559160200191906001019061290e565b612a8a91905b80821115612935576000612ad48282612add565b50600201612ac0565b506000815560010160009055565b6000612af78235613f83565b9392505050565b6000612af78251613f83565b6000601f82018313612b1b57600080fd5b8135612b2e612b2982613ef6565b613ecf565b91508181835260208401935060208101905083856040840282011115612b5357600080fd5b60005b83811015612b815781612b698882612bec565b84525060209092019160409190910190600101612b56565b5050505092915050565b6000601f82018313612b9c57600080fd5b6002612baa612b2982613f17565b91508183856020840282011115612bc057600080fd5b60005b83811015612b815781612bd68882612d24565b8452506020928301929190910190600101612bc3565b6000601f82018313612bfd57600080fd5b6002612c0b612b2982613f17565b91508183856020840282011115612c2157600080fd5b60005b83811015612b815781612c378882612cc9565b8452506020928301929190910190600101612c24565b6000601f82018313612c5e57600080fd5b8135612c6c612b2982613ef6565b91508181835260208401935060208101905083856020840282011115612c9157600080fd5b60005b83811015612b815781612ca78882612cc9565b8452506020928301929190910190600101612c94565b6000612af78251613f8f565b6000612af78235612a8a565b6000601f82018313612ce657600080fd5b8135612cf4612b2982613f35565b91508082526020830160208301858383011115612d1057600080fd5b612d1b838284613fb6565b50505092915050565b6000612af78251612a8a565b600060608284031215612d4257600080fd5b612d4c6060613ecf565b90506000612d5a8484612cc9565b825250602082013567ffffffffffffffff811115612d7757600080fd5b612d8384828501612b0a565b6020830152506040612d9784828501612cc9565b60408301525092915050565b600060208284031215612db557600080fd5b6000612dc18484612afe565b949350505050565b60008060408385031215612ddc57600080fd5b6000612de88585612afe565b9250506020612df985828601612afe565b9150509250929050565b600060408284031215612e1557600080fd5b6000612dc18484612b8b565b600060208284031215612e3357600080fd5b6000612dc18484612cbd565b600060208284031215612e5157600080fd5b6000612dc18484612cc9565b60008060008060008060008060006101208a8c031215612e7c57600080fd5b6000612e888c8c612cc9565b9950506020612e998c828d01612aeb565b9850506040612eaa8c828d01612aeb565b9750506060612ebb8c828d01612cc9565b9650506080612ecc8c828d01612cc9565b95505060a0612edd8c828d01612cc9565b94505060c08a013567ffffffffffffffff811115612efa57600080fd5b612f068c828d01612cd5565b93505060e08a013567ffffffffffffffff811115612f2357600080fd5b612f2f8c828d01612cd5565b9250506101008a013567ffffffffffffffff811115612f4d57600080fd5b612f598c828d01612cd5565b9150509295985092959850929598565b60008060008060808587031215612f7f57600080fd5b6000612f8b8787612cc9565b945050602085013567ffffffffffffffff811115612fa857600080fd5b612fb487828801612cd5565b935050604085013567ffffffffffffffff811115612fd157600080fd5b612fdd87828801612cd5565b925050606085013567ffffffffffffffff811115612ffa57600080fd5b61300687828801612cd5565b91505092959194509250565b600080600080600060a0868803121561302a57600080fd5b60006130368888612cc9565b955050602061304788828901612cc9565b945050604086013567ffffffffffffffff81111561306457600080fd5b61307088828901612c4d565b935050606086013567ffffffffffffffff81111561308d57600080fd5b61309988828901612d30565b925050608086013567ffffffffffffffff8111156130b657600080fd5b6130c288828901612cd5565b9150509295509295909350565b60008060008060008060c087890312156130e857600080fd5b60006130f48989612cc9565b965050602061310589828a01612cc9565b955050604061311689828a01612cc9565b945050606061312789828a01612cc9565b935050608061313889828a01612cc9565b92505060a087013567ffffffffffffffff81111561315557600080fd5b61316189828a01612cd5565b9150509295509295509295565b60006020828403121561318057600080fd5b813567ffffffffffffffff81111561319757600080fd5b612dc184828501612d30565b600080604083850312156131b657600080fd5b823567ffffffffffffffff8111156131cd57600080fd5b6131d985828601612d30565b925050602083013567ffffffffffffffff8111156131f657600080fd5b612df985828601612c4d565b60006020828403121561321457600080fd5b6000612dc18484612d24565b61322981613f83565b82525050565b600061323a82613f6f565b80845260208401935061324c83613f5d565b60005b8281101561327c576132628683516132d2565b61326b82613f5d565b60409690960195915060010161324f565b5093949350505050565b600061329182613f73565b8084526020840193506132a383613f63565b60005b8281101561327c576132b88683613314565b6132c182613f7d565b6040969096019591506001016132a6565b6132db81613f77565b6132e482612a8a565b60005b828110156124ec576132fa8583516133f9565b61330382613f5d565b6020959095019491506001016132e7565b61331d81613f77565b61332682612a8a565b60005b828110156124ec5761333c8583546133f9565b61334582613f7d565b602095909501949150600101613329565b600061336182613f6f565b80845260208401935061337383613f5d565b60005b8281101561327c576133898683516133f9565b61339282613f5d565b602096909601959150600101613376565b60006133ae82613f73565b8084526020840193506133c083613f63565b60005b8281101561327c576133d68683546133f9565b6133df82613f7d565b6020969096019591506001016133c3565b61322981613f8f565b61322981612a8a565b600061340d82613f6f565b808452613421816020860160208601613fc2565b61342a81613fee565b9093016020019392505050565b61322981613fa0565b61322981613fab565b600f81527f696e76616c69642073657373696f6e0000000000000000000000000000000000602082015260400190565b601a81527f7374617465207369676e6572206973206e6f74206d656d626572000000000000602082015260400190565b600e81527f696e76616c696420737461747573000000000000000000000000000000000000602082015260400190565b600e81527f696e76616c69642073656e646572000000000000000000000000000000000000602082015260400190565b600c81527f6f70656e20646973707574650000000000000000000000000000000000000000602082015260400190565b601481527f7369676e6572206973206e6f74206d656d626572000000000000000000000000602082015260400190565b600f81527f7265736f6c766520646973707574650000000000000000000000000000000000602082015260400190565b600e81527f696e76616c6964207369676e6572000000000000000000000000000000000000602082015260400190565b600d81527f636c6f7365206368616e6e656c00000000000000000000000000000000000000602082015260400190565b600e81527f696e76616c69642070726f666974000000000000000000000000000000000000602082015260400190565b600e81527f696e76616c696420616d6f756e74000000000000000000000000000000000000602082015260400190565b601081527f696e76616c69642067616d654461746100000000000000000000000000000000602082015260400190565b600e81527f696e76616c6964207075626c6963000000000000000000000000000000000000602082015260400190565b601181527f6f757464617465207369676e6174757265000000000000000000000000000000602082015260400190565b600e81527f757064617465206368616e6e656c000000000000000000000000000000000000602082015260400190565b601081527f636c6f736520627920636f6e73656e7400000000000000000000000000000000602082015260400190565b601681527f7369676e6572206973206e6f74206120706c6179657200000000000000000000602082015260400190565b600f81527f6f7574646174652073657373696f6e0000000000000000000000000000000000602082015260400190565b600981527f67616d65206f7665720000000000000000000000000000000000000000000000602082015260400190565b600d81527f636c6f73652062792074696d6500000000000000000000000000000000000000602082015260400190565b600e81527f696e76616c696420766572696679000000000000000000000000000000000000602082015260400190565b600781527f7573656420696400000000000000000000000000000000000000000000000000602082015260400190565b600d81527f696e76616c696420626c6f636b00000000000000000000000000000000000000602082015260400190565b600c81527f6f70656e206368616e6e656c0000000000000000000000000000000000000000602082015260400190565b601481527f696e76616c69642073746174652073696e676572000000000000000000000000602082015260400190565b600d81527f696e76616c696420737461746500000000000000000000000000000000000000602082015260400190565b601c81527f6661696c207472616e7366652066726f6d2062616e6b726f6c6c657200000000602082015260400190565b601481527f696e76616c6964206e65772062616c616e636573000000000000000000000000602082015260400190565b600c81527f696e76616c69642074696d650000000000000000000000000000000000000000602082015260400190565b601981527f6661696c207472616e736665722066726f6d20706c6179657200000000000000602082015260400190565b601081527f696e76616c69642062616c616e63657300000000000000000000000000000000602082015260400190565b80516000906060840190613a2d85826133f9565b5060208301518482036020860152613a45828261322f565b9150506040830151613a5a60408601826133f9565b509392505050565b80546000906060840190613a7581612a8a565b613a7f86826133f9565b50600184018583036020870152613a968382613286565b92505060028401549050613aa981612a8a565b613ab660408701826133f9565b5090949350505050565b602081016120848284613220565b60608101613adc8286613220565b613ae96020830185613437565b612dc160408301846133f9565b60408101613b048285613220565b612af760208301846133f9565b6020810161208482846133f0565b6020810161208482846133f9565b60408101613b3b82856133f9565b8181036020830152612dc18184613402565b60808101613b5b82876133f9565b8181036020830152613b6d8186613402565b90508181036040830152613b818185613402565b90508181036060830152613b958184613402565b9695505050505050565b602081016120848284613437565b6101208101613bbc828c613440565b613bc9602083018b613220565b613bd6604083018a613220565b613be360608301896133f9565b613bf060808301886133f9565b613bfd60a08301876133f9565b613c0a60c08301866133f9565b613c1760e08301856133f9565b613c256101008301846133f9565b9a9950505050505050505050565b6020808252810161208481613449565b6020808252810161208481613479565b60208082528101612084816134a9565b60208082528101612084816134d9565b60408082528101613c8381613509565b905061208460208301846133f9565b6020808252810161208481613539565b60408082528101613c8381613569565b6020808252810161208481613599565b60408082528101613c83816135c9565b60208082528101612084816135f9565b6020808252810161208481613629565b6020808252810161208481613659565b6020808252810161208481613689565b60208082528101612084816136b9565b60408082528101613c83816136e9565b60408082528101613c8381613719565b6020808252810161208481613749565b6020808252810161208481613779565b60408082528101613c83816137a9565b60408082528101613c83816137d9565b6020808252810161208481613809565b6020808252810161208481613839565b6020808252810161208481613869565b60408082528101613c8381613899565b60208082528101612084816138c9565b60208082528101612084816138f9565b6020808252810161208481613929565b6020808252810161208481613959565b6020808252810161208481613989565b60208082528101612084816139b9565b60208082528101612084816139e9565b60208082528101612af78184613a19565b60408082528101613e548185613a19565b90508181036020830152612dc18184613356565b60408082528101613e798185613a62565b90508181036020830152612dc181846133a3565b60608082528101613e9e8186613a62565b90508181036020830152613eb281856133a3565b90508181036040830152613ec68184613402565b95945050505050565b60405181810167ffffffffffffffff81118282101715613eee57600080fd5b604052919050565b600067ffffffffffffffff821115613f0d57600080fd5b5060209081020190565b600067ffffffffffffffff821115613f2e57600080fd5b5060200290565b600067ffffffffffffffff821115613f4c57600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b5490565b50600290565b60010190565b600160a060020a031690565b151590565b60006004821061293557fe5b600061208482613f83565b600061208482613f94565b82818337506000910152565b60005b83811015613fdd578181015183820152602001613fc5565b838111156126545750506000910152565b601f01601f19169056003ca6653799ff65c4b26919c9ae0f9647c451ffa5bd5b97af26620c3278673e70a265627a7a7230582092e0c3b531029389ee6d6c2c861d6e03df09af6f99b0590355a73fd4155d81b96c6578706572696d656e74616cf50037",
  "deployedBytecode": "0x6080604052600436106101035763ffffffff60e060020a60003504166311be1997811461010857806315196f2c1461013e57806327fb062b1461016057806333f278e6146101825780634bde38c8146101a257806364629522146101c4578063698b2fc5146101e45780637a7ebd7b146102045780638be2c0c3146102395780639619367d146102595780639d76a1491461026e578063a09dd3af1461028e578063a12fa955146102a3578063c9d4623f146102b8578063ca4b208b146102cd578063dd754511146102ef578063e635844714610304578063ed78462614610331578063f303ea3814610351578063fc0c546a14610366578063fe6551b61461037b575b600080fd5b34801561011457600080fd5b50610128610123366004612e3f565b610390565b6040516101359190613e32565b60405180910390f35b34801561014a57600080fd5b5061015361044c565b6040516101359190613b1f565b34801561016c57600080fd5b5061018061017b366004613012565b610452565b005b34801561018e57600080fd5b5061018061019d3660046130cf565b610967565b3480156101ae57600080fd5b506101b7610d34565b6040516101359190613b9f565b3480156101d057600080fd5b506101806101df366004612f69565b610d43565b3480156101f057600080fd5b506101806101ff3660046130cf565b61117c565b34801561021057600080fd5b5061022461021f366004612e3f565b6115d5565b60405161013599989796959493929190613bad565b34801561024557600080fd5b5061015361025436600461316e565b611627565b34801561026557600080fd5b5061015361170a565b34801561027a57600080fd5b50610180610289366004612e5d565b611710565b34801561029a57600080fd5b50610153611fea565b3480156102af57600080fd5b506101b7611ff0565b3480156102c457600080fd5b506101b7611fff565b3480156102d957600080fd5b506102e261200e565b6040516101359190613ac0565b3480156102fb57600080fd5b5061015361201d565b34801561031057600080fd5b5061032461031f3660046131a3565b612023565b6040516101359190613b11565b34801561033d57600080fd5b5061018061034c366004612e3f565b61208a565b34801561035d57600080fd5b50610153612116565b34801561037257600080fd5b506101b761211c565b34801561038757600080fd5b5061015361212b565b600c60205280600052604060002060009150905080600101606060405190810160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156104335760008481526020902060408051808201918290529160028581029091019182845b81548152602001906001019080831161040c575050505050815260200190600101906103e3565b5050509082525060029190910154602090910152905081565b60075481565b600080600061045f6128ce565b6000898152600b602052604090819020815161012081019092528054829060ff16600381111561048b57fe5b600381111561049657fe5b81528154600160a060020a036101009182900481166020808501919091526001850154821660408501526002850154606085015260038501546080850152600485015460a0850152600585015460c0850152600685015460e0850152600790940154919092015290820151339116148061052557508060400151600160a060020a031633600160a060020a0316145b151561054f5760405160e560020a62461bcd02815260040161054690613c63565b60405180910390fd5b60e081015143106105755760405160e560020a62461bcd02815260040161054690613e02565b60018151600381111561058457fe5b148061059c575060038151600381111561059a57fe5b145b15156105bd5760405160e560020a62461bcd02815260040161054690613dd2565b60008a8152600b6020526040902060058101549095506105e490600163ffffffff61213116565b89146106055760405160e560020a62461bcd02815260040161054690613c33565b61060e87611627565b935073__Utils_________________________________6397aba7f98b8b8b88604051602001808560001916600019168152602001848152602001838051906020019060200280838360005b8381101561067257818101518382015260200161065a565b505050509190910192835250506040805180830381526020928301918290528051909550909350839250908401908083835b602083106106c35780518252601f1990920191602091820191016106a4565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822063ffffffff861660e060020a02835261070d945092508b916004019050613b2d565b60206040518083038186803b15801561072557600080fd5b505af4158015610739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061075d9190810190612da3565b8554909350600160a060020a0380851661010090920416146107945760405160e560020a62461bcd02815260040161054690613d42565b61079e8789612023565b15156107bf5760405160e560020a62461bcd02815260040161054690613cf2565b60038501546000546040517fcaa824f5000000000000000000000000000000000000000000000000000000008152600160a060020a039091169063caa824f59061080f908b908d90600401613e43565b602060405180830381600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108619190810190613202565b11156108825760405160e560020a62461bcd02815260040161054690613cd2565b600a54600686015461089a904363ffffffff61214b16565b10156108ba57600a546108b490439063ffffffff61213116565b60068601555b60408051808201825289815260208082018a905260008d8152600c82529290922081518051929550859391926108f392849201906128ee565b506020828101518051600184019081558183015180519293919261091d9260028701920190612939565b50604091820151600290910155875460ff1916600317885551600080516020613ff9833981519152925061095391508c90613c73565b60405180910390a150505050505050505050565b6000868152600b602052604080822081516101208101909252805483929190829060ff16600381111561099657fe5b60038111156109a157fe5b81528154600160a060020a036101009182900481166020808501919091526001850154821660408501526002850154606085015260038501546080850152600485015460a0850152600585015460c0850152600685015460e08501526007909401549190920152908201513391161480610a3057508060400151600160a060020a031633600160a060020a0316145b1515610a515760405160e560020a62461bcd02815260040161054690613c63565b60e08101514310610a775760405160e560020a62461bcd02815260040161054690613e02565b600181516003811115610a8657fe5b1480610a9e5750600381516003811115610a9c57fe5b145b1515610abf5760405160e560020a62461bcd02815260040161054690613dd2565b6000898152600b602090815260409182902082518083018d90528084018c9052606081018b9052608081018a905260a081018990527f010000000000000000000000000000000000000000000000000000000000000060c0820152835160a181830301815260c190910193849052805191965073__Utils_________________________________936397aba7f993919290918291908401908083835b60208310610b7b5780518252601f199092019160209182019101610b5c565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822063ffffffff861660e060020a028352610bc59450925089916004019050613b2d565b60206040518083038186803b158015610bdd57600080fd5b505af4158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c159190810190612da3565b9150610c328360030154846002015461213190919063ffffffff16565b610c42898963ffffffff61213116565b14610c625760405160e560020a62461bcd02815260040161054690613e22565b600160a060020a038216331415610c8e5760405160e560020a62461bcd02815260040161054690613cb2565b8254600160a060020a03838116610100909204161480610cbd57506001830154600160a060020a038381169116145b1515610cde5760405160e560020a62461bcd02815260040161054690613c92565b60028301889055600383018790556005830185905560048301869055604051600080516020613ff983398151915290610d18908b90613d32565b60405180910390a1610d298961215d565b505050505050505050565b600254600160a060020a031681565b6000848152600b60209081526040808320600c8352818420825160608101845260018201805482526002830180548651818902810189019097528087529497939693958695610e0095858101939190889084015b82821015610de75760008481526020902060408051808201918290529160028581029091019182845b815481526020019060010190808311610dc057505050505081526020019060010190610d97565b5050509082525060029190910154602090910152611627565b915087610e1b6001866005015461213190919063ffffffff16565b84600001846040516020018085600019166000191681526020018481526020018380548015610e6957602002820191906000526020600020905b815481526020019060010190808311610e55575b5050918252506040805180830381526020928301918290528051909550909350839250908401908083835b60208310610eb35780518252601f199092019160209182019101610e94565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120935060039250610eea915050565b845460ff166003811115610efa57fe5b14610f1a5760405160e560020a62461bcd02815260040161054690613c53565b6001840154600160a060020a03163314610f495760405160e560020a62461bcd02815260040161054690613c63565b60078401546040518851899190819060208401908083835b60208310610f805780518252601f199092019160209182019101610f61565b51815160209384036101000a60001901801990921691161790526040519190930181900381208c519095508c945090928392508401908083835b60208310610fd95780518252601f199092019160209182019101610fba565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208282019790975281840196909652825180820384018152606090910192839052805190959294508493509185019190508083835b602083106110535780518252601f199092019160209182019101611034565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415156110a65760405160e560020a62461bcd02815260040161054690613d02565b6003546040517fc658da51000000000000000000000000000000000000000000000000000000008152600160a060020a039091169063c658da51906110f59084908b908b908b90600401613b4d565b602060405180830381600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111479190810190612e21565b15156111685760405160e560020a62461bcd02815260040161054690613d82565b61117288866123d7565b5050505050505050565b6000868152600b602052604080822081516101208101909252805483929190829060ff1660038111156111ab57fe5b60038111156111b657fe5b81528154600160a060020a036101009182900481166020808501919091526001850154821660408501526002850154606085015260038501546080850152600485015460a0850152600585015460c0850152600685015460e0850152600790940154919092015290820151339116148061124557508060400151600160a060020a031633600160a060020a0316145b15156112665760405160e560020a62461bcd02815260040161054690613c63565b60e0810151431061128c5760405160e560020a62461bcd02815260040161054690613e02565b60018151600381111561129b57fe5b14806112b357506003815160038111156112b157fe5b145b15156112d45760405160e560020a62461bcd02815260040161054690613dd2565b6000898152600b602090815260409182902082518083018d90528084018c9052606081018b9052608081018a905260a08082018a90528451808303909101815260c090910193849052805191965073__Utils_________________________________936397aba7f993919290918291908401908083835b6020831061136b5780518252601f19909201916020918201910161134c565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822063ffffffff861660e060020a0283526113b59450925089916004019050613b2d565b60206040518083038186803b1580156113cd57600080fd5b505af41580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114059190810190612da3565b915084836005015410151561142f5760405160e560020a62461bcd02815260040161054690613d52565b600160a060020a03821633141561145b5760405160e560020a62461bcd02815260040161054690613dc2565b8254600160a060020a0383811661010090920416148061148a57506001830154600160a060020a038381169116145b15156114ab5760405160e560020a62461bcd02815260040161054690613c43565b600383015460028401546114c49163ffffffff61213116565b6114d4898963ffffffff61213116565b146114f45760405160e560020a62461bcd02815260040161054690613df2565b600a54600684015461150c904363ffffffff61214b16565b101561152c57600a5461152690439063ffffffff61213116565b60068401555b6005830185905560028301889055600380840188905560048401879055835460ff16600381111561155957fe5b14156115a757825460ff191660011783556000898152600c6020526040812090611583828261298f565b6000600183018181559061159a60028501826129ad565b6002820160009055505050505b600080516020613ff9833981519152896040516115c49190613d22565b60405180910390a1610d29896124f3565b600b602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460079097015460ff871697610100909704600160a060020a03908116979616959089565b6000816000015182602001518360400151604051602001808481526020018380516000925b8184101561168e57602080850284010151604080838360005b8381101561167d578181015183820152602001611665565b50505050905001926001019261164c565b9485525050604080518085038152602094850191829052805190965090945084938601925090508083835b602083106116d85780518252601f1990920191602091820191016116b9565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b60095481565b600061171a6129ce565b73__Utils_________________________________6397aba7f98c8c8c8c8c8c8c8c60405160200180896000191660001916815260200188600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140187600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140186815260200185815260200184815260200183805190602001908083835b602083106117dc5780518252601f1990920191602091820191016117bd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106118245780518252601f199092019160209182019101611805565b6001836020036101000a038019825116818451168082178552505050505050905001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061188e5780518252601f19909201916020918201910161186f565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822063ffffffff861660e060020a0283526118d89450925088916004019050613b2d565b60206040518083038186803b1580156118f057600080fd5b505af4158015611904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119289190810190612da3565b91506000808c8152600b602052604090205460ff16600381111561194857fe5b146119685760405160e560020a62461bcd02815260040161054690613d92565b4361197a87601463ffffffff61213116565b101561199b5760405160e560020a62461bcd02815260040161054690613d12565b6002546040517f155259910000000000000000000000000000000000000000000000000000000081528991600160a060020a0316906315525991906119e4908e90600401613ac0565b602060405180830381600087803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a369190810190613202565b1015611a575760405160e560020a62461bcd02815260040161054690613ce2565b6002546040517f30ccebb5000000000000000000000000000000000000000000000000000000008152600160a060020a03909116906330ccebb590611aa0903090600401613b9f565b602060405180830381600087803b158015611aba57600080fd5b505af1158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af29190810190612e21565b1515611b135760405160e560020a62461bcd02815260040161054690613c53565b89600160a060020a031682600160a060020a03161480611b44575088600160a060020a031682600160a060020a0316145b8015611b59575033600160a060020a03831614155b1515611b7a5760405160e560020a62461bcd02815260040161054690613cb2565b33600160a060020a038b161480611b99575033600160a060020a038a16145b1515611bba5760405160e560020a62461bcd02815260040161054690613c63565b6001546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03909116906323b872dd90611c07908d9030908d90600401613ace565b602060405180830381600087803b158015611c2157600080fd5b505af1158015611c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c599190810190612e21565b1515611c7a5760405160e560020a62461bcd02815260040161054690613e12565b6001546040517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a03909116906323b872dd90611cc7908c9030908c90600401613ace565b602060405180830381600087803b158015611ce157600080fd5b505af1158015611cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d199190810190612e21565b1515611d3a5760405160e560020a62461bcd02815260040161054690613de2565b60408051610120810190915280600181526020018b600160a060020a031681526020018a600160a060020a031681526020018981526020018881526020016000815260200160008152602001611d9a60964361213190919063ffffffff16565b8152602001866040518082805190602001908083835b60208310611dcf5780518252601f199092019160209182019101611db0565b51815160209384036101000a60001901801990921691161790526040519190930181900381208b519095508b945090928392508401908083835b60208310611e285780518252601f199092019160209182019101611e09565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208282019790975281840196909652825180820384018152606090910192839052805190959294508493509185019190508083835b60208310611ea25780518252601f199092019160209182019101611e83565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916815250905080600b60008d6000191660001916815260200190815260200160002060008201518160000160006101000a81548160ff02191690836003811115611f1857fe5b02179055506020820151815474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03928316810291909117835560408085015160018501805473ffffffffffffffffffffffffffffffffffffffff19169190941617909255606084015160028401556080840151600384015560a0840151600484015560c0840151600584015560e084015160068401559092015160079091015551600080516020613ff983398151915290611fd5908d90613db2565b60405180910390a15050505050505050505050565b60045481565b600354600160a060020a031681565b600054600160a060020a031681565b600854600160a060020a031681565b600a5481565b6000600183602001515114158061203b575082516000115b806120485750825161ffff105b80612073575068056bc75e2d6310000082600081518110151561206757fe5b90602001906020020151115b1561208057506000612084565b5060015b92915050565b6000818152600b60205260409020600681015443116120be5760405160e560020a62461bcd02815260040161054690613da2565b6003815460ff1660038111156120d057fe5b14156120e4576120df82612559565b612112565b600080516020613ff9833981519152826040516121019190613d72565b60405180910390a16121128261215d565b5050565b60055481565b600154600160a060020a031681565b60065481565b60008282018381101561214057fe5b8091505b5092915050565b60008282111561215757fe5b50900390565b6000818152600b60205260408120600481015490919081908190819061219e906103e89061219290601463ffffffff61265a16565b9063ffffffff61268516565b93506121ba60646121926005548761265a90919063ffffffff16565b9250846002015491506000905084600301548411156121ea576121e3828563ffffffff61214b16565b9150612214565b6122118461220585886003015461213190919063ffffffff16565b9063ffffffff61214b16565b90505b845461222e906101009004600160a060020a03168561269c565b60018054908601546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283169263a9059cbb9261227f929116908590600401613af6565b600060405180830381600087803b15801561229957600080fd5b505af11580156122ad573d6000803e3d6000fd5b505060015487546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03928316945063a9059cbb935061230692610100909204909116908690600401613af6565b600060405180830381600087803b15801561232057600080fd5b505af1158015612334573d6000803e3d6000fd5b5050865460ff1916600290811780895560009189018290556003808a019290925590925060ff1690508181111561236757fe5b14156123aa576000868152600c6020526040812090612386828261298f565b6000600183018181559061239d60028501826129ad565b6002820160009055505050505b600080516020613ff9833981519152866040516123c79190613cc2565b60405180910390a1505050505050565b6000806123e2612a30565b6000858152600b60209081526040808320600c909252808320925490517f9ff1b6a7000000000000000000000000000000000000000000000000000000008152919550919350600160a060020a0390911690639ff1b6a79061244f90600186019086908990600401613e8d565b6040805180830381600087803b15801561246857600080fd5b505af115801561247c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124a09190810190612e03565b8051600285018054909101908190556020820151016003850155604051909150600080516020613ff9833981519152906124db908790613ca2565b60405180910390a16124ec8561215d565b5050505050565b6009546000828152600b6020526040902060020154108061252357506000818152600b6020526040902060030154155b1561255657600080516020613ff9833981519152816040516125459190613d62565b60405180910390a16125568161215d565b50565b6000818152600b60209081526040808320600c909252808320835491517fc8c432a7000000000000000000000000000000000000000000000000000000008152929390929091600160a060020a03169063c8c432a7906125c29060018601908690600401613e68565b602060405180830381600087803b1580156125dc57600080fd5b505af11580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126149190810190613202565b600384015490915061262c908263ffffffff61214b16565b60038401556002830154612646908263ffffffff61213116565b60028401556126548461215d565b50505050565b60008083151561266d5760009150612144565b5082820282848281151561267d57fe5b041461214057fe5b600080828481151561269357fe5b04949350505050565b6002546040517f15a523020000000000000000000000000000000000000000000000000000000081526000918291600160a060020a03909116906315a52302906126ea908790600401613ac0565b6040805180830381600087803b15801561270357600080fd5b505af1158015612717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061273b9190810190612dc9565b600154600854600454939550919350600160a060020a039081169263a9059cbb92909116906127789060649061219290899063ffffffff61265a16565b6040518363ffffffff1660e060020a028152600401612798929190613af6565b600060405180830381600087803b1580156127b257600080fd5b505af11580156127c6573d6000803e3d6000fd5b5050600154600654600160a060020a03909116925063a9059cbb915084906127fc9060649061219290899063ffffffff61265a16565b6040518363ffffffff1660e060020a02815260040161281c929190613af6565b600060405180830381600087803b15801561283657600080fd5b505af115801561284a573d6000803e3d6000fd5b5050600154600754600160a060020a03909116925063a9059cbb915083906128809060649061219290899063ffffffff61265a16565b6040518363ffffffff1660e060020a0281526004016128a0929190613af6565b600060405180830381600087803b1580156128ba57600080fd5b505af1158015611172573d6000803e3d6000fd5b608060405190810160405280606081526020016128e9612a4b565b905290565b828054828255906000526020600020908101928215612929579160200282015b8281111561292957825182559160200191906001019061290e565b50612935929150612a70565b5090565b828054828255906000526020600020906002028101928215612983579160200282015b828111156129835782516129739083906002612a8d565b509160200191906002019061295c565b50612935929150612aba565b50805460008255906000526020600020908101906125569190612a70565b50805460008255600202906000526020600020908101906125569190612aba565b60408051610120810190915280600081526020016000600160a060020a031681526020016000600160a060020a031681526020016000815260200160008152602001600081526020016000815260200160008152602001600080191681525090565b60408051808201825290600290829080388339509192915050565b6060604051908101604052806000815260200160608152602001600080191681525090565b612a8a91905b808211156129355760008155600101612a76565b90565b8260028101928215612929579160200282018281111561292957825182559160200191906001019061290e565b612a8a91905b80821115612935576000612ad48282612add565b50600201612ac0565b506000815560010160009055565b6000612af78235613f83565b9392505050565b6000612af78251613f83565b6000601f82018313612b1b57600080fd5b8135612b2e612b2982613ef6565b613ecf565b91508181835260208401935060208101905083856040840282011115612b5357600080fd5b60005b83811015612b815781612b698882612bec565b84525060209092019160409190910190600101612b56565b5050505092915050565b6000601f82018313612b9c57600080fd5b6002612baa612b2982613f17565b91508183856020840282011115612bc057600080fd5b60005b83811015612b815781612bd68882612d24565b8452506020928301929190910190600101612bc3565b6000601f82018313612bfd57600080fd5b6002612c0b612b2982613f17565b91508183856020840282011115612c2157600080fd5b60005b83811015612b815781612c378882612cc9565b8452506020928301929190910190600101612c24565b6000601f82018313612c5e57600080fd5b8135612c6c612b2982613ef6565b91508181835260208401935060208101905083856020840282011115612c9157600080fd5b60005b83811015612b815781612ca78882612cc9565b8452506020928301929190910190600101612c94565b6000612af78251613f8f565b6000612af78235612a8a565b6000601f82018313612ce657600080fd5b8135612cf4612b2982613f35565b91508082526020830160208301858383011115612d1057600080fd5b612d1b838284613fb6565b50505092915050565b6000612af78251612a8a565b600060608284031215612d4257600080fd5b612d4c6060613ecf565b90506000612d5a8484612cc9565b825250602082013567ffffffffffffffff811115612d7757600080fd5b612d8384828501612b0a565b6020830152506040612d9784828501612cc9565b60408301525092915050565b600060208284031215612db557600080fd5b6000612dc18484612afe565b949350505050565b60008060408385031215612ddc57600080fd5b6000612de88585612afe565b9250506020612df985828601612afe565b9150509250929050565b600060408284031215612e1557600080fd5b6000612dc18484612b8b565b600060208284031215612e3357600080fd5b6000612dc18484612cbd565b600060208284031215612e5157600080fd5b6000612dc18484612cc9565b60008060008060008060008060006101208a8c031215612e7c57600080fd5b6000612e888c8c612cc9565b9950506020612e998c828d01612aeb565b9850506040612eaa8c828d01612aeb565b9750506060612ebb8c828d01612cc9565b9650506080612ecc8c828d01612cc9565b95505060a0612edd8c828d01612cc9565b94505060c08a013567ffffffffffffffff811115612efa57600080fd5b612f068c828d01612cd5565b93505060e08a013567ffffffffffffffff811115612f2357600080fd5b612f2f8c828d01612cd5565b9250506101008a013567ffffffffffffffff811115612f4d57600080fd5b612f598c828d01612cd5565b9150509295985092959850929598565b60008060008060808587031215612f7f57600080fd5b6000612f8b8787612cc9565b945050602085013567ffffffffffffffff811115612fa857600080fd5b612fb487828801612cd5565b935050604085013567ffffffffffffffff811115612fd157600080fd5b612fdd87828801612cd5565b925050606085013567ffffffffffffffff811115612ffa57600080fd5b61300687828801612cd5565b91505092959194509250565b600080600080600060a0868803121561302a57600080fd5b60006130368888612cc9565b955050602061304788828901612cc9565b945050604086013567ffffffffffffffff81111561306457600080fd5b61307088828901612c4d565b935050606086013567ffffffffffffffff81111561308d57600080fd5b61309988828901612d30565b925050608086013567ffffffffffffffff8111156130b657600080fd5b6130c288828901612cd5565b9150509295509295909350565b60008060008060008060c087890312156130e857600080fd5b60006130f48989612cc9565b965050602061310589828a01612cc9565b955050604061311689828a01612cc9565b945050606061312789828a01612cc9565b935050608061313889828a01612cc9565b92505060a087013567ffffffffffffffff81111561315557600080fd5b61316189828a01612cd5565b9150509295509295509295565b60006020828403121561318057600080fd5b813567ffffffffffffffff81111561319757600080fd5b612dc184828501612d30565b600080604083850312156131b657600080fd5b823567ffffffffffffffff8111156131cd57600080fd5b6131d985828601612d30565b925050602083013567ffffffffffffffff8111156131f657600080fd5b612df985828601612c4d565b60006020828403121561321457600080fd5b6000612dc18484612d24565b61322981613f83565b82525050565b600061323a82613f6f565b80845260208401935061324c83613f5d565b60005b8281101561327c576132628683516132d2565b61326b82613f5d565b60409690960195915060010161324f565b5093949350505050565b600061329182613f73565b8084526020840193506132a383613f63565b60005b8281101561327c576132b88683613314565b6132c182613f7d565b6040969096019591506001016132a6565b6132db81613f77565b6132e482612a8a565b60005b828110156124ec576132fa8583516133f9565b61330382613f5d565b6020959095019491506001016132e7565b61331d81613f77565b61332682612a8a565b60005b828110156124ec5761333c8583546133f9565b61334582613f7d565b602095909501949150600101613329565b600061336182613f6f565b80845260208401935061337383613f5d565b60005b8281101561327c576133898683516133f9565b61339282613f5d565b602096909601959150600101613376565b60006133ae82613f73565b8084526020840193506133c083613f63565b60005b8281101561327c576133d68683546133f9565b6133df82613f7d565b6020969096019591506001016133c3565b61322981613f8f565b61322981612a8a565b600061340d82613f6f565b808452613421816020860160208601613fc2565b61342a81613fee565b9093016020019392505050565b61322981613fa0565b61322981613fab565b600f81527f696e76616c69642073657373696f6e0000000000000000000000000000000000602082015260400190565b601a81527f7374617465207369676e6572206973206e6f74206d656d626572000000000000602082015260400190565b600e81527f696e76616c696420737461747573000000000000000000000000000000000000602082015260400190565b600e81527f696e76616c69642073656e646572000000000000000000000000000000000000602082015260400190565b600c81527f6f70656e20646973707574650000000000000000000000000000000000000000602082015260400190565b601481527f7369676e6572206973206e6f74206d656d626572000000000000000000000000602082015260400190565b600f81527f7265736f6c766520646973707574650000000000000000000000000000000000602082015260400190565b600e81527f696e76616c6964207369676e6572000000000000000000000000000000000000602082015260400190565b600d81527f636c6f7365206368616e6e656c00000000000000000000000000000000000000602082015260400190565b600e81527f696e76616c69642070726f666974000000000000000000000000000000000000602082015260400190565b600e81527f696e76616c696420616d6f756e74000000000000000000000000000000000000602082015260400190565b601081527f696e76616c69642067616d654461746100000000000000000000000000000000602082015260400190565b600e81527f696e76616c6964207075626c6963000000000000000000000000000000000000602082015260400190565b601181527f6f757464617465207369676e6174757265000000000000000000000000000000602082015260400190565b600e81527f757064617465206368616e6e656c000000000000000000000000000000000000602082015260400190565b601081527f636c6f736520627920636f6e73656e7400000000000000000000000000000000602082015260400190565b601681527f7369676e6572206973206e6f74206120706c6179657200000000000000000000602082015260400190565b600f81527f6f7574646174652073657373696f6e0000000000000000000000000000000000602082015260400190565b600981527f67616d65206f7665720000000000000000000000000000000000000000000000602082015260400190565b600d81527f636c6f73652062792074696d6500000000000000000000000000000000000000602082015260400190565b600e81527f696e76616c696420766572696679000000000000000000000000000000000000602082015260400190565b600781527f7573656420696400000000000000000000000000000000000000000000000000602082015260400190565b600d81527f696e76616c696420626c6f636b00000000000000000000000000000000000000602082015260400190565b600c81527f6f70656e206368616e6e656c0000000000000000000000000000000000000000602082015260400190565b601481527f696e76616c69642073746174652073696e676572000000000000000000000000602082015260400190565b600d81527f696e76616c696420737461746500000000000000000000000000000000000000602082015260400190565b601c81527f6661696c207472616e7366652066726f6d2062616e6b726f6c6c657200000000602082015260400190565b601481527f696e76616c6964206e65772062616c616e636573000000000000000000000000602082015260400190565b600c81527f696e76616c69642074696d650000000000000000000000000000000000000000602082015260400190565b601981527f6661696c207472616e736665722066726f6d20706c6179657200000000000000602082015260400190565b601081527f696e76616c69642062616c616e63657300000000000000000000000000000000602082015260400190565b80516000906060840190613a2d85826133f9565b5060208301518482036020860152613a45828261322f565b9150506040830151613a5a60408601826133f9565b509392505050565b80546000906060840190613a7581612a8a565b613a7f86826133f9565b50600184018583036020870152613a968382613286565b92505060028401549050613aa981612a8a565b613ab660408701826133f9565b5090949350505050565b602081016120848284613220565b60608101613adc8286613220565b613ae96020830185613437565b612dc160408301846133f9565b60408101613b048285613220565b612af760208301846133f9565b6020810161208482846133f0565b6020810161208482846133f9565b60408101613b3b82856133f9565b8181036020830152612dc18184613402565b60808101613b5b82876133f9565b8181036020830152613b6d8186613402565b90508181036040830152613b818185613402565b90508181036060830152613b958184613402565b9695505050505050565b602081016120848284613437565b6101208101613bbc828c613440565b613bc9602083018b613220565b613bd6604083018a613220565b613be360608301896133f9565b613bf060808301886133f9565b613bfd60a08301876133f9565b613c0a60c08301866133f9565b613c1760e08301856133f9565b613c256101008301846133f9565b9a9950505050505050505050565b6020808252810161208481613449565b6020808252810161208481613479565b60208082528101612084816134a9565b60208082528101612084816134d9565b60408082528101613c8381613509565b905061208460208301846133f9565b6020808252810161208481613539565b60408082528101613c8381613569565b6020808252810161208481613599565b60408082528101613c83816135c9565b60208082528101612084816135f9565b6020808252810161208481613629565b6020808252810161208481613659565b6020808252810161208481613689565b60208082528101612084816136b9565b60408082528101613c83816136e9565b60408082528101613c8381613719565b6020808252810161208481613749565b6020808252810161208481613779565b60408082528101613c83816137a9565b60408082528101613c83816137d9565b6020808252810161208481613809565b6020808252810161208481613839565b6020808252810161208481613869565b60408082528101613c8381613899565b60208082528101612084816138c9565b60208082528101612084816138f9565b6020808252810161208481613929565b6020808252810161208481613959565b6020808252810161208481613989565b60208082528101612084816139b9565b60208082528101612084816139e9565b60208082528101612af78184613a19565b60408082528101613e548185613a19565b90508181036020830152612dc18184613356565b60408082528101613e798185613a62565b90508181036020830152612dc181846133a3565b60608082528101613e9e8186613a62565b90508181036020830152613eb281856133a3565b90508181036040830152613ec68184613402565b95945050505050565b60405181810167ffffffffffffffff81118282101715613eee57600080fd5b604052919050565b600067ffffffffffffffff821115613f0d57600080fd5b5060209081020190565b600067ffffffffffffffff821115613f2e57600080fd5b5060200290565b600067ffffffffffffffff821115613f4c57600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b5490565b50600290565b60010190565b600160a060020a031690565b151590565b60006004821061293557fe5b600061208482613f83565b600061208482613f94565b82818337506000910152565b60005b83811015613fdd578181015183820152602001613fc5565b838111156126545750506000910152565b601f01601f19169056003ca6653799ff65c4b26919c9ae0f9647c451ffa5bd5b97af26620c3278673e70a265627a7a7230582092e0c3b531029389ee6d6c2c861d6e03df09af6f99b0590355a73fd4155d81b96c6578706572696d656e74616cf50037",
  "sourceMap": "248:13993:5:-;;;1309:3;1275:38;;745:329;8:9:-1;5:2;;;30:1;27;20:12;5:2;745:329:5;;;;;;;;;;;;;;;;;;;;;;913:6;:32;;-1:-1:-1;;;;;913:32:5;;;-1:-1:-1;;;;;;913:32:5;;;;;;;;955:26;;;;;;;;;;;;;;;991:8;:32;;;;;;;;;;;;;;;1033:9;:34;;;;;;;;;;;248:13993;;5:162:-1;;103:59;154:6;148:13;103:59;;;94:68;88:79;-1:-1;;;88:79;665:816;;;;;903:3;891:9;882:7;878:23;874:33;871:2;;;920:1;917;910:12;871:2;955:1;972:84;1048:7;1028:9;972:84;;;962:94;;934:128;1093:2;1111:79;1182:7;1173:6;1162:9;1158:22;1111:79;;;1101:89;;1072:124;1227:2;1245:82;1319:7;1310:6;1299:9;1295:22;1245:82;;;1235:92;;1206:127;1364:2;1382:83;1457:7;1448:6;1437:9;1433:22;1382:83;;;1372:93;;1343:128;865:616;;;;;;;;1488:128;-1:-1;;;;;1557:54;;1540:76;1623:125;;1712:31;1737:5;1712:31;;;1701:42;1695:53;-1:-1;;1695:53;;248:13993:5;;;;;;",
  "deployedSourceMap": "248:13993:5:-;;;;;;;;;-1:-1:-1;;;248:13993:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1780:43:5;;;;;;;;;;;;;;;;;;;;;;;;;1184:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1184:28:5;;;;;;;;;;;;9425:1248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9425:1248:5;;;;;;;;;;;6730:1022;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6730:1022:5;;;;;;;;;454:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;454:27:5;;;;;;;;;;;;10951:837;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10951:837:5;;;;;;;;;4897:1389;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4897:1389:5;;;;;;;;;1731:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1731:43:5;;;;;;;;;;;;;;;;;;;;;;;;;327:268:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;327:268:3;;;;;;;;;1248:21:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1248:21:5;;;;2750:1756;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2750:1756:5;;;;;;;;;1080:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1080:28:5;;;;487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;487:28:5;;;;393:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;393:25:5;;;;1218:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1218:24:5;;;;;;;;;;;;1275:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1275:38:5;;;;601:379:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;601:379:3;;;;;;;;;;;;;;;;;7873:350:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7873:350:5;;;;;;;;;1114:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1114:29:5;;;;424:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;424:24:5;;;;1149:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1149:29:5;;;;1780:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1780:43:5;;;-1:-1:-1;1780:43:5;;;;;;;;;;;;-1:-1:-1;1780:43:5;:::o;1184:28::-;;;;:::o;9425:1248::-;9645:24;9768:21;9825:15;10347:23;;:::i;:::-;9616:13;;;;:8;:13;;;;;;;1830:331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1830:331:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1897:15;;;;1883:10;:29;;;;1882:70;;;1932:8;:19;;;-1:-1:-1;;;;;1918:33:5;:10;-1:-1:-1;;;;;1918:33:5;;1882:70;1874:97;;;;;;-1:-1:-1;;;;;1874:97:5;;;;;;;;;;;;;;;;;1990:17;;;;2010:12;-1:-1:-1;1981:59:5;;;;-1:-1:-1;;;;;1981:59:5;;;;;;;;;2077:10;2059:14;;:28;;;;;;;;;2058:67;;;-1:-1:-1;2111:13:5;2093:14;;:31;;;;;;;;;2058:67;2050:93;;;;;;-1:-1:-1;;;;;2050:93:5;;;;;;;;;9672:13;;;;:8;:13;;;;;9715:16;;;;9672:13;;-1:-1:-1;9715:23:5;;9736:1;9715:23;:20;:23;:::i;:::-;9703:35;;9695:63;;;;-1:-1:-1;;;;;9695:63:5;;;;;;;;;9792:23;9805:9;9792:12;:23::i;:::-;9768:47;;9843:5;:19;9890:3;9895:8;9905:12;9919:13;9873:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;9873:60:5;;;;;;;-1:-1:-1;;9873:60:5;;;26:21:-1;;;6:49;;9873:60:5;;;;;;;;9863:71;;9873:60;;-1:-1:-1;9873:60:5;;-1:-1:-1;9873:60:5;;-1:-1:-1;9863:71:5;;;;;9873:60;9863:71;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;9863:71:5;;;;;;;;;9843:104;;;-1:-1:-1;;;9843:104:5;;;;;-1:-1:-1;9863:71:5;-1:-1:-1;9936:10:5;;9843:104;;;-1:-1:-1;9843:104:5;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9843:104:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9843:104:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9843:104:5;;;;;;;;;9976:15;;9825:122;;-1:-1:-1;;;;;;9965:26:5;;;9976:15;;;;;9965:26;9957:61;;;;-1:-1:-1;;;;;9957:61:5;;;;;;;;;10036:38;10050:9;10061:12;10036:13;:38::i;:::-;10028:67;;;;;;-1:-1:-1;;;;;10028:67:5;;;;;;;;;10158:26;;;;10113:6;;:41;;;;;-1:-1:-1;;;;;10113:6:5;;;;:16;;:41;;10130:9;;10141:12;;10113:41;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10113:41:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10113:41:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10113:41:5;;;;;;;;;:71;;10105:98;;;;-1:-1:-1;;;;;10105:98:5;;;;;;;;;10256:8;;10218:17;;;;:35;;10240:12;10218:35;:21;:35;:::i;:::-;:46;10214:123;;;10317:8;;10300:26;;:12;;:26;:16;:26;:::i;:::-;10280:17;;;:46;10214:123;10373:104;;;;;;;;;;;;;;;;;;-1:-1:-1;10555:13:5;;;:8;:13;;;;;;:25;;;;10373:104;;-1:-1:-1;10373:104:5;;10555:13;;:25;;:13;;:25;;;:::i;:::-;-1:-1:-1;10555:25:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10555:25:5;;;;;;;;;;10590:30;;-1:-1:-1;;10590:30:5;10607:13;10590:30;;;10635:31;-1:-1:-1;;;;;;;;;;;10635:31:5;-1:-1:-1;10635:31:5;;-1:-1:-1;10662:3:5;;10635:31;;;;;;;;;;9425:1248;;;;;;;;;;:::o;6730:1022::-;6976:24;6947:13;;;:8;:13;;;;;;1830:331;;;;;;;;;;6976:24;;1830:331;6947:13;1830:331;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1830:331:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1897:15;;;;1883:10;:29;;;;1882:70;;;1932:8;:19;;;-1:-1:-1;;;;;1918:33:5;:10;-1:-1:-1;;;;;1918:33:5;;1882:70;1874:97;;;;;;-1:-1:-1;;;;;1874:97:5;;;;;;;;;1990:17;;;;2010:12;-1:-1:-1;1981:59:5;;;;-1:-1:-1;;;;;1981:59:5;;;;;;;;;2077:10;2059:14;;:28;;;;;;;;;2058:67;;;-1:-1:-1;2111:13:5;2093:14;;:31;;;;;;;;;2058:67;2050:93;;;;;;-1:-1:-1;;;;;2050:93:5;;;;;;;;;7003:13;;;;:8;:13;;;;;;;;;7074:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;7074:84:5;;;;;;;;7064:95;;7003:13;;-1:-1:-1;7044:5:5;;:19;;7074:84;;;;;;7064:95;;;;;7074:84;7064:95;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;7064:95:5;;;;;;;;;7044:123;;;-1:-1:-1;;;7044:123:5;;;;;-1:-1:-1;7064:95:5;-1:-1:-1;7161:5:5;;7044:123;;;-1:-1:-1;7044:123:5;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7044:123:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7044:123:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7044:123:5;;;;;;;;;7026:141;;7227:54;7254:8;:26;;;7227:8;:22;;;:26;;:54;;;;:::i;:::-;7185:38;:14;7204:18;7185:38;:18;:38;:::i;:::-;:96;7177:125;;;;-1:-1:-1;;;;;7177:125:5;;;;;;;;;-1:-1:-1;;;;;7320:21:5;;7331:10;7320:21;;7312:48;;;;-1:-1:-1;;;;;7312:48:5;;;;;;;;;7389:15;;-1:-1:-1;;;;;7378:26:5;;;7389:15;;;;;7378:26;;:60;;-1:-1:-1;7419:19:5;;;;-1:-1:-1;;;;;7408:30:5;;;7419:19;;7408:30;7378:60;7370:93;;;;;;-1:-1:-1;;;;;7370:93:5;;;;;;;;;7473:22;;;:43;;;7526:26;;;:47;;;7583:16;;;:37;;;7630:17;;;:38;;;7683:35;;-1:-1:-1;;;;;;;;;;;7683:35:5;;;7714:3;;7683:35;;;;;;;;;;7728:17;7741:3;7728:12;:17::i;:::-;6730:1022;;;;;;;;;:::o;454:27::-;;;-1:-1:-1;;;;;454:27:5;;:::o;10951:837::-;11102:24;11129:13;;;:8;:13;;;;;;;;11179:8;:13;;;;;11226:38;;;;;;;11239:24;;;11226:38;;;;;;;;;;;;;;;;;;;;;;;;11129:13;;11179;;11102:24;;;;11226:38;;;;;;;;11102:24;;11226:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11226:38:5;;;-1:-1:-1;11226:38:5;;;;;;;;;;;:12;:38::i;:::-;11202:62;;11317:3;11322:23;11343:1;11322:8;:16;;;:20;;:23;;;;:::i;:::-;11347:8;:20;;11369:13;11300:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11300:83:5;;;-1:-1:-1;11300:83:5;;;26:21:-1;;;6:49;;11300:83:5;;;;;;;;11290:94;;11300:83;;-1:-1:-1;11300:83:5;;-1:-1:-1;11300:83:5;;-1:-1:-1;11290:94:5;;;;;11300:83;11290:94;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;11290:94:5;;;;;;;;;;;-1:-1:-1;11420:13:5;;-1:-1:-1;11402:31:5;;-1:-1:-1;;11402:31:5;;:14;;;;:31;;;;;;;;;11394:58;;;;-1:-1:-1;;;;;11394:58:5;;;;;;;;;11484:19;;;;-1:-1:-1;;;;;11484:19:5;11470:10;:33;11462:60;;;;-1:-1:-1;;;;;11462:60:5;;;;;;;;;11626:16;;;;11592:13;;;;11602:2;;11592:13;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11592:13:5;;;;;;;;;;;11607;;11592;;-1:-1:-1;11607:13:5;;-1:-1:-1;11592:13:5;;;;-1:-1:-1;11607:13:5;;;;11592;11607;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11607:13:5;;;;;;;;;;;;11575:46;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;11575:46:5;;;;;;;;11565:57;;11575:46;;;;-1:-1:-1;11575:46:5;;-1:-1:-1;11565:57:5;;;;;-1:-1:-1;11565:57:5;11575:46;11565:57;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11565:57:5;;;;;;;;;;;;;;;;:77;;;;11557:104;;;;;;-1:-1:-1;;;;;11557:104:5;;;;;;;;;11679:9;;:46;;;;;-1:-1:-1;;;;;11679:9:5;;;;:16;;:46;;11696:5;;11703:2;;11707;;11711:13;;11679:46;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11679:46:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11679:46:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11679:46:5;;;;;;;;;11671:73;;;;;;-1:-1:-1;;;;;11671:73:5;;;;;;;;;11754:27;11762:3;11767:13;11754:7;:27::i;:::-;10951:837;;;;;;;;:::o;4897:1389::-;5147:24;5118:13;;;:8;:13;;;;;;1830:331;;;;;;;;;;5147:24;;1830:331;5118:13;1830:331;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1830:331:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1897:15;;;;1883:10;:29;;;;1882:70;;;1932:8;:19;;;-1:-1:-1;;;;;1918:33:5;:10;-1:-1:-1;;;;;1918:33:5;;1882:70;1874:97;;;;;;-1:-1:-1;;;;;1874:97:5;;;;;;;;;1990:17;;;;2010:12;-1:-1:-1;1981:59:5;;;;-1:-1:-1;;;;;1981:59:5;;;;;;;;;2077:10;2059:14;;:28;;;;;;;;;2058:67;;;-1:-1:-1;2111:13:5;2093:14;;:31;;;;;;;;;2058:67;2050:93;;;;;;-1:-1:-1;;;;;2050:93:5;;;;;;;;;5174:13;;;;:8;:13;;;;;;;;;5249:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;5249:78:5;;;;;;;;5239:89;;5174:13;;-1:-1:-1;5219:5:5;;:19;;5249:78;;;;;;5239:89;;;;;5249:78;5239:89;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;5239:89:5;;;;;;;;;5219:122;;;-1:-1:-1;;;5219:122:5;;;;;-1:-1:-1;5239:89:5;-1:-1:-1;5330:10:5;;5219:122;;;-1:-1:-1;5219:122:5;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5219:122:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5219:122:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5219:122:5;;;;;;;;;5197:144;;5378:8;5359;:16;;;:27;5351:55;;;;;;-1:-1:-1;;;;;5351:55:5;;;;;;;;;-1:-1:-1;;;;;5424:25:5;;5439:10;5424:25;;5416:58;;;;-1:-1:-1;;;;;5416:58:5;;;;;;;;;5507:15;;-1:-1:-1;;;;;5492:30:5;;;5507:15;;;;;5492:30;;:68;;-1:-1:-1;5541:19:5;;;;-1:-1:-1;;;;;5526:34:5;;;5541:19;;5526:34;5492:68;5484:107;;;;;;-1:-1:-1;;;;;5484:107:5;;;;;;;;;5678:26;;;;5651:22;;;;:54;;;:26;:54;:::i;:::-;5609:38;:14;5628:18;5609:38;:18;:38;:::i;:::-;:96;5601:129;;;;-1:-1:-1;;;;;5601:129:5;;;;;;;;;5783:8;;5745:17;;;;:35;;5767:12;5745:35;:21;:35;:::i;:::-;:46;5741:123;;;5844:8;;5827:26;;:12;;:26;:16;:26;:::i;:::-;5807:17;;;:46;5741:123;5874:16;;;:37;;;5921:22;;;:43;;;-1:-1:-1;5974:26:5;;;:47;;;6031:17;;;:38;;;6084:14;;;;:31;;;;;;;;;6080:123;;;6131:27;;-1:-1:-1;;6131:27:5;6148:10;6131:27;;;-1:-1:-1;6179:13:5;;;:8;:13;;;;;;6172:20;6179:13;-1:-1:-1;6172:20:5;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;6080:123;-1:-1:-1;;;;;;;;;;;6247:3:5;6218:33;;;;;;;;;;;;;;;6261:18;6275:3;6261:13;:18::i;1731:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1731:43:5;;;;;;;;;:::o;327:268:3:-;389:7;491:9;:22;;;527:9;:22;;;563:9;:14;;;425:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;425:162:3;;;;;;;;;;;;;;;;-1:-1:-1;;425:162:3;;;26:21:-1;;;6:49;;425:162:3;;;;;;;;415:173;;425:162;;-1:-1:-1;425:162:3;;-1:-1:-1;425:162:3;;415:173;;;-1:-1:-1;415:173:3;-1:-1:-1;415:173:3;425:162;415:173;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;415:173:3;;;;;;;;;;;;-1:-1:-1;;;;;327:268:3:o;1248:21:5:-;;;;:::o;2750:1756::-;3048:15;3914:23;;:::i;:::-;3066:5;:19;3113:3;3118:7;3127:11;3140:14;3156:18;3176:13;3191:2;3195;3096:102;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3096:102:5;-1:-1:-1;;;;;3096:102:5;;;;;;;;-1:-1:-1;;;;;3096:102:5;-1:-1:-1;;;;;3096:102:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;3096:102:5;;;;;;;;;;-1:-1:-1;3096:102:5;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3096:102:5;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3096:102:5;;;3086:113;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;3086:113:5;;;;;;;;;3066:146;;;-1:-1:-1;;;3066:146:5;;;;;-1:-1:-1;3086:113:5;-1:-1:-1;3201:10:5;;3066:146;;;-1:-1:-1;3066:146:5;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3066:146:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3066:146:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3066:146:5;;;;;;;;;3048:164;-1:-1:-1;3253:12:5;3230:13;;;;:8;:13;;;;;:19;;;:35;;;;;;;;;3222:55;;;;-1:-1:-1;;;;;3222:55:5;;;;;;;;;3320:12;3295:21;:13;3313:2;3295:21;:17;:21;:::i;:::-;:37;;3287:67;;;;-1:-1:-1;;;;;3287:67:5;;;;;;;;;3372:8;;:30;;;;;3406:14;;-1:-1:-1;;;;;3372:8:5;;:21;;:30;;3394:7;;3372:30;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3372:30:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3372:30:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3372:30:5;;;;;;;;;:48;;3364:75;;;;-1:-1:-1;;;;;3364:75:5;;;;;;;;;3457:8;;:24;;;;;-1:-1:-1;;;;;3457:8:5;;;;:18;;:24;;3476:4;;3457:24;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3457:24:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3457:24:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3457:24:5;;;;;;;;;3449:51;;;;;;-1:-1:-1;;;;;3449:51:5;;;;;;;;;3530:7;-1:-1:-1;;;;;3519:18:5;:7;-1:-1:-1;;;;;3519:18:5;;:44;;;;3552:11;-1:-1:-1;;;;;3541:22:5;:7;-1:-1:-1;;;;;3541:22:5;;3519:44;3518:73;;;;-1:-1:-1;3569:10:5;-1:-1:-1;;;;;3569:21:5;;;;3518:73;3510:100;;;;;;-1:-1:-1;;;;;3510:100:5;;;;;;;;;3628:10;-1:-1:-1;;;;;3628:21:5;;;;:50;;-1:-1:-1;3653:10:5;-1:-1:-1;;;;;3653:25:5;;;3628:50;3620:77;;;;;;-1:-1:-1;;;;;3620:77:5;;;;;;;;;3716:5;;:49;;;;;-1:-1:-1;;;;;3716:5:5;;;;:18;;:49;;3735:7;;3744:4;;3750:14;;3716:49;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3716:49:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3716:49:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3716:49:5;;;;;;;;;3708:87;;;;;;-1:-1:-1;;;;;3708:87:5;;;;;;;;;3813:5;;:57;;;;;-1:-1:-1;;;;;3813:5:5;;;;:18;;:57;;3832:11;;3845:4;;3851:18;;3813:57;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3813:57:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3813:57:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3813:57:5;;;;;;;;;3805:98;;;;;;-1:-1:-1;;;;;3805:98:5;;;;;;;;;3940:477;;;;;;;;;;3982:10;3940:477;;;;4026:7;-1:-1:-1;;;;;3940:477:5;;;;;4067:11;-1:-1:-1;;;;;3940:477:5;;;;;4112:14;3940:477;;;;4160:18;3940:477;;;;4217:1;3940:477;;;;4258:1;3940:477;;;;4294:21;4311:3;4294:12;:16;;:21;;;;:::i;:::-;3940:477;;;;4386:2;4376:13;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;4376:13:5;;;;;;;;;;;4391;;4376;;-1:-1:-1;4391:13:5;;-1:-1:-1;4376:13:5;;;;-1:-1:-1;4391:13:5;;;;4376;4391;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;4391:13:5;;;;;;;;;;;;4359:46;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;4359:46:5;;;;;;;;4349:57;;4359:46;;;;-1:-1:-1;4359:46:5;;-1:-1:-1;4349:57:5;;;;;-1:-1:-1;4349:57:5;4359:46;4349:57;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4349:57:5;;;;;;;;;;;;;;;;3940:477;;;;;;3914:503;;4444:8;4428;:13;4437:3;4428:13;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4428:24:5;;;;;;-1:-1:-1;;4428:24:5;;-1:-1:-1;;;;;4428:24:5;;;;;;;;;;;;;;;;-1:-1:-1;4428:24:5;;;;-1:-1:-1;;4428:24:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4468:31;-1:-1:-1;;;;;;;;;;;4468:31:5;;;4495:3;;4468:31;;;;;;;;;;2750:1756;;;;;;;;;;;:::o;1080:28::-;;;;:::o;487:::-;;;-1:-1:-1;;;;;487:28:5;;:::o;393:25::-;;;-1:-1:-1;;;;;393:25:5;;:::o;1218:24::-;;;-1:-1:-1;;;;;1218:24:5;;:::o;1275:38::-;;;;:::o;601:379:3:-;679:4;750:1;712:9;:22;;;:29;:40;;:88;;;-1:-1:-1;768:22:3;;798:1;-1:-1:-1;712:88:3;:149;;;-1:-1:-1;825:22:3;;855:5;-1:-1:-1;712:149:3;:189;;;;892:9;881:5;887:1;881:8;;;;;;;;;;;;;;;;;;:20;712:189;695:258;;;-1:-1:-1;937:5:3;930:12;;695:258;-1:-1:-1;969:4:3;601:379;;;;;:::o;7873:350:5:-;7924:24;7951:13;;;:8;:13;;;;;7982:17;;;;8002:12;-1:-1:-1;7974:58:5;;;;-1:-1:-1;;;;;7974:58:5;;;;;;;;;8064:13;8046:14;;;;:31;;;;;;;;;8042:101;;;8093:19;8108:3;8093:14;:19::i;:::-;8126:7;;8042:101;-1:-1:-1;;;;;;;;;;;8185:3:5;8157:32;;;;;;;;;;;;;;;8199:17;8212:3;8199:12;:17::i;:::-;7873:350;;:::o;1114:29::-;;;;:::o;424:24::-;;;-1:-1:-1;;;;;424:24:5;;:::o;1149:29::-;;;;:::o;1035:129:11:-;1093:7;1120:5;;;1138:6;;;;1131:14;;;;1158:1;1151:8;;1035:129;;;;;;:::o;865:110::-;923:7;945:6;;;;938:14;;;;-1:-1:-1;965:5:11;;;865:110::o;12633:1023:5:-;12687:24;12714:13;;;:8;:13;;;;;12767:17;;;;12714:13;;12687:24;;;;;;;12767:35;;12797:4;;12767:25;;12789:2;12767:25;:21;:25;:::i;:::-;:29;:35;:29;:35;:::i;:::-;12737:65;;12842:39;12877:3;12842:30;12857:14;;12842:10;:14;;:30;;;;:::i;:39::-;12812:69;;12921:8;:22;;;12891:52;;12988:1;12953:37;;13017:8;:26;;;13004:10;:39;13001:225;;;13072:26;:10;13087;13072:26;:14;:26;:::i;:::-;13059:39;;13001:225;;;13148:65;13202:10;13148:49;13179:17;13148:8;:26;;;:30;;:49;;;;:::i;:::-;:53;:65;:53;:65;:::i;:::-;13129:86;;13001:225;13250:15;;13236:42;;13250:15;;;-1:-1:-1;;;;;13250:15:5;13267:10;13236:13;:42::i;:::-;13288:5;;;13303:19;;;;13288:51;;;;;-1:-1:-1;;;;;13288:5:5;;;;:14;;:51;;13303:19;;;13324:14;;13288:51;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13288:51:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13349:5:5;;13364:15;;13349:43;;;;;-1:-1:-1;;;;;13349:5:5;;;;-1:-1:-1;13349:14:5;;-1:-1:-1;13349:43:5;;:5;13364:15;;;;;;;13381:10;;13349:43;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13349:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13402:28:5;;-1:-1:-1;;13402:28:5;13419:11;13402:28;;;;;;-1:-1:-1;13447:22:5;;;13440:29;;;13486:26;;;;13479:33;;;;13486:26;;-1:-1:-1;13526:14:5;;;-1:-1:-1;13526:31:5;;;;;;;;;13522:81;;;13579:13;;;;:8;:13;;;;;;13572:20;13579:13;;13572:20;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;13522:81;-1:-1:-1;;;;;;;;;;;13645:3:5;13617:32;;;;;;;;;;;;;;;12633:1023;;;;;;:::o;11950:569::-;12017:24;12067;12118:23;;:::i;:::-;12044:13;;;;:8;:13;;;;;;;;12094:8;:13;;;;;;12144:6;;:78;;;;;12044:13;;-1:-1:-1;12094:13:5;;-1:-1:-1;;;;;;12144:6:5;;;;:18;;:78;;:6;12163:24;;;12094:13;;12211:10;;12144:78;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12144:78:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12144:78:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12144:78:5;;;;;;;;;12335:9;;12309:22;;;;;12302:42;;;12265:80;;;;12335:9;12425;;;12392:42;12355:26;;;:80;12451:34;;12118:104;;-1:-1:-1;;;;;;;;;;;;12451:34:5;;;12481:3;;12451:34;;;;;;;;;;12495:17;12508:3;12495:12;:17::i;:::-;11950:569;;;;;:::o;8926:232::-;9015:6;;8985:13;;;;:8;:13;;;;;:27;;;:36;;:76;;-1:-1:-1;9025:13:5;;;;:8;:13;;;;;:31;;;:36;8985:76;8981:171;;;-1:-1:-1;;;;;;;;;;;9106:3:5;9082:28;;;;;;;;;;;;;;;9124:17;9137:3;9124:12;:17::i;:::-;8926:232;:::o;8345:456::-;8401:24;8428:13;;;:8;:13;;;;;;;;8478:8;:13;;;;;;8547:6;;:66;;;;;8428:13;;8478;;8401:24;;-1:-1:-1;;;;;8547:6:5;;:18;;:66;;:6;8566:24;;;8478:13;;8547:66;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8547:66:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8547:66:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8547:66:5;;;;;;;;;8652:26;;;;8528:85;;-1:-1:-1;8652:40:5;;8528:85;8652:40;:30;:40;:::i;:::-;8623:26;;;:69;8731:22;;;;:36;;8758:8;8731:36;:26;:36;:::i;:::-;8702:22;;;:65;8777:17;8790:3;8777:12;:17::i;:::-;8345:456;;;;:::o;236:173:11:-;294:7;;313:6;;309:35;;;336:1;329:8;;;;309:35;-1:-1:-1;361:5:11;;;365:1;361;:5;379;;;;;;;;:10;372:18;;;489:265;547:7;636:9;652:1;648;:5;;;;;;;;;489:265;-1:-1:-1;;;;489:265:11:o;13835:403:5:-;13989:8;;:28;;;;;13910:17;;;;-1:-1:-1;;;;;13989:8:5;;;;:19;;:28;;14009:7;;13989:28;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13989:28:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13989:28:5;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13989:28:5;;;;;;;;;14027:5;;14042:9;;14064:13;;13964:53;;-1:-1:-1;13964:53:5;;-1:-1:-1;;;;;;14027:5:5;;;;:14;;14042:9;;;;14053:34;;14083:3;;14053:25;;:6;;:25;:10;:25;:::i;:34::-;14027:61;;;;;-1:-1:-1;;;14027:61:5;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14027:61:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14098:5:5;;14135:14;;-1:-1:-1;;;;;14098:5:5;;;;-1:-1:-1;14098:14:5;;-1:-1:-1;14113:9:5;;14124:35;;14155:3;;14124:26;;:6;;:26;:10;:26;:::i;:35::-;14098:62;;;;;-1:-1:-1;;;14098:62:5;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14098:62:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14170:5:5;;14207:13;;-1:-1:-1;;;;;14170:5:5;;;;-1:-1:-1;14170:14:5;;-1:-1:-1;14185:9:5;;14196:34;;14226:3;;14196:25;;:6;;:25;:10;:25;:::i;:34::-;14170:61;;;;;-1:-1:-1;;;14170:61:5;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14170:61:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;248:13993:5;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;248:13993:5;;;-1:-1:-1;248:13993:5;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;248:13993:5;;;-1:-1:-1;248:13993:5;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;248:13993:5;;;;;-1:-1:-1;;;;;248:13993:5;;;;;;-1:-1:-1;;;;;248:13993:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;105:10:-1;248:13993:5;88:34:-1;-1:-1;248:13993:5;;;-1:-1:-1;;248:13993:5:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;57:66;-1:-1;;;57:66;130:122;;208:39;239:6;233:13;208:39;;280:756;;405:4;393:17;;389:27;-1:-1;379:2;;430:1;427;420:12;379:2;467:6;454:20;489:95;504:79;576:6;504:79;;;489:95;;;480:104;;601:5;626:6;619:5;612:21;656:4;648:6;644:17;634:27;;678:4;673:3;669:14;662:21;;731:6;778:3;770:4;762:6;758:17;753:3;749:27;746:36;743:2;;;795:1;792;785:12;743:2;820:1;805:225;830:6;827:1;824:13;805:225;;;888:3;910:56;962:3;950:10;910:56;;;898:69;;-1:-1;990:4;981:14;;;;1018:4;1009:14;;;;;852:1;845:9;805:225;;;809:14;372:664;;;;;;;;1062:634;;1180:4;1168:17;;1164:27;-1:-1;1154:2;;1205:1;1202;1195:12;1154:2;1229:3;1247:77;1262:61;1316:6;1262:61;;1247:77;1238:86;;1341:5;1400:6;1447:3;1439:4;1431:6;1427:17;1422:3;1418:27;1415:36;1412:2;;;1464:1;1461;1454:12;1412:2;1489:1;1474:216;1499:6;1496:1;1493:13;1474:216;;;1557:3;1579:47;1622:3;1610:10;1579:47;;;1567:60;;-1:-1;1650:4;1641:14;;;;1669;;;;;1521:1;1514:9;1474:216;;1723:607;;1827:4;1815:17;;1811:27;-1:-1;1801:2;;1852:1;1849;1842:12;1801:2;1876:3;1894:74;1909:58;1960:6;1909:58;;1894:74;1885:83;;1985:5;2044:6;2091:3;2083:4;2075:6;2071:17;2066:3;2062:27;2059:36;2056:2;;;2108:1;2105;2098:12;2056:2;2133:1;2118:206;2143:6;2140:1;2137:13;2118:206;;;2201:3;2223:37;2256:3;2244:10;2223:37;;;2211:50;;-1:-1;2284:4;2275:14;;;;2303;;;;;2165:1;2158:9;2118:206;;2356:707;;2466:4;2454:17;;2450:27;-1:-1;2440:2;;2491:1;2488;2481:12;2440:2;2528:6;2515:20;2550:80;2565:64;2622:6;2565:64;;2550:80;2541:89;;2647:5;2672:6;2665:5;2658:21;2702:4;2694:6;2690:17;2680:27;;2724:4;2719:3;2715:14;2708:21;;2777:6;2824:3;2816:4;2808:6;2804:17;2799:3;2795:27;2792:36;2789:2;;;2841:1;2838;2831:12;2789:2;2866:1;2851:206;2876:6;2873:1;2870:13;2851:206;;;2934:3;2956:37;2989:3;2977:10;2956:37;;;2944:50;;-1:-1;3017:4;3008:14;;;;3036;;;;;2898:1;2891:9;2851:206;;3071:116;;3146:36;3174:6;3168:13;3146:36;;3194:118;;3261:46;3299:6;3286:20;3261:46;;3320:440;;3414:4;3402:17;;3398:27;-1:-1;3388:2;;3439:1;3436;3429:12;3388:2;3476:6;3463:20;3498:64;3513:48;3554:6;3513:48;;3498:64;3489:73;;3582:6;3575:5;3568:21;3618:4;3610:6;3606:17;3651:4;3644:5;3640:16;3686:3;3677:6;3672:3;3668:16;3665:25;3662:2;;;3703:1;3700;3693:12;3662:2;3713:41;3747:6;3742:3;3737;3713:41;;;3381:379;;;;;;;;3768:120;;3845:38;3875:6;3869:13;3845:38;;3928:752;;4042:4;4030:9;4025:3;4021:19;4017:30;4014:2;;;4060:1;4057;4050:12;4014:2;4078:20;4093:4;4078:20;;;4069:29;-1:-1;4156:1;4187:49;4232:3;4212:9;4187:49;;;4163:74;;-1:-1;4334:2;4319:18;;4306:32;4358:18;4347:30;;4344:2;;;4390:1;4387;4380:12;4344:2;4425:89;4510:3;4501:6;4490:9;4486:22;4425:89;;;4418:4;4411:5;4407:16;4400:115;4258:268;4576:2;4609:49;4654:3;4645:6;4634:9;4630:22;4609:49;;;4602:4;4595:5;4591:16;4584:75;4536:134;4008:672;;;;;4941:263;;5056:2;5044:9;5035:7;5031:23;5027:32;5024:2;;;5072:1;5069;5062:12;5024:2;5107:1;5124:64;5180:7;5160:9;5124:64;;;5114:74;5018:186;-1:-1;;;;5018:186;5211:399;;;5343:2;5331:9;5322:7;5318:23;5314:32;5311:2;;;5359:1;5356;5349:12;5311:2;5394:1;5411:64;5467:7;5447:9;5411:64;;;5401:74;;5373:108;5512:2;5530:64;5586:7;5577:6;5566:9;5562:22;5530:64;;;5520:74;;5491:109;5305:305;;;;;;5617:307;;5754:2;5742:9;5733:7;5729:23;5725:32;5722:2;;;5770:1;5767;5760:12;5722:2;5805:1;5822:86;5900:7;5880:9;5822:86;;5931:257;;6043:2;6031:9;6022:7;6018:23;6014:32;6011:2;;;6059:1;6056;6049:12;6011:2;6094:1;6111:61;6164:7;6144:9;6111:61;;6195:241;;6299:2;6287:9;6278:7;6274:23;6270:32;6267:2;;;6315:1;6312;6305:12;6267:2;6350:1;6367:53;6412:7;6392:9;6367:53;;6443:1559;;;;;;;;;;6710:3;6698:9;6689:7;6685:23;6681:33;6678:2;;;6727:1;6724;6717:12;6678:2;6762:1;6779:53;6824:7;6804:9;6779:53;;;6769:63;;6741:97;6869:2;6887:53;6932:7;6923:6;6912:9;6908:22;6887:53;;;6877:63;;6848:98;6977:2;6995:53;7040:7;7031:6;7020:9;7016:22;6995:53;;;6985:63;;6956:98;7085:2;7103:53;7148:7;7139:6;7128:9;7124:22;7103:53;;;7093:63;;7064:98;7193:3;7212:53;7257:7;7248:6;7237:9;7233:22;7212:53;;;7202:63;;7172:99;7302:3;7321:53;7366:7;7357:6;7346:9;7342:22;7321:53;;;7311:63;;7281:99;7439:3;7428:9;7424:19;7411:33;7464:18;7456:6;7453:30;7450:2;;;7496:1;7493;7486:12;7450:2;7516:62;7570:7;7561:6;7550:9;7546:22;7516:62;;;7506:72;;7390:194;7643:3;7632:9;7628:19;7615:33;7668:18;7660:6;7657:30;7654:2;;;7700:1;7697;7690:12;7654:2;7720:62;7774:7;7765:6;7754:9;7750:22;7720:62;;;7710:72;;7594:194;7847:3;7836:9;7832:19;7819:33;7872:18;7864:6;7861:30;7858:2;;;7904:1;7901;7894:12;7858:2;7924:62;7978:7;7969:6;7958:9;7954:22;7924:62;;;7914:72;;7798:194;6672:1330;;;;;;;;;;;;8009:929;;;;;8191:3;8179:9;8170:7;8166:23;8162:33;8159:2;;;8208:1;8205;8198:12;8159:2;8243:1;8260:53;8305:7;8285:9;8260:53;;;8250:63;;8222:97;8378:2;8367:9;8363:18;8350:32;8402:18;8394:6;8391:30;8388:2;;;8434:1;8431;8424:12;8388:2;8454:62;8508:7;8499:6;8488:9;8484:22;8454:62;;;8444:72;;8329:193;8581:2;8570:9;8566:18;8553:32;8605:18;8597:6;8594:30;8591:2;;;8637:1;8634;8627:12;8591:2;8657:62;8711:7;8702:6;8691:9;8687:22;8657:62;;;8647:72;;8532:193;8784:2;8773:9;8769:18;8756:32;8808:18;8800:6;8797:30;8794:2;;;8840:1;8837;8830:12;8794:2;8860:62;8914:7;8905:6;8894:9;8890:22;8860:62;;;8850:72;;8735:193;8153:785;;;;;;;;8945:1119;;;;;;9176:3;9164:9;9155:7;9151:23;9147:33;9144:2;;;9193:1;9190;9183:12;9144:2;9228:1;9245:53;9290:7;9270:9;9245:53;;;9235:63;;9207:97;9335:2;9353:53;9398:7;9389:6;9378:9;9374:22;9353:53;;;9343:63;;9314:98;9471:2;9460:9;9456:18;9443:32;9495:18;9487:6;9484:30;9481:2;;;9527:1;9524;9517:12;9481:2;9547:78;9617:7;9608:6;9597:9;9593:22;9547:78;;;9537:88;;9422:209;9690:2;9679:9;9675:18;9662:32;9714:18;9706:6;9703:30;9700:2;;;9746:1;9743;9736:12;9700:2;9766:78;9836:7;9827:6;9816:9;9812:22;9766:78;;;9756:88;;9641:209;9909:3;9898:9;9894:19;9881:33;9934:18;9926:6;9923:30;9920:2;;;9966:1;9963;9956:12;9920:2;9986:62;10040:7;10031:6;10020:9;10016:22;9986:62;;;9976:72;;9860:194;9138:926;;;;;;;;;10071:973;;;;;;;10269:3;10257:9;10248:7;10244:23;10240:33;10237:2;;;10286:1;10283;10276:12;10237:2;10321:1;10338:53;10383:7;10363:9;10338:53;;;10328:63;;10300:97;10428:2;10446:53;10491:7;10482:6;10471:9;10467:22;10446:53;;;10436:63;;10407:98;10536:2;10554:53;10599:7;10590:6;10579:9;10575:22;10554:53;;;10544:63;;10515:98;10644:2;10662:53;10707:7;10698:6;10687:9;10683:22;10662:53;;;10652:63;;10623:98;10752:3;10771:53;10816:7;10807:6;10796:9;10792:22;10771:53;;;10761:63;;10731:99;10889:3;10878:9;10874:19;10861:33;10914:18;10906:6;10903:30;10900:2;;;10946:1;10943;10936:12;10900:2;10966:62;11020:7;11011:6;11000:9;10996:22;10966:62;;;10956:72;;10840:194;10231:813;;;;;;;;;11051:377;;11180:2;11168:9;11159:7;11155:23;11151:32;11148:2;;;11196:1;11193;11186:12;11148:2;11231:31;;11282:18;11271:30;;11268:2;;;11314:1;11311;11304:12;11268:2;11334:78;11404:7;11395:6;11384:9;11380:22;11334:78;;11435:638;;;11606:2;11594:9;11585:7;11581:23;11577:32;11574:2;;;11622:1;11619;11612:12;11574:2;11657:31;;11708:18;11697:30;;11694:2;;;11740:1;11737;11730:12;11694:2;11760:78;11830:7;11821:6;11810:9;11806:22;11760:78;;;11750:88;;11636:208;11903:2;11892:9;11888:18;11875:32;11927:18;11919:6;11916:30;11913:2;;;11959:1;11956;11949:12;11913:2;11979:78;12049:7;12040:6;12029:9;12025:22;11979:78;;12080:263;;12195:2;12183:9;12174:7;12170:23;12166:32;12163:2;;;12211:1;12208;12201:12;12163:2;12246:1;12263:64;12319:7;12299:9;12263:64;;12350:110;12423:31;12448:5;12423:31;;;12418:3;12411:44;12405:55;;;12504:711;;12673:69;12736:5;12673:69;;;12760:6;12755:3;12748:19;12784:4;12779:3;12775:14;12768:21;;12829:71;12894:5;12829:71;;;12921:1;12906:287;12931:6;12928:1;12925:13;12906:287;;;12971:95;13062:3;13053:6;13047:13;12971:95;;;13083:75;13151:6;13083:75;;;13181:4;13172:14;;;;;13073:85;-1:-1;12953:1;12946:9;12906:287;;;-1:-1;13206:3;;12652:563;-1:-1;;;;12652:563;13260:713;;13431:71;13496:5;13431:71;;;13520:6;13515:3;13508:19;13544:4;13539:3;13535:14;13528:21;;13589:73;13656:5;13589:73;;;13683:1;13668:283;13693:6;13690:1;13687:13;13668:283;;;13733:89;13818:3;13810:6;13733:89;;;13839:77;13909:6;13839:77;;;13939:4;13930:14;;;;;13829:87;-1:-1;13715:1;13708:9;13668:283;;14014:505;14133:48;14175:5;14133:48;;;14227:50;14271:5;14227:50;;;14298:1;14283:224;14308:6;14305:1;14302:13;14283:224;;;14348:53;14397:3;14388:6;14382:13;14348:53;;;14418:54;14465:6;14418:54;;;14495:4;14486:14;;;;;14408:64;-1:-1;14330:1;14323:9;14283:224;;14560:509;14680:49;14723:5;14680:49;;;14775:51;14820:5;14775:51;;;14847:1;14832:225;14857:6;14854:1;14851:13;14832:225;;;14897:53;14946:3;14937:6;14931:13;14897:53;;;14967:55;15015:6;14967:55;;;15045:4;15036:14;;;;;14957:65;-1:-1;14879:1;14872:9;14832:225;;15108:590;;15243:54;15291:5;15243:54;;;15315:6;15310:3;15303:19;15339:4;15334:3;15330:14;15323:21;;15384:56;15434:5;15384:56;;;15461:1;15446:230;15471:6;15468:1;15465:13;15446:230;;;15511:53;15560:3;15551:6;15545:13;15511:53;;;15581:60;15634:6;15581:60;;;15664:4;15655:14;;;;;15571:70;-1:-1;15493:1;15486:9;15446:230;;15737:578;;15869:51;15914:5;15869:51;;;15938:6;15933:3;15926:19;15962:4;15957:3;15953:14;15946:21;;16007:53;16054:5;16007:53;;;16081:1;16066:227;16091:6;16088:1;16085:13;16066:227;;;16131:53;16180:3;16171:6;16165:13;16131:53;;;16201:57;16251:6;16201:57;;;16281:4;16272:14;;;;;16191:67;-1:-1;16113:1;16106:9;16066:227;;16323:101;16390:28;16412:5;16390:28;;16431:110;16504:31;16529:5;16504:31;;16673:297;;16773:38;16805:5;16773:38;;;16828:6;16823:3;16816:19;16840:63;16896:6;16889:4;16884:3;16880:14;16873:4;16866:5;16862:16;16840:63;;;16935:29;16957:6;16935:29;;;16915:50;;;16928:4;16915:50;;16753:217;-1:-1;;;16753:217;17289:156;17382:57;17433:5;17382:57;;18088:130;18168:44;18206:5;18168:44;;18226:296;18381:2;18369:15;;18418:66;18413:2;18404:12;;18397:88;18513:2;18504:12;;18362:160;18531:296;18686:2;18674:15;;18723:66;18718:2;18709:12;;18702:88;18818:2;18809:12;;18667:160;18836:296;18991:2;18979:15;;19028:66;19023:2;19014:12;;19007:88;19123:2;19114:12;;18972:160;19141:296;19296:2;19284:15;;19333:66;19328:2;19319:12;;19312:88;19428:2;19419:12;;19277:160;19446:296;19601:2;19589:15;;19638:66;19633:2;19624:12;;19617:88;19733:2;19724:12;;19582:160;19751:296;19906:2;19894:15;;19943:66;19938:2;19929:12;;19922:88;20038:2;20029:12;;19887:160;20056:296;20211:2;20199:15;;20248:66;20243:2;20234:12;;20227:88;20343:2;20334:12;;20192:160;20361:296;20516:2;20504:15;;20553:66;20548:2;20539:12;;20532:88;20648:2;20639:12;;20497:160;20666:296;20821:2;20809:15;;20858:66;20853:2;20844:12;;20837:88;20953:2;20944:12;;20802:160;20971:296;21126:2;21114:15;;21163:66;21158:2;21149:12;;21142:88;21258:2;21249:12;;21107:160;21276:296;21431:2;21419:15;;21468:66;21463:2;21454:12;;21447:88;21563:2;21554:12;;21412:160;21581:296;21736:2;21724:15;;21773:66;21768:2;21759:12;;21752:88;21868:2;21859:12;;21717:160;21886:296;22041:2;22029:15;;22078:66;22073:2;22064:12;;22057:88;22173:2;22164:12;;22022:160;22191:296;22346:2;22334:15;;22383:66;22378:2;22369:12;;22362:88;22478:2;22469:12;;22327:160;22496:296;22651:2;22639:15;;22688:66;22683:2;22674:12;;22667:88;22783:2;22774:12;;22632:160;22801:296;22956:2;22944:15;;22993:66;22988:2;22979:12;;22972:88;23088:2;23079:12;;22937:160;23106:296;23261:2;23249:15;;23298:66;23293:2;23284:12;;23277:88;23393:2;23384:12;;23242:160;23411:296;23566:2;23554:15;;23603:66;23598:2;23589:12;;23582:88;23698:2;23689:12;;23547:160;23716:295;23871:1;23859:14;;23907:66;23902:2;23893:12;;23886:88;24002:2;23993:12;;23852:159;24020:296;24175:2;24163:15;;24212:66;24207:2;24198:12;;24191:88;24307:2;24298:12;;24156:160;24325:296;24480:2;24468:15;;24517:66;24512:2;24503:12;;24496:88;24612:2;24603:12;;24461:160;24630:295;24785:1;24773:14;;24821:66;24816:2;24807:12;;24800:88;24916:2;24907:12;;24766:159;24934:296;25089:2;25077:15;;25126:66;25121:2;25112:12;;25105:88;25221:2;25212:12;;25070:160;25239:296;25394:2;25382:15;;25431:66;25426:2;25417:12;;25410:88;25526:2;25517:12;;25375:160;25544:296;25699:2;25687:15;;25736:66;25731:2;25722:12;;25715:88;25831:2;25822:12;;25680:160;25849:296;26004:2;25992:15;;26041:66;26036:2;26027:12;;26020:88;26136:2;26127:12;;25985:160;26154:296;26309:2;26297:15;;26346:66;26341:2;26332:12;;26325:88;26441:2;26432:12;;26290:160;26459:296;26614:2;26602:15;;26651:66;26646:2;26637:12;;26630:88;26746:2;26737:12;;26595:160;26764:296;26919:2;26907:15;;26956:66;26951:2;26942:12;;26935:88;27051:2;27042:12;;26900:160;27069:296;27224:2;27212:15;;27261:66;27256:2;27247:12;;27240:88;27356:2;27347:12;;27205:160;27374:296;27529:2;27517:15;;27566:66;27561:2;27552:12;;27545:88;27661:2;27652:12;;27510:160;27741:822;27959:22;;27741:822;;27882:4;27873:14;;;27993:61;27877:3;27959:22;27993:61;;;27902:164;28150:4;28143:5;28139:16;28133:23;28201:3;28195:4;28191:14;28184:4;28179:3;28175:14;28168:38;28221:136;28352:4;28339:11;28221:136;;;28213:144;;28076:293;28445:4;28438:5;28434:16;28428:23;28463:62;28519:4;28514:3;28510:14;28497:11;28463:62;;;-1:-1;28554:4;27855:708;-1:-1;;;27855:708;29521:922;29743:22;;29521:922;;29659:4;29650:14;;;29789:33;29743:22;29789:33;;;29834:61;29885:3;29868:11;29834:61;;;29697:210;29985:3;29978:5;29974:15;30034:3;30028:4;30024:14;30017:4;30012:3;30008:14;30001:38;30054:138;30187:4;30174:11;30054:138;;;30046:146;;29917:287;30269:3;30262:5;30258:15;30252:22;30239:35;;30298:33;30321:9;30298:33;;;30343:62;30399:4;30394:3;30390:14;30377:11;30343:62;;;-1:-1;30434:4;;29632:811;-1:-1;;;;29632:811;30567:193;30675:2;30660:18;;30689:61;30664:9;30723:6;30689:61;;30767:435;30951:2;30936:18;;30965:61;30940:9;30999:6;30965:61;;;31037:82;31115:2;31104:9;31100:18;31091:6;31037:82;;;31130:62;31188:2;31177:9;31173:18;31164:6;31130:62;;31209:294;31345:2;31330:18;;31359:61;31334:9;31393:6;31359:61;;;31431:62;31489:2;31478:9;31474:18;31465:6;31431:62;;31510:181;31612:2;31597:18;;31626:55;31601:9;31654:6;31626:55;;31698:193;31806:2;31791:18;;31820:61;31795:9;31854:6;31820:61;;31898:402;32060:2;32045:18;;32074:69;32049:9;32116:6;32074:69;;;32191:9;32185:4;32181:20;32176:2;32165:9;32161:18;32154:48;32216:74;32285:4;32276:6;32216:74;;32307:749;32553:3;32538:19;;32568:61;32542:9;32602:6;32568:61;;;32677:9;32671:4;32667:20;32662:2;32651:9;32647:18;32640:48;32702:66;32763:4;32754:6;32702:66;;;32694:74;;32816:9;32810:4;32806:20;32801:2;32790:9;32786:18;32779:48;32841:66;32902:4;32893:6;32841:66;;;32833:74;;32955:9;32949:4;32945:20;32940:2;32929:9;32925:18;32918:48;32980:66;33041:4;33032:6;32980:66;;;32972:74;32524:532;-1:-1;;;;;;32524:532;33063:233;33191:2;33176:18;;33205:81;33180:9;33259:6;33205:81;;34247:1021;34586:3;34571:19;;34601:68;34575:9;34642:6;34601:68;;;34680:62;34738:2;34727:9;34723:18;34714:6;34680:62;;;34753;34811:2;34800:9;34796:18;34787:6;34753:62;;;34826;34884:2;34873:9;34869:18;34860:6;34826:62;;;34899:63;34957:3;34946:9;34942:19;34933:6;34899:63;;;34973;35031:3;35020:9;35016:19;35007:6;34973:63;;;35047;35105:3;35094:9;35090:19;35081:6;35047:63;;;35121;35179:3;35168:9;35164:19;35155:6;35121:63;;;35195;35253:3;35242:9;35238:19;35229:6;35195:63;;;34557:711;;;;;;;;;;;;;35275:387;35456:2;35470:47;;;35441:18;;35531:121;35441:18;35531:121;;35669:387;35850:2;35864:47;;;35835:18;;35925:121;35835:18;35925:121;;36063:387;36244:2;36258:47;;;36229:18;;36319:121;36229:18;36319:121;;36457:387;36638:2;36652:47;;;36623:18;;36713:121;36623:18;36713:121;;36851:488;37060:2;37074:47;;;37045:18;;37135:121;37045:18;37135:121;;;37127:129;;37267:62;37325:2;37314:9;37310:18;37301:6;37267:62;;37346:387;37527:2;37541:47;;;37512:18;;37602:121;37512:18;37602:121;;37740:488;37949:2;37963:47;;;37934:18;;38024:121;37934:18;38024:121;;38235:387;38416:2;38430:47;;;38401:18;;38491:121;38401:18;38491:121;;38629:488;38838:2;38852:47;;;38823:18;;38913:121;38823:18;38913:121;;39124:387;39305:2;39319:47;;;39290:18;;39380:121;39290:18;39380:121;;39518:387;39699:2;39713:47;;;39684:18;;39774:121;39684:18;39774:121;;39912:387;40093:2;40107:47;;;40078:18;;40168:121;40078:18;40168:121;;40306:387;40487:2;40501:47;;;40472:18;;40562:121;40472:18;40562:121;;40700:387;40881:2;40895:47;;;40866:18;;40956:121;40866:18;40956:121;;41094:488;41303:2;41317:47;;;41288:18;;41378:121;41288:18;41378:121;;41589:488;41798:2;41812:47;;;41783:18;;41873:121;41783:18;41873:121;;42084:387;42265:2;42279:47;;;42250:18;;42340:121;42250:18;42340:121;;42478:387;42659:2;42673:47;;;42644:18;;42734:121;42644:18;42734:121;;42872:488;43081:2;43095:47;;;43066:18;;43156:121;43066:18;43156:121;;43367:488;43576:2;43590:47;;;43561:18;;43651:121;43561:18;43651:121;;43862:387;44043:2;44057:47;;;44028:18;;44118:121;44028:18;44118:121;;44256:387;44437:2;44451:47;;;44422:18;;44512:121;44422:18;44512:121;;44650:387;44831:2;44845:47;;;44816:18;;44906:121;44816:18;44906:121;;45044:488;45253:2;45267:47;;;45238:18;;45328:121;45238:18;45328:121;;45539:387;45720:2;45734:47;;;45705:18;;45795:121;45705:18;45795:121;;45933:387;46114:2;46128:47;;;46099:18;;46189:121;46099:18;46189:121;;46327:387;46508:2;46522:47;;;46493:18;;46583:121;46493:18;46583:121;;46721:387;46902:2;46916:47;;;46887:18;;46977:121;46887:18;46977:121;;47115:387;47296:2;47310:47;;;47281:18;;47371:121;47281:18;47371:121;;47509:387;47690:2;47704:47;;;47675:18;;47765:121;47675:18;47765:121;;47903:387;48084:2;48098:47;;;48069:18;;48159:121;48069:18;48159:121;;48297:333;48451:2;48465:47;;;48436:18;;48526:94;48436:18;48606:6;48526:94;;48637:590;48873:2;48887:47;;;48858:18;;48948:98;48858:18;49032:6;48948:98;;;48940:106;;49094:9;49088:4;49084:20;49079:2;49068:9;49064:18;49057:48;49119:98;49212:4;49203:6;49119:98;;49234:578;49464:2;49478:47;;;49449:18;;49539:95;49449:18;49620:6;49539:95;;;49531:103;;49682:9;49676:4;49672:20;49667:2;49656:9;49652:18;49645:48;49707:95;49797:4;49788:6;49707:95;;49819:763;50095:2;50109:47;;;50080:18;;50170:95;50080:18;50251:6;50170:95;;;50162:103;;50313:9;50307:4;50303:20;50298:2;50287:9;50283:18;50276:48;50338:95;50428:4;50419:6;50338:95;;;50330:103;;50481:9;50475:4;50471:20;50466:2;50455:9;50451:18;50444:48;50506:66;50567:4;50558:6;50506:66;;;50498:74;50066:516;-1:-1;;;;;50066:516;50789:256;50851:2;50845:9;50877:17;;;50952:18;50937:34;;50973:22;;;50934:62;50931:2;;;51009:1;51006;50999:12;50931:2;51025;51018:22;50829:216;;-1:-1;50829:216;51052:273;;51226:18;51218:6;51215:30;51212:2;;;51258:1;51255;51248:12;51212:2;-1:-1;51287:4;51275:17;;;51305:15;;51149:176;51332:232;;51488:18;51480:6;51477:30;51474:2;;;51520:1;51517;51510:12;51474:2;-1:-1;51549:4;51537:17;;51411:153;52072:258;;52215:18;52207:6;52204:30;52201:2;;;52247:1;52244;52237:12;52201:2;-1:-1;52320:4;52291;52268:17;;;;-1:-1;;52264:33;52310:15;;52138:192;52339:136;52463:4;52451:17;;52432:43;52486:161;;52588:15;;;52635:4;52622:18;;;52580:67;53169:122;53274:12;;53258:33;53298:124;53405:12;;53389:33;53429:92;-1:-1;53513:3;;53497:24;54098:134;54224:1;54214:12;;54195:37;54740:128;-1:-1;;;;;54809:54;;54792:76;54875:92;54948:13;54941:21;;54924:43;55060:126;;55147:1;55137:12;;55127:2;;55153:9;55770:135;;55869:31;55894:5;55869:31;;56472:131;;56558:40;56592:5;56558:40;;56611:145;56692:6;56687:3;56682;56669:30;-1:-1;56748:1;56730:16;;56723:27;56662:94;56765:268;56830:1;56837:101;56851:6;56848:1;56845:13;56837:101;;;56918:11;;;56912:18;56899:11;;;56892:39;56873:2;56866:10;56837:101;;;56953:6;56950:1;56947:13;56944:2;;;-1:-1;;57018:1;57000:16;;56993:27;56814:219;57041:97;57129:2;57109:14;-1:-1;;57105:28;;57089:49",
  "source": "pragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\nimport {IGameEngine, IToken, IPlatform, ISignidice} from '../interfaces/Interfaces.sol';\nimport '../game/GameObject.sol';\nimport '../library/SafeMath.sol';\nimport '../library/Utils.sol';\n\ncontract GameChannel is GameObject {\n\n    event logChannel(\n        string  action,\n        bytes32 id\n    );\n\n    using SafeMath for uint;\n\n    IGameEngine public engine;\n    IToken      public token;\n    IPlatform   public platform;\n    ISignidice  public signidice;\n    /**\n    @notice constructor\n    @param _engine address contract erc20\n    @param _token address contract erc20\n    @param _platform address of platform contract\n    @param _signidice address of signidice contract\n    */\n    constructor (\n        IGameEngine _engine,\n        IToken      _token,\n        IPlatform   _platform,\n        ISignidice  _signidice\n    )\n        public\n    {\n        engine    = IGameEngine(_engine);\n        token     = IToken(_token);\n        platform  = IPlatform(_platform);\n        signidice = ISignidice(_signidice);\n    }\n\n    uint256 public gameDevReward;\n    uint256 public bankrollReward;\n    uint256 public platformReward;\n    uint256 public refererReward;\n    address public developer;\n    uint256 public minBet;\n    uint256 public safeTime = uint256(120);\n\n    struct Channel {\n        State   state;\n        address player;\n        address bankroller;\n        uint256 playerBalance;\n        uint256 bankrollerBalance;\n        uint256 totalBet;\n        uint256 session;\n        uint256 endBlock;\n        bytes32 RSAHash;\n    }\n\n    struct Dispute {\n        uint256[] disputeBets;\n        gameData  disputeGameData;\n    }\n\n    enum State {unused, open, close, dispute}\n    mapping(bytes32 => Channel) public channels;\n    mapping(bytes32 => Dispute) public disputes;\n\n    modifier active(Channel _channel) {\n        require((msg.sender == _channel.player) || (msg.sender == _channel.bankroller), 'invalid sender');\n        require((_channel.endBlock > block.number), 'invalid time');\n        require((_channel.state == State.open) || (_channel.state == State.dispute), 'invalid state');\n        _;\n    }\n\n    /**\n    @notice Opening the channel and depositing funds\n    @param _id                Unique channel identifier\n    @param _player            player Address of the player\n    @param _bankroller        Address of the bankroller\n    @param _playerBalance     Player's deposit\n    @param _bankrollerBalance Bankroller's deposit\n    @param _openingBlock      opening block\n    @param _N                 N-component of bankroller's rsa public key\n    @param _E                 E-component of bankroller's rsa public key\n    @param _signature         Signature from the player\n    */\n    function openChannel(\n        bytes32 _id,\n        address _player,\n        address _bankroller,\n        uint256 _playerBalance,\n        uint256 _bankrollerBalance,\n        uint256 _openingBlock,\n        bytes   _N,\n        bytes   _E,\n        bytes   _signature\n    )\n        public\n    {\n        address _signer = Utils.recoverSigner(keccak256(abi.encodePacked(_id, _player, _bankroller, _playerBalance, _bankrollerBalance, _openingBlock, _N, _E)), _signature);\n        require(channels[_id].state == State.unused, 'used id');\n        require(_openingBlock.add(20) >= block.number, 'outdate signature');\n        require(platform.getMaxAmount(_player) >= _playerBalance, 'invalid amount');\n        require(platform.getStatus(this), 'invalid status');\n        require((_signer == _player || _signer == _bankroller) && (msg.sender != _signer), 'invalid signer');\n        require(msg.sender == _player || msg.sender == _bankroller, 'invalid sender');\n\n        require(token.transferFrom(_player, this, _playerBalance), 'fail transfer from player');\n        require(token.transferFrom(_bankroller, this, _bankrollerBalance), 'fail transfe from bankroller');\n\n        Channel memory _channel = Channel({\n            state             : State.open,\n            player            : _player,\n            bankroller        : _bankroller,\n            playerBalance     : _playerBalance,\n            bankrollerBalance : _bankrollerBalance,\n            totalBet          : uint(0),\n            session           : uint(0),\n            endBlock          : block.number.add(150),\n            RSAHash           : keccak256(abi.encodePacked(keccak256(_N), keccak256(_E)))\n        });\n\n        channels[_id] = _channel;\n\n        emit logChannel(\"open channel\", _id);\n    }\n\n    /**\n    @notice Update the state of the channel\n    @param _id Unique channel identifier\n    @param _playerBalance The player's account balance in the channel\n    @param _bankrollerBalance The bankroller's account balance in the channel\n    @param _totalBet blabla\n    @param _session Number of the game session\n    @param _signature Signature from the player or bankroller\n    */\n    function updateChannel(\n        bytes32 _id,\n        uint256 _playerBalance,\n        uint256 _bankrollerBalance,\n        uint256 _totalBet,\n        uint256 _session,\n        bytes   _signature\n    )\n        public active(channels[_id])\n    {\n        Channel storage _channel = channels[_id];\n        address stateSigner = Utils.recoverSigner(keccak256(abi.encodePacked(_id, _playerBalance, _bankrollerBalance, _totalBet, _session)), _signature);\n        require(_channel.session < _session, 'outdate session');\n        require(stateSigner != msg.sender, 'invalid state singer');\n        require(stateSigner == _channel.player || stateSigner == _channel.bankroller, 'state signer is not member');\n        require(_playerBalance.add(_bankrollerBalance) == _channel.playerBalance.add(_channel.bankrollerBalance), 'invalid new balances');\n\n        if (_channel.endBlock.sub(block.number) < safeTime) {\n            _channel.endBlock = block.number.add(safeTime);\n        }\n\n        _channel.session           = _session;\n        _channel.playerBalance     = _playerBalance;\n        _channel.bankrollerBalance = _bankrollerBalance;\n        _channel.totalBet          = _totalBet;\n\n        if (_channel.state == State.dispute) {\n            _channel.state = State.open;\n            delete disputes[_id];\n        }\n\n        emit logChannel(\"update channel\", _id);\n        checkGameOver(_id);\n    }\n\n    /**\n    @notice Closing of the channel by consent of the parties\n    @param _id Unique channel identifier\n    @param _playerBalance The player's account balance in the channel\n    @param _bankrollerBalance The bankroller's account balance in the channel\n    @param _totalBet The bankroller's account balance in the channel\n    @param _session Number of the game session\n    @param _sign Signature from the player or bankroller\n    */\n    function closeByConsent(\n        bytes32 _id,\n        uint256 _playerBalance,\n        uint256 _bankrollerBalance,\n        uint256 _totalBet,\n        uint256 _session,\n        bytes   _sign\n    )\n        public active(channels[_id])\n    {\n        Channel storage _channel = channels[_id];\n        address _signer = Utils.recoverSigner(keccak256(abi.encodePacked(_id, _playerBalance, _bankrollerBalance, _totalBet, _session, true)), _sign);\n        require(_playerBalance.add(_bankrollerBalance) == _channel.playerBalance.add(_channel.bankrollerBalance), 'invalid balances');\n        require(_signer != msg.sender, 'invalid signer');\n        require(_signer == _channel.player || _signer == _channel.bankroller, 'signer is not member');\n        _channel.playerBalance     = _playerBalance;\n        _channel.bankrollerBalance = _bankrollerBalance;\n        _channel.session           = _session;\n        _channel.totalBet          = _totalBet;\n        emit logChannel(\"close by consent\", _id);\n        closeChannel(_id);\n    }\n\n    /**\n    @notice Closing the channel after the time has elapsed\n    @param _id Unique channel identifier\n    */\n    function closeByTime(bytes32 _id) public {\n        Channel storage _channel = channels[_id];\n        require(_channel.endBlock < block.number, \"invalid block\");\n        if (_channel.state == State.dispute) {\n            closeByDispute(_id);\n            return;\n        }\n        emit logChannel(\"close by time\", _id);\n        closeChannel(_id);\n    }\n\n    /**\n    @notice Closing the channel after the time with dispute\n    @param _id Unique channel identifier\n    */\n    function closeByDispute(bytes32 _id) internal {\n        Channel storage _channel = channels[_id];\n        Dispute storage _dispute = disputes[_id];\n        // TODO time check\n        uint256 _penalty = engine.getPenatlty(_dispute.disputeGameData, _dispute.disputeBets);\n        _channel.bankrollerBalance = _channel.bankrollerBalance.sub(_penalty);\n        _channel.playerBalance     = _channel.playerBalance.add(_penalty);\n        closeChannel(_id);\n    }\n\n    /**\n    @notice Check and close the channel at zero or min balance\n    @param _id Unique channel identifier\n    */\n    function checkGameOver(bytes32 _id) internal {\n        if (channels[_id].playerBalance < minBet || channels[_id].bankrollerBalance == 0) {\n            emit logChannel(\"game over\", _id);\n            closeChannel(_id);\n        }\n    }\n\n    /**\n    @notice To open a dispute\n    @param _id Unique channel identifier\n    @param _session Number of the game session\n    @param _disputeBets Player's bet\n    @param _gameData Player's game data\n    @param _signature Player's game data signature\n    */\n    function openDispute(\n        bytes32   _id,\n        uint256   _session,\n        uint256[] _disputeBets,\n        gameData  _gameData,\n        bytes     _signature\n    )\n        public active(channels[_id])\n    {\n        Channel storage _channel = channels[_id];\n        require(_session == _channel.session.add(1), 'invalid session');\n        bytes32 _gameDataHash = hashGameData(_gameData);\n        address _signer = Utils.recoverSigner(keccak256(abi.encodePacked(_id, _session, _disputeBets, _gameDataHash)), _signature);\n        require(_signer == _channel.player, 'signer is not a player');\n        require(checkGameData(_gameData, _disputeBets), 'invalid gameData');\n        require(engine.getProfit(_gameData, _disputeBets) <= _channel.bankrollerBalance, 'invalid profit');\n\n        if (_channel.endBlock.sub(block.number) < safeTime) {\n            _channel.endBlock = block.number.add(safeTime);\n        }\n\n        Dispute memory _dispute = Dispute({\n            disputeBets     : _disputeBets,\n            disputeGameData : _gameData\n        });\n\n        //_channel.totalBet = _channel.totalBet.add(_disputeBets);\n        disputes[_id]  = _dispute;\n        _channel.state = State.dispute;\n        emit logChannel(\"open dispute\", _id);\n    }\n\n    /**\n    @notice Closing of the channel on the dispute\n    @param _id Unique channel identifier\n    @param _N  N-component of bankroller's rsa public key\n    @param _E  E-component of bankroller's rsa public key\n    @param _rsaSignature sign for generate random\n    */\n    function resolveDispute(\n        bytes32 _id,\n        bytes   _N,\n        bytes   _E,\n        bytes   _rsaSignature\n    )\n        public\n    {\n        Channel storage _channel = channels[_id];\n        Dispute storage _dispute = disputes[_id];\n        bytes32 _gameDataHash = hashGameData(_dispute.disputeGameData);\n        bytes32 _hash = keccak256(abi.encodePacked(_id, _channel.session.add(1), _dispute.disputeBets, _gameDataHash));\n        require(_channel.state == State.dispute, 'invalid status');\n        require(msg.sender == _channel.bankroller, 'invalid sender');\n\n        // check time!\n\n        require(keccak256(abi.encodePacked(keccak256(_N), keccak256(_E))) == _channel.RSAHash, 'invalid public');\n        require(signidice.verify(_hash, _N, _E, _rsaSignature), 'invalid verify');\n        resolve(_id, _rsaSignature);\n    }\n\n    /**\n    @notice run last game round after dispute\n    @param _id Unique channel identifier\n    @param _signature Sign for creation random number\n    */\n    function resolve(bytes32 _id, bytes _signature) internal {\n        Channel storage _channel = channels[_id];\n        Dispute storage _dispute = disputes[_id];\n\n        int256[2] memory profit = engine.resolveGame(_dispute.disputeGameData, _dispute.disputeBets, _signature);\n\n        // add overflow require\n        _channel.playerBalance     = uint256(int256(_channel.playerBalance) + profit[0]);\n        _channel.bankrollerBalance = uint256(int256(_channel.playerBalance) + profit[1]);\n\n        emit logChannel(\"resolve dispute\", _id);\n        closeChannel(_id);\n    }\n\n    /**\n    @notice Internal function for for sending funds\n    @param _id Unique channel identifier\n    */\n    function closeChannel(bytes32 _id) internal {\n        Channel storage _channel = channels[_id];\n        uint256 _forReward          = _channel.totalBet.mul(20).div(1000);\n        uint256 _bankrollerReward   = _forReward.mul(bankrollReward).div(100);\n        uint256 _forPlayer          = _channel.playerBalance;\n        uint256 _forBankroller      = uint(0);\n\n        if(_forReward > _channel.bankrollerBalance) {\n            _forPlayer = _forPlayer.sub(_forReward);\n        } else {\n            _forBankroller = ((_channel.bankrollerBalance.add(_bankrollerReward).sub(_forReward)));\n        }\n\n        serviceReward(_channel.player, _forReward);\n        token.transfer(_channel.bankroller, _forBankroller);\n        token.transfer(_channel.player, _forPlayer);\n        _channel.state = State.close;\n        delete _channel.playerBalance;\n        delete _channel.bankrollerBalance;\n        if (_channel.state == State.dispute) {\n           delete disputes[_id];\n        }\n        emit logChannel(\"close channel\", _id);\n    }\n\n    /**\n    @notice Transfer reward to game developer, bankroller, platform and referrer\n    @param _player player's address\n    @param _value Total for distribution\n    */\n    function serviceReward(address _player, uint256 _value) internal {\n        address _platform;\n        address _referrer;\n        (_platform, _referrer) = platform.getService(_player);\n        token.transfer(developer, _value.mul(gameDevReward).div(100));\n        token.transfer(_platform, _value.mul(platformReward).div(100));\n        token.transfer(_referrer, _value.mul(refererReward).div(100));\n    }\n\n}",
  "sourcePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/gameChannel/GameChannel.sol",
  "ast": {
    "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/gameChannel/GameChannel.sol",
    "exportedSymbols": {
      "GameChannel": [
        1673
      ]
    },
    "id": 1674,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 436,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".23"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:5"
      },
      {
        "id": 437,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "25:33:5"
      },
      {
        "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/interfaces/Interfaces.sol",
        "file": "../interfaces/Interfaces.sol",
        "id": 442,
        "nodeType": "ImportDirective",
        "scope": 1674,
        "sourceUnit": 1830,
        "src": "60:88:5",
        "symbolAliases": [
          {
            "foreign": 438,
            "local": null
          },
          {
            "foreign": 439,
            "local": null
          },
          {
            "foreign": 440,
            "local": null
          },
          {
            "foreign": 441,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/game/GameObject.sol",
        "file": "../game/GameObject.sol",
        "id": 443,
        "nodeType": "ImportDirective",
        "scope": 1674,
        "sourceUnit": 363,
        "src": "149:32:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/library/SafeMath.sol",
        "file": "../library/SafeMath.sol",
        "id": 444,
        "nodeType": "ImportDirective",
        "scope": 1674,
        "sourceUnit": 1928,
        "src": "182:33:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/library/Utils.sol",
        "file": "../library/Utils.sol",
        "id": 445,
        "nodeType": "ImportDirective",
        "scope": 1674,
        "sourceUnit": 2339,
        "src": "216:30:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 446,
              "name": "GameObject",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 362,
              "src": "272:10:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GameObject_$362",
                "typeString": "contract GameObject"
              }
            },
            "id": 447,
            "nodeType": "InheritanceSpecifier",
            "src": "272:10:5"
          }
        ],
        "contractDependencies": [
          362
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1673,
        "linearizedBaseContracts": [
          1673,
          362
        ],
        "name": "GameChannel",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 453,
            "name": "logChannel",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 449,
                  "indexed": false,
                  "name": "action",
                  "nodeType": "VariableDeclaration",
                  "scope": 453,
                  "src": "316:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 448,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "316:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 451,
                  "indexed": false,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 453,
                  "src": "340:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 450,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "340:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "306:50:5"
            },
            "src": "290:67:5"
          },
          {
            "id": 456,
            "libraryName": {
              "contractScope": null,
              "id": 454,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1927,
              "src": "369:8:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$1927",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "363:24:5",
            "typeName": {
              "id": 455,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "382:4:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 458,
            "name": "engine",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "393:25:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IGameEngine_$1729",
              "typeString": "contract IGameEngine"
            },
            "typeName": {
              "contractScope": null,
              "id": 457,
              "name": "IGameEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1729,
              "src": "393:11:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IGameEngine_$1729",
                "typeString": "contract IGameEngine"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 460,
            "name": "token",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "424:24:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IToken_$1822",
              "typeString": "contract IToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 459,
              "name": "IToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1822,
              "src": "424:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IToken_$1822",
                "typeString": "contract IToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 462,
            "name": "platform",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "454:27:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IPlatform_$1755",
              "typeString": "contract IPlatform"
            },
            "typeName": {
              "contractScope": null,
              "id": 461,
              "name": "IPlatform",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1755,
              "src": "454:9:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IPlatform_$1755",
                "typeString": "contract IPlatform"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 464,
            "name": "signidice",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "487:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ISignidice_$1785",
              "typeString": "contract ISignidice"
            },
            "typeName": {
              "contractScope": null,
              "id": 463,
              "name": "ISignidice",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1785,
              "src": "487:10:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ISignidice_$1785",
                "typeString": "contract ISignidice"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 499,
              "nodeType": "Block",
              "src": "903:171:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 479,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 475,
                      "name": "engine",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 458,
                      "src": "913:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IGameEngine_$1729",
                        "typeString": "contract IGameEngine"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 477,
                          "name": "_engine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 466,
                          "src": "937:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IGameEngine_$1729",
                            "typeString": "contract IGameEngine"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IGameEngine_$1729",
                            "typeString": "contract IGameEngine"
                          }
                        ],
                        "id": 476,
                        "name": "IGameEngine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1729,
                        "src": "925:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IGameEngine_$1729_$",
                          "typeString": "type(contract IGameEngine)"
                        }
                      },
                      "id": 478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "925:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IGameEngine_$1729",
                        "typeString": "contract IGameEngine"
                      }
                    },
                    "src": "913:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IGameEngine_$1729",
                      "typeString": "contract IGameEngine"
                    }
                  },
                  "id": 480,
                  "nodeType": "ExpressionStatement",
                  "src": "913:32:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 481,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 460,
                      "src": "955:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IToken_$1822",
                        "typeString": "contract IToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 483,
                          "name": "_token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 468,
                          "src": "974:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IToken_$1822",
                            "typeString": "contract IToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IToken_$1822",
                            "typeString": "contract IToken"
                          }
                        ],
                        "id": 482,
                        "name": "IToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1822,
                        "src": "967:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IToken_$1822_$",
                          "typeString": "type(contract IToken)"
                        }
                      },
                      "id": 484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "967:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IToken_$1822",
                        "typeString": "contract IToken"
                      }
                    },
                    "src": "955:26:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IToken_$1822",
                      "typeString": "contract IToken"
                    }
                  },
                  "id": 486,
                  "nodeType": "ExpressionStatement",
                  "src": "955:26:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 487,
                      "name": "platform",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 462,
                      "src": "991:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPlatform_$1755",
                        "typeString": "contract IPlatform"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 489,
                          "name": "_platform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 470,
                          "src": "1013:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPlatform_$1755",
                            "typeString": "contract IPlatform"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IPlatform_$1755",
                            "typeString": "contract IPlatform"
                          }
                        ],
                        "id": 488,
                        "name": "IPlatform",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1755,
                        "src": "1003:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IPlatform_$1755_$",
                          "typeString": "type(contract IPlatform)"
                        }
                      },
                      "id": 490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1003:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPlatform_$1755",
                        "typeString": "contract IPlatform"
                      }
                    },
                    "src": "991:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPlatform_$1755",
                      "typeString": "contract IPlatform"
                    }
                  },
                  "id": 492,
                  "nodeType": "ExpressionStatement",
                  "src": "991:32:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 493,
                      "name": "signidice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 464,
                      "src": "1033:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ISignidice_$1785",
                        "typeString": "contract ISignidice"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 495,
                          "name": "_signidice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 472,
                          "src": "1056:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISignidice_$1785",
                            "typeString": "contract ISignidice"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ISignidice_$1785",
                            "typeString": "contract ISignidice"
                          }
                        ],
                        "id": 494,
                        "name": "ISignidice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1785,
                        "src": "1045:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ISignidice_$1785_$",
                          "typeString": "type(contract ISignidice)"
                        }
                      },
                      "id": 496,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1045:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ISignidice_$1785",
                        "typeString": "contract ISignidice"
                      }
                    },
                    "src": "1033:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISignidice_$1785",
                      "typeString": "contract ISignidice"
                    }
                  },
                  "id": 498,
                  "nodeType": "ExpressionStatement",
                  "src": "1033:34:5"
                }
              ]
            },
            "documentation": "@notice constructor\n@param _engine address contract erc20\n@param _token address contract erc20\n@param _platform address of platform contract\n@param _signidice address of signidice contract",
            "id": 500,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 466,
                  "name": "_engine",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "767:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IGameEngine_$1729",
                    "typeString": "contract IGameEngine"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 465,
                    "name": "IGameEngine",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1729,
                    "src": "767:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IGameEngine_$1729",
                      "typeString": "contract IGameEngine"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 468,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "796:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IToken_$1822",
                    "typeString": "contract IToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 467,
                    "name": "IToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1822,
                    "src": "796:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IToken_$1822",
                      "typeString": "contract IToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 470,
                  "name": "_platform",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "824:21:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPlatform_$1755",
                    "typeString": "contract IPlatform"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 469,
                    "name": "IPlatform",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1755,
                    "src": "824:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPlatform_$1755",
                      "typeString": "contract IPlatform"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 472,
                  "name": "_signidice",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "855:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ISignidice_$1785",
                    "typeString": "contract ISignidice"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 471,
                    "name": "ISignidice",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1785,
                    "src": "855:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISignidice_$1785",
                      "typeString": "contract ISignidice"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "757:126:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 474,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "903:0:5"
            },
            "scope": 1673,
            "src": "745:329:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 502,
            "name": "gameDevReward",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1080:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 501,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1080:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 504,
            "name": "bankrollReward",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1114:29:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 503,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1114:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 506,
            "name": "platformReward",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1149:29:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 505,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1149:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 508,
            "name": "refererReward",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1184:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 507,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1184:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 510,
            "name": "developer",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1218:24:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 509,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1218:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 512,
            "name": "minBet",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1248:21:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 511,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1248:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 517,
            "name": "safeTime",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1275:38:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 513,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1275:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "313230",
                  "id": 515,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1309:3:5",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_120_by_1",
                    "typeString": "int_const 120"
                  },
                  "value": "120"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_120_by_1",
                    "typeString": "int_const 120"
                  }
                ],
                "id": 514,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "1301:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_uint256_$",
                  "typeString": "type(uint256)"
                },
                "typeName": "uint256"
              },
              "id": 516,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1301:12:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "canonicalName": "GameChannel.Channel",
            "id": 536,
            "members": [
              {
                "constant": false,
                "id": 519,
                "name": "state",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1345:13:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_State_$547",
                  "typeString": "enum GameChannel.State"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 518,
                  "name": "State",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 547,
                  "src": "1345:5:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_State_$547",
                    "typeString": "enum GameChannel.State"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 521,
                "name": "player",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1368:14:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 520,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1368:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 523,
                "name": "bankroller",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1392:18:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 522,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1392:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 525,
                "name": "playerBalance",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1420:21:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 524,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1420:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 527,
                "name": "bankrollerBalance",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1451:25:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 526,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1451:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 529,
                "name": "totalBet",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1486:16:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 528,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1486:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 531,
                "name": "session",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1512:15:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 530,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1512:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 533,
                "name": "endBlock",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1537:16:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 532,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1537:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 535,
                "name": "RSAHash",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1563:15:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 534,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1563:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Channel",
            "nodeType": "StructDefinition",
            "scope": 1673,
            "src": "1320:265:5",
            "visibility": "public"
          },
          {
            "canonicalName": "GameChannel.Dispute",
            "id": 542,
            "members": [
              {
                "constant": false,
                "id": 539,
                "name": "disputeBets",
                "nodeType": "VariableDeclaration",
                "scope": 542,
                "src": "1616:21:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 537,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1616:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 538,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1616:9:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 541,
                "name": "disputeGameData",
                "nodeType": "VariableDeclaration",
                "scope": 542,
                "src": "1647:25:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_gameData_$297_storage_ptr",
                  "typeString": "struct GameObject.gameData"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 540,
                  "name": "gameData",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 297,
                  "src": "1647:8:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_gameData_$297_storage_ptr",
                    "typeString": "struct GameObject.gameData"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Dispute",
            "nodeType": "StructDefinition",
            "scope": 1673,
            "src": "1591:88:5",
            "visibility": "public"
          },
          {
            "canonicalName": "GameChannel.State",
            "id": 547,
            "members": [
              {
                "id": 543,
                "name": "unused",
                "nodeType": "EnumValue",
                "src": "1697:6:5"
              },
              {
                "id": 544,
                "name": "open",
                "nodeType": "EnumValue",
                "src": "1705:4:5"
              },
              {
                "id": 545,
                "name": "close",
                "nodeType": "EnumValue",
                "src": "1711:5:5"
              },
              {
                "id": 546,
                "name": "dispute",
                "nodeType": "EnumValue",
                "src": "1718:7:5"
              }
            ],
            "name": "State",
            "nodeType": "EnumDefinition",
            "src": "1685:41:5"
          },
          {
            "constant": false,
            "id": 551,
            "name": "channels",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1731:43:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
              "typeString": "mapping(bytes32 => struct GameChannel.Channel)"
            },
            "typeName": {
              "id": 550,
              "keyType": {
                "id": 548,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1739:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1731:27:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                "typeString": "mapping(bytes32 => struct GameChannel.Channel)"
              },
              "valueType": {
                "contractScope": null,
                "id": 549,
                "name": "Channel",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 536,
                "src": "1750:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                  "typeString": "struct GameChannel.Channel"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 555,
            "name": "disputes",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1780:43:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
              "typeString": "mapping(bytes32 => struct GameChannel.Dispute)"
            },
            "typeName": {
              "id": 554,
              "keyType": {
                "id": 552,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1788:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1780:27:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                "typeString": "mapping(bytes32 => struct GameChannel.Dispute)"
              },
              "valueType": {
                "contractScope": null,
                "id": 553,
                "name": "Dispute",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 542,
                "src": "1799:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                  "typeString": "struct GameChannel.Dispute"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 604,
              "nodeType": "Block",
              "src": "1864:297:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 560,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3277,
                                  "src": "1883:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1883:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 562,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 557,
                                  "src": "1897:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                    "typeString": "struct GameChannel.Channel memory"
                                  }
                                },
                                "id": 563,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "player",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 521,
                                "src": "1897:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1883:29:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 565,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1882:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 570,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 566,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3277,
                                  "src": "1918:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1918:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 568,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 557,
                                  "src": "1932:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                    "typeString": "struct GameChannel.Channel memory"
                                  }
                                },
                                "id": 569,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "bankroller",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 523,
                                "src": "1932:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1918:33:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 571,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1917:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1882:70:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073656e646572",
                        "id": 573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1954:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        },
                        "value": "invalid sender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        }
                      ],
                      "id": 559,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "1874:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1874:97:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 575,
                  "nodeType": "ExpressionStatement",
                  "src": "1874:97:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 577,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 557,
                                "src": "1990:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                  "typeString": "struct GameChannel.Channel memory"
                                }
                              },
                              "id": 578,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 533,
                              "src": "1990:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 579,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3267,
                                "src": "2010:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2010:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1990:32:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 582,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1989:34:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642074696d65",
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2025:14:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f2f5f8bb8d426f6965bb336cf83a4bb1af426160c477466a0f5ebbc2219fd975",
                          "typeString": "literal_string \"invalid time\""
                        },
                        "value": "invalid time"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f2f5f8bb8d426f6965bb336cf83a4bb1af426160c477466a0f5ebbc2219fd975",
                          "typeString": "literal_string \"invalid time\""
                        }
                      ],
                      "id": 576,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "1981:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1981:59:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 585,
                  "nodeType": "ExpressionStatement",
                  "src": "1981:59:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_State_$547",
                                "typeString": "enum GameChannel.State"
                              },
                              "id": 591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 587,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 557,
                                  "src": "2059:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                    "typeString": "struct GameChannel.Channel memory"
                                  }
                                },
                                "id": 588,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 519,
                                "src": "2059:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_State_$547",
                                  "typeString": "enum GameChannel.State"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 589,
                                  "name": "State",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 547,
                                  "src": "2077:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                                    "typeString": "type(enum GameChannel.State)"
                                  }
                                },
                                "id": 590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "open",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2077:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_State_$547",
                                  "typeString": "enum GameChannel.State"
                                }
                              },
                              "src": "2059:28:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 592,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2058:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_State_$547",
                                "typeString": "enum GameChannel.State"
                              },
                              "id": 597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 593,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 557,
                                  "src": "2093:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                    "typeString": "struct GameChannel.Channel memory"
                                  }
                                },
                                "id": 594,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 519,
                                "src": "2093:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_State_$547",
                                  "typeString": "enum GameChannel.State"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 595,
                                  "name": "State",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 547,
                                  "src": "2111:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                                    "typeString": "type(enum GameChannel.State)"
                                  }
                                },
                                "id": 596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "dispute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2111:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_State_$547",
                                  "typeString": "enum GameChannel.State"
                                }
                              },
                              "src": "2093:31:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 598,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2092:33:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2058:67:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964207374617465",
                        "id": 600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2127:15:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de12ab57a0daa634f488033127dcfe962870ebf8c9e1b7fcbcea396d614f7ebb",
                          "typeString": "literal_string \"invalid state\""
                        },
                        "value": "invalid state"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de12ab57a0daa634f488033127dcfe962870ebf8c9e1b7fcbcea396d614f7ebb",
                          "typeString": "literal_string \"invalid state\""
                        }
                      ],
                      "id": 586,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "2050:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2050:93:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 602,
                  "nodeType": "ExpressionStatement",
                  "src": "2050:93:5"
                },
                {
                  "id": 603,
                  "nodeType": "PlaceholderStatement",
                  "src": "2153:1:5"
                }
              ]
            },
            "documentation": null,
            "id": 605,
            "name": "active",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 557,
                  "name": "_channel",
                  "nodeType": "VariableDeclaration",
                  "scope": 605,
                  "src": "1846:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                    "typeString": "struct GameChannel.Channel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 556,
                    "name": "Channel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 536,
                    "src": "1846:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                      "typeString": "struct GameChannel.Channel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1845:18:5"
            },
            "src": "1830:331:5",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 781,
              "nodeType": "Block",
              "src": "3038:1468:5",
              "statements": [
                {
                  "assignments": [
                    627
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 627,
                      "name": "_signer",
                      "nodeType": "VariableDeclaration",
                      "scope": 782,
                      "src": "3048:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 626,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3048:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 645,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 633,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 607,
                                "src": "3113:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 634,
                                "name": "_player",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 609,
                                "src": "3118:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 635,
                                "name": "_bankroller",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 611,
                                "src": "3127:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 636,
                                "name": "_playerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 613,
                                "src": "3140:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 637,
                                "name": "_bankrollerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 615,
                                "src": "3156:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 638,
                                "name": "_openingBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 617,
                                "src": "3176:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 639,
                                "name": "_N",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 619,
                                "src": "3191:2:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 640,
                                "name": "_E",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 621,
                                "src": "3195:2:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 631,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "3096:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 632,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3096:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3096:102:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 630,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "3086:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3086:113:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 643,
                        "name": "_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 623,
                        "src": "3201:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 628,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "3066:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$2338_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2009,
                      "src": "3066:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3066:146:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3048:164:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_State_$547",
                          "typeString": "enum GameChannel.State"
                        },
                        "id": 653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 647,
                              "name": "channels",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 551,
                              "src": "3230:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                                "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                              }
                            },
                            "id": 649,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 648,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 607,
                              "src": "3239:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3230:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage",
                              "typeString": "struct GameChannel.Channel storage ref"
                            }
                          },
                          "id": 650,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 519,
                          "src": "3230:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 651,
                            "name": "State",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 547,
                            "src": "3253:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                              "typeString": "type(enum GameChannel.State)"
                            }
                          },
                          "id": 652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "unused",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3253:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "src": "3230:35:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "75736564206964",
                        "id": 654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3267:9:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_bf9c7455be6221e99418a4081fbcc2104492c45ba75a048c4eef3fe9dfc43468",
                          "typeString": "literal_string \"used id\""
                        },
                        "value": "used id"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_bf9c7455be6221e99418a4081fbcc2104492c45ba75a048c4eef3fe9dfc43468",
                          "typeString": "literal_string \"used id\""
                        }
                      ],
                      "id": 646,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3222:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3222:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 656,
                  "nodeType": "ExpressionStatement",
                  "src": "3222:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3230",
                              "id": 660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3313:2:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 658,
                              "name": "_openingBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 617,
                              "src": "3295:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "3295:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3295:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 662,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "3320:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3320:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3295:37:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6f757464617465207369676e6174757265",
                        "id": 665,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3334:19:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5395658da4348459d132be25f1a689b3295f655cc6f751e2f1ff357d9897d2ea",
                          "typeString": "literal_string \"outdate signature\""
                        },
                        "value": "outdate signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5395658da4348459d132be25f1a689b3295f655cc6f751e2f1ff357d9897d2ea",
                          "typeString": "literal_string \"outdate signature\""
                        }
                      ],
                      "id": 657,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3287:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3287:67:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 667,
                  "nodeType": "ExpressionStatement",
                  "src": "3287:67:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 671,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 609,
                              "src": "3394:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 669,
                              "name": "platform",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 462,
                              "src": "3372:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPlatform_$1755",
                                "typeString": "contract IPlatform"
                              }
                            },
                            "id": 670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getMaxAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1754,
                            "src": "3372:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3372:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 673,
                          "name": "_playerBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 613,
                          "src": "3406:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3372:48:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420616d6f756e74",
                        "id": 675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3422:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_428d2b45bb1c86227a8688f1c30f1c359824c9298dfce034ebf8ca193afdf5e7",
                          "typeString": "literal_string \"invalid amount\""
                        },
                        "value": "invalid amount"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_428d2b45bb1c86227a8688f1c30f1c359824c9298dfce034ebf8ca193afdf5e7",
                          "typeString": "literal_string \"invalid amount\""
                        }
                      ],
                      "id": 668,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3364:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3364:75:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 677,
                  "nodeType": "ExpressionStatement",
                  "src": "3364:75:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 681,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "3476:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 679,
                            "name": "platform",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 462,
                            "src": "3457:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPlatform_$1755",
                              "typeString": "contract IPlatform"
                            }
                          },
                          "id": 680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getStatus",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1747,
                          "src": "3457:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3457:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420737461747573",
                        "id": 683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3483:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0dd5638dc565fa4861cdc8e8f2a406effe51e6afd242de06b33ea03003efca14",
                          "typeString": "literal_string \"invalid status\""
                        },
                        "value": "invalid status"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0dd5638dc565fa4861cdc8e8f2a406effe51e6afd242de06b33ea03003efca14",
                          "typeString": "literal_string \"invalid status\""
                        }
                      ],
                      "id": 678,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3449:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3449:51:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 685,
                  "nodeType": "ExpressionStatement",
                  "src": "3449:51:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 689,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 687,
                                  "name": "_signer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 627,
                                  "src": "3519:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 688,
                                  "name": "_player",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 609,
                                  "src": "3530:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3519:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 690,
                                  "name": "_signer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 627,
                                  "src": "3541:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 691,
                                  "name": "_bankroller",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 611,
                                  "src": "3552:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3541:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3519:44:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 694,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3518:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 695,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3277,
                                  "src": "3569:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3569:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 697,
                                "name": "_signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 627,
                                "src": "3583:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3569:21:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 699,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3568:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3518:73:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964207369676e6572",
                        "id": 701,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3593:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2ccdc71029c8650b7e8dda6499fba8b87c12c0c3f6f4112cba0c0614f9706216",
                          "typeString": "literal_string \"invalid signer\""
                        },
                        "value": "invalid signer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2ccdc71029c8650b7e8dda6499fba8b87c12c0c3f6f4112cba0c0614f9706216",
                          "typeString": "literal_string \"invalid signer\""
                        }
                      ],
                      "id": 686,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3510:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 702,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3510:100:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 703,
                  "nodeType": "ExpressionStatement",
                  "src": "3510:100:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 705,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "3628:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3628:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 707,
                            "name": "_player",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 609,
                            "src": "3642:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3628:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 709,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "3653:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3653:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 711,
                            "name": "_bankroller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 611,
                            "src": "3667:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3653:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3628:50:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073656e646572",
                        "id": 714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3680:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        },
                        "value": "invalid sender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        }
                      ],
                      "id": 704,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3620:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3620:77:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 716,
                  "nodeType": "ExpressionStatement",
                  "src": "3620:77:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 720,
                            "name": "_player",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 609,
                            "src": "3735:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 721,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "3744:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 722,
                            "name": "_playerBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 613,
                            "src": "3750:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 718,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 460,
                            "src": "3716:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$1822",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1805,
                          "src": "3716:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3716:49:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6661696c207472616e736665722066726f6d20706c61796572",
                        "id": 724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3767:27:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fb58dcb6a6193423915bbe4019fc7c9b8b2390822718ab1ffd00149ba1067c62",
                          "typeString": "literal_string \"fail transfer from player\""
                        },
                        "value": "fail transfer from player"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fb58dcb6a6193423915bbe4019fc7c9b8b2390822718ab1ffd00149ba1067c62",
                          "typeString": "literal_string \"fail transfer from player\""
                        }
                      ],
                      "id": 717,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3708:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3708:87:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 726,
                  "nodeType": "ExpressionStatement",
                  "src": "3708:87:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 730,
                            "name": "_bankroller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 611,
                            "src": "3832:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 731,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "3845:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 732,
                            "name": "_bankrollerBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 615,
                            "src": "3851:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 728,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 460,
                            "src": "3813:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$1822",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1805,
                          "src": "3813:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3813:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6661696c207472616e7366652066726f6d2062616e6b726f6c6c6572",
                        "id": 734,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3872:30:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df94a17ccbd117798ec546195c4801a897fe7ea60f2d1ab5d892379b35851762",
                          "typeString": "literal_string \"fail transfe from bankroller\""
                        },
                        "value": "fail transfe from bankroller"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df94a17ccbd117798ec546195c4801a897fe7ea60f2d1ab5d892379b35851762",
                          "typeString": "literal_string \"fail transfe from bankroller\""
                        }
                      ],
                      "id": 727,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3805:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3805:98:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 736,
                  "nodeType": "ExpressionStatement",
                  "src": "3805:98:5"
                },
                {
                  "assignments": [
                    738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 738,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 782,
                      "src": "3914:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 737,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "3914:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 769,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 740,
                          "name": "State",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 547,
                          "src": "3982:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                            "typeString": "type(enum GameChannel.State)"
                          }
                        },
                        "id": 741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "open",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3982:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_State_$547",
                          "typeString": "enum GameChannel.State"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 742,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 609,
                        "src": "4026:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 743,
                        "name": "_bankroller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 611,
                        "src": "4067:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 744,
                        "name": "_playerBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 613,
                        "src": "4112:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 745,
                        "name": "_bankrollerBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 615,
                        "src": "4160:18:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4217:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4212:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint"
                        },
                        "id": 748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4212:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4258:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4253:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint"
                        },
                        "id": 751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4253:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313530",
                            "id": 755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4311:3:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_150_by_1",
                              "typeString": "int_const 150"
                            },
                            "value": "150"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_150_by_1",
                              "typeString": "int_const 150"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 752,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3267,
                              "src": "4294:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4294:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1926,
                          "src": "4294:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4294:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 761,
                                    "name": "_N",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 619,
                                    "src": "4386:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 760,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3271,
                                  "src": "4376:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                    "typeString": "function () pure returns (bytes32)"
                                  }
                                },
                                "id": 762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4376:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 764,
                                    "name": "_E",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 621,
                                    "src": "4401:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 763,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3271,
                                  "src": "4391:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                    "typeString": "function () pure returns (bytes32)"
                                  }
                                },
                                "id": 765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4391:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 758,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "4359:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4359:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4359:46:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 757,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "4349:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4349:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 739,
                      "name": "Channel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "3940:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Channel_$536_storage_ptr_$",
                        "typeString": "type(struct GameChannel.Channel storage pointer)"
                      }
                    },
                    "id": 768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "state",
                      "player",
                      "bankroller",
                      "playerBalance",
                      "bankrollerBalance",
                      "totalBet",
                      "session",
                      "endBlock",
                      "RSAHash"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "3940:477:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_memory",
                      "typeString": "struct GameChannel.Channel memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3914:503:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 770,
                        "name": "channels",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 551,
                        "src": "4428:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                          "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                        }
                      },
                      "id": 772,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 771,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 607,
                        "src": "4437:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4428:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage",
                        "typeString": "struct GameChannel.Channel storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 773,
                      "name": "_channel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 738,
                      "src": "4444:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                        "typeString": "struct GameChannel.Channel memory"
                      }
                    },
                    "src": "4428:24:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "id": 775,
                  "nodeType": "ExpressionStatement",
                  "src": "4428:24:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "6f70656e206368616e6e656c",
                        "id": 777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4479:14:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d44177c610b74c70e626a08c6a9b8b80264c739d95dc2c2a12a75dcb60bf798f",
                          "typeString": "literal_string \"open channel\""
                        },
                        "value": "open channel"
                      },
                      {
                        "argumentTypes": null,
                        "id": 778,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 607,
                        "src": "4495:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d44177c610b74c70e626a08c6a9b8b80264c739d95dc2c2a12a75dcb60bf798f",
                          "typeString": "literal_string \"open channel\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 776,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "4468:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4468:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 780,
                  "nodeType": "EmitStatement",
                  "src": "4463:36:5"
                }
              ]
            },
            "documentation": "@notice Opening the channel and depositing funds\n@param _id                Unique channel identifier\n@param _player            player Address of the player\n@param _bankroller        Address of the bankroller\n@param _playerBalance     Player's deposit\n@param _bankrollerBalance Bankroller's deposit\n@param _openingBlock      opening block\n@param _N                 N-component of bankroller's rsa public key\n@param _E                 E-component of bankroller's rsa public key\n@param _signature         Signature from the player",
            "id": 782,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "openChannel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 607,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2780:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 606,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2780:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 609,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2801:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 608,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2801:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 611,
                  "name": "_bankroller",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2826:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2826:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 613,
                  "name": "_playerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2855:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2855:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 615,
                  "name": "_bankrollerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2887:26:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 614,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2887:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 617,
                  "name": "_openingBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2923:21:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 616,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2923:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 619,
                  "name": "_N",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2954:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 618,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2954:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 621,
                  "name": "_E",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2974:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 620,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2974:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 623,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2994:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 622,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2994:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2770:248:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 625,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3038:0:5"
            },
            "scope": 1673,
            "src": "2750:1756:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 941,
              "nodeType": "Block",
              "src": "5137:1149:5",
              "statements": [
                {
                  "assignments": [
                    803
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 803,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 942,
                      "src": "5147:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 802,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "5147:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 807,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 804,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "5174:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 806,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 805,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 784,
                      "src": "5183:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5174:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5147:40:5"
                },
                {
                  "assignments": [
                    809
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 809,
                      "name": "stateSigner",
                      "nodeType": "VariableDeclaration",
                      "scope": 942,
                      "src": "5197:19:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 808,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5197:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 824,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 815,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 784,
                                "src": "5266:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 816,
                                "name": "_playerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 786,
                                "src": "5271:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 817,
                                "name": "_bankrollerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 788,
                                "src": "5287:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 818,
                                "name": "_totalBet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 790,
                                "src": "5307:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 819,
                                "name": "_session",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 792,
                                "src": "5318:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 813,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "5249:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5249:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5249:78:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 812,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "5239:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5239:89:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 822,
                        "name": "_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 794,
                        "src": "5330:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 810,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "5219:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$2338_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 811,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2009,
                      "src": "5219:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5219:122:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5197:144:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 826,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 803,
                            "src": "5359:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 827,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "session",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 531,
                          "src": "5359:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 828,
                          "name": "_session",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 792,
                          "src": "5378:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5359:27:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6f7574646174652073657373696f6e",
                        "id": 830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5388:17:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8f0af18df20ab623ce902cce676f3de1bdcf4aa0e836ad305d3bdd7c89baece6",
                          "typeString": "literal_string \"outdate session\""
                        },
                        "value": "outdate session"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8f0af18df20ab623ce902cce676f3de1bdcf4aa0e836ad305d3bdd7c89baece6",
                          "typeString": "literal_string \"outdate session\""
                        }
                      ],
                      "id": 825,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "5351:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5351:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 832,
                  "nodeType": "ExpressionStatement",
                  "src": "5351:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 834,
                          "name": "stateSigner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 809,
                          "src": "5424:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 835,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "5439:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5439:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5424:25:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073746174652073696e676572",
                        "id": 838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5451:22:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de015ccd2fc269fd7fe3c682c08d0667b652bfc67f8f79b64fa1e264d88f6d07",
                          "typeString": "literal_string \"invalid state singer\""
                        },
                        "value": "invalid state singer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de015ccd2fc269fd7fe3c682c08d0667b652bfc67f8f79b64fa1e264d88f6d07",
                          "typeString": "literal_string \"invalid state singer\""
                        }
                      ],
                      "id": 833,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "5416:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 839,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5416:58:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 840,
                  "nodeType": "ExpressionStatement",
                  "src": "5416:58:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 842,
                            "name": "stateSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 809,
                            "src": "5492:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 843,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "5507:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 844,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "player",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 521,
                            "src": "5507:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5492:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 846,
                            "name": "stateSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 809,
                            "src": "5526:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 847,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "5541:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 848,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bankroller",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 523,
                            "src": "5541:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5526:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5492:68:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374617465207369676e6572206973206e6f74206d656d626572",
                        "id": 851,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5562:28:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_08733e1b7dcf176fd0bb1b64564ec60896aeff73322fc36f08defaec967326b9",
                          "typeString": "literal_string \"state signer is not member\""
                        },
                        "value": "state signer is not member"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_08733e1b7dcf176fd0bb1b64564ec60896aeff73322fc36f08defaec967326b9",
                          "typeString": "literal_string \"state signer is not member\""
                        }
                      ],
                      "id": 841,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "5484:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5484:107:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 853,
                  "nodeType": "ExpressionStatement",
                  "src": "5484:107:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 857,
                              "name": "_bankrollerBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 788,
                              "src": "5628:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 855,
                              "name": "_playerBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 786,
                              "src": "5609:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "5609:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5609:38:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 862,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 803,
                                "src": "5678:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 863,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bankrollerBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 527,
                              "src": "5678:26:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 859,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 803,
                                "src": "5651:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 860,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "playerBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 525,
                              "src": "5651:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "5651:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5651:54:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5609:96:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964206e65772062616c616e636573",
                        "id": 866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5707:22:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ebff91a725a77521076a1478940f65bc7997220af31af8523362b8f9aff78e3e",
                          "typeString": "literal_string \"invalid new balances\""
                        },
                        "value": "invalid new balances"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ebff91a725a77521076a1478940f65bc7997220af31af8523362b8f9aff78e3e",
                          "typeString": "literal_string \"invalid new balances\""
                        }
                      ],
                      "id": 854,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "5601:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5601:129:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 868,
                  "nodeType": "ExpressionStatement",
                  "src": "5601:129:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 876,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 872,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "5767:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5767:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 869,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 803,
                            "src": "5745:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 870,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 533,
                          "src": "5745:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1902,
                        "src": "5745:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5745:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 875,
                      "name": "safeTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 517,
                      "src": "5783:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5745:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 888,
                  "nodeType": "IfStatement",
                  "src": "5741:123:5",
                  "trueBody": {
                    "id": 887,
                    "nodeType": "Block",
                    "src": "5793:71:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 877,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "5807:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 879,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 533,
                            "src": "5807:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 883,
                                "name": "safeTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 517,
                                "src": "5844:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 880,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "5827:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5827:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1926,
                              "src": "5827:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5827:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5807:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 886,
                        "nodeType": "ExpressionStatement",
                        "src": "5807:46:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 889,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "5874:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 891,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "session",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 531,
                      "src": "5874:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 892,
                      "name": "_session",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 792,
                      "src": "5903:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5874:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 894,
                  "nodeType": "ExpressionStatement",
                  "src": "5874:37:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 895,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "5921:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 897,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "5921:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 898,
                      "name": "_playerBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 786,
                      "src": "5950:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5921:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 900,
                  "nodeType": "ExpressionStatement",
                  "src": "5921:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 901,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "5974:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 903,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "5974:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 904,
                      "name": "_bankrollerBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 788,
                      "src": "6003:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5974:47:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 906,
                  "nodeType": "ExpressionStatement",
                  "src": "5974:47:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 907,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "6031:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 909,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalBet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 529,
                      "src": "6031:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 910,
                      "name": "_totalBet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 790,
                      "src": "6060:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6031:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 912,
                  "nodeType": "ExpressionStatement",
                  "src": "6031:38:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    },
                    "id": 917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 913,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "6084:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 914,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "6084:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 915,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "6102:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 916,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "dispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6102:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "6084:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 931,
                  "nodeType": "IfStatement",
                  "src": "6080:123:5",
                  "trueBody": {
                    "id": 930,
                    "nodeType": "Block",
                    "src": "6117:86:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 918,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "6131:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 920,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 519,
                            "src": "6131:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_State_$547",
                              "typeString": "enum GameChannel.State"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 921,
                              "name": "State",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 547,
                              "src": "6148:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                                "typeString": "type(enum GameChannel.State)"
                              }
                            },
                            "id": 922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "open",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6148:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_State_$547",
                              "typeString": "enum GameChannel.State"
                            }
                          },
                          "src": "6131:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "id": 924,
                        "nodeType": "ExpressionStatement",
                        "src": "6131:27:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "6172:20:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 925,
                              "name": "disputes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 555,
                              "src": "6179:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                                "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                              }
                            },
                            "id": 927,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 926,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 784,
                              "src": "6188:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6179:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dispute_$542_storage",
                              "typeString": "struct GameChannel.Dispute storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 929,
                        "nodeType": "ExpressionStatement",
                        "src": "6172:20:5"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "757064617465206368616e6e656c",
                        "id": 933,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6229:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6dcffc41ce4ad38ef317c59d2e43edbf71ac5d6b99a7d3afaa921d40f181bb5c",
                          "typeString": "literal_string \"update channel\""
                        },
                        "value": "update channel"
                      },
                      {
                        "argumentTypes": null,
                        "id": 934,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 784,
                        "src": "6247:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6dcffc41ce4ad38ef317c59d2e43edbf71ac5d6b99a7d3afaa921d40f181bb5c",
                          "typeString": "literal_string \"update channel\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 932,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "6218:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6218:33:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 936,
                  "nodeType": "EmitStatement",
                  "src": "6213:38:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 938,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 784,
                        "src": "6275:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 937,
                      "name": "checkGameOver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1180,
                      "src": "6261:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6261:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 940,
                  "nodeType": "ExpressionStatement",
                  "src": "6261:18:5"
                }
              ]
            },
            "documentation": "@notice Update the state of the channel\n@param _id Unique channel identifier\n@param _playerBalance The player's account balance in the channel\n@param _bankrollerBalance The bankroller's account balance in the channel\n@param _totalBet blabla\n@param _session Number of the game session\n@param _signature Signature from the player or bankroller",
            "id": 942,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 797,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "5118:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 799,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 798,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 784,
                      "src": "5127:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5118:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  }
                ],
                "id": 800,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 796,
                  "name": "active",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 605,
                  "src": "5111:6:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_struct$_Channel_$536_memory_ptr_$",
                    "typeString": "modifier (struct GameChannel.Channel memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5111:21:5"
              }
            ],
            "name": "updateChannel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 784,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "4929:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 783,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4929:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 786,
                  "name": "_playerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "4950:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 785,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4950:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 788,
                  "name": "_bankrollerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "4982:26:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 787,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4982:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 790,
                  "name": "_totalBet",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "5018:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 789,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5018:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 792,
                  "name": "_session",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "5045:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5045:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 794,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "5071:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5071:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4919:176:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 801,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5137:0:5"
            },
            "scope": 1673,
            "src": "4897:1389:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1055,
              "nodeType": "Block",
              "src": "6966:786:5",
              "statements": [
                {
                  "assignments": [
                    963
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 963,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1056,
                      "src": "6976:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 962,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "6976:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 967,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 964,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "7003:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 966,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 965,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 944,
                      "src": "7012:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7003:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6976:40:5"
                },
                {
                  "assignments": [
                    969
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 969,
                      "name": "_signer",
                      "nodeType": "VariableDeclaration",
                      "scope": 1056,
                      "src": "7026:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 968,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7026:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 985,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 975,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 944,
                                "src": "7091:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 976,
                                "name": "_playerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 946,
                                "src": "7096:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 977,
                                "name": "_bankrollerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 948,
                                "src": "7112:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 978,
                                "name": "_totalBet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 950,
                                "src": "7132:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 979,
                                "name": "_session",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 952,
                                "src": "7143:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7153:4:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 973,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "7074:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7074:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7074:84:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 972,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "7064:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7064:95:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 983,
                        "name": "_sign",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 954,
                        "src": "7161:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 970,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "7044:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$2338_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2009,
                      "src": "7044:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7044:123:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7026:141:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 989,
                              "name": "_bankrollerBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 948,
                              "src": "7204:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 987,
                              "name": "_playerBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 946,
                              "src": "7185:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "7185:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7185:38:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 994,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 963,
                                "src": "7254:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 995,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bankrollerBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 527,
                              "src": "7254:26:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 991,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 963,
                                "src": "7227:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 992,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "playerBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 525,
                              "src": "7227:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "7227:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7227:54:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7185:96:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642062616c616e636573",
                        "id": 998,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7283:18:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fd59b672fc16edf4a230eccc39f8f61eb696b6a2b1f3c8099cc0e5c812673115",
                          "typeString": "literal_string \"invalid balances\""
                        },
                        "value": "invalid balances"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fd59b672fc16edf4a230eccc39f8f61eb696b6a2b1f3c8099cc0e5c812673115",
                          "typeString": "literal_string \"invalid balances\""
                        }
                      ],
                      "id": 986,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "7177:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7177:125:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1000,
                  "nodeType": "ExpressionStatement",
                  "src": "7177:125:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1002,
                          "name": "_signer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 969,
                          "src": "7320:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1003,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "7331:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7331:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "7320:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964207369676e6572",
                        "id": 1006,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7343:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2ccdc71029c8650b7e8dda6499fba8b87c12c0c3f6f4112cba0c0614f9706216",
                          "typeString": "literal_string \"invalid signer\""
                        },
                        "value": "invalid signer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2ccdc71029c8650b7e8dda6499fba8b87c12c0c3f6f4112cba0c0614f9706216",
                          "typeString": "literal_string \"invalid signer\""
                        }
                      ],
                      "id": 1001,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "7312:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7312:48:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1008,
                  "nodeType": "ExpressionStatement",
                  "src": "7312:48:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1010,
                            "name": "_signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 969,
                            "src": "7378:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1011,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 963,
                              "src": "7389:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 1012,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "player",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 521,
                            "src": "7389:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7378:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1014,
                            "name": "_signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 969,
                            "src": "7408:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1015,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 963,
                              "src": "7419:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 1016,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bankroller",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 523,
                            "src": "7419:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7408:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7378:60:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7369676e6572206973206e6f74206d656d626572",
                        "id": 1019,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7440:22:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_244cf4336ff139a1236038be6371140c219dc503ce93a38281e2bf97dd4b63a6",
                          "typeString": "literal_string \"signer is not member\""
                        },
                        "value": "signer is not member"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_244cf4336ff139a1236038be6371140c219dc503ce93a38281e2bf97dd4b63a6",
                          "typeString": "literal_string \"signer is not member\""
                        }
                      ],
                      "id": 1009,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "7370:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1020,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7370:93:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1021,
                  "nodeType": "ExpressionStatement",
                  "src": "7370:93:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1022,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 963,
                        "src": "7473:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1024,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "7473:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1025,
                      "name": "_playerBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 946,
                      "src": "7502:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7473:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1027,
                  "nodeType": "ExpressionStatement",
                  "src": "7473:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1028,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 963,
                        "src": "7526:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1030,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "7526:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1031,
                      "name": "_bankrollerBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 948,
                      "src": "7555:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7526:47:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1033,
                  "nodeType": "ExpressionStatement",
                  "src": "7526:47:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1034,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 963,
                        "src": "7583:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1036,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "session",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 531,
                      "src": "7583:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1037,
                      "name": "_session",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 952,
                      "src": "7612:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7583:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1039,
                  "nodeType": "ExpressionStatement",
                  "src": "7583:37:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1040,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 963,
                        "src": "7630:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1042,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalBet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 529,
                      "src": "7630:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1043,
                      "name": "_totalBet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 950,
                      "src": "7659:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7630:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1045,
                  "nodeType": "ExpressionStatement",
                  "src": "7630:38:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "636c6f736520627920636f6e73656e74",
                        "id": 1047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7694:18:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7685ad4a7535b0e568e7f50b57d66e018e9990143ae86d99ac987396ae3de993",
                          "typeString": "literal_string \"close by consent\""
                        },
                        "value": "close by consent"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1048,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 944,
                        "src": "7714:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_7685ad4a7535b0e568e7f50b57d66e018e9990143ae86d99ac987396ae3de993",
                          "typeString": "literal_string \"close by consent\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1046,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "7683:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7683:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1050,
                  "nodeType": "EmitStatement",
                  "src": "7678:40:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1052,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 944,
                        "src": "7741:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1051,
                      "name": "closeChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1610,
                      "src": "7728:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7728:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1054,
                  "nodeType": "ExpressionStatement",
                  "src": "7728:17:5"
                }
              ]
            },
            "documentation": "@notice Closing of the channel by consent of the parties\n@param _id Unique channel identifier\n@param _playerBalance The player's account balance in the channel\n@param _bankrollerBalance The bankroller's account balance in the channel\n@param _totalBet The bankroller's account balance in the channel\n@param _session Number of the game session\n@param _sign Signature from the player or bankroller",
            "id": 1056,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 957,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "6947:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 959,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 958,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 944,
                      "src": "6956:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6947:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  }
                ],
                "id": 960,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 956,
                  "name": "active",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 605,
                  "src": "6940:6:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_struct$_Channel_$536_memory_ptr_$",
                    "typeString": "modifier (struct GameChannel.Channel memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6940:21:5"
              }
            ],
            "name": "closeByConsent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 944,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6763:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 943,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6763:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 946,
                  "name": "_playerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6784:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6784:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 948,
                  "name": "_bankrollerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6816:26:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 947,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6816:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 950,
                  "name": "_totalBet",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6852:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 949,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6852:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 952,
                  "name": "_session",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6879:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6879:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 954,
                  "name": "_sign",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6905:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 953,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6905:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6753:171:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 961,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6966:0:5"
            },
            "scope": 1673,
            "src": "6730:1022:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1097,
              "nodeType": "Block",
              "src": "7914:309:5",
              "statements": [
                {
                  "assignments": [
                    1062
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1062,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1098,
                      "src": "7924:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1061,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "7924:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1066,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1063,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "7951:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1065,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1064,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1058,
                      "src": "7960:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7951:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7924:40:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1068,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1062,
                            "src": "7982:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1069,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 533,
                          "src": "7982:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1070,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "8002:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8002:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7982:32:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420626c6f636b",
                        "id": 1073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8016:15:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cdb67578bf3c3bceb17babeaa0767cfd9d536f43596897fbc92f34efc07785b5",
                          "typeString": "literal_string \"invalid block\""
                        },
                        "value": "invalid block"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cdb67578bf3c3bceb17babeaa0767cfd9d536f43596897fbc92f34efc07785b5",
                          "typeString": "literal_string \"invalid block\""
                        }
                      ],
                      "id": 1067,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "7974:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7974:58:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1075,
                  "nodeType": "ExpressionStatement",
                  "src": "7974:58:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    },
                    "id": 1080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1076,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1062,
                        "src": "8046:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1077,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "8046:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1078,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "8064:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 1079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "dispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8064:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "8046:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1087,
                  "nodeType": "IfStatement",
                  "src": "8042:101:5",
                  "trueBody": {
                    "id": 1086,
                    "nodeType": "Block",
                    "src": "8079:64:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1082,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1058,
                              "src": "8108:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1081,
                            "name": "closeByDispute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1150,
                            "src": "8093:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 1083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8093:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1084,
                        "nodeType": "ExpressionStatement",
                        "src": "8093:19:5"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1060,
                        "id": 1085,
                        "nodeType": "Return",
                        "src": "8126:7:5"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "636c6f73652062792074696d65",
                        "id": 1089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8168:15:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ab52c277db81d68fb1449335adafdf6449e62147188ef39c8818e3b56dc0bb9d",
                          "typeString": "literal_string \"close by time\""
                        },
                        "value": "close by time"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1090,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1058,
                        "src": "8185:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_ab52c277db81d68fb1449335adafdf6449e62147188ef39c8818e3b56dc0bb9d",
                          "typeString": "literal_string \"close by time\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1088,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "8157:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8157:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1092,
                  "nodeType": "EmitStatement",
                  "src": "8152:37:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1094,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1058,
                        "src": "8212:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1093,
                      "name": "closeChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1610,
                      "src": "8199:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8199:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1096,
                  "nodeType": "ExpressionStatement",
                  "src": "8199:17:5"
                }
              ]
            },
            "documentation": "@notice Closing the channel after the time has elapsed\n@param _id Unique channel identifier",
            "id": 1098,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "closeByTime",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1058,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1098,
                  "src": "7894:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1057,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7894:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7893:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1060,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7914:0:5"
            },
            "scope": 1673,
            "src": "7873:350:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1149,
              "nodeType": "Block",
              "src": "8391:410:5",
              "statements": [
                {
                  "assignments": [
                    1104
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1104,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1150,
                      "src": "8401:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1103,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "8401:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1108,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1105,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "8428:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1107,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1106,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1100,
                      "src": "8437:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8428:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8401:40:5"
                },
                {
                  "assignments": [
                    1110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1110,
                      "name": "_dispute",
                      "nodeType": "VariableDeclaration",
                      "scope": 1150,
                      "src": "8451:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                        "typeString": "struct GameChannel.Dispute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1109,
                        "name": "Dispute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 542,
                        "src": "8451:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                          "typeString": "struct GameChannel.Dispute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1114,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1111,
                      "name": "disputes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 555,
                      "src": "8478:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                      }
                    },
                    "id": 1113,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1112,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1100,
                      "src": "8487:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8478:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_storage",
                      "typeString": "struct GameChannel.Dispute storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8451:40:5"
                },
                {
                  "assignments": [
                    1116
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1116,
                      "name": "_penalty",
                      "nodeType": "VariableDeclaration",
                      "scope": 1150,
                      "src": "8528:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1115,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8528:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1124,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1119,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1110,
                          "src": "8566:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1120,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeGameData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 541,
                        "src": "8566:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1121,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1110,
                          "src": "8592:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1122,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeBets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 539,
                        "src": "8592:20:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1117,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 458,
                        "src": "8547:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGameEngine_$1729",
                          "typeString": "contract IGameEngine"
                        }
                      },
                      "id": 1118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPenatlty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1714,
                      "src": "8547:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_struct$_gameData_$297_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct GameObject.gameData memory,uint256[] memory) view external returns (uint256)"
                      }
                    },
                    "id": 1123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8547:66:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8528:85:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1125,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1104,
                        "src": "8623:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1127,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "8623:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1131,
                          "name": "_penalty",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1116,
                          "src": "8683:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1128,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1104,
                            "src": "8652:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1129,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bankrollerBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 527,
                          "src": "8652:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1902,
                        "src": "8652:30:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8652:40:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8623:69:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1134,
                  "nodeType": "ExpressionStatement",
                  "src": "8623:69:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1135,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1104,
                        "src": "8702:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1137,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "8702:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1141,
                          "name": "_penalty",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1116,
                          "src": "8758:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1138,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1104,
                            "src": "8731:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1139,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "playerBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 525,
                          "src": "8731:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1926,
                        "src": "8731:26:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1142,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8731:36:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8702:65:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1144,
                  "nodeType": "ExpressionStatement",
                  "src": "8702:65:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1146,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1100,
                        "src": "8790:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1145,
                      "name": "closeChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1610,
                      "src": "8777:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8777:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1148,
                  "nodeType": "ExpressionStatement",
                  "src": "8777:17:5"
                }
              ]
            },
            "documentation": "@notice Closing the channel after the time with dispute\n@param _id Unique channel identifier",
            "id": 1150,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "closeByDispute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1100,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1150,
                  "src": "8369:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1099,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8369:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8368:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1102,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8391:0:5"
            },
            "scope": 1673,
            "src": "8345:456:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1179,
              "nodeType": "Block",
              "src": "8971:187:5",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1155,
                            "name": "channels",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 551,
                            "src": "8985:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                              "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                            }
                          },
                          "id": 1157,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1156,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1152,
                            "src": "8994:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8985:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage",
                            "typeString": "struct GameChannel.Channel storage ref"
                          }
                        },
                        "id": 1158,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "playerBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 525,
                        "src": "8985:27:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1159,
                        "name": "minBet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 512,
                        "src": "9015:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8985:36:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1161,
                            "name": "channels",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 551,
                            "src": "9025:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                              "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                            }
                          },
                          "id": 1163,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1162,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1152,
                            "src": "9034:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9025:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage",
                            "typeString": "struct GameChannel.Channel storage ref"
                          }
                        },
                        "id": 1164,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "bankrollerBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 527,
                        "src": "9025:31:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9060:1:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "9025:36:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8985:76:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1178,
                  "nodeType": "IfStatement",
                  "src": "8981:171:5",
                  "trueBody": {
                    "id": 1177,
                    "nodeType": "Block",
                    "src": "9063:89:5",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "67616d65206f766572",
                              "id": 1169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9093:11:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_98c3352cf2124a4a6d721ad0b4a86d9be3064c811ff60f854a61c937ce3256bf",
                                "typeString": "literal_string \"game over\""
                              },
                              "value": "game over"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1170,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1152,
                              "src": "9106:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_98c3352cf2124a4a6d721ad0b4a86d9be3064c811ff60f854a61c937ce3256bf",
                                "typeString": "literal_string \"game over\""
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1168,
                            "name": "logChannel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 453,
                            "src": "9082:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (string memory,bytes32)"
                            }
                          },
                          "id": 1171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9082:28:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1172,
                        "nodeType": "EmitStatement",
                        "src": "9077:33:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1174,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1152,
                              "src": "9137:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1173,
                            "name": "closeChannel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1610,
                            "src": "9124:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 1175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9124:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1176,
                        "nodeType": "ExpressionStatement",
                        "src": "9124:17:5"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Check and close the channel at zero or min balance\n@param _id Unique channel identifier",
            "id": 1180,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "checkGameOver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1152,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1180,
                  "src": "8949:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1151,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8949:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8948:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1154,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8971:0:5"
            },
            "scope": 1673,
            "src": "8926:232:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1311,
              "nodeType": "Block",
              "src": "9635:1038:5",
              "statements": [
                {
                  "assignments": [
                    1200
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1200,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "9645:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1199,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "9645:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1204,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1201,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "9672:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1203,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1202,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1182,
                      "src": "9681:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9672:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9645:40:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1212,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1206,
                          "name": "_session",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1184,
                          "src": "9703:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9736:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1207,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1200,
                                "src": "9715:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 1208,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "session",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 531,
                              "src": "9715:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "9715:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9715:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9703:35:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073657373696f6e",
                        "id": 1213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9740:17:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_059a4d2a262bf84dc401476811c2dfad4f2ac10d93f2c557c869791a3f8c52ab",
                          "typeString": "literal_string \"invalid session\""
                        },
                        "value": "invalid session"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_059a4d2a262bf84dc401476811c2dfad4f2ac10d93f2c557c869791a3f8c52ab",
                          "typeString": "literal_string \"invalid session\""
                        }
                      ],
                      "id": 1205,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "9695:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9695:63:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1215,
                  "nodeType": "ExpressionStatement",
                  "src": "9695:63:5"
                },
                {
                  "assignments": [
                    1217
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1217,
                      "name": "_gameDataHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "9768:21:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1216,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9768:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1221,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1219,
                        "name": "_gameData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1189,
                        "src": "9805:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                          "typeString": "struct GameObject.gameData memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                          "typeString": "struct GameObject.gameData memory"
                        }
                      ],
                      "id": 1218,
                      "name": "hashGameData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 317,
                      "src": "9792:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_gameData_$297_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct GameObject.gameData memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9792:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9768:47:5"
                },
                {
                  "assignments": [
                    1223
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1223,
                      "name": "_signer",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "9825:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1222,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9825:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1237,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1229,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1182,
                                "src": "9890:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1230,
                                "name": "_session",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1184,
                                "src": "9895:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1231,
                                "name": "_disputeBets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1187,
                                "src": "9905:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1232,
                                "name": "_gameDataHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1217,
                                "src": "9919:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1227,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "9873:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9873:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9873:60:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1226,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "9863:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 1234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9863:71:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1235,
                        "name": "_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1191,
                        "src": "9936:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1224,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "9843:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$2338_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 1225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2009,
                      "src": "9843:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 1236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9843:104:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9825:122:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1239,
                          "name": "_signer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1223,
                          "src": "9965:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1240,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "9976:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1241,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "player",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 521,
                          "src": "9976:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "9965:26:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7369676e6572206973206e6f74206120706c61796572",
                        "id": 1243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9993:24:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_83de5b2341239709ccf8e512b9b8bf16ee5f17332c7adb46f759f3a7144bb934",
                          "typeString": "literal_string \"signer is not a player\""
                        },
                        "value": "signer is not a player"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_83de5b2341239709ccf8e512b9b8bf16ee5f17332c7adb46f759f3a7144bb934",
                          "typeString": "literal_string \"signer is not a player\""
                        }
                      ],
                      "id": 1238,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "9957:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9957:61:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1245,
                  "nodeType": "ExpressionStatement",
                  "src": "9957:61:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1248,
                            "name": "_gameData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1189,
                            "src": "10050:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                              "typeString": "struct GameObject.gameData memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1249,
                            "name": "_disputeBets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1187,
                            "src": "10061:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                              "typeString": "struct GameObject.gameData memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 1247,
                          "name": "checkGameData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 361,
                          "src": "10036:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_gameData_$297_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (struct GameObject.gameData memory,uint256[] memory) pure returns (bool)"
                          }
                        },
                        "id": 1250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10036:38:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642067616d6544617461",
                        "id": 1251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10076:18:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_44d0369e29e012a8fe56d630ae5c47e919d97c53c2d8c63df40c445ef64852b3",
                          "typeString": "literal_string \"invalid gameData\""
                        },
                        "value": "invalid gameData"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_44d0369e29e012a8fe56d630ae5c47e919d97c53c2d8c63df40c445ef64852b3",
                          "typeString": "literal_string \"invalid gameData\""
                        }
                      ],
                      "id": 1246,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "10028:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10028:67:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1253,
                  "nodeType": "ExpressionStatement",
                  "src": "10028:67:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1257,
                              "name": "_gameData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1189,
                              "src": "10130:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                                "typeString": "struct GameObject.gameData memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1258,
                              "name": "_disputeBets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1187,
                              "src": "10141:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                                "typeString": "struct GameObject.gameData memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1255,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 458,
                              "src": "10113:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IGameEngine_$1729",
                                "typeString": "contract IGameEngine"
                              }
                            },
                            "id": 1256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getProfit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1704,
                            "src": "10113:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$_t_struct$_gameData_$297_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (struct GameObject.gameData memory,uint256[] memory) pure external returns (uint256)"
                            }
                          },
                          "id": 1259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10113:41:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1260,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "10158:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1261,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bankrollerBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 527,
                          "src": "10158:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10113:71:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642070726f666974",
                        "id": 1263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10186:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_369d4bc07db1b6654d8e1d9797494cf2b0dcda7f37a51e00eec341433c29b375",
                          "typeString": "literal_string \"invalid profit\""
                        },
                        "value": "invalid profit"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_369d4bc07db1b6654d8e1d9797494cf2b0dcda7f37a51e00eec341433c29b375",
                          "typeString": "literal_string \"invalid profit\""
                        }
                      ],
                      "id": 1254,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "10105:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10105:98:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1265,
                  "nodeType": "ExpressionStatement",
                  "src": "10105:98:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1269,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "10240:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10240:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1266,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "10218:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1267,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 533,
                          "src": "10218:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1902,
                        "src": "10218:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1271,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10218:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1272,
                      "name": "safeTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 517,
                      "src": "10256:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10218:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1285,
                  "nodeType": "IfStatement",
                  "src": "10214:123:5",
                  "trueBody": {
                    "id": 1284,
                    "nodeType": "Block",
                    "src": "10266:71:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1274,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1200,
                              "src": "10280:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 1276,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 533,
                            "src": "10280:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1280,
                                "name": "safeTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 517,
                                "src": "10317:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1277,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "10300:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10300:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1926,
                              "src": "10300:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10300:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10280:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1283,
                        "nodeType": "ExpressionStatement",
                        "src": "10280:46:5"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1287
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1287,
                      "name": "_dispute",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "10347:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_memory_ptr",
                        "typeString": "struct GameChannel.Dispute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1286,
                        "name": "Dispute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 542,
                        "src": "10347:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                          "typeString": "struct GameChannel.Dispute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1292,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1289,
                        "name": "_disputeBets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1187,
                        "src": "10413:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1290,
                        "name": "_gameData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1189,
                        "src": "10457:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                          "typeString": "struct GameObject.gameData memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 1288,
                      "name": "Dispute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 542,
                      "src": "10373:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Dispute_$542_storage_ptr_$",
                        "typeString": "type(struct GameChannel.Dispute storage pointer)"
                      }
                    },
                    "id": 1291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "disputeBets",
                      "disputeGameData"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "10373:104:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_memory",
                      "typeString": "struct GameChannel.Dispute memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10347:130:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1293,
                        "name": "disputes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 555,
                        "src": "10555:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                          "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                        }
                      },
                      "id": 1295,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1294,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "10564:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10555:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_storage",
                        "typeString": "struct GameChannel.Dispute storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1296,
                      "name": "_dispute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1287,
                      "src": "10572:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_memory_ptr",
                        "typeString": "struct GameChannel.Dispute memory"
                      }
                    },
                    "src": "10555:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_storage",
                      "typeString": "struct GameChannel.Dispute storage ref"
                    }
                  },
                  "id": 1298,
                  "nodeType": "ExpressionStatement",
                  "src": "10555:25:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1299,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1200,
                        "src": "10590:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1301,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "10590:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1302,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "10607:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 1303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "dispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10607:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "10590:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    }
                  },
                  "id": 1305,
                  "nodeType": "ExpressionStatement",
                  "src": "10590:30:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "6f70656e2064697370757465",
                        "id": 1307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10646:14:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_240a4762d4bc28e1a30b8f055253b180c99e78f23b6d66ca296ba5869a7f0ac3",
                          "typeString": "literal_string \"open dispute\""
                        },
                        "value": "open dispute"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1308,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "10662:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_240a4762d4bc28e1a30b8f055253b180c99e78f23b6d66ca296ba5869a7f0ac3",
                          "typeString": "literal_string \"open dispute\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1306,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "10635:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10635:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1310,
                  "nodeType": "EmitStatement",
                  "src": "10630:36:5"
                }
              ]
            },
            "documentation": "@notice To open a dispute\n@param _id Unique channel identifier\n@param _session Number of the game session\n@param _disputeBets Player's bet\n@param _gameData Player's game data\n@param _signature Player's game data signature",
            "id": 1312,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1194,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "9616:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1196,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1195,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1182,
                      "src": "9625:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9616:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  }
                ],
                "id": 1197,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1193,
                  "name": "active",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 605,
                  "src": "9609:6:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_struct$_Channel_$536_memory_ptr_$",
                    "typeString": "modifier (struct GameChannel.Channel memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9609:21:5"
              }
            ],
            "name": "openDispute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1182,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9455:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1181,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9455:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1184,
                  "name": "_session",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9478:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1183,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9478:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1187,
                  "name": "_disputeBets",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9506:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1185,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9506:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1186,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9506:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1189,
                  "name": "_gameData",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9538:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                    "typeString": "struct GameObject.gameData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1188,
                    "name": "gameData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 297,
                    "src": "9538:8:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_gameData_$297_storage_ptr",
                      "typeString": "struct GameObject.gameData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1191,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9567:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1190,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9567:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9445:148:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1198,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9635:0:5"
            },
            "scope": 1673,
            "src": "9425:1248:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1411,
              "nodeType": "Block",
              "src": "11092:696:5",
              "statements": [
                {
                  "assignments": [
                    1324
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1324,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1412,
                      "src": "11102:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1323,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "11102:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1328,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1325,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "11129:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1327,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1326,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1314,
                      "src": "11138:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11129:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11102:40:5"
                },
                {
                  "assignments": [
                    1330
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1330,
                      "name": "_dispute",
                      "nodeType": "VariableDeclaration",
                      "scope": 1412,
                      "src": "11152:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                        "typeString": "struct GameChannel.Dispute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1329,
                        "name": "Dispute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 542,
                        "src": "11152:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                          "typeString": "struct GameChannel.Dispute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1334,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1331,
                      "name": "disputes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 555,
                      "src": "11179:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                      }
                    },
                    "id": 1333,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1332,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1314,
                      "src": "11188:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11179:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_storage",
                      "typeString": "struct GameChannel.Dispute storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11152:40:5"
                },
                {
                  "assignments": [
                    1336
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1336,
                      "name": "_gameDataHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1412,
                      "src": "11202:21:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1335,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11202:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1341,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1338,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1330,
                          "src": "11239:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1339,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeGameData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 541,
                        "src": "11239:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        }
                      ],
                      "id": 1337,
                      "name": "hashGameData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 317,
                      "src": "11226:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_gameData_$297_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct GameObject.gameData memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11226:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11202:62:5"
                },
                {
                  "assignments": [
                    1343
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1343,
                      "name": "_hash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1412,
                      "src": "11274:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1342,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11274:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1358,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1347,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1314,
                            "src": "11317:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11343:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1348,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1324,
                                  "src": "11322:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                    "typeString": "struct GameChannel.Channel storage pointer"
                                  }
                                },
                                "id": 1349,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "session",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 531,
                                "src": "11322:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1926,
                              "src": "11322:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11322:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1353,
                              "name": "_dispute",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1330,
                              "src": "11347:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                                "typeString": "struct GameChannel.Dispute storage pointer"
                              }
                            },
                            "id": 1354,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "disputeBets",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 539,
                            "src": "11347:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1355,
                            "name": "_gameDataHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1336,
                            "src": "11369:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1345,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3264,
                            "src": "11300:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11300:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11300:83:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1344,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3271,
                      "src": "11290:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11290:94:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11274:110:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_State_$547",
                          "typeString": "enum GameChannel.State"
                        },
                        "id": 1364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1360,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1324,
                            "src": "11402:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1361,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 519,
                          "src": "11402:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1362,
                            "name": "State",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 547,
                            "src": "11420:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                              "typeString": "type(enum GameChannel.State)"
                            }
                          },
                          "id": 1363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "dispute",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11420:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "src": "11402:31:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420737461747573",
                        "id": 1365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11435:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0dd5638dc565fa4861cdc8e8f2a406effe51e6afd242de06b33ea03003efca14",
                          "typeString": "literal_string \"invalid status\""
                        },
                        "value": "invalid status"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0dd5638dc565fa4861cdc8e8f2a406effe51e6afd242de06b33ea03003efca14",
                          "typeString": "literal_string \"invalid status\""
                        }
                      ],
                      "id": 1359,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "11394:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11394:58:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1367,
                  "nodeType": "ExpressionStatement",
                  "src": "11394:58:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1369,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "11470:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11470:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1371,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1324,
                            "src": "11484:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1372,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bankroller",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 523,
                          "src": "11484:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11470:33:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073656e646572",
                        "id": 1374,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11505:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        },
                        "value": "invalid sender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        }
                      ],
                      "id": 1368,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "11462:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11462:60:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1376,
                  "nodeType": "ExpressionStatement",
                  "src": "11462:60:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 1391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1382,
                                      "name": "_N",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1316,
                                      "src": "11602:2:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1381,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3271,
                                    "src": "11592:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                      "typeString": "function () pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1383,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11592:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1385,
                                      "name": "_E",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1318,
                                      "src": "11617:2:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1384,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3271,
                                    "src": "11607:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                      "typeString": "function () pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11607:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1379,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3264,
                                  "src": "11575:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11575:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 1387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11575:46:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1378,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3271,
                            "src": "11565:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 1388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11565:57:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1389,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1324,
                            "src": "11626:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1390,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "RSAHash",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 535,
                          "src": "11626:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "11565:77:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964207075626c6963",
                        "id": 1392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11644:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4df7c4bfb0c00bd8d6f744389224301662ff76009c1602cbe483aeff4ea650f6",
                          "typeString": "literal_string \"invalid public\""
                        },
                        "value": "invalid public"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4df7c4bfb0c00bd8d6f744389224301662ff76009c1602cbe483aeff4ea650f6",
                          "typeString": "literal_string \"invalid public\""
                        }
                      ],
                      "id": 1377,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "11557:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11557:104:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1394,
                  "nodeType": "ExpressionStatement",
                  "src": "11557:104:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1398,
                            "name": "_hash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1343,
                            "src": "11696:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1399,
                            "name": "_N",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1316,
                            "src": "11703:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1400,
                            "name": "_E",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1318,
                            "src": "11707:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1401,
                            "name": "_rsaSignature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1320,
                            "src": "11711:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1396,
                            "name": "signidice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 464,
                            "src": "11679:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISignidice_$1785",
                              "typeString": "contract ISignidice"
                            }
                          },
                          "id": 1397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "verify",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1784,
                          "src": "11679:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes32,bytes memory,bytes memory,bytes memory) view external returns (bool)"
                          }
                        },
                        "id": 1402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11679:46:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420766572696679",
                        "id": 1403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11727:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ba2baea0840971d54527c3ae0e3541c9e5194d8ffe3faab5a34d82035274ebec",
                          "typeString": "literal_string \"invalid verify\""
                        },
                        "value": "invalid verify"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ba2baea0840971d54527c3ae0e3541c9e5194d8ffe3faab5a34d82035274ebec",
                          "typeString": "literal_string \"invalid verify\""
                        }
                      ],
                      "id": 1395,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "11671:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11671:73:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1405,
                  "nodeType": "ExpressionStatement",
                  "src": "11671:73:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1407,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1314,
                        "src": "11762:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1408,
                        "name": "_rsaSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1320,
                        "src": "11767:13:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1406,
                      "name": "resolve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1485,
                      "src": "11754:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 1409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11754:27:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1410,
                  "nodeType": "ExpressionStatement",
                  "src": "11754:27:5"
                }
              ]
            },
            "documentation": "@notice Closing of the channel on the dispute\n@param _id Unique channel identifier\n@param _N  N-component of bankroller's rsa public key\n@param _E  E-component of bankroller's rsa public key\n@param _rsaSignature sign for generate random",
            "id": 1412,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "resolveDispute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1321,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1314,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1412,
                  "src": "10984:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1313,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10984:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1316,
                  "name": "_N",
                  "nodeType": "VariableDeclaration",
                  "scope": 1412,
                  "src": "11005:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1315,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11005:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1318,
                  "name": "_E",
                  "nodeType": "VariableDeclaration",
                  "scope": 1412,
                  "src": "11025:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1317,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11025:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1320,
                  "name": "_rsaSignature",
                  "nodeType": "VariableDeclaration",
                  "scope": 1412,
                  "src": "11045:21:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1319,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11045:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10974:98:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1322,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11092:0:5"
            },
            "scope": 1673,
            "src": "10951:837:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1484,
              "nodeType": "Block",
              "src": "12007:512:5",
              "statements": [
                {
                  "assignments": [
                    1420
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1420,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1485,
                      "src": "12017:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1419,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "12017:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1424,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1421,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "12044:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1423,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1422,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1414,
                      "src": "12053:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12044:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12017:40:5"
                },
                {
                  "assignments": [
                    1426
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1426,
                      "name": "_dispute",
                      "nodeType": "VariableDeclaration",
                      "scope": 1485,
                      "src": "12067:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                        "typeString": "struct GameChannel.Dispute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1425,
                        "name": "Dispute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 542,
                        "src": "12067:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                          "typeString": "struct GameChannel.Dispute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1430,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1427,
                      "name": "disputes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 555,
                      "src": "12094:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                      }
                    },
                    "id": 1429,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1428,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1414,
                      "src": "12103:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12094:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_storage",
                      "typeString": "struct GameChannel.Dispute storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12067:40:5"
                },
                {
                  "assignments": [
                    1435
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1435,
                      "name": "profit",
                      "nodeType": "VariableDeclaration",
                      "scope": 1485,
                      "src": "12118:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_int256_$2_memory_ptr",
                        "typeString": "int256[2]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1433,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12118:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1434,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12125:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "2"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "12118:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$2_storage_ptr",
                          "typeString": "int256[2]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1444,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1438,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1426,
                          "src": "12163:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1439,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeGameData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 541,
                        "src": "12163:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1440,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1426,
                          "src": "12189:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1441,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeBets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 539,
                        "src": "12189:20:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1442,
                        "name": "_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1416,
                        "src": "12211:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1436,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 458,
                        "src": "12144:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGameEngine_$1729",
                          "typeString": "contract IGameEngine"
                        }
                      },
                      "id": 1437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "resolveGame",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1728,
                      "src": "12144:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_gameData_$297_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_int256_$2_memory_ptr_$",
                        "typeString": "function (struct GameObject.gameData memory,uint256[] memory,bytes memory) external returns (int256[2] memory)"
                      }
                    },
                    "id": 1443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12144:78:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$2_memory_ptr",
                      "typeString": "int256[2] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12118:104:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1445,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1420,
                        "src": "12265:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1447,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "12265:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 1456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1450,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1420,
                                  "src": "12309:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                    "typeString": "struct GameChannel.Channel storage pointer"
                                  }
                                },
                                "id": 1451,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "playerBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 525,
                                "src": "12309:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12302:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": "int256"
                            },
                            "id": 1452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12302:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1453,
                              "name": "profit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "12335:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$2_memory_ptr",
                                "typeString": "int256[2] memory"
                              }
                            },
                            "id": 1455,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12342:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12335:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12302:42:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 1448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12294:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint256"
                      },
                      "id": 1457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12294:51:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12265:80:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1459,
                  "nodeType": "ExpressionStatement",
                  "src": "12265:80:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1460,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1420,
                        "src": "12355:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1462,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "12355:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 1471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1465,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1420,
                                  "src": "12399:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                    "typeString": "struct GameChannel.Channel storage pointer"
                                  }
                                },
                                "id": 1466,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "playerBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 525,
                                "src": "12399:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12392:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": "int256"
                            },
                            "id": 1467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12392:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1468,
                              "name": "profit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "12425:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$2_memory_ptr",
                                "typeString": "int256[2] memory"
                              }
                            },
                            "id": 1470,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12432:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12425:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12392:42:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 1463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12384:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint256"
                      },
                      "id": 1472,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12384:51:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12355:80:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1474,
                  "nodeType": "ExpressionStatement",
                  "src": "12355:80:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "7265736f6c76652064697370757465",
                        "id": 1476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12462:17:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_28d4fe5fa594b0643e176f292ee4fc8f5f5e4dad7169ec6c89cccd737a8efe0f",
                          "typeString": "literal_string \"resolve dispute\""
                        },
                        "value": "resolve dispute"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1477,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1414,
                        "src": "12481:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_28d4fe5fa594b0643e176f292ee4fc8f5f5e4dad7169ec6c89cccd737a8efe0f",
                          "typeString": "literal_string \"resolve dispute\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1475,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "12451:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12451:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1479,
                  "nodeType": "EmitStatement",
                  "src": "12446:39:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1481,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1414,
                        "src": "12508:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1480,
                      "name": "closeChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1610,
                      "src": "12495:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12495:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1483,
                  "nodeType": "ExpressionStatement",
                  "src": "12495:17:5"
                }
              ]
            },
            "documentation": "@notice run last game round after dispute\n@param _id Unique channel identifier\n@param _signature Sign for creation random number",
            "id": 1485,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "resolve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1414,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1485,
                  "src": "11967:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1413,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11967:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1416,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 1485,
                  "src": "11980:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1415,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11980:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11966:31:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1418,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12007:0:5"
            },
            "scope": 1673,
            "src": "11950:569:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1609,
              "nodeType": "Block",
              "src": "12677:979:5",
              "statements": [
                {
                  "assignments": [
                    1491
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1491,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12687:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1490,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "12687:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1495,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1492,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "12714:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1494,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1493,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1487,
                      "src": "12723:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12714:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12687:40:5"
                },
                {
                  "assignments": [
                    1497
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1497,
                      "name": "_forReward",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12737:18:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1496,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12737:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1506,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31303030",
                        "id": 1504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12797:4:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000_by_1",
                          "typeString": "int_const 1000"
                        },
                        "value": "1000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1000_by_1",
                          "typeString": "int_const 1000"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "3230",
                            "id": 1501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12789:2:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            },
                            "value": "20"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1498,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1491,
                              "src": "12767:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 1499,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalBet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 529,
                            "src": "12767:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1864,
                          "src": "12767:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12767:25:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1882,
                      "src": "12767:29:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12767:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12737:65:5"
                },
                {
                  "assignments": [
                    1508
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1508,
                      "name": "_bankrollerReward",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12812:25:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1507,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12812:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1516,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 1514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12877:3:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1511,
                            "name": "bankrollReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 504,
                            "src": "12857:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1509,
                            "name": "_forReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1497,
                            "src": "12842:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1864,
                          "src": "12842:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12842:30:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1882,
                      "src": "12842:34:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12842:39:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12812:69:5"
                },
                {
                  "assignments": [
                    1518
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1518,
                      "name": "_forPlayer",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12891:18:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1517,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12891:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1521,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1519,
                      "name": "_channel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1491,
                      "src": "12921:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel storage pointer"
                      }
                    },
                    "id": 1520,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "playerBalance",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 525,
                    "src": "12921:22:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12891:52:5"
                },
                {
                  "assignments": [
                    1523
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1523,
                      "name": "_forBankroller",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12953:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1522,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12953:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1527,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12988:1:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 1524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "12983:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": "uint"
                    },
                    "id": 1526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12983:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12953:37:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1528,
                      "name": "_forReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1497,
                      "src": "13004:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1529,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13017:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1530,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "13017:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13004:39:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1553,
                    "nodeType": "Block",
                    "src": "13115:111:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1540,
                            "name": "_forBankroller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "13129:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1547,
                                        "name": "_forReward",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1497,
                                        "src": "13202:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1544,
                                            "name": "_bankrollerReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1508,
                                            "src": "13179:17:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1541,
                                              "name": "_channel",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1491,
                                              "src": "13148:8:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                                "typeString": "struct GameChannel.Channel storage pointer"
                                              }
                                            },
                                            "id": 1542,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "bankrollerBalance",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 527,
                                            "src": "13148:26:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1543,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1926,
                                          "src": "13148:30:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13148:49:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1546,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1902,
                                      "src": "13148:53:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1548,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13148:65:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1549,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13147:67:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1550,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "13146:69:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13129:86:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1552,
                        "nodeType": "ExpressionStatement",
                        "src": "13129:86:5"
                      }
                    ]
                  },
                  "id": 1554,
                  "nodeType": "IfStatement",
                  "src": "13001:225:5",
                  "trueBody": {
                    "id": 1539,
                    "nodeType": "Block",
                    "src": "13045:64:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1532,
                            "name": "_forPlayer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1518,
                            "src": "13059:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1535,
                                "name": "_forReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1497,
                                "src": "13087:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1533,
                                "name": "_forPlayer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1518,
                                "src": "13072:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1902,
                              "src": "13072:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13072:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13059:39:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1538,
                        "nodeType": "ExpressionStatement",
                        "src": "13059:39:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1556,
                          "name": "_channel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1491,
                          "src": "13250:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                            "typeString": "struct GameChannel.Channel storage pointer"
                          }
                        },
                        "id": 1557,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "player",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 521,
                        "src": "13250:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1558,
                        "name": "_forReward",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1497,
                        "src": "13267:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1555,
                      "name": "serviceReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1672,
                      "src": "13236:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 1559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13236:42:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1560,
                  "nodeType": "ExpressionStatement",
                  "src": "13236:42:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1564,
                          "name": "_channel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1491,
                          "src": "13303:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                            "typeString": "struct GameChannel.Channel storage pointer"
                          }
                        },
                        "id": 1565,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "bankroller",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 523,
                        "src": "13303:19:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1566,
                        "name": "_forBankroller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1523,
                        "src": "13324:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1561,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "13288:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1563,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "13288:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13288:51:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1568,
                  "nodeType": "ExpressionStatement",
                  "src": "13288:51:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1572,
                          "name": "_channel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1491,
                          "src": "13364:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                            "typeString": "struct GameChannel.Channel storage pointer"
                          }
                        },
                        "id": 1573,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "player",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 521,
                        "src": "13364:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1574,
                        "name": "_forPlayer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1518,
                        "src": "13381:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1569,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "13349:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "13349:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13349:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1576,
                  "nodeType": "ExpressionStatement",
                  "src": "13349:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1577,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13402:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1579,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "13402:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1580,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "13419:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 1581,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "close",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13419:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "13402:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    }
                  },
                  "id": 1583,
                  "nodeType": "ExpressionStatement",
                  "src": "13402:28:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "13440:29:5",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1584,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13447:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1585,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "13447:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1587,
                  "nodeType": "ExpressionStatement",
                  "src": "13440:29:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "13479:33:5",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1588,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13486:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1589,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "13486:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1591,
                  "nodeType": "ExpressionStatement",
                  "src": "13479:33:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    },
                    "id": 1596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1592,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13526:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1593,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "13526:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1594,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "13544:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 1595,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "dispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13544:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "13526:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1603,
                  "nodeType": "IfStatement",
                  "src": "13522:81:5",
                  "trueBody": {
                    "id": 1602,
                    "nodeType": "Block",
                    "src": "13559:44:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "13572:20:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1597,
                              "name": "disputes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 555,
                              "src": "13579:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                                "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                              }
                            },
                            "id": 1599,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1598,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1487,
                              "src": "13588:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13579:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dispute_$542_storage",
                              "typeString": "struct GameChannel.Dispute storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1601,
                        "nodeType": "ExpressionStatement",
                        "src": "13572:20:5"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "636c6f7365206368616e6e656c",
                        "id": 1605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13628:15:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2d65f4f69b40e1289c9d05dc42a90d42d39b4b6b3da4fe97cc8de7b8c0d8a947",
                          "typeString": "literal_string \"close channel\""
                        },
                        "value": "close channel"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1606,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1487,
                        "src": "13645:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_2d65f4f69b40e1289c9d05dc42a90d42d39b4b6b3da4fe97cc8de7b8c0d8a947",
                          "typeString": "literal_string \"close channel\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1604,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "13617:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13617:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1608,
                  "nodeType": "EmitStatement",
                  "src": "13612:37:5"
                }
              ]
            },
            "documentation": "@notice Internal function for for sending funds\n@param _id Unique channel identifier",
            "id": 1610,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "closeChannel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1488,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1487,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1610,
                  "src": "12655:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1486,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12655:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12654:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1489,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12677:0:5"
            },
            "scope": 1673,
            "src": "12633:1023:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1671,
              "nodeType": "Block",
              "src": "13900:338:5",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1618,
                      "name": "_platform",
                      "nodeType": "VariableDeclaration",
                      "scope": 1672,
                      "src": "13910:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1617,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13910:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1619,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13910:17:5"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1621,
                      "name": "_referrer",
                      "nodeType": "VariableDeclaration",
                      "scope": 1672,
                      "src": "13937:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1620,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13937:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1622,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13937:17:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1623,
                          "name": "_platform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1618,
                          "src": "13965:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1624,
                          "name": "_referrer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1621,
                          "src": "13976:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 1625,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "13964:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                        "typeString": "tuple(address,address)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1628,
                          "name": "_player",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1612,
                          "src": "14009:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1626,
                          "name": "platform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 462,
                          "src": "13989:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPlatform_$1755",
                            "typeString": "contract IPlatform"
                          }
                        },
                        "id": 1627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getService",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1740,
                        "src": "13989:19:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$_t_address_$",
                          "typeString": "function (address) view external returns (address,address)"
                        }
                      },
                      "id": 1629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13989:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                        "typeString": "tuple(address,address)"
                      }
                    },
                    "src": "13964:53:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1631,
                  "nodeType": "ExpressionStatement",
                  "src": "13964:53:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1635,
                        "name": "developer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 510,
                        "src": "14042:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 1641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14083:3:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1638,
                                "name": "gameDevReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 502,
                                "src": "14064:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1636,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1614,
                                "src": "14053:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1864,
                              "src": "14053:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1639,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14053:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1882,
                          "src": "14053:29:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14053:34:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1632,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "14027:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "14027:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14027:61:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1644,
                  "nodeType": "ExpressionStatement",
                  "src": "14027:61:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1648,
                        "name": "_platform",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1618,
                        "src": "14113:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 1654,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14155:3:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1651,
                                "name": "platformReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 506,
                                "src": "14135:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1649,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1614,
                                "src": "14124:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1864,
                              "src": "14124:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14124:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1882,
                          "src": "14124:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14124:35:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1645,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "14098:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1647,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "14098:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14098:62:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1657,
                  "nodeType": "ExpressionStatement",
                  "src": "14098:62:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1661,
                        "name": "_referrer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1621,
                        "src": "14185:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 1667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14226:3:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1664,
                                "name": "refererReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 508,
                                "src": "14207:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1662,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1614,
                                "src": "14196:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1864,
                              "src": "14196:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14196:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1882,
                          "src": "14196:29:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14196:34:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1658,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "14170:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1660,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "14170:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14170:61:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1670,
                  "nodeType": "ExpressionStatement",
                  "src": "14170:61:5"
                }
              ]
            },
            "documentation": "@notice Transfer reward to game developer, bankroller, platform and referrer\n@param _player player's address\n@param _value Total for distribution",
            "id": 1672,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "serviceReward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1612,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 1672,
                  "src": "13858:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1611,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13858:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1614,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1672,
                  "src": "13875:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1613,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13875:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13857:33:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1616,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13900:0:5"
            },
            "scope": 1673,
            "src": "13835:403:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 1674,
        "src": "248:13993:5"
      }
    ],
    "src": "0:14241:5"
  },
  "legacyAST": {
    "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/gameChannel/GameChannel.sol",
    "exportedSymbols": {
      "GameChannel": [
        1673
      ]
    },
    "id": 1674,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 436,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".23"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:5"
      },
      {
        "id": 437,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "25:33:5"
      },
      {
        "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/interfaces/Interfaces.sol",
        "file": "../interfaces/Interfaces.sol",
        "id": 442,
        "nodeType": "ImportDirective",
        "scope": 1674,
        "sourceUnit": 1830,
        "src": "60:88:5",
        "symbolAliases": [
          {
            "foreign": 438,
            "local": null
          },
          {
            "foreign": 439,
            "local": null
          },
          {
            "foreign": 440,
            "local": null
          },
          {
            "foreign": 441,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/game/GameObject.sol",
        "file": "../game/GameObject.sol",
        "id": 443,
        "nodeType": "ImportDirective",
        "scope": 1674,
        "sourceUnit": 363,
        "src": "149:32:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/library/SafeMath.sol",
        "file": "../library/SafeMath.sol",
        "id": 444,
        "nodeType": "ImportDirective",
        "scope": 1674,
        "sourceUnit": 1928,
        "src": "182:33:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/fanyshu/Documents/Projects/DCLabs/monorepo/packages/dc-sdk-example/dapp/contracts/library/Utils.sol",
        "file": "../library/Utils.sol",
        "id": 445,
        "nodeType": "ImportDirective",
        "scope": 1674,
        "sourceUnit": 2339,
        "src": "216:30:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 446,
              "name": "GameObject",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 362,
              "src": "272:10:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GameObject_$362",
                "typeString": "contract GameObject"
              }
            },
            "id": 447,
            "nodeType": "InheritanceSpecifier",
            "src": "272:10:5"
          }
        ],
        "contractDependencies": [
          362
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1673,
        "linearizedBaseContracts": [
          1673,
          362
        ],
        "name": "GameChannel",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 453,
            "name": "logChannel",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 449,
                  "indexed": false,
                  "name": "action",
                  "nodeType": "VariableDeclaration",
                  "scope": 453,
                  "src": "316:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 448,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "316:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 451,
                  "indexed": false,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 453,
                  "src": "340:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 450,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "340:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "306:50:5"
            },
            "src": "290:67:5"
          },
          {
            "id": 456,
            "libraryName": {
              "contractScope": null,
              "id": 454,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1927,
              "src": "369:8:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$1927",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "363:24:5",
            "typeName": {
              "id": 455,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "382:4:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 458,
            "name": "engine",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "393:25:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IGameEngine_$1729",
              "typeString": "contract IGameEngine"
            },
            "typeName": {
              "contractScope": null,
              "id": 457,
              "name": "IGameEngine",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1729,
              "src": "393:11:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IGameEngine_$1729",
                "typeString": "contract IGameEngine"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 460,
            "name": "token",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "424:24:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IToken_$1822",
              "typeString": "contract IToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 459,
              "name": "IToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1822,
              "src": "424:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IToken_$1822",
                "typeString": "contract IToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 462,
            "name": "platform",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "454:27:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IPlatform_$1755",
              "typeString": "contract IPlatform"
            },
            "typeName": {
              "contractScope": null,
              "id": 461,
              "name": "IPlatform",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1755,
              "src": "454:9:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IPlatform_$1755",
                "typeString": "contract IPlatform"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 464,
            "name": "signidice",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "487:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ISignidice_$1785",
              "typeString": "contract ISignidice"
            },
            "typeName": {
              "contractScope": null,
              "id": 463,
              "name": "ISignidice",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1785,
              "src": "487:10:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ISignidice_$1785",
                "typeString": "contract ISignidice"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 499,
              "nodeType": "Block",
              "src": "903:171:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 479,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 475,
                      "name": "engine",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 458,
                      "src": "913:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IGameEngine_$1729",
                        "typeString": "contract IGameEngine"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 477,
                          "name": "_engine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 466,
                          "src": "937:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IGameEngine_$1729",
                            "typeString": "contract IGameEngine"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IGameEngine_$1729",
                            "typeString": "contract IGameEngine"
                          }
                        ],
                        "id": 476,
                        "name": "IGameEngine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1729,
                        "src": "925:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IGameEngine_$1729_$",
                          "typeString": "type(contract IGameEngine)"
                        }
                      },
                      "id": 478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "925:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IGameEngine_$1729",
                        "typeString": "contract IGameEngine"
                      }
                    },
                    "src": "913:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IGameEngine_$1729",
                      "typeString": "contract IGameEngine"
                    }
                  },
                  "id": 480,
                  "nodeType": "ExpressionStatement",
                  "src": "913:32:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 481,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 460,
                      "src": "955:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IToken_$1822",
                        "typeString": "contract IToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 483,
                          "name": "_token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 468,
                          "src": "974:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IToken_$1822",
                            "typeString": "contract IToken"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IToken_$1822",
                            "typeString": "contract IToken"
                          }
                        ],
                        "id": 482,
                        "name": "IToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1822,
                        "src": "967:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IToken_$1822_$",
                          "typeString": "type(contract IToken)"
                        }
                      },
                      "id": 484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "967:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IToken_$1822",
                        "typeString": "contract IToken"
                      }
                    },
                    "src": "955:26:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IToken_$1822",
                      "typeString": "contract IToken"
                    }
                  },
                  "id": 486,
                  "nodeType": "ExpressionStatement",
                  "src": "955:26:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 487,
                      "name": "platform",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 462,
                      "src": "991:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPlatform_$1755",
                        "typeString": "contract IPlatform"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 489,
                          "name": "_platform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 470,
                          "src": "1013:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPlatform_$1755",
                            "typeString": "contract IPlatform"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IPlatform_$1755",
                            "typeString": "contract IPlatform"
                          }
                        ],
                        "id": 488,
                        "name": "IPlatform",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1755,
                        "src": "1003:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IPlatform_$1755_$",
                          "typeString": "type(contract IPlatform)"
                        }
                      },
                      "id": 490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1003:20:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPlatform_$1755",
                        "typeString": "contract IPlatform"
                      }
                    },
                    "src": "991:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPlatform_$1755",
                      "typeString": "contract IPlatform"
                    }
                  },
                  "id": 492,
                  "nodeType": "ExpressionStatement",
                  "src": "991:32:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 493,
                      "name": "signidice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 464,
                      "src": "1033:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ISignidice_$1785",
                        "typeString": "contract ISignidice"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 495,
                          "name": "_signidice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 472,
                          "src": "1056:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISignidice_$1785",
                            "typeString": "contract ISignidice"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ISignidice_$1785",
                            "typeString": "contract ISignidice"
                          }
                        ],
                        "id": 494,
                        "name": "ISignidice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1785,
                        "src": "1045:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ISignidice_$1785_$",
                          "typeString": "type(contract ISignidice)"
                        }
                      },
                      "id": 496,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1045:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ISignidice_$1785",
                        "typeString": "contract ISignidice"
                      }
                    },
                    "src": "1033:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISignidice_$1785",
                      "typeString": "contract ISignidice"
                    }
                  },
                  "id": 498,
                  "nodeType": "ExpressionStatement",
                  "src": "1033:34:5"
                }
              ]
            },
            "documentation": "@notice constructor\n@param _engine address contract erc20\n@param _token address contract erc20\n@param _platform address of platform contract\n@param _signidice address of signidice contract",
            "id": 500,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 466,
                  "name": "_engine",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "767:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IGameEngine_$1729",
                    "typeString": "contract IGameEngine"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 465,
                    "name": "IGameEngine",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1729,
                    "src": "767:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IGameEngine_$1729",
                      "typeString": "contract IGameEngine"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 468,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "796:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IToken_$1822",
                    "typeString": "contract IToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 467,
                    "name": "IToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1822,
                    "src": "796:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IToken_$1822",
                      "typeString": "contract IToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 470,
                  "name": "_platform",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "824:21:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPlatform_$1755",
                    "typeString": "contract IPlatform"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 469,
                    "name": "IPlatform",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1755,
                    "src": "824:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPlatform_$1755",
                      "typeString": "contract IPlatform"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 472,
                  "name": "_signidice",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "855:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ISignidice_$1785",
                    "typeString": "contract ISignidice"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 471,
                    "name": "ISignidice",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1785,
                    "src": "855:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISignidice_$1785",
                      "typeString": "contract ISignidice"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "757:126:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 474,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "903:0:5"
            },
            "scope": 1673,
            "src": "745:329:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 502,
            "name": "gameDevReward",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1080:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 501,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1080:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 504,
            "name": "bankrollReward",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1114:29:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 503,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1114:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 506,
            "name": "platformReward",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1149:29:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 505,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1149:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 508,
            "name": "refererReward",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1184:28:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 507,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1184:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 510,
            "name": "developer",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1218:24:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 509,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1218:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 512,
            "name": "minBet",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1248:21:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 511,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1248:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 517,
            "name": "safeTime",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1275:38:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 513,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1275:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "313230",
                  "id": 515,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1309:3:5",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_120_by_1",
                    "typeString": "int_const 120"
                  },
                  "value": "120"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_120_by_1",
                    "typeString": "int_const 120"
                  }
                ],
                "id": 514,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "1301:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_uint256_$",
                  "typeString": "type(uint256)"
                },
                "typeName": "uint256"
              },
              "id": 516,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1301:12:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "canonicalName": "GameChannel.Channel",
            "id": 536,
            "members": [
              {
                "constant": false,
                "id": 519,
                "name": "state",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1345:13:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_State_$547",
                  "typeString": "enum GameChannel.State"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 518,
                  "name": "State",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 547,
                  "src": "1345:5:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_State_$547",
                    "typeString": "enum GameChannel.State"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 521,
                "name": "player",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1368:14:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 520,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1368:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 523,
                "name": "bankroller",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1392:18:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 522,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1392:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 525,
                "name": "playerBalance",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1420:21:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 524,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1420:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 527,
                "name": "bankrollerBalance",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1451:25:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 526,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1451:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 529,
                "name": "totalBet",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1486:16:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 528,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1486:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 531,
                "name": "session",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1512:15:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 530,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1512:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 533,
                "name": "endBlock",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1537:16:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 532,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1537:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 535,
                "name": "RSAHash",
                "nodeType": "VariableDeclaration",
                "scope": 536,
                "src": "1563:15:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 534,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1563:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Channel",
            "nodeType": "StructDefinition",
            "scope": 1673,
            "src": "1320:265:5",
            "visibility": "public"
          },
          {
            "canonicalName": "GameChannel.Dispute",
            "id": 542,
            "members": [
              {
                "constant": false,
                "id": 539,
                "name": "disputeBets",
                "nodeType": "VariableDeclaration",
                "scope": 542,
                "src": "1616:21:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 537,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1616:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 538,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1616:9:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 541,
                "name": "disputeGameData",
                "nodeType": "VariableDeclaration",
                "scope": 542,
                "src": "1647:25:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_gameData_$297_storage_ptr",
                  "typeString": "struct GameObject.gameData"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 540,
                  "name": "gameData",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 297,
                  "src": "1647:8:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_gameData_$297_storage_ptr",
                    "typeString": "struct GameObject.gameData"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Dispute",
            "nodeType": "StructDefinition",
            "scope": 1673,
            "src": "1591:88:5",
            "visibility": "public"
          },
          {
            "canonicalName": "GameChannel.State",
            "id": 547,
            "members": [
              {
                "id": 543,
                "name": "unused",
                "nodeType": "EnumValue",
                "src": "1697:6:5"
              },
              {
                "id": 544,
                "name": "open",
                "nodeType": "EnumValue",
                "src": "1705:4:5"
              },
              {
                "id": 545,
                "name": "close",
                "nodeType": "EnumValue",
                "src": "1711:5:5"
              },
              {
                "id": 546,
                "name": "dispute",
                "nodeType": "EnumValue",
                "src": "1718:7:5"
              }
            ],
            "name": "State",
            "nodeType": "EnumDefinition",
            "src": "1685:41:5"
          },
          {
            "constant": false,
            "id": 551,
            "name": "channels",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1731:43:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
              "typeString": "mapping(bytes32 => struct GameChannel.Channel)"
            },
            "typeName": {
              "id": 550,
              "keyType": {
                "id": 548,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1739:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1731:27:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                "typeString": "mapping(bytes32 => struct GameChannel.Channel)"
              },
              "valueType": {
                "contractScope": null,
                "id": 549,
                "name": "Channel",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 536,
                "src": "1750:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                  "typeString": "struct GameChannel.Channel"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 555,
            "name": "disputes",
            "nodeType": "VariableDeclaration",
            "scope": 1673,
            "src": "1780:43:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
              "typeString": "mapping(bytes32 => struct GameChannel.Dispute)"
            },
            "typeName": {
              "id": 554,
              "keyType": {
                "id": 552,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1788:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1780:27:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                "typeString": "mapping(bytes32 => struct GameChannel.Dispute)"
              },
              "valueType": {
                "contractScope": null,
                "id": 553,
                "name": "Dispute",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 542,
                "src": "1799:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                  "typeString": "struct GameChannel.Dispute"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 604,
              "nodeType": "Block",
              "src": "1864:297:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 560,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3277,
                                  "src": "1883:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1883:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 562,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 557,
                                  "src": "1897:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                    "typeString": "struct GameChannel.Channel memory"
                                  }
                                },
                                "id": 563,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "player",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 521,
                                "src": "1897:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1883:29:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 565,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1882:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 570,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 566,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3277,
                                  "src": "1918:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1918:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 568,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 557,
                                  "src": "1932:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                    "typeString": "struct GameChannel.Channel memory"
                                  }
                                },
                                "id": 569,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "bankroller",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 523,
                                "src": "1932:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1918:33:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 571,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1917:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1882:70:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073656e646572",
                        "id": 573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1954:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        },
                        "value": "invalid sender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        }
                      ],
                      "id": 559,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "1874:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1874:97:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 575,
                  "nodeType": "ExpressionStatement",
                  "src": "1874:97:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 577,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 557,
                                "src": "1990:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                  "typeString": "struct GameChannel.Channel memory"
                                }
                              },
                              "id": 578,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 533,
                              "src": "1990:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 579,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3267,
                                "src": "2010:5:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2010:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1990:32:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 582,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1989:34:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642074696d65",
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2025:14:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f2f5f8bb8d426f6965bb336cf83a4bb1af426160c477466a0f5ebbc2219fd975",
                          "typeString": "literal_string \"invalid time\""
                        },
                        "value": "invalid time"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f2f5f8bb8d426f6965bb336cf83a4bb1af426160c477466a0f5ebbc2219fd975",
                          "typeString": "literal_string \"invalid time\""
                        }
                      ],
                      "id": 576,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "1981:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1981:59:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 585,
                  "nodeType": "ExpressionStatement",
                  "src": "1981:59:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_State_$547",
                                "typeString": "enum GameChannel.State"
                              },
                              "id": 591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 587,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 557,
                                  "src": "2059:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                    "typeString": "struct GameChannel.Channel memory"
                                  }
                                },
                                "id": 588,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 519,
                                "src": "2059:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_State_$547",
                                  "typeString": "enum GameChannel.State"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 589,
                                  "name": "State",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 547,
                                  "src": "2077:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                                    "typeString": "type(enum GameChannel.State)"
                                  }
                                },
                                "id": 590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "open",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2077:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_State_$547",
                                  "typeString": "enum GameChannel.State"
                                }
                              },
                              "src": "2059:28:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 592,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2058:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_State_$547",
                                "typeString": "enum GameChannel.State"
                              },
                              "id": 597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 593,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 557,
                                  "src": "2093:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                                    "typeString": "struct GameChannel.Channel memory"
                                  }
                                },
                                "id": 594,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 519,
                                "src": "2093:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_State_$547",
                                  "typeString": "enum GameChannel.State"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 595,
                                  "name": "State",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 547,
                                  "src": "2111:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                                    "typeString": "type(enum GameChannel.State)"
                                  }
                                },
                                "id": 596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "dispute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2111:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_State_$547",
                                  "typeString": "enum GameChannel.State"
                                }
                              },
                              "src": "2093:31:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 598,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2092:33:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2058:67:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964207374617465",
                        "id": 600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2127:15:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de12ab57a0daa634f488033127dcfe962870ebf8c9e1b7fcbcea396d614f7ebb",
                          "typeString": "literal_string \"invalid state\""
                        },
                        "value": "invalid state"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de12ab57a0daa634f488033127dcfe962870ebf8c9e1b7fcbcea396d614f7ebb",
                          "typeString": "literal_string \"invalid state\""
                        }
                      ],
                      "id": 586,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "2050:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2050:93:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 602,
                  "nodeType": "ExpressionStatement",
                  "src": "2050:93:5"
                },
                {
                  "id": 603,
                  "nodeType": "PlaceholderStatement",
                  "src": "2153:1:5"
                }
              ]
            },
            "documentation": null,
            "id": 605,
            "name": "active",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 557,
                  "name": "_channel",
                  "nodeType": "VariableDeclaration",
                  "scope": 605,
                  "src": "1846:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                    "typeString": "struct GameChannel.Channel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 556,
                    "name": "Channel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 536,
                    "src": "1846:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                      "typeString": "struct GameChannel.Channel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1845:18:5"
            },
            "src": "1830:331:5",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 781,
              "nodeType": "Block",
              "src": "3038:1468:5",
              "statements": [
                {
                  "assignments": [
                    627
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 627,
                      "name": "_signer",
                      "nodeType": "VariableDeclaration",
                      "scope": 782,
                      "src": "3048:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 626,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3048:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 645,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 633,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 607,
                                "src": "3113:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 634,
                                "name": "_player",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 609,
                                "src": "3118:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 635,
                                "name": "_bankroller",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 611,
                                "src": "3127:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 636,
                                "name": "_playerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 613,
                                "src": "3140:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 637,
                                "name": "_bankrollerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 615,
                                "src": "3156:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 638,
                                "name": "_openingBlock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 617,
                                "src": "3176:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 639,
                                "name": "_N",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 619,
                                "src": "3191:2:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 640,
                                "name": "_E",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 621,
                                "src": "3195:2:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 631,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "3096:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 632,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3096:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3096:102:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 630,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "3086:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3086:113:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 643,
                        "name": "_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 623,
                        "src": "3201:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 628,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "3066:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$2338_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2009,
                      "src": "3066:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3066:146:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3048:164:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_State_$547",
                          "typeString": "enum GameChannel.State"
                        },
                        "id": 653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 647,
                              "name": "channels",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 551,
                              "src": "3230:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                                "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                              }
                            },
                            "id": 649,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 648,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 607,
                              "src": "3239:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3230:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage",
                              "typeString": "struct GameChannel.Channel storage ref"
                            }
                          },
                          "id": 650,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 519,
                          "src": "3230:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 651,
                            "name": "State",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 547,
                            "src": "3253:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                              "typeString": "type(enum GameChannel.State)"
                            }
                          },
                          "id": 652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "unused",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3253:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "src": "3230:35:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "75736564206964",
                        "id": 654,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3267:9:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_bf9c7455be6221e99418a4081fbcc2104492c45ba75a048c4eef3fe9dfc43468",
                          "typeString": "literal_string \"used id\""
                        },
                        "value": "used id"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_bf9c7455be6221e99418a4081fbcc2104492c45ba75a048c4eef3fe9dfc43468",
                          "typeString": "literal_string \"used id\""
                        }
                      ],
                      "id": 646,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3222:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3222:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 656,
                  "nodeType": "ExpressionStatement",
                  "src": "3222:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3230",
                              "id": 660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3313:2:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 658,
                              "name": "_openingBlock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 617,
                              "src": "3295:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "3295:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3295:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 662,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "3320:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3320:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3295:37:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6f757464617465207369676e6174757265",
                        "id": 665,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3334:19:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5395658da4348459d132be25f1a689b3295f655cc6f751e2f1ff357d9897d2ea",
                          "typeString": "literal_string \"outdate signature\""
                        },
                        "value": "outdate signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5395658da4348459d132be25f1a689b3295f655cc6f751e2f1ff357d9897d2ea",
                          "typeString": "literal_string \"outdate signature\""
                        }
                      ],
                      "id": 657,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3287:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3287:67:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 667,
                  "nodeType": "ExpressionStatement",
                  "src": "3287:67:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 671,
                              "name": "_player",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 609,
                              "src": "3394:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 669,
                              "name": "platform",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 462,
                              "src": "3372:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPlatform_$1755",
                                "typeString": "contract IPlatform"
                              }
                            },
                            "id": 670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getMaxAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1754,
                            "src": "3372:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3372:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 673,
                          "name": "_playerBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 613,
                          "src": "3406:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3372:48:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420616d6f756e74",
                        "id": 675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3422:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_428d2b45bb1c86227a8688f1c30f1c359824c9298dfce034ebf8ca193afdf5e7",
                          "typeString": "literal_string \"invalid amount\""
                        },
                        "value": "invalid amount"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_428d2b45bb1c86227a8688f1c30f1c359824c9298dfce034ebf8ca193afdf5e7",
                          "typeString": "literal_string \"invalid amount\""
                        }
                      ],
                      "id": 668,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3364:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3364:75:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 677,
                  "nodeType": "ExpressionStatement",
                  "src": "3364:75:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 681,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "3476:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 679,
                            "name": "platform",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 462,
                            "src": "3457:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPlatform_$1755",
                              "typeString": "contract IPlatform"
                            }
                          },
                          "id": 680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getStatus",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1747,
                          "src": "3457:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3457:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420737461747573",
                        "id": 683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3483:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0dd5638dc565fa4861cdc8e8f2a406effe51e6afd242de06b33ea03003efca14",
                          "typeString": "literal_string \"invalid status\""
                        },
                        "value": "invalid status"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0dd5638dc565fa4861cdc8e8f2a406effe51e6afd242de06b33ea03003efca14",
                          "typeString": "literal_string \"invalid status\""
                        }
                      ],
                      "id": 678,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3449:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3449:51:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 685,
                  "nodeType": "ExpressionStatement",
                  "src": "3449:51:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 689,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 687,
                                  "name": "_signer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 627,
                                  "src": "3519:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 688,
                                  "name": "_player",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 609,
                                  "src": "3530:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3519:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 690,
                                  "name": "_signer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 627,
                                  "src": "3541:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 691,
                                  "name": "_bankroller",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 611,
                                  "src": "3552:11:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3541:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3519:44:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 694,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3518:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 695,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3277,
                                  "src": "3569:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3569:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 697,
                                "name": "_signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 627,
                                "src": "3583:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3569:21:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 699,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3568:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3518:73:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964207369676e6572",
                        "id": 701,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3593:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2ccdc71029c8650b7e8dda6499fba8b87c12c0c3f6f4112cba0c0614f9706216",
                          "typeString": "literal_string \"invalid signer\""
                        },
                        "value": "invalid signer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2ccdc71029c8650b7e8dda6499fba8b87c12c0c3f6f4112cba0c0614f9706216",
                          "typeString": "literal_string \"invalid signer\""
                        }
                      ],
                      "id": 686,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3510:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 702,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3510:100:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 703,
                  "nodeType": "ExpressionStatement",
                  "src": "3510:100:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 705,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "3628:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3628:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 707,
                            "name": "_player",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 609,
                            "src": "3642:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3628:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 709,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "3653:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3653:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 711,
                            "name": "_bankroller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 611,
                            "src": "3667:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3653:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3628:50:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073656e646572",
                        "id": 714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3680:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        },
                        "value": "invalid sender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        }
                      ],
                      "id": 704,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3620:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3620:77:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 716,
                  "nodeType": "ExpressionStatement",
                  "src": "3620:77:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 720,
                            "name": "_player",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 609,
                            "src": "3735:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 721,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "3744:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 722,
                            "name": "_playerBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 613,
                            "src": "3750:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 718,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 460,
                            "src": "3716:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$1822",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1805,
                          "src": "3716:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3716:49:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6661696c207472616e736665722066726f6d20706c61796572",
                        "id": 724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3767:27:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fb58dcb6a6193423915bbe4019fc7c9b8b2390822718ab1ffd00149ba1067c62",
                          "typeString": "literal_string \"fail transfer from player\""
                        },
                        "value": "fail transfer from player"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fb58dcb6a6193423915bbe4019fc7c9b8b2390822718ab1ffd00149ba1067c62",
                          "typeString": "literal_string \"fail transfer from player\""
                        }
                      ],
                      "id": 717,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3708:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3708:87:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 726,
                  "nodeType": "ExpressionStatement",
                  "src": "3708:87:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 730,
                            "name": "_bankroller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 611,
                            "src": "3832:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 731,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "3845:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 732,
                            "name": "_bankrollerBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 615,
                            "src": "3851:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_contract$_GameChannel_$1673",
                              "typeString": "contract GameChannel"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 728,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 460,
                            "src": "3813:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$1822",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1805,
                          "src": "3813:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3813:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6661696c207472616e7366652066726f6d2062616e6b726f6c6c6572",
                        "id": 734,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3872:30:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df94a17ccbd117798ec546195c4801a897fe7ea60f2d1ab5d892379b35851762",
                          "typeString": "literal_string \"fail transfe from bankroller\""
                        },
                        "value": "fail transfe from bankroller"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df94a17ccbd117798ec546195c4801a897fe7ea60f2d1ab5d892379b35851762",
                          "typeString": "literal_string \"fail transfe from bankroller\""
                        }
                      ],
                      "id": 727,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "3805:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3805:98:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 736,
                  "nodeType": "ExpressionStatement",
                  "src": "3805:98:5"
                },
                {
                  "assignments": [
                    738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 738,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 782,
                      "src": "3914:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 737,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "3914:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 769,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 740,
                          "name": "State",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 547,
                          "src": "3982:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                            "typeString": "type(enum GameChannel.State)"
                          }
                        },
                        "id": 741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "open",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3982:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_State_$547",
                          "typeString": "enum GameChannel.State"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 742,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 609,
                        "src": "4026:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 743,
                        "name": "_bankroller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 611,
                        "src": "4067:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 744,
                        "name": "_playerBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 613,
                        "src": "4112:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 745,
                        "name": "_bankrollerBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 615,
                        "src": "4160:18:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4217:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4212:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint"
                        },
                        "id": 748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4212:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4258:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4253:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint"
                        },
                        "id": 751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4253:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313530",
                            "id": 755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4311:3:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_150_by_1",
                              "typeString": "int_const 150"
                            },
                            "value": "150"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_150_by_1",
                              "typeString": "int_const 150"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 752,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3267,
                              "src": "4294:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4294:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1926,
                          "src": "4294:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4294:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 761,
                                    "name": "_N",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 619,
                                    "src": "4386:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 760,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3271,
                                  "src": "4376:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                    "typeString": "function () pure returns (bytes32)"
                                  }
                                },
                                "id": 762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4376:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 764,
                                    "name": "_E",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 621,
                                    "src": "4401:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 763,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3271,
                                  "src": "4391:9:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                    "typeString": "function () pure returns (bytes32)"
                                  }
                                },
                                "id": 765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4391:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 758,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "4359:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4359:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4359:46:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 757,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "4349:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4349:57:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 739,
                      "name": "Channel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 536,
                      "src": "3940:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Channel_$536_storage_ptr_$",
                        "typeString": "type(struct GameChannel.Channel storage pointer)"
                      }
                    },
                    "id": 768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "state",
                      "player",
                      "bankroller",
                      "playerBalance",
                      "bankrollerBalance",
                      "totalBet",
                      "session",
                      "endBlock",
                      "RSAHash"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "3940:477:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_memory",
                      "typeString": "struct GameChannel.Channel memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3914:503:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 770,
                        "name": "channels",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 551,
                        "src": "4428:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                          "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                        }
                      },
                      "id": 772,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 771,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 607,
                        "src": "4437:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4428:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage",
                        "typeString": "struct GameChannel.Channel storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 773,
                      "name": "_channel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 738,
                      "src": "4444:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_memory_ptr",
                        "typeString": "struct GameChannel.Channel memory"
                      }
                    },
                    "src": "4428:24:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "id": 775,
                  "nodeType": "ExpressionStatement",
                  "src": "4428:24:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "6f70656e206368616e6e656c",
                        "id": 777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4479:14:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d44177c610b74c70e626a08c6a9b8b80264c739d95dc2c2a12a75dcb60bf798f",
                          "typeString": "literal_string \"open channel\""
                        },
                        "value": "open channel"
                      },
                      {
                        "argumentTypes": null,
                        "id": 778,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 607,
                        "src": "4495:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_d44177c610b74c70e626a08c6a9b8b80264c739d95dc2c2a12a75dcb60bf798f",
                          "typeString": "literal_string \"open channel\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 776,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "4468:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4468:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 780,
                  "nodeType": "EmitStatement",
                  "src": "4463:36:5"
                }
              ]
            },
            "documentation": "@notice Opening the channel and depositing funds\n@param _id                Unique channel identifier\n@param _player            player Address of the player\n@param _bankroller        Address of the bankroller\n@param _playerBalance     Player's deposit\n@param _bankrollerBalance Bankroller's deposit\n@param _openingBlock      opening block\n@param _N                 N-component of bankroller's rsa public key\n@param _E                 E-component of bankroller's rsa public key\n@param _signature         Signature from the player",
            "id": 782,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "openChannel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 607,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2780:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 606,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2780:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 609,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2801:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 608,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2801:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 611,
                  "name": "_bankroller",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2826:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2826:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 613,
                  "name": "_playerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2855:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2855:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 615,
                  "name": "_bankrollerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2887:26:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 614,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2887:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 617,
                  "name": "_openingBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2923:21:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 616,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2923:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 619,
                  "name": "_N",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2954:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 618,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2954:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 621,
                  "name": "_E",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2974:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 620,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2974:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 623,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "2994:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 622,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2994:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2770:248:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 625,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3038:0:5"
            },
            "scope": 1673,
            "src": "2750:1756:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 941,
              "nodeType": "Block",
              "src": "5137:1149:5",
              "statements": [
                {
                  "assignments": [
                    803
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 803,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 942,
                      "src": "5147:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 802,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "5147:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 807,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 804,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "5174:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 806,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 805,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 784,
                      "src": "5183:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5174:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5147:40:5"
                },
                {
                  "assignments": [
                    809
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 809,
                      "name": "stateSigner",
                      "nodeType": "VariableDeclaration",
                      "scope": 942,
                      "src": "5197:19:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 808,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5197:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 824,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 815,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 784,
                                "src": "5266:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 816,
                                "name": "_playerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 786,
                                "src": "5271:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 817,
                                "name": "_bankrollerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 788,
                                "src": "5287:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 818,
                                "name": "_totalBet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 790,
                                "src": "5307:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 819,
                                "name": "_session",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 792,
                                "src": "5318:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 813,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "5249:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5249:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5249:78:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 812,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "5239:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5239:89:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 822,
                        "name": "_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 794,
                        "src": "5330:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 810,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "5219:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$2338_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 811,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2009,
                      "src": "5219:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5219:122:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5197:144:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 826,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 803,
                            "src": "5359:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 827,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "session",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 531,
                          "src": "5359:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 828,
                          "name": "_session",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 792,
                          "src": "5378:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5359:27:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6f7574646174652073657373696f6e",
                        "id": 830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5388:17:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8f0af18df20ab623ce902cce676f3de1bdcf4aa0e836ad305d3bdd7c89baece6",
                          "typeString": "literal_string \"outdate session\""
                        },
                        "value": "outdate session"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8f0af18df20ab623ce902cce676f3de1bdcf4aa0e836ad305d3bdd7c89baece6",
                          "typeString": "literal_string \"outdate session\""
                        }
                      ],
                      "id": 825,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "5351:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5351:55:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 832,
                  "nodeType": "ExpressionStatement",
                  "src": "5351:55:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 834,
                          "name": "stateSigner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 809,
                          "src": "5424:11:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 835,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "5439:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5439:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5424:25:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073746174652073696e676572",
                        "id": 838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5451:22:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de015ccd2fc269fd7fe3c682c08d0667b652bfc67f8f79b64fa1e264d88f6d07",
                          "typeString": "literal_string \"invalid state singer\""
                        },
                        "value": "invalid state singer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de015ccd2fc269fd7fe3c682c08d0667b652bfc67f8f79b64fa1e264d88f6d07",
                          "typeString": "literal_string \"invalid state singer\""
                        }
                      ],
                      "id": 833,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "5416:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 839,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5416:58:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 840,
                  "nodeType": "ExpressionStatement",
                  "src": "5416:58:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 842,
                            "name": "stateSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 809,
                            "src": "5492:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 843,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "5507:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 844,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "player",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 521,
                            "src": "5507:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5492:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 846,
                            "name": "stateSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 809,
                            "src": "5526:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 847,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "5541:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 848,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bankroller",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 523,
                            "src": "5541:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5526:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5492:68:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374617465207369676e6572206973206e6f74206d656d626572",
                        "id": 851,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5562:28:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_08733e1b7dcf176fd0bb1b64564ec60896aeff73322fc36f08defaec967326b9",
                          "typeString": "literal_string \"state signer is not member\""
                        },
                        "value": "state signer is not member"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_08733e1b7dcf176fd0bb1b64564ec60896aeff73322fc36f08defaec967326b9",
                          "typeString": "literal_string \"state signer is not member\""
                        }
                      ],
                      "id": 841,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "5484:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5484:107:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 853,
                  "nodeType": "ExpressionStatement",
                  "src": "5484:107:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 857,
                              "name": "_bankrollerBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 788,
                              "src": "5628:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 855,
                              "name": "_playerBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 786,
                              "src": "5609:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "5609:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5609:38:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 862,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 803,
                                "src": "5678:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 863,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bankrollerBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 527,
                              "src": "5678:26:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 859,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 803,
                                "src": "5651:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 860,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "playerBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 525,
                              "src": "5651:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "5651:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5651:54:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5609:96:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964206e65772062616c616e636573",
                        "id": 866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5707:22:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ebff91a725a77521076a1478940f65bc7997220af31af8523362b8f9aff78e3e",
                          "typeString": "literal_string \"invalid new balances\""
                        },
                        "value": "invalid new balances"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ebff91a725a77521076a1478940f65bc7997220af31af8523362b8f9aff78e3e",
                          "typeString": "literal_string \"invalid new balances\""
                        }
                      ],
                      "id": 854,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "5601:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5601:129:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 868,
                  "nodeType": "ExpressionStatement",
                  "src": "5601:129:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 876,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 872,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "5767:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5767:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 869,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 803,
                            "src": "5745:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 870,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 533,
                          "src": "5745:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1902,
                        "src": "5745:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5745:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 875,
                      "name": "safeTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 517,
                      "src": "5783:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5745:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 888,
                  "nodeType": "IfStatement",
                  "src": "5741:123:5",
                  "trueBody": {
                    "id": 887,
                    "nodeType": "Block",
                    "src": "5793:71:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 877,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "5807:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 879,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 533,
                            "src": "5807:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 883,
                                "name": "safeTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 517,
                                "src": "5844:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 880,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "5827:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5827:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1926,
                              "src": "5827:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5827:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5807:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 886,
                        "nodeType": "ExpressionStatement",
                        "src": "5807:46:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 889,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "5874:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 891,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "session",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 531,
                      "src": "5874:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 892,
                      "name": "_session",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 792,
                      "src": "5903:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5874:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 894,
                  "nodeType": "ExpressionStatement",
                  "src": "5874:37:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 895,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "5921:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 897,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "5921:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 898,
                      "name": "_playerBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 786,
                      "src": "5950:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5921:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 900,
                  "nodeType": "ExpressionStatement",
                  "src": "5921:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 901,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "5974:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 903,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "5974:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 904,
                      "name": "_bankrollerBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 788,
                      "src": "6003:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5974:47:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 906,
                  "nodeType": "ExpressionStatement",
                  "src": "5974:47:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 907,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "6031:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 909,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalBet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 529,
                      "src": "6031:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 910,
                      "name": "_totalBet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 790,
                      "src": "6060:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6031:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 912,
                  "nodeType": "ExpressionStatement",
                  "src": "6031:38:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    },
                    "id": 917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 913,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "6084:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 914,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "6084:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 915,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "6102:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 916,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "dispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6102:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "6084:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 931,
                  "nodeType": "IfStatement",
                  "src": "6080:123:5",
                  "trueBody": {
                    "id": 930,
                    "nodeType": "Block",
                    "src": "6117:86:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 918,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "6131:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 920,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 519,
                            "src": "6131:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_State_$547",
                              "typeString": "enum GameChannel.State"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 921,
                              "name": "State",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 547,
                              "src": "6148:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                                "typeString": "type(enum GameChannel.State)"
                              }
                            },
                            "id": 922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "open",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6148:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_State_$547",
                              "typeString": "enum GameChannel.State"
                            }
                          },
                          "src": "6131:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "id": 924,
                        "nodeType": "ExpressionStatement",
                        "src": "6131:27:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "6172:20:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 925,
                              "name": "disputes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 555,
                              "src": "6179:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                                "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                              }
                            },
                            "id": 927,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 926,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 784,
                              "src": "6188:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6179:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dispute_$542_storage",
                              "typeString": "struct GameChannel.Dispute storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 929,
                        "nodeType": "ExpressionStatement",
                        "src": "6172:20:5"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "757064617465206368616e6e656c",
                        "id": 933,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6229:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6dcffc41ce4ad38ef317c59d2e43edbf71ac5d6b99a7d3afaa921d40f181bb5c",
                          "typeString": "literal_string \"update channel\""
                        },
                        "value": "update channel"
                      },
                      {
                        "argumentTypes": null,
                        "id": 934,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 784,
                        "src": "6247:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6dcffc41ce4ad38ef317c59d2e43edbf71ac5d6b99a7d3afaa921d40f181bb5c",
                          "typeString": "literal_string \"update channel\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 932,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "6218:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6218:33:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 936,
                  "nodeType": "EmitStatement",
                  "src": "6213:38:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 938,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 784,
                        "src": "6275:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 937,
                      "name": "checkGameOver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1180,
                      "src": "6261:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6261:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 940,
                  "nodeType": "ExpressionStatement",
                  "src": "6261:18:5"
                }
              ]
            },
            "documentation": "@notice Update the state of the channel\n@param _id Unique channel identifier\n@param _playerBalance The player's account balance in the channel\n@param _bankrollerBalance The bankroller's account balance in the channel\n@param _totalBet blabla\n@param _session Number of the game session\n@param _signature Signature from the player or bankroller",
            "id": 942,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 797,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "5118:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 799,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 798,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 784,
                      "src": "5127:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5118:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  }
                ],
                "id": 800,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 796,
                  "name": "active",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 605,
                  "src": "5111:6:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_struct$_Channel_$536_memory_ptr_$",
                    "typeString": "modifier (struct GameChannel.Channel memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5111:21:5"
              }
            ],
            "name": "updateChannel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 784,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "4929:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 783,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4929:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 786,
                  "name": "_playerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "4950:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 785,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4950:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 788,
                  "name": "_bankrollerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "4982:26:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 787,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4982:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 790,
                  "name": "_totalBet",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "5018:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 789,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5018:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 792,
                  "name": "_session",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "5045:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5045:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 794,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 942,
                  "src": "5071:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5071:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4919:176:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 801,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5137:0:5"
            },
            "scope": 1673,
            "src": "4897:1389:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1055,
              "nodeType": "Block",
              "src": "6966:786:5",
              "statements": [
                {
                  "assignments": [
                    963
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 963,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1056,
                      "src": "6976:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 962,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "6976:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 967,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 964,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "7003:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 966,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 965,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 944,
                      "src": "7012:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7003:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6976:40:5"
                },
                {
                  "assignments": [
                    969
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 969,
                      "name": "_signer",
                      "nodeType": "VariableDeclaration",
                      "scope": 1056,
                      "src": "7026:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 968,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7026:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 985,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 975,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 944,
                                "src": "7091:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 976,
                                "name": "_playerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 946,
                                "src": "7096:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 977,
                                "name": "_bankrollerBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 948,
                                "src": "7112:18:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 978,
                                "name": "_totalBet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 950,
                                "src": "7132:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 979,
                                "name": "_session",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 952,
                                "src": "7143:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7153:4:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 973,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "7074:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7074:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7074:84:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 972,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "7064:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7064:95:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 983,
                        "name": "_sign",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 954,
                        "src": "7161:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 970,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "7044:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$2338_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 971,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2009,
                      "src": "7044:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7044:123:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7026:141:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 989,
                              "name": "_bankrollerBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 948,
                              "src": "7204:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 987,
                              "name": "_playerBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 946,
                              "src": "7185:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "7185:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7185:38:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 994,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 963,
                                "src": "7254:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 995,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bankrollerBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 527,
                              "src": "7254:26:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 991,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 963,
                                "src": "7227:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 992,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "playerBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 525,
                              "src": "7227:22:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 993,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "7227:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7227:54:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7185:96:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642062616c616e636573",
                        "id": 998,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7283:18:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fd59b672fc16edf4a230eccc39f8f61eb696b6a2b1f3c8099cc0e5c812673115",
                          "typeString": "literal_string \"invalid balances\""
                        },
                        "value": "invalid balances"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fd59b672fc16edf4a230eccc39f8f61eb696b6a2b1f3c8099cc0e5c812673115",
                          "typeString": "literal_string \"invalid balances\""
                        }
                      ],
                      "id": 986,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "7177:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7177:125:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1000,
                  "nodeType": "ExpressionStatement",
                  "src": "7177:125:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1002,
                          "name": "_signer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 969,
                          "src": "7320:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1003,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "7331:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7331:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "7320:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964207369676e6572",
                        "id": 1006,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7343:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2ccdc71029c8650b7e8dda6499fba8b87c12c0c3f6f4112cba0c0614f9706216",
                          "typeString": "literal_string \"invalid signer\""
                        },
                        "value": "invalid signer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2ccdc71029c8650b7e8dda6499fba8b87c12c0c3f6f4112cba0c0614f9706216",
                          "typeString": "literal_string \"invalid signer\""
                        }
                      ],
                      "id": 1001,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "7312:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7312:48:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1008,
                  "nodeType": "ExpressionStatement",
                  "src": "7312:48:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1010,
                            "name": "_signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 969,
                            "src": "7378:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1011,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 963,
                              "src": "7389:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 1012,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "player",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 521,
                            "src": "7389:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7378:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1014,
                            "name": "_signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 969,
                            "src": "7408:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1015,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 963,
                              "src": "7419:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 1016,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bankroller",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 523,
                            "src": "7419:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7408:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7378:60:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7369676e6572206973206e6f74206d656d626572",
                        "id": 1019,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7440:22:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_244cf4336ff139a1236038be6371140c219dc503ce93a38281e2bf97dd4b63a6",
                          "typeString": "literal_string \"signer is not member\""
                        },
                        "value": "signer is not member"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_244cf4336ff139a1236038be6371140c219dc503ce93a38281e2bf97dd4b63a6",
                          "typeString": "literal_string \"signer is not member\""
                        }
                      ],
                      "id": 1009,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "7370:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1020,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7370:93:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1021,
                  "nodeType": "ExpressionStatement",
                  "src": "7370:93:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1022,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 963,
                        "src": "7473:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1024,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "7473:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1025,
                      "name": "_playerBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 946,
                      "src": "7502:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7473:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1027,
                  "nodeType": "ExpressionStatement",
                  "src": "7473:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1028,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 963,
                        "src": "7526:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1030,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "7526:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1031,
                      "name": "_bankrollerBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 948,
                      "src": "7555:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7526:47:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1033,
                  "nodeType": "ExpressionStatement",
                  "src": "7526:47:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1034,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 963,
                        "src": "7583:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1036,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "session",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 531,
                      "src": "7583:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1037,
                      "name": "_session",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 952,
                      "src": "7612:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7583:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1039,
                  "nodeType": "ExpressionStatement",
                  "src": "7583:37:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1040,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 963,
                        "src": "7630:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1042,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalBet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 529,
                      "src": "7630:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1043,
                      "name": "_totalBet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 950,
                      "src": "7659:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7630:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1045,
                  "nodeType": "ExpressionStatement",
                  "src": "7630:38:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "636c6f736520627920636f6e73656e74",
                        "id": 1047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7694:18:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7685ad4a7535b0e568e7f50b57d66e018e9990143ae86d99ac987396ae3de993",
                          "typeString": "literal_string \"close by consent\""
                        },
                        "value": "close by consent"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1048,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 944,
                        "src": "7714:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_7685ad4a7535b0e568e7f50b57d66e018e9990143ae86d99ac987396ae3de993",
                          "typeString": "literal_string \"close by consent\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1046,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "7683:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7683:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1050,
                  "nodeType": "EmitStatement",
                  "src": "7678:40:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1052,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 944,
                        "src": "7741:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1051,
                      "name": "closeChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1610,
                      "src": "7728:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7728:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1054,
                  "nodeType": "ExpressionStatement",
                  "src": "7728:17:5"
                }
              ]
            },
            "documentation": "@notice Closing of the channel by consent of the parties\n@param _id Unique channel identifier\n@param _playerBalance The player's account balance in the channel\n@param _bankrollerBalance The bankroller's account balance in the channel\n@param _totalBet The bankroller's account balance in the channel\n@param _session Number of the game session\n@param _sign Signature from the player or bankroller",
            "id": 1056,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 957,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "6947:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 959,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 958,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 944,
                      "src": "6956:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6947:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  }
                ],
                "id": 960,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 956,
                  "name": "active",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 605,
                  "src": "6940:6:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_struct$_Channel_$536_memory_ptr_$",
                    "typeString": "modifier (struct GameChannel.Channel memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6940:21:5"
              }
            ],
            "name": "closeByConsent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 944,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6763:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 943,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6763:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 946,
                  "name": "_playerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6784:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6784:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 948,
                  "name": "_bankrollerBalance",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6816:26:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 947,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6816:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 950,
                  "name": "_totalBet",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6852:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 949,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6852:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 952,
                  "name": "_session",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6879:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6879:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 954,
                  "name": "_sign",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "6905:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 953,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6905:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6753:171:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 961,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6966:0:5"
            },
            "scope": 1673,
            "src": "6730:1022:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1097,
              "nodeType": "Block",
              "src": "7914:309:5",
              "statements": [
                {
                  "assignments": [
                    1062
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1062,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1098,
                      "src": "7924:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1061,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "7924:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1066,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1063,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "7951:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1065,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1064,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1058,
                      "src": "7960:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7951:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7924:40:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1068,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1062,
                            "src": "7982:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1069,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 533,
                          "src": "7982:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1070,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "8002:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8002:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7982:32:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420626c6f636b",
                        "id": 1073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8016:15:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cdb67578bf3c3bceb17babeaa0767cfd9d536f43596897fbc92f34efc07785b5",
                          "typeString": "literal_string \"invalid block\""
                        },
                        "value": "invalid block"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cdb67578bf3c3bceb17babeaa0767cfd9d536f43596897fbc92f34efc07785b5",
                          "typeString": "literal_string \"invalid block\""
                        }
                      ],
                      "id": 1067,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "7974:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7974:58:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1075,
                  "nodeType": "ExpressionStatement",
                  "src": "7974:58:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    },
                    "id": 1080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1076,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1062,
                        "src": "8046:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1077,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "8046:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1078,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "8064:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 1079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "dispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8064:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "8046:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1087,
                  "nodeType": "IfStatement",
                  "src": "8042:101:5",
                  "trueBody": {
                    "id": 1086,
                    "nodeType": "Block",
                    "src": "8079:64:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1082,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1058,
                              "src": "8108:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1081,
                            "name": "closeByDispute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1150,
                            "src": "8093:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 1083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8093:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1084,
                        "nodeType": "ExpressionStatement",
                        "src": "8093:19:5"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1060,
                        "id": 1085,
                        "nodeType": "Return",
                        "src": "8126:7:5"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "636c6f73652062792074696d65",
                        "id": 1089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8168:15:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ab52c277db81d68fb1449335adafdf6449e62147188ef39c8818e3b56dc0bb9d",
                          "typeString": "literal_string \"close by time\""
                        },
                        "value": "close by time"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1090,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1058,
                        "src": "8185:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_ab52c277db81d68fb1449335adafdf6449e62147188ef39c8818e3b56dc0bb9d",
                          "typeString": "literal_string \"close by time\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1088,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "8157:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8157:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1092,
                  "nodeType": "EmitStatement",
                  "src": "8152:37:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1094,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1058,
                        "src": "8212:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1093,
                      "name": "closeChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1610,
                      "src": "8199:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8199:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1096,
                  "nodeType": "ExpressionStatement",
                  "src": "8199:17:5"
                }
              ]
            },
            "documentation": "@notice Closing the channel after the time has elapsed\n@param _id Unique channel identifier",
            "id": 1098,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "closeByTime",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1058,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1098,
                  "src": "7894:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1057,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7894:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7893:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1060,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7914:0:5"
            },
            "scope": 1673,
            "src": "7873:350:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1149,
              "nodeType": "Block",
              "src": "8391:410:5",
              "statements": [
                {
                  "assignments": [
                    1104
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1104,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1150,
                      "src": "8401:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1103,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "8401:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1108,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1105,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "8428:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1107,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1106,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1100,
                      "src": "8437:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8428:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8401:40:5"
                },
                {
                  "assignments": [
                    1110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1110,
                      "name": "_dispute",
                      "nodeType": "VariableDeclaration",
                      "scope": 1150,
                      "src": "8451:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                        "typeString": "struct GameChannel.Dispute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1109,
                        "name": "Dispute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 542,
                        "src": "8451:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                          "typeString": "struct GameChannel.Dispute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1114,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1111,
                      "name": "disputes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 555,
                      "src": "8478:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                      }
                    },
                    "id": 1113,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1112,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1100,
                      "src": "8487:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8478:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_storage",
                      "typeString": "struct GameChannel.Dispute storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8451:40:5"
                },
                {
                  "assignments": [
                    1116
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1116,
                      "name": "_penalty",
                      "nodeType": "VariableDeclaration",
                      "scope": 1150,
                      "src": "8528:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1115,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8528:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1124,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1119,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1110,
                          "src": "8566:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1120,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeGameData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 541,
                        "src": "8566:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1121,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1110,
                          "src": "8592:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1122,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeBets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 539,
                        "src": "8592:20:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1117,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 458,
                        "src": "8547:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGameEngine_$1729",
                          "typeString": "contract IGameEngine"
                        }
                      },
                      "id": 1118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPenatlty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1714,
                      "src": "8547:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_struct$_gameData_$297_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct GameObject.gameData memory,uint256[] memory) view external returns (uint256)"
                      }
                    },
                    "id": 1123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8547:66:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8528:85:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1125,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1104,
                        "src": "8623:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1127,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "8623:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1131,
                          "name": "_penalty",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1116,
                          "src": "8683:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1128,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1104,
                            "src": "8652:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1129,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bankrollerBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 527,
                          "src": "8652:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1902,
                        "src": "8652:30:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8652:40:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8623:69:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1134,
                  "nodeType": "ExpressionStatement",
                  "src": "8623:69:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1135,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1104,
                        "src": "8702:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1137,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "8702:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1141,
                          "name": "_penalty",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1116,
                          "src": "8758:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1138,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1104,
                            "src": "8731:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1139,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "playerBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 525,
                          "src": "8731:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1926,
                        "src": "8731:26:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1142,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8731:36:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8702:65:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1144,
                  "nodeType": "ExpressionStatement",
                  "src": "8702:65:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1146,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1100,
                        "src": "8790:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1145,
                      "name": "closeChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1610,
                      "src": "8777:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8777:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1148,
                  "nodeType": "ExpressionStatement",
                  "src": "8777:17:5"
                }
              ]
            },
            "documentation": "@notice Closing the channel after the time with dispute\n@param _id Unique channel identifier",
            "id": 1150,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "closeByDispute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1100,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1150,
                  "src": "8369:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1099,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8369:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8368:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1102,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8391:0:5"
            },
            "scope": 1673,
            "src": "8345:456:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1179,
              "nodeType": "Block",
              "src": "8971:187:5",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1155,
                            "name": "channels",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 551,
                            "src": "8985:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                              "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                            }
                          },
                          "id": 1157,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1156,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1152,
                            "src": "8994:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8985:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage",
                            "typeString": "struct GameChannel.Channel storage ref"
                          }
                        },
                        "id": 1158,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "playerBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 525,
                        "src": "8985:27:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1159,
                        "name": "minBet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 512,
                        "src": "9015:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8985:36:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1161,
                            "name": "channels",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 551,
                            "src": "9025:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                              "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                            }
                          },
                          "id": 1163,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1162,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1152,
                            "src": "9034:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9025:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage",
                            "typeString": "struct GameChannel.Channel storage ref"
                          }
                        },
                        "id": 1164,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "bankrollerBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 527,
                        "src": "9025:31:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9060:1:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "9025:36:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8985:76:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1178,
                  "nodeType": "IfStatement",
                  "src": "8981:171:5",
                  "trueBody": {
                    "id": 1177,
                    "nodeType": "Block",
                    "src": "9063:89:5",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "67616d65206f766572",
                              "id": 1169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9093:11:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_98c3352cf2124a4a6d721ad0b4a86d9be3064c811ff60f854a61c937ce3256bf",
                                "typeString": "literal_string \"game over\""
                              },
                              "value": "game over"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1170,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1152,
                              "src": "9106:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_98c3352cf2124a4a6d721ad0b4a86d9be3064c811ff60f854a61c937ce3256bf",
                                "typeString": "literal_string \"game over\""
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1168,
                            "name": "logChannel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 453,
                            "src": "9082:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (string memory,bytes32)"
                            }
                          },
                          "id": 1171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9082:28:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1172,
                        "nodeType": "EmitStatement",
                        "src": "9077:33:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1174,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1152,
                              "src": "9137:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 1173,
                            "name": "closeChannel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1610,
                            "src": "9124:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 1175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9124:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1176,
                        "nodeType": "ExpressionStatement",
                        "src": "9124:17:5"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Check and close the channel at zero or min balance\n@param _id Unique channel identifier",
            "id": 1180,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "checkGameOver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1152,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1180,
                  "src": "8949:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1151,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8949:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8948:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1154,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8971:0:5"
            },
            "scope": 1673,
            "src": "8926:232:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1311,
              "nodeType": "Block",
              "src": "9635:1038:5",
              "statements": [
                {
                  "assignments": [
                    1200
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1200,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "9645:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1199,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "9645:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1204,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1201,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "9672:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1203,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1202,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1182,
                      "src": "9681:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9672:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9645:40:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1212,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1206,
                          "name": "_session",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1184,
                          "src": "9703:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9736:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1207,
                                "name": "_channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1200,
                                "src": "9715:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                  "typeString": "struct GameChannel.Channel storage pointer"
                                }
                              },
                              "id": 1208,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "session",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 531,
                              "src": "9715:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1926,
                            "src": "9715:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9715:23:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9703:35:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073657373696f6e",
                        "id": 1213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9740:17:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_059a4d2a262bf84dc401476811c2dfad4f2ac10d93f2c557c869791a3f8c52ab",
                          "typeString": "literal_string \"invalid session\""
                        },
                        "value": "invalid session"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_059a4d2a262bf84dc401476811c2dfad4f2ac10d93f2c557c869791a3f8c52ab",
                          "typeString": "literal_string \"invalid session\""
                        }
                      ],
                      "id": 1205,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "9695:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9695:63:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1215,
                  "nodeType": "ExpressionStatement",
                  "src": "9695:63:5"
                },
                {
                  "assignments": [
                    1217
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1217,
                      "name": "_gameDataHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "9768:21:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1216,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9768:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1221,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1219,
                        "name": "_gameData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1189,
                        "src": "9805:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                          "typeString": "struct GameObject.gameData memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                          "typeString": "struct GameObject.gameData memory"
                        }
                      ],
                      "id": 1218,
                      "name": "hashGameData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 317,
                      "src": "9792:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_gameData_$297_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct GameObject.gameData memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9792:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9768:47:5"
                },
                {
                  "assignments": [
                    1223
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1223,
                      "name": "_signer",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "9825:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1222,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9825:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1237,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1229,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1182,
                                "src": "9890:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1230,
                                "name": "_session",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1184,
                                "src": "9895:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1231,
                                "name": "_disputeBets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1187,
                                "src": "9905:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1232,
                                "name": "_gameDataHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1217,
                                "src": "9919:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1227,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3264,
                                "src": "9873:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9873:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9873:60:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1226,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3271,
                          "src": "9863:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 1234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9863:71:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1235,
                        "name": "_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1191,
                        "src": "9936:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1224,
                        "name": "Utils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "9843:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Utils_$2338_$",
                          "typeString": "type(library Utils)"
                        }
                      },
                      "id": 1225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2009,
                      "src": "9843:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 1236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9843:104:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9825:122:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1239,
                          "name": "_signer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1223,
                          "src": "9965:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1240,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "9976:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1241,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "player",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 521,
                          "src": "9976:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "9965:26:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7369676e6572206973206e6f74206120706c61796572",
                        "id": 1243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9993:24:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_83de5b2341239709ccf8e512b9b8bf16ee5f17332c7adb46f759f3a7144bb934",
                          "typeString": "literal_string \"signer is not a player\""
                        },
                        "value": "signer is not a player"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_83de5b2341239709ccf8e512b9b8bf16ee5f17332c7adb46f759f3a7144bb934",
                          "typeString": "literal_string \"signer is not a player\""
                        }
                      ],
                      "id": 1238,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "9957:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9957:61:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1245,
                  "nodeType": "ExpressionStatement",
                  "src": "9957:61:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1248,
                            "name": "_gameData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1189,
                            "src": "10050:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                              "typeString": "struct GameObject.gameData memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1249,
                            "name": "_disputeBets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1187,
                            "src": "10061:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                              "typeString": "struct GameObject.gameData memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 1247,
                          "name": "checkGameData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 361,
                          "src": "10036:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_gameData_$297_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (struct GameObject.gameData memory,uint256[] memory) pure returns (bool)"
                          }
                        },
                        "id": 1250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10036:38:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642067616d6544617461",
                        "id": 1251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10076:18:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_44d0369e29e012a8fe56d630ae5c47e919d97c53c2d8c63df40c445ef64852b3",
                          "typeString": "literal_string \"invalid gameData\""
                        },
                        "value": "invalid gameData"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_44d0369e29e012a8fe56d630ae5c47e919d97c53c2d8c63df40c445ef64852b3",
                          "typeString": "literal_string \"invalid gameData\""
                        }
                      ],
                      "id": 1246,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "10028:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10028:67:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1253,
                  "nodeType": "ExpressionStatement",
                  "src": "10028:67:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1257,
                              "name": "_gameData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1189,
                              "src": "10130:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                                "typeString": "struct GameObject.gameData memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1258,
                              "name": "_disputeBets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1187,
                              "src": "10141:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                                "typeString": "struct GameObject.gameData memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1255,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 458,
                              "src": "10113:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IGameEngine_$1729",
                                "typeString": "contract IGameEngine"
                              }
                            },
                            "id": 1256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getProfit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1704,
                            "src": "10113:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$_t_struct$_gameData_$297_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (struct GameObject.gameData memory,uint256[] memory) pure external returns (uint256)"
                            }
                          },
                          "id": 1259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10113:41:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1260,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "10158:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1261,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bankrollerBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 527,
                          "src": "10158:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10113:71:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642070726f666974",
                        "id": 1263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10186:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_369d4bc07db1b6654d8e1d9797494cf2b0dcda7f37a51e00eec341433c29b375",
                          "typeString": "literal_string \"invalid profit\""
                        },
                        "value": "invalid profit"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_369d4bc07db1b6654d8e1d9797494cf2b0dcda7f37a51e00eec341433c29b375",
                          "typeString": "literal_string \"invalid profit\""
                        }
                      ],
                      "id": 1254,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "10105:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10105:98:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1265,
                  "nodeType": "ExpressionStatement",
                  "src": "10105:98:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1269,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "10240:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "10240:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1266,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1200,
                            "src": "10218:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1267,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "endBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 533,
                          "src": "10218:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1902,
                        "src": "10218:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1271,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10218:35:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1272,
                      "name": "safeTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 517,
                      "src": "10256:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10218:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1285,
                  "nodeType": "IfStatement",
                  "src": "10214:123:5",
                  "trueBody": {
                    "id": 1284,
                    "nodeType": "Block",
                    "src": "10266:71:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1274,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1200,
                              "src": "10280:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 1276,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "endBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 533,
                            "src": "10280:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1280,
                                "name": "safeTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 517,
                                "src": "10317:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1277,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "10300:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10300:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1926,
                              "src": "10300:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10300:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10280:46:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1283,
                        "nodeType": "ExpressionStatement",
                        "src": "10280:46:5"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1287
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1287,
                      "name": "_dispute",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "10347:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_memory_ptr",
                        "typeString": "struct GameChannel.Dispute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1286,
                        "name": "Dispute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 542,
                        "src": "10347:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                          "typeString": "struct GameChannel.Dispute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1292,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1289,
                        "name": "_disputeBets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1187,
                        "src": "10413:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1290,
                        "name": "_gameData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1189,
                        "src": "10457:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                          "typeString": "struct GameObject.gameData memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 1288,
                      "name": "Dispute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 542,
                      "src": "10373:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Dispute_$542_storage_ptr_$",
                        "typeString": "type(struct GameChannel.Dispute storage pointer)"
                      }
                    },
                    "id": 1291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "disputeBets",
                      "disputeGameData"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "10373:104:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_memory",
                      "typeString": "struct GameChannel.Dispute memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10347:130:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1293,
                        "name": "disputes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 555,
                        "src": "10555:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                          "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                        }
                      },
                      "id": 1295,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1294,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "10564:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10555:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_storage",
                        "typeString": "struct GameChannel.Dispute storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1296,
                      "name": "_dispute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1287,
                      "src": "10572:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_memory_ptr",
                        "typeString": "struct GameChannel.Dispute memory"
                      }
                    },
                    "src": "10555:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_storage",
                      "typeString": "struct GameChannel.Dispute storage ref"
                    }
                  },
                  "id": 1298,
                  "nodeType": "ExpressionStatement",
                  "src": "10555:25:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1299,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1200,
                        "src": "10590:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1301,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "10590:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1302,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "10607:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 1303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "dispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10607:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "10590:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    }
                  },
                  "id": 1305,
                  "nodeType": "ExpressionStatement",
                  "src": "10590:30:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "6f70656e2064697370757465",
                        "id": 1307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10646:14:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_240a4762d4bc28e1a30b8f055253b180c99e78f23b6d66ca296ba5869a7f0ac3",
                          "typeString": "literal_string \"open dispute\""
                        },
                        "value": "open dispute"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1308,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "10662:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_240a4762d4bc28e1a30b8f055253b180c99e78f23b6d66ca296ba5869a7f0ac3",
                          "typeString": "literal_string \"open dispute\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1306,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "10635:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10635:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1310,
                  "nodeType": "EmitStatement",
                  "src": "10630:36:5"
                }
              ]
            },
            "documentation": "@notice To open a dispute\n@param _id Unique channel identifier\n@param _session Number of the game session\n@param _disputeBets Player's bet\n@param _gameData Player's game data\n@param _signature Player's game data signature",
            "id": 1312,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1194,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "9616:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1196,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1195,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1182,
                      "src": "9625:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9616:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  }
                ],
                "id": 1197,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1193,
                  "name": "active",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 605,
                  "src": "9609:6:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_struct$_Channel_$536_memory_ptr_$",
                    "typeString": "modifier (struct GameChannel.Channel memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9609:21:5"
              }
            ],
            "name": "openDispute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1182,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9455:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1181,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9455:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1184,
                  "name": "_session",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9478:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1183,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9478:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1187,
                  "name": "_disputeBets",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9506:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1185,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9506:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1186,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9506:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1189,
                  "name": "_gameData",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9538:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_gameData_$297_memory_ptr",
                    "typeString": "struct GameObject.gameData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1188,
                    "name": "gameData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 297,
                    "src": "9538:8:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_gameData_$297_storage_ptr",
                      "typeString": "struct GameObject.gameData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1191,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 1312,
                  "src": "9567:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1190,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9567:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9445:148:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1198,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9635:0:5"
            },
            "scope": 1673,
            "src": "9425:1248:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1411,
              "nodeType": "Block",
              "src": "11092:696:5",
              "statements": [
                {
                  "assignments": [
                    1324
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1324,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1412,
                      "src": "11102:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1323,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "11102:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1328,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1325,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "11129:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1327,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1326,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1314,
                      "src": "11138:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11129:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11102:40:5"
                },
                {
                  "assignments": [
                    1330
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1330,
                      "name": "_dispute",
                      "nodeType": "VariableDeclaration",
                      "scope": 1412,
                      "src": "11152:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                        "typeString": "struct GameChannel.Dispute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1329,
                        "name": "Dispute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 542,
                        "src": "11152:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                          "typeString": "struct GameChannel.Dispute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1334,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1331,
                      "name": "disputes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 555,
                      "src": "11179:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                      }
                    },
                    "id": 1333,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1332,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1314,
                      "src": "11188:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11179:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_storage",
                      "typeString": "struct GameChannel.Dispute storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11152:40:5"
                },
                {
                  "assignments": [
                    1336
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1336,
                      "name": "_gameDataHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1412,
                      "src": "11202:21:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1335,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11202:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1341,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1338,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1330,
                          "src": "11239:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1339,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeGameData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 541,
                        "src": "11239:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        }
                      ],
                      "id": 1337,
                      "name": "hashGameData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 317,
                      "src": "11226:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_gameData_$297_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct GameObject.gameData memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11226:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11202:62:5"
                },
                {
                  "assignments": [
                    1343
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1343,
                      "name": "_hash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1412,
                      "src": "11274:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1342,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11274:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1358,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1347,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1314,
                            "src": "11317:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11343:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1348,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1324,
                                  "src": "11322:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                    "typeString": "struct GameChannel.Channel storage pointer"
                                  }
                                },
                                "id": 1349,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "session",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 531,
                                "src": "11322:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1926,
                              "src": "11322:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11322:23:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1353,
                              "name": "_dispute",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1330,
                              "src": "11347:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                                "typeString": "struct GameChannel.Dispute storage pointer"
                              }
                            },
                            "id": 1354,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "disputeBets",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 539,
                            "src": "11347:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1355,
                            "name": "_gameDataHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1336,
                            "src": "11369:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1345,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3264,
                            "src": "11300:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11300:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11300:83:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1344,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3271,
                      "src": "11290:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 1357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11290:94:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11274:110:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_State_$547",
                          "typeString": "enum GameChannel.State"
                        },
                        "id": 1364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1360,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1324,
                            "src": "11402:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1361,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 519,
                          "src": "11402:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1362,
                            "name": "State",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 547,
                            "src": "11420:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                              "typeString": "type(enum GameChannel.State)"
                            }
                          },
                          "id": 1363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "dispute",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11420:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_State_$547",
                            "typeString": "enum GameChannel.State"
                          }
                        },
                        "src": "11402:31:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420737461747573",
                        "id": 1365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11435:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0dd5638dc565fa4861cdc8e8f2a406effe51e6afd242de06b33ea03003efca14",
                          "typeString": "literal_string \"invalid status\""
                        },
                        "value": "invalid status"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0dd5638dc565fa4861cdc8e8f2a406effe51e6afd242de06b33ea03003efca14",
                          "typeString": "literal_string \"invalid status\""
                        }
                      ],
                      "id": 1359,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "11394:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11394:58:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1367,
                  "nodeType": "ExpressionStatement",
                  "src": "11394:58:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1369,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "11470:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11470:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1371,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1324,
                            "src": "11484:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1372,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bankroller",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 523,
                          "src": "11484:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11470:33:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642073656e646572",
                        "id": 1374,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11505:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        },
                        "value": "invalid sender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_175ad23f068aed3ab88ee19620d541e9ae3d91161407ed4bb90c97cce31b0783",
                          "typeString": "literal_string \"invalid sender\""
                        }
                      ],
                      "id": 1368,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "11462:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11462:60:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1376,
                  "nodeType": "ExpressionStatement",
                  "src": "11462:60:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 1391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1382,
                                      "name": "_N",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1316,
                                      "src": "11602:2:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1381,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3271,
                                    "src": "11592:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                      "typeString": "function () pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1383,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11592:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1385,
                                      "name": "_E",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1318,
                                      "src": "11617:2:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1384,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3271,
                                    "src": "11607:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                      "typeString": "function () pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11607:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1379,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3264,
                                  "src": "11575:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11575:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 1387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11575:46:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1378,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3271,
                            "src": "11565:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 1388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11565:57:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1389,
                            "name": "_channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1324,
                            "src": "11626:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                              "typeString": "struct GameChannel.Channel storage pointer"
                            }
                          },
                          "id": 1390,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "RSAHash",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 535,
                          "src": "11626:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "11565:77:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c6964207075626c6963",
                        "id": 1392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11644:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4df7c4bfb0c00bd8d6f744389224301662ff76009c1602cbe483aeff4ea650f6",
                          "typeString": "literal_string \"invalid public\""
                        },
                        "value": "invalid public"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4df7c4bfb0c00bd8d6f744389224301662ff76009c1602cbe483aeff4ea650f6",
                          "typeString": "literal_string \"invalid public\""
                        }
                      ],
                      "id": 1377,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "11557:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11557:104:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1394,
                  "nodeType": "ExpressionStatement",
                  "src": "11557:104:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1398,
                            "name": "_hash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1343,
                            "src": "11696:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1399,
                            "name": "_N",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1316,
                            "src": "11703:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1400,
                            "name": "_E",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1318,
                            "src": "11707:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1401,
                            "name": "_rsaSignature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1320,
                            "src": "11711:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1396,
                            "name": "signidice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 464,
                            "src": "11679:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISignidice_$1785",
                              "typeString": "contract ISignidice"
                            }
                          },
                          "id": 1397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "verify",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1784,
                          "src": "11679:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes32,bytes memory,bytes memory,bytes memory) view external returns (bool)"
                          }
                        },
                        "id": 1402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11679:46:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c696420766572696679",
                        "id": 1403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11727:16:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ba2baea0840971d54527c3ae0e3541c9e5194d8ffe3faab5a34d82035274ebec",
                          "typeString": "literal_string \"invalid verify\""
                        },
                        "value": "invalid verify"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ba2baea0840971d54527c3ae0e3541c9e5194d8ffe3faab5a34d82035274ebec",
                          "typeString": "literal_string \"invalid verify\""
                        }
                      ],
                      "id": 1395,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3280,
                        3281
                      ],
                      "referencedDeclaration": 3281,
                      "src": "11671:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11671:73:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1405,
                  "nodeType": "ExpressionStatement",
                  "src": "11671:73:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1407,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1314,
                        "src": "11762:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1408,
                        "name": "_rsaSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1320,
                        "src": "11767:13:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1406,
                      "name": "resolve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1485,
                      "src": "11754:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 1409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11754:27:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1410,
                  "nodeType": "ExpressionStatement",
                  "src": "11754:27:5"
                }
              ]
            },
            "documentation": "@notice Closing of the channel on the dispute\n@param _id Unique channel identifier\n@param _N  N-component of bankroller's rsa public key\n@param _E  E-component of bankroller's rsa public key\n@param _rsaSignature sign for generate random",
            "id": 1412,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "resolveDispute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1321,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1314,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1412,
                  "src": "10984:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1313,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10984:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1316,
                  "name": "_N",
                  "nodeType": "VariableDeclaration",
                  "scope": 1412,
                  "src": "11005:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1315,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11005:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1318,
                  "name": "_E",
                  "nodeType": "VariableDeclaration",
                  "scope": 1412,
                  "src": "11025:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1317,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11025:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1320,
                  "name": "_rsaSignature",
                  "nodeType": "VariableDeclaration",
                  "scope": 1412,
                  "src": "11045:21:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1319,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11045:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10974:98:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1322,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11092:0:5"
            },
            "scope": 1673,
            "src": "10951:837:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1484,
              "nodeType": "Block",
              "src": "12007:512:5",
              "statements": [
                {
                  "assignments": [
                    1420
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1420,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1485,
                      "src": "12017:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1419,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "12017:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1424,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1421,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "12044:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1423,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1422,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1414,
                      "src": "12053:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12044:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12017:40:5"
                },
                {
                  "assignments": [
                    1426
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1426,
                      "name": "_dispute",
                      "nodeType": "VariableDeclaration",
                      "scope": 1485,
                      "src": "12067:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                        "typeString": "struct GameChannel.Dispute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1425,
                        "name": "Dispute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 542,
                        "src": "12067:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                          "typeString": "struct GameChannel.Dispute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1430,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1427,
                      "name": "disputes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 555,
                      "src": "12094:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                      }
                    },
                    "id": 1429,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1428,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1414,
                      "src": "12103:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12094:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$542_storage",
                      "typeString": "struct GameChannel.Dispute storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12067:40:5"
                },
                {
                  "assignments": [
                    1435
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1435,
                      "name": "profit",
                      "nodeType": "VariableDeclaration",
                      "scope": 1485,
                      "src": "12118:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_int256_$2_memory_ptr",
                        "typeString": "int256[2]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1433,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12118:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1434,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 1432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12125:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          },
                          "value": "2"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "12118:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_int256_$2_storage_ptr",
                          "typeString": "int256[2]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1444,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1438,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1426,
                          "src": "12163:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1439,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeGameData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 541,
                        "src": "12163:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1440,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1426,
                          "src": "12189:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$542_storage_ptr",
                            "typeString": "struct GameChannel.Dispute storage pointer"
                          }
                        },
                        "id": 1441,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "disputeBets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 539,
                        "src": "12189:20:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1442,
                        "name": "_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1416,
                        "src": "12211:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_gameData_$297_storage",
                          "typeString": "struct GameObject.gameData storage ref"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1436,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 458,
                        "src": "12144:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGameEngine_$1729",
                          "typeString": "contract IGameEngine"
                        }
                      },
                      "id": 1437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "resolveGame",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1728,
                      "src": "12144:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_struct$_gameData_$297_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_int256_$2_memory_ptr_$",
                        "typeString": "function (struct GameObject.gameData memory,uint256[] memory,bytes memory) external returns (int256[2] memory)"
                      }
                    },
                    "id": 1443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12144:78:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$2_memory_ptr",
                      "typeString": "int256[2] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12118:104:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1445,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1420,
                        "src": "12265:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1447,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "12265:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 1456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1450,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1420,
                                  "src": "12309:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                    "typeString": "struct GameChannel.Channel storage pointer"
                                  }
                                },
                                "id": 1451,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "playerBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 525,
                                "src": "12309:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12302:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": "int256"
                            },
                            "id": 1452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12302:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1453,
                              "name": "profit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "12335:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$2_memory_ptr",
                                "typeString": "int256[2] memory"
                              }
                            },
                            "id": 1455,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12342:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12335:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12302:42:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 1448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12294:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint256"
                      },
                      "id": 1457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12294:51:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12265:80:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1459,
                  "nodeType": "ExpressionStatement",
                  "src": "12265:80:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1460,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1420,
                        "src": "12355:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1462,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "12355:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 1471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1465,
                                  "name": "_channel",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1420,
                                  "src": "12399:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                    "typeString": "struct GameChannel.Channel storage pointer"
                                  }
                                },
                                "id": 1466,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "playerBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 525,
                                "src": "12399:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12392:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": "int256"
                            },
                            "id": 1467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12392:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1468,
                              "name": "profit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "12425:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_int256_$2_memory_ptr",
                                "typeString": "int256[2] memory"
                              }
                            },
                            "id": 1470,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12432:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12425:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12392:42:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 1463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12384:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint256"
                      },
                      "id": 1472,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12384:51:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12355:80:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1474,
                  "nodeType": "ExpressionStatement",
                  "src": "12355:80:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "7265736f6c76652064697370757465",
                        "id": 1476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12462:17:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_28d4fe5fa594b0643e176f292ee4fc8f5f5e4dad7169ec6c89cccd737a8efe0f",
                          "typeString": "literal_string \"resolve dispute\""
                        },
                        "value": "resolve dispute"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1477,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1414,
                        "src": "12481:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_28d4fe5fa594b0643e176f292ee4fc8f5f5e4dad7169ec6c89cccd737a8efe0f",
                          "typeString": "literal_string \"resolve dispute\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1475,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "12451:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12451:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1479,
                  "nodeType": "EmitStatement",
                  "src": "12446:39:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1481,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1414,
                        "src": "12508:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1480,
                      "name": "closeChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1610,
                      "src": "12495:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12495:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1483,
                  "nodeType": "ExpressionStatement",
                  "src": "12495:17:5"
                }
              ]
            },
            "documentation": "@notice run last game round after dispute\n@param _id Unique channel identifier\n@param _signature Sign for creation random number",
            "id": 1485,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "resolve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1414,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1485,
                  "src": "11967:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1413,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11967:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1416,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 1485,
                  "src": "11980:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1415,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11980:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11966:31:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1418,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12007:0:5"
            },
            "scope": 1673,
            "src": "11950:569:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1609,
              "nodeType": "Block",
              "src": "12677:979:5",
              "statements": [
                {
                  "assignments": [
                    1491
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1491,
                      "name": "_channel",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12687:24:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1490,
                        "name": "Channel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 536,
                        "src": "12687:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1495,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1492,
                      "name": "channels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 551,
                      "src": "12714:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Channel_$536_storage_$",
                        "typeString": "mapping(bytes32 => struct GameChannel.Channel storage ref)"
                      }
                    },
                    "id": 1494,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1493,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1487,
                      "src": "12723:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12714:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Channel_$536_storage",
                      "typeString": "struct GameChannel.Channel storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12687:40:5"
                },
                {
                  "assignments": [
                    1497
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1497,
                      "name": "_forReward",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12737:18:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1496,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12737:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1506,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31303030",
                        "id": 1504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12797:4:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000_by_1",
                          "typeString": "int_const 1000"
                        },
                        "value": "1000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1000_by_1",
                          "typeString": "int_const 1000"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "3230",
                            "id": 1501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12789:2:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            },
                            "value": "20"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1498,
                              "name": "_channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1491,
                              "src": "12767:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                "typeString": "struct GameChannel.Channel storage pointer"
                              }
                            },
                            "id": 1499,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalBet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 529,
                            "src": "12767:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1864,
                          "src": "12767:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12767:25:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1882,
                      "src": "12767:29:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12767:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12737:65:5"
                },
                {
                  "assignments": [
                    1508
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1508,
                      "name": "_bankrollerReward",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12812:25:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1507,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12812:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1516,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 1514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12877:3:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1511,
                            "name": "bankrollReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 504,
                            "src": "12857:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1509,
                            "name": "_forReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1497,
                            "src": "12842:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1864,
                          "src": "12842:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12842:30:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1882,
                      "src": "12842:34:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12842:39:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12812:69:5"
                },
                {
                  "assignments": [
                    1518
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1518,
                      "name": "_forPlayer",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12891:18:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1517,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12891:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1521,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1519,
                      "name": "_channel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1491,
                      "src": "12921:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                        "typeString": "struct GameChannel.Channel storage pointer"
                      }
                    },
                    "id": 1520,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "playerBalance",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 525,
                    "src": "12921:22:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12891:52:5"
                },
                {
                  "assignments": [
                    1523
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1523,
                      "name": "_forBankroller",
                      "nodeType": "VariableDeclaration",
                      "scope": 1610,
                      "src": "12953:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1522,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12953:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1527,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12988:1:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 1524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "12983:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": "uint"
                    },
                    "id": 1526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12983:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12953:37:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1528,
                      "name": "_forReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1497,
                      "src": "13004:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1529,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13017:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1530,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "13017:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13004:39:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1553,
                    "nodeType": "Block",
                    "src": "13115:111:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1540,
                            "name": "_forBankroller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1523,
                            "src": "13129:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1547,
                                        "name": "_forReward",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1497,
                                        "src": "13202:10:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1544,
                                            "name": "_bankrollerReward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1508,
                                            "src": "13179:17:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1541,
                                              "name": "_channel",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1491,
                                              "src": "13148:8:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                                                "typeString": "struct GameChannel.Channel storage pointer"
                                              }
                                            },
                                            "id": 1542,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "bankrollerBalance",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 527,
                                            "src": "13148:26:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1543,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1926,
                                          "src": "13148:30:5",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13148:49:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1546,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1902,
                                      "src": "13148:53:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1548,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13148:65:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1549,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13147:67:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1550,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "13146:69:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13129:86:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1552,
                        "nodeType": "ExpressionStatement",
                        "src": "13129:86:5"
                      }
                    ]
                  },
                  "id": 1554,
                  "nodeType": "IfStatement",
                  "src": "13001:225:5",
                  "trueBody": {
                    "id": 1539,
                    "nodeType": "Block",
                    "src": "13045:64:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1532,
                            "name": "_forPlayer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1518,
                            "src": "13059:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1535,
                                "name": "_forReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1497,
                                "src": "13087:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1533,
                                "name": "_forPlayer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1518,
                                "src": "13072:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1902,
                              "src": "13072:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13072:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13059:39:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1538,
                        "nodeType": "ExpressionStatement",
                        "src": "13059:39:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1556,
                          "name": "_channel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1491,
                          "src": "13250:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                            "typeString": "struct GameChannel.Channel storage pointer"
                          }
                        },
                        "id": 1557,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "player",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 521,
                        "src": "13250:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1558,
                        "name": "_forReward",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1497,
                        "src": "13267:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1555,
                      "name": "serviceReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1672,
                      "src": "13236:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 1559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13236:42:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1560,
                  "nodeType": "ExpressionStatement",
                  "src": "13236:42:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1564,
                          "name": "_channel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1491,
                          "src": "13303:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                            "typeString": "struct GameChannel.Channel storage pointer"
                          }
                        },
                        "id": 1565,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "bankroller",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 523,
                        "src": "13303:19:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1566,
                        "name": "_forBankroller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1523,
                        "src": "13324:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1561,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "13288:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1563,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "13288:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13288:51:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1568,
                  "nodeType": "ExpressionStatement",
                  "src": "13288:51:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1572,
                          "name": "_channel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1491,
                          "src": "13364:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                            "typeString": "struct GameChannel.Channel storage pointer"
                          }
                        },
                        "id": 1573,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "player",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 521,
                        "src": "13364:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1574,
                        "name": "_forPlayer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1518,
                        "src": "13381:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1569,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "13349:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "13349:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13349:43:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1576,
                  "nodeType": "ExpressionStatement",
                  "src": "13349:43:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1577,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13402:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1579,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "13402:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1580,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "13419:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 1581,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "close",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13419:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "13402:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    }
                  },
                  "id": 1583,
                  "nodeType": "ExpressionStatement",
                  "src": "13402:28:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "13440:29:5",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1584,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13447:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1585,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "playerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 525,
                      "src": "13447:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1587,
                  "nodeType": "ExpressionStatement",
                  "src": "13440:29:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "13479:33:5",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1588,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13486:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1589,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bankrollerBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 527,
                      "src": "13486:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1591,
                  "nodeType": "ExpressionStatement",
                  "src": "13479:33:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_State_$547",
                      "typeString": "enum GameChannel.State"
                    },
                    "id": 1596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1592,
                        "name": "_channel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1491,
                        "src": "13526:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Channel_$536_storage_ptr",
                          "typeString": "struct GameChannel.Channel storage pointer"
                        }
                      },
                      "id": 1593,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 519,
                      "src": "13526:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1594,
                        "name": "State",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 547,
                        "src": "13544:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_State_$547_$",
                          "typeString": "type(enum GameChannel.State)"
                        }
                      },
                      "id": 1595,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "dispute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13544:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_State_$547",
                        "typeString": "enum GameChannel.State"
                      }
                    },
                    "src": "13526:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1603,
                  "nodeType": "IfStatement",
                  "src": "13522:81:5",
                  "trueBody": {
                    "id": 1602,
                    "nodeType": "Block",
                    "src": "13559:44:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "13572:20:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1597,
                              "name": "disputes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 555,
                              "src": "13579:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Dispute_$542_storage_$",
                                "typeString": "mapping(bytes32 => struct GameChannel.Dispute storage ref)"
                              }
                            },
                            "id": 1599,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1598,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1487,
                              "src": "13588:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13579:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Dispute_$542_storage",
                              "typeString": "struct GameChannel.Dispute storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1601,
                        "nodeType": "ExpressionStatement",
                        "src": "13572:20:5"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "636c6f7365206368616e6e656c",
                        "id": 1605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13628:15:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2d65f4f69b40e1289c9d05dc42a90d42d39b4b6b3da4fe97cc8de7b8c0d8a947",
                          "typeString": "literal_string \"close channel\""
                        },
                        "value": "close channel"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1606,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1487,
                        "src": "13645:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_2d65f4f69b40e1289c9d05dc42a90d42d39b4b6b3da4fe97cc8de7b8c0d8a947",
                          "typeString": "literal_string \"close channel\""
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1604,
                      "name": "logChannel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 453,
                      "src": "13617:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (string memory,bytes32)"
                      }
                    },
                    "id": 1607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13617:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1608,
                  "nodeType": "EmitStatement",
                  "src": "13612:37:5"
                }
              ]
            },
            "documentation": "@notice Internal function for for sending funds\n@param _id Unique channel identifier",
            "id": 1610,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "closeChannel",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1488,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1487,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1610,
                  "src": "12655:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1486,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12655:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12654:13:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1489,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12677:0:5"
            },
            "scope": 1673,
            "src": "12633:1023:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1671,
              "nodeType": "Block",
              "src": "13900:338:5",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1618,
                      "name": "_platform",
                      "nodeType": "VariableDeclaration",
                      "scope": 1672,
                      "src": "13910:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1617,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13910:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1619,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13910:17:5"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1621,
                      "name": "_referrer",
                      "nodeType": "VariableDeclaration",
                      "scope": 1672,
                      "src": "13937:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1620,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13937:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1622,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13937:17:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1623,
                          "name": "_platform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1618,
                          "src": "13965:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1624,
                          "name": "_referrer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1621,
                          "src": "13976:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 1625,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "13964:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                        "typeString": "tuple(address,address)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1628,
                          "name": "_player",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1612,
                          "src": "14009:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1626,
                          "name": "platform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 462,
                          "src": "13989:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPlatform_$1755",
                            "typeString": "contract IPlatform"
                          }
                        },
                        "id": 1627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getService",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1740,
                        "src": "13989:19:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$_t_address_$",
                          "typeString": "function (address) view external returns (address,address)"
                        }
                      },
                      "id": 1629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13989:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                        "typeString": "tuple(address,address)"
                      }
                    },
                    "src": "13964:53:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1631,
                  "nodeType": "ExpressionStatement",
                  "src": "13964:53:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1635,
                        "name": "developer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 510,
                        "src": "14042:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 1641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14083:3:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1638,
                                "name": "gameDevReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 502,
                                "src": "14064:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1636,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1614,
                                "src": "14053:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1864,
                              "src": "14053:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1639,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14053:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1882,
                          "src": "14053:29:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14053:34:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1632,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "14027:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "14027:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14027:61:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1644,
                  "nodeType": "ExpressionStatement",
                  "src": "14027:61:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1648,
                        "name": "_platform",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1618,
                        "src": "14113:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 1654,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14155:3:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1651,
                                "name": "platformReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 506,
                                "src": "14135:14:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1649,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1614,
                                "src": "14124:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1864,
                              "src": "14124:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14124:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1882,
                          "src": "14124:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14124:35:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1645,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "14098:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1647,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "14098:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14098:62:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1657,
                  "nodeType": "ExpressionStatement",
                  "src": "14098:62:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1661,
                        "name": "_referrer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1621,
                        "src": "14185:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 1667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14226:3:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1664,
                                "name": "refererReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 508,
                                "src": "14207:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1662,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1614,
                                "src": "14196:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1864,
                              "src": "14196:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14196:25:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1882,
                          "src": "14196:29:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14196:34:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1658,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 460,
                        "src": "14170:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$1822",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 1660,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1794,
                      "src": "14170:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14170:61:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1670,
                  "nodeType": "ExpressionStatement",
                  "src": "14170:61:5"
                }
              ]
            },
            "documentation": "@notice Transfer reward to game developer, bankroller, platform and referrer\n@param _player player's address\n@param _value Total for distribution",
            "id": 1672,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "serviceReward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1612,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 1672,
                  "src": "13858:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1611,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13858:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1614,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1672,
                  "src": "13875:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1613,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13875:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13857:33:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1616,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13900:0:5"
            },
            "scope": 1673,
            "src": "13835:403:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 1674,
        "src": "248:13993:5"
      }
    ],
    "src": "0:14241:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.0-beta.0",
  "updatedAt": "2018-12-04T11:48:18.067Z"
}