{
  "contractName": "NysaGameEscrow",
  "compiler": "0.8.30+commit.73712a01.Emscripten.clang",
  "settings": {
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "evmVersion": "paris",
    "outputSelection": {
      "*": {
        "*": [
          "abi",
          "evm.bytecode.object",
          "evm.deployedBytecode.object",
          "evm.deployedBytecode.immutableReferences"
        ]
      }
    }
  },
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "engine_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        }
      ],
      "name": "Cancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "player",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "payout",
          "type": "uint256"
        }
      ],
      "name": "ExitAllocated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "deadline",
          "type": "uint64"
        }
      ],
      "name": "GameCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "player",
          "type": "address"
        }
      ],
      "name": "LobbyLeft",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "player",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "value",
          "type": "bool"
        }
      ],
      "name": "Ready",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "player",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "gameId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "pot",
          "type": "uint256"
        }
      ],
      "name": "Started",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "player",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdrawn",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MAX_PLAYERS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MIN_PLAYERS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "STAKE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "cancelExpiredLobby",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "claimable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "fundingDeadline",
          "type": "uint64"
        }
      ],
      "name": "createGame",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "engine",
      "outputs": [
        {
          "internalType": "contract INysaGameEngine",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "exit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "exited",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "game",
      "outputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "deadline",
          "type": "uint64"
        },
        {
          "internalType": "enum NysaGameEscrow.Phase",
          "name": "phase",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "remaining",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "activePlayers",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "players",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "join",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "joined",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "leaveLobby",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nextGameId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "ready",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "value",
          "type": "bool"
        }
      ],
      "name": "setReady",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "start",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalLiability",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040526001805534801561001457600080fd5b50604051611bb6380380611bb683398101604081905261003391610188565b60016000556001600160a01b0382163b1580159061005b57506000816001600160a01b03163b115b6100a15760405162461bcd60e51b815260206004820152601260248201527118dbdb9d1c9858dd1cc81c995c5d5a5c995960721b60448201526064015b60405180910390fd5b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010391906101bb565b60ff166003146101555760405162461bcd60e51b815260206004820152601660248201527f4e59534120646563696d616c73207265717569726564000000000000000000006044820152606401610098565b6001600160a01b039182166080521660a0526101e5565b80516001600160a01b038116811461018357600080fd5b919050565b6000806040838503121561019b57600080fd5b6101a48361016c565b91506101b26020840161016c565b90509250929050565b6000602082840312156101cd57600080fd5b815160ff811681146101de57600080fd5b9392505050565b60805160a05161197b61023b6000396000818161028f01528181610c6d01526112ac01526000818161032101528181610558015281816105da01528181610625015281816107be01526107fd015261197b6000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806385f07bbe116100ad578063bea5fcc511610071578063bea5fcc51461025c578063c9d4623f1461028a578063cddbe729146102c9578063d319c835146102ee578063fc0c546a1461031c57600080fd5b806385f07bbe14610212578063948428f01461021a57806395805dad1461022d578063af8bccfc14610240578063b135bbb01461025357600080fd5b8063402914f5116100f4578063402914f5146101b15780634411b3eb146101d1578063552e8105146101d95780635894da7a146101ec5780637f8661a1146101ff57600080fd5b8063049878f3146101315780630fc2934914610146578063125fdbbc146101625780631a6891791461016b5780633ccfd60b146101a9575b600080fd5b61014461013f36600461168c565b610343565b005b61014f60025481565b6040519081526020015b60405180910390f35b61014f61138881565b6101996101793660046116c1565b600660209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610159565b61014461072e565b61014f6101bf3660046116ed565b60076020526000908152604090205481565b61014f600481565b6101446101e736600461170f565b6108f3565b6101446101fa36600461168c565b610a05565b61014461020d36600461168c565b610b54565b61014f600381565b61014461022836600461168c565b610e0e565b61014461023b36600461168c565b6110d5565b61014f61024e366004611744565b611360565b61014f60015481565b61019961026a3660046116c1565b600460209081526000928352604080842090915290825290205460ff1681565b6102b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610159565b6102dc6102d736600461168c565b611486565b60405161015996959493929190611784565b6101996102fc3660046116c1565b600560209081526000928352604080842090915290825290205460ff1681565b6102b17f000000000000000000000000000000000000000000000000000000000000000081565b61034b61154e565b600081815260036020526040902060018154600160e01b900460ff1660048111156103785761037861176e565b14801561039657508054600160a01b900467ffffffffffffffff1642105b6103d85760405162461bcd60e51b815260206004820152600e60248201526d3637b1313c903737ba1037b832b760911b60448201526064015b60405180910390fd5b600082815260046020908152604080832033845290915290205460ff16158015610406575060038101546004115b61044b5760405162461bcd60e51b8152602060048201526016602482015275185b1c9958591e481a9bda5b9959081bdc88199d5b1b60521b60448201526064016103cf565b60005b60038201548110156104bd5760008381526005602052604081206003840180548391908590811061048157610481611829565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560010161044e565b50600082815260046020908152604080832033808552908352908320805460ff19166001908117909155600385018054808301825590855292842090920180546001600160a01b0319169091179055820180546113889290610520908490611855565b925050819055506113886002600082825461053b9190611855565b90915550506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156105a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cb919061186e565b90506106046001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330611388611578565b61061061138882611855565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610674573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610698919061186e565b146106e55760405162461bcd60e51b815260206004820152601760248201527f6578616374207472616e7366657220726571756972656400000000000000000060448201526064016103cf565b6040516113888152339084907f18dcd430020e4d4899772fd94a8b40451dc5044dfb70bc46b532eeae431c864f906020015b60405180910390a3505061072b6001600055565b50565b61073661154e565b33600090815260076020526040902054806107875760405162461bcd60e51b81526020600482015260116024820152706e6f7468696e6720636c61696d61626c6560781b60448201526064016103cf565b336000908152600760205260408120819055600280548392906107ab908490611887565b909155506107e590506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633836115e5565b6002546040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561084c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610870919061186e565b10156108b15760405162461bcd60e51b815260206004820152601060248201526f195cd8dc9bddc81a5b9cdbdb1d995b9d60821b60448201526064016103cf565b60405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a2506108f16001600055565b565b600082815260036020526040902060018154600160e01b900460ff1660048111156109205761092061176e565b14801561093e57508054600160a01b900467ffffffffffffffff1642105b80156109635750600083815260046020908152604080832033845290915290205460ff165b6109a35760405162461bcd60e51b81526020600482015260116024820152706e6f7420696e206f70656e206c6f62627960781b60448201526064016103cf565b60008381526005602090815260408083203380855290835292819020805460ff1916861515908117909155905190815285917f1fb5726e528e8bbe5f8a00f0eba6c0958ed11e0c63e764b6258c84841bb026b9910160405180910390a3505050565b610a0d61154e565b600081815260036020526040902060018154600160e01b900460ff166004811115610a3a57610a3a61176e565b148015610a5957508054600160a01b900467ffffffffffffffff164210155b610a995760405162461bcd60e51b81526020600482015260116024820152706e6f742065787069726564206c6f62627960781b60448201526064016103cf565b805460ff60e01b1916600160e21b1781556000600182018190555b6003820154811015610b1d5761138860076000846003018481548110610adc57610adc611829565b60009182526020808320909101546001600160a01b0316835282019290925260400181208054909190610b10908490611855565b9091555050600101610ab4565b5060405182907fc41d93b8bfbf9fd7cf5bfe271fd649ab6a6fec0ea101c23b82a2a28eca2533a990600090a25061072b6001600055565b610b5c61154e565b600081815260036020526040902060028154600160e01b900460ff166004811115610b8957610b8961176e565b148015610baf5750600082815260046020908152604080832033845290915290205460ff165b8015610bd55750600082815260066020908152604080832033845290915290205460ff16155b610c155760405162461bcd60e51b81526020600482015260116024820152703737ba1030b1ba34bb3290383630bcb2b960791b60448201526064016103cf565b60008281526006602090815260408083203384529091528120805460ff1916600117905560028201805491610c498361189a565b909155505060405163bea6f30760e01b8152600481018390523360248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bea6f307906044016020604051808303816000875af1158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce2919061186e565b90508160010154811115610d2d5760405162461bcd60e51b81526020600482015260126024820152711c185e5bdd5d08195e18d959591cc81c1bdd60721b60448201526064016103cf565b80826001016000828254610d419190611887565b90915550503360009081526007602052604081208054839290610d65908490611855565b90915550506002820154600003610dda57600182015415610dc85760405162461bcd60e51b815260206004820152601b60248201527f656e67696e65206d75737420736574746c652066756c6c20706f74000000000060448201526064016103cf565b815460ff60e01b1916600360e01b1782555b604051818152339084907fc8e113002afa0eb120b1537d30e9275fed9d4c697cb4013dfa57c6b117281c2990602001610717565b610e1661154e565b600081815260036020526040902060018154600160e01b900460ff166004811115610e4357610e4361176e565b148015610e695750600082815260046020908152604080832033845290915290205460ff165b610ea45760405162461bcd60e51b815260206004820152600c60248201526b6e6f7420696e206c6f62627960a01b60448201526064016103cf565b600082815260046020908152604080832033808552908352818420805460ff199081169091558685526005845282852091855292528220805490911690555b6003820154811015610fe857336001600160a01b0316826003018281548110610f0e57610f0e611829565b6000918252602090912001546001600160a01b031603610fe057600382018054610f3a90600190611887565b81548110610f4a57610f4a611829565b6000918252602090912001546003830180546001600160a01b039092169183908110610f7857610f78611829565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600301805480610fb957610fb96118b1565b600082815260209020810160001990810180546001600160a01b0319169055019055610fe8565b600101610ee3565b5060005b600382015481101561105b5760008381526005602052604081206003840180548391908590811061101f5761101f611829565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610fec565b506113888160010160008282546110729190611887565b909155505033600090815260076020526040812080546113889290611098908490611855565b9091555050604051339083907f7e802ed57ac2e9446af1ec7d55ee20010839fabde6d46b8355420a2c51bac96b90600090a35061072b6001600055565b6110dd61154e565b600081815260036020526040902060018154600160e01b900460ff16600481111561110a5761110a61176e565b14801561112857508054600160a01b900467ffffffffffffffff1642105b801561114d5750600082815260046020908152604080832033845290915290205460ff165b61118d5760405162461bcd60e51b81526020600482015260116024820152706e6f7420696e206f70656e206c6f62627960781b60448201526064016103cf565b60038181015410156111d25760405162461bcd60e51b815260206004820152600e60248201526d6e656564203320706c617965727360901b60448201526064016103cf565b60005b60038201548110156112785760008381526005602052604081206003840180549192918490811061120857611208611829565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166112705760405162461bcd60e51b8152602060048201526011602482015270616c6c206d75737420626520726561647960781b60448201526064016103cf565b6001016111d5565b50805460ff60e01b1916600160e11b1781556003810180546002830155604051630d3b778560e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916369dbbc28916112e5918691611388906004016118c7565b600060405180830381600087803b1580156112ff57600080fd5b505af1158015611313573d6000803e3d6000fd5b50505050817f87ac41d581680567c1ef44614ddfa5522f853ea15b877693a35b1e4157cc309d826001015460405161134d91815260200190565b60405180910390a25061072b6001600055565b6000428267ffffffffffffffff1611801561139157506113834262093a80611855565b8267ffffffffffffffff1611155b6113d15760405162461bcd60e51b8152602060048201526011602482015270191958591b1a5b99480c5cc81d1bc80dd9607a1b60448201526064016103cf565b600180549060006113e18361192c565b90915550600081815260036020526040902080546001600160e01b0319163367ffffffffffffffff60a01b191617600160a01b67ffffffffffffffff8616021780825591925090600190829060ff60e01b1916600160e01b83021790555060405167ffffffffffffffff84168152339083907ff96e1340d79d05504e6039452e33bf6029548ae193a33d85bd581f58f3c93b7e9060200160405180910390a350919050565b60008181526003602081815260408084208054600182015460028301549583018054855181880281018801909652808652889788978897889760609790966001600160a01b03821696600160a01b830467ffffffffffffffff1696600160e01b90930460ff1695919491939092909183919083018282801561153157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611513575b505050505090509650965096509650965096505091939550919395565b60026000540361157157604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b6040516001600160a01b0384811660248301528381166044830152606482018390526115df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061161b565b50505050565b6040516001600160a01b0383811660248301526044820183905261161691859182169063a9059cbb906064016115ad565b505050565b600080602060008451602086016000885af18061163e576040513d6000823e3d81fd5b50506000513d91508115611656578060011415611663565b6001600160a01b0384163b155b156115df57604051635274afe760e01b81526001600160a01b03851660048201526024016103cf565b60006020828403121561169e57600080fd5b5035919050565b80356001600160a01b03811681146116bc57600080fd5b919050565b600080604083850312156116d457600080fd5b823591506116e4602084016116a5565b90509250929050565b6000602082840312156116ff57600080fd5b611708826116a5565b9392505050565b6000806040838503121561172257600080fd5b823591506020830135801515811461173957600080fd5b809150509250929050565b60006020828403121561175657600080fd5b813567ffffffffffffffff8116811461170857600080fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038716815267ffffffffffffffff86166020820152600060c08201600587106117c457634e487b7160e01b600052602160045260246000fd5b86604084015285606084015284608084015260c060a084015280845180835260e08501915060208601925060005b818110156118195783516001600160a01b03168352602093840193909201916001016117f2565b50909a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156118685761186861183f565b92915050565b60006020828403121561188057600080fd5b5051919050565b818103818111156118685761186861183f565b6000816118a9576118a961183f565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60006060820185835260606020840152808554808352608085019150866000526020600020925060005b818110156119185783546001600160a01b03168352600193840193602090930192016118f1565b505060409390930193909352509392505050565b60006001820161193e5761193e61183f565b506001019056fea2646970667358221220a904d6d6c6c95f58187dd3b5511deb7d7c9a649abfb4a45f567c5b661058838664736f6c634300081e0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806385f07bbe116100ad578063bea5fcc511610071578063bea5fcc51461025c578063c9d4623f1461028a578063cddbe729146102c9578063d319c835146102ee578063fc0c546a1461031c57600080fd5b806385f07bbe14610212578063948428f01461021a57806395805dad1461022d578063af8bccfc14610240578063b135bbb01461025357600080fd5b8063402914f5116100f4578063402914f5146101b15780634411b3eb146101d1578063552e8105146101d95780635894da7a146101ec5780637f8661a1146101ff57600080fd5b8063049878f3146101315780630fc2934914610146578063125fdbbc146101625780631a6891791461016b5780633ccfd60b146101a9575b600080fd5b61014461013f36600461168c565b610343565b005b61014f60025481565b6040519081526020015b60405180910390f35b61014f61138881565b6101996101793660046116c1565b600660209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610159565b61014461072e565b61014f6101bf3660046116ed565b60076020526000908152604090205481565b61014f600481565b6101446101e736600461170f565b6108f3565b6101446101fa36600461168c565b610a05565b61014461020d36600461168c565b610b54565b61014f600381565b61014461022836600461168c565b610e0e565b61014461023b36600461168c565b6110d5565b61014f61024e366004611744565b611360565b61014f60015481565b61019961026a3660046116c1565b600460209081526000928352604080842090915290825290205460ff1681565b6102b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610159565b6102dc6102d736600461168c565b611486565b60405161015996959493929190611784565b6101996102fc3660046116c1565b600560209081526000928352604080842090915290825290205460ff1681565b6102b17f000000000000000000000000000000000000000000000000000000000000000081565b61034b61154e565b600081815260036020526040902060018154600160e01b900460ff1660048111156103785761037861176e565b14801561039657508054600160a01b900467ffffffffffffffff1642105b6103d85760405162461bcd60e51b815260206004820152600e60248201526d3637b1313c903737ba1037b832b760911b60448201526064015b60405180910390fd5b600082815260046020908152604080832033845290915290205460ff16158015610406575060038101546004115b61044b5760405162461bcd60e51b8152602060048201526016602482015275185b1c9958591e481a9bda5b9959081bdc88199d5b1b60521b60448201526064016103cf565b60005b60038201548110156104bd5760008381526005602052604081206003840180548391908590811061048157610481611829565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560010161044e565b50600082815260046020908152604080832033808552908352908320805460ff19166001908117909155600385018054808301825590855292842090920180546001600160a01b0319169091179055820180546113889290610520908490611855565b925050819055506113886002600082825461053b9190611855565b90915550506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156105a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cb919061186e565b90506106046001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330611388611578565b61061061138882611855565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610674573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610698919061186e565b146106e55760405162461bcd60e51b815260206004820152601760248201527f6578616374207472616e7366657220726571756972656400000000000000000060448201526064016103cf565b6040516113888152339084907f18dcd430020e4d4899772fd94a8b40451dc5044dfb70bc46b532eeae431c864f906020015b60405180910390a3505061072b6001600055565b50565b61073661154e565b33600090815260076020526040902054806107875760405162461bcd60e51b81526020600482015260116024820152706e6f7468696e6720636c61696d61626c6560781b60448201526064016103cf565b336000908152600760205260408120819055600280548392906107ab908490611887565b909155506107e590506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633836115e5565b6002546040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561084c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610870919061186e565b10156108b15760405162461bcd60e51b815260206004820152601060248201526f195cd8dc9bddc81a5b9cdbdb1d995b9d60821b60448201526064016103cf565b60405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a2506108f16001600055565b565b600082815260036020526040902060018154600160e01b900460ff1660048111156109205761092061176e565b14801561093e57508054600160a01b900467ffffffffffffffff1642105b80156109635750600083815260046020908152604080832033845290915290205460ff165b6109a35760405162461bcd60e51b81526020600482015260116024820152706e6f7420696e206f70656e206c6f62627960781b60448201526064016103cf565b60008381526005602090815260408083203380855290835292819020805460ff1916861515908117909155905190815285917f1fb5726e528e8bbe5f8a00f0eba6c0958ed11e0c63e764b6258c84841bb026b9910160405180910390a3505050565b610a0d61154e565b600081815260036020526040902060018154600160e01b900460ff166004811115610a3a57610a3a61176e565b148015610a5957508054600160a01b900467ffffffffffffffff164210155b610a995760405162461bcd60e51b81526020600482015260116024820152706e6f742065787069726564206c6f62627960781b60448201526064016103cf565b805460ff60e01b1916600160e21b1781556000600182018190555b6003820154811015610b1d5761138860076000846003018481548110610adc57610adc611829565b60009182526020808320909101546001600160a01b0316835282019290925260400181208054909190610b10908490611855565b9091555050600101610ab4565b5060405182907fc41d93b8bfbf9fd7cf5bfe271fd649ab6a6fec0ea101c23b82a2a28eca2533a990600090a25061072b6001600055565b610b5c61154e565b600081815260036020526040902060028154600160e01b900460ff166004811115610b8957610b8961176e565b148015610baf5750600082815260046020908152604080832033845290915290205460ff165b8015610bd55750600082815260066020908152604080832033845290915290205460ff16155b610c155760405162461bcd60e51b81526020600482015260116024820152703737ba1030b1ba34bb3290383630bcb2b960791b60448201526064016103cf565b60008281526006602090815260408083203384529091528120805460ff1916600117905560028201805491610c498361189a565b909155505060405163bea6f30760e01b8152600481018390523360248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bea6f307906044016020604051808303816000875af1158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce2919061186e565b90508160010154811115610d2d5760405162461bcd60e51b81526020600482015260126024820152711c185e5bdd5d08195e18d959591cc81c1bdd60721b60448201526064016103cf565b80826001016000828254610d419190611887565b90915550503360009081526007602052604081208054839290610d65908490611855565b90915550506002820154600003610dda57600182015415610dc85760405162461bcd60e51b815260206004820152601b60248201527f656e67696e65206d75737420736574746c652066756c6c20706f74000000000060448201526064016103cf565b815460ff60e01b1916600360e01b1782555b604051818152339084907fc8e113002afa0eb120b1537d30e9275fed9d4c697cb4013dfa57c6b117281c2990602001610717565b610e1661154e565b600081815260036020526040902060018154600160e01b900460ff166004811115610e4357610e4361176e565b148015610e695750600082815260046020908152604080832033845290915290205460ff165b610ea45760405162461bcd60e51b815260206004820152600c60248201526b6e6f7420696e206c6f62627960a01b60448201526064016103cf565b600082815260046020908152604080832033808552908352818420805460ff199081169091558685526005845282852091855292528220805490911690555b6003820154811015610fe857336001600160a01b0316826003018281548110610f0e57610f0e611829565b6000918252602090912001546001600160a01b031603610fe057600382018054610f3a90600190611887565b81548110610f4a57610f4a611829565b6000918252602090912001546003830180546001600160a01b039092169183908110610f7857610f78611829565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600301805480610fb957610fb96118b1565b600082815260209020810160001990810180546001600160a01b0319169055019055610fe8565b600101610ee3565b5060005b600382015481101561105b5760008381526005602052604081206003840180548391908590811061101f5761101f611829565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610fec565b506113888160010160008282546110729190611887565b909155505033600090815260076020526040812080546113889290611098908490611855565b9091555050604051339083907f7e802ed57ac2e9446af1ec7d55ee20010839fabde6d46b8355420a2c51bac96b90600090a35061072b6001600055565b6110dd61154e565b600081815260036020526040902060018154600160e01b900460ff16600481111561110a5761110a61176e565b14801561112857508054600160a01b900467ffffffffffffffff1642105b801561114d5750600082815260046020908152604080832033845290915290205460ff165b61118d5760405162461bcd60e51b81526020600482015260116024820152706e6f7420696e206f70656e206c6f62627960781b60448201526064016103cf565b60038181015410156111d25760405162461bcd60e51b815260206004820152600e60248201526d6e656564203320706c617965727360901b60448201526064016103cf565b60005b60038201548110156112785760008381526005602052604081206003840180549192918490811061120857611208611829565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166112705760405162461bcd60e51b8152602060048201526011602482015270616c6c206d75737420626520726561647960781b60448201526064016103cf565b6001016111d5565b50805460ff60e01b1916600160e11b1781556003810180546002830155604051630d3b778560e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916369dbbc28916112e5918691611388906004016118c7565b600060405180830381600087803b1580156112ff57600080fd5b505af1158015611313573d6000803e3d6000fd5b50505050817f87ac41d581680567c1ef44614ddfa5522f853ea15b877693a35b1e4157cc309d826001015460405161134d91815260200190565b60405180910390a25061072b6001600055565b6000428267ffffffffffffffff1611801561139157506113834262093a80611855565b8267ffffffffffffffff1611155b6113d15760405162461bcd60e51b8152602060048201526011602482015270191958591b1a5b99480c5cc81d1bc80dd9607a1b60448201526064016103cf565b600180549060006113e18361192c565b90915550600081815260036020526040902080546001600160e01b0319163367ffffffffffffffff60a01b191617600160a01b67ffffffffffffffff8616021780825591925090600190829060ff60e01b1916600160e01b83021790555060405167ffffffffffffffff84168152339083907ff96e1340d79d05504e6039452e33bf6029548ae193a33d85bd581f58f3c93b7e9060200160405180910390a350919050565b60008181526003602081815260408084208054600182015460028301549583018054855181880281018801909652808652889788978897889760609790966001600160a01b03821696600160a01b830467ffffffffffffffff1696600160e01b90930460ff1695919491939092909183919083018282801561153157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611513575b505050505090509650965096509650965096505091939550919395565b60026000540361157157604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b6040516001600160a01b0384811660248301528381166044830152606482018390526115df9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061161b565b50505050565b6040516001600160a01b0383811660248301526044820183905261161691859182169063a9059cbb906064016115ad565b505050565b600080602060008451602086016000885af18061163e576040513d6000823e3d81fd5b50506000513d91508115611656578060011415611663565b6001600160a01b0384163b155b156115df57604051635274afe760e01b81526001600160a01b03851660048201526024016103cf565b60006020828403121561169e57600080fd5b5035919050565b80356001600160a01b03811681146116bc57600080fd5b919050565b600080604083850312156116d457600080fd5b823591506116e4602084016116a5565b90509250929050565b6000602082840312156116ff57600080fd5b611708826116a5565b9392505050565b6000806040838503121561172257600080fd5b823591506020830135801515811461173957600080fd5b809150509250929050565b60006020828403121561175657600080fd5b813567ffffffffffffffff8116811461170857600080fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038716815267ffffffffffffffff86166020820152600060c08201600587106117c457634e487b7160e01b600052602160045260246000fd5b86604084015285606084015284608084015260c060a084015280845180835260e08501915060208601925060005b818110156118195783516001600160a01b03168352602093840193909201916001016117f2565b50909a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156118685761186861183f565b92915050565b60006020828403121561188057600080fd5b5051919050565b818103818111156118685761186861183f565b6000816118a9576118a961183f565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60006060820185835260606020840152808554808352608085019150866000526020600020925060005b818110156119185783546001600160a01b03168352600193840193602090930192016118f1565b505060409390930193909352509392505050565b60006001820161193e5761193e61183f565b506001019056fea2646970667358221220a904d6d6c6c95f58187dd3b5511deb7d7c9a649abfb4a45f567c5b661058838664736f6c634300081e0033",
  "immutableReferences": {
    "108": [
      {
        "length": 32,
        "start": 801
      },
      {
        "length": 32,
        "start": 1368
      },
      {
        "length": 32,
        "start": 1498
      },
      {
        "length": 32,
        "start": 1573
      },
      {
        "length": 32,
        "start": 1982
      },
      {
        "length": 32,
        "start": 2045
      }
    ],
    "111": [
      {
        "length": 32,
        "start": 655
      },
      {
        "length": 32,
        "start": 3181
      },
      {
        "length": 32,
        "start": 4780
      }
    ]
  },
  "notice": "Experimental, unaudited. Human scorekeeper reports cash-outs; no automated dice engine."
}