{
  "_format": "hh-sol-artifact-1",
  "contractName": "LockingPool",
  "sourceName": "contracts/L1/dispute/LockingPool.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidGameStatus",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnregisteredGame",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldPeriod",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newPeriod",
          "type": "uint256"
        }
      ],
      "name": "LockPeriodUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldRatio",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newRatio",
          "type": "uint256"
        }
      ],
      "name": "SlashRatioUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Slashed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Unlock",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DISPUTE_GAME_FACTORY_NAME",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "addressManager",
      "outputs": [
        {
          "internalType": "contract Lib_AddressManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "config",
      "outputs": [
        {
          "internalType": "contract MetisConfig",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "depositedSequencers",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getWithdrawalRequest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_lockPeriod",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_slashRatio",
          "type": "uint256"
        },
        {
          "internalType": "contract Lib_AddressManager",
          "name": "_addressManager",
          "type": "address"
        },
        {
          "internalType": "contract MetisConfig",
          "name": "_config",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lockPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newPeriod",
          "type": "uint256"
        }
      ],
      "name": "setLockPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newRatio",
          "type": "uint256"
        }
      ],
      "name": "setSlashRatio",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_recipient",
          "type": "address"
        }
      ],
      "name": "slash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "slashRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalLocked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "unlock",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "withdrawals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50620000236000808080808062000029565b62000339565b600054610100900460ff16158080156200004a5750600054600160ff909116105b806200007a575062000067306200020960201b620014301760201c565b1580156200007a575060005460ff166001145b620000e35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000107576000805461ff0019166101001790555b6200011162000218565b6200011c8762000280565b6127106067541115620001725760405162461bcd60e51b815260206004820181905260248201527f4c6f636b696e67506f6f6c3a20696e76616c696420736c61736820726174696f6044820152606401620000da565b606580546001600160a01b038089166001600160a01b03199283161790925560668790556067869055606980548684169083161790556068805492851692909116919091179055801562000200576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6001600160a01b03163b151590565b600054610100900460ff16620002745760405162461bcd60e51b815260206004820152602b60248201526000805160206200218b83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000da565b6200027e620002d2565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166200032e5760405162461bcd60e51b815260206004820152602b60248201526000805160206200218b83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000da565b6200027e3362000280565b611e4280620003496000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80637a9262a2116100d8578063ce3518aa1161008c578063dfd9826911610066578063dfd982691461033d578063f2fde38b14610386578063fc0c546a1461039957600080fd5b8063ce3518aa1461030e578063d27ca89b14610321578063d2d101621461032a57600080fd5b80638da5cb5b116100bd5780638da5cb5b146102d7578063b6b55f25146102e8578063c96be4cb146102fb57600080fd5b80637a9262a2146102555780638c661b5d1461029157600080fd5b80636198e3391161012f578063715018a611610114578063715018a614610227578063779972da1461022f57806379502c551461024257600080fd5b80636198e339146101f457806370a082311461020757600080fd5b80633fd8b02f116101605780633fd8b02f146101c157806356891412146101d85780635e7ab842146101e157600080fd5b80632e1a7d4d1461017c5780633ab76e9f14610191575b600080fd5b61018f61018a366004611992565b6103ac565b005b6069546101a4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ca60665481565b6040519081526020016101b8565b6101ca606c5481565b6101a46101ef366004611992565b6107da565b61018f610202366004611992565b610804565b6101ca6102153660046119c0565b606b6020526000908152604090205481565b61018f6108e9565b61018f61023d366004611992565b6108fd565b6068546101a4906001600160a01b031681565b61027c6102633660046119c0565b606a602052600090815260409020805460019091015482565b604080519283526020830191909152016101b8565b61027c61029f3660046119c0565b6001600160a01b03166000908152606a6020908152604091829020825180840190935280548084526001909101549290910182905291565b6033546001600160a01b03166101a4565b61018f6102f6366004611992565b61094b565b61018f6103093660046119c0565b610ae4565b61018f61031c366004611992565b6110ce565b6101ca60675481565b61018f6103383660046119dd565b611166565b6103796040518060400160405280601281526020017f4469737075746547616d65466163746f7279000000000000000000000000000081525081565b6040516101b89190611aa5565b61018f6103943660046119c0565b6113a0565b6065546101a4906001600160a01b031681565b606860009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104239190611ab8565b156104755760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b696e67506f6f6c3a20636f6e7472616374206973207061757365640060448201526064015b60405180910390fd5b336000908152606a6020526040902080548211156104fb5760405162461bcd60e51b815260206004820152602d60248201527f4c6f636b696e67506f6f6c3a20696e73756666696369656e7420756e6c6f636b60448201527f6564207769746864726177616c00000000000000000000000000000000000000606482015260840161046c565b60008160010154116105745760405162461bcd60e51b8152602060048201526024808201527f4c6f636b696e67506f6f6c3a207769746864726177616c206e6f7420756e6c6f60448201527f636b656400000000000000000000000000000000000000000000000000000000606482015260840161046c565b4260665482600101546105879190611b09565b11156105fb5760405162461bcd60e51b815260206004820152602560248201527f4c6f636b696e67506f6f6c3a207769746864726177616c2064656c6179206e6f60448201527f74206d6574000000000000000000000000000000000000000000000000000000606482015260840161046c565b8181600001600082825461060f9190611b21565b9091555050336000908152606b602052604081208054849290610633908490611b21565b9250508190555081606c600082825461064c9190611b21565b9091555050336000908152606b602052604081205490036107895760005b606d5481101561078757336001600160a01b0316606d828154811061069157610691611b38565b6000918252602090912001546001600160a01b03160361077557606d80546106bb90600190611b21565b815481106106cb576106cb611b38565b600091825260209091200154606d80546001600160a01b0390921691839081106106f7576106f7611b38565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d80548061073657610736611b67565b600082815260209020810160001990810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055610787565b8061077f81611b96565b91505061066a565b505b6065546107a0906001600160a01b0316338461143f565b60405182815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050565b606d81815481106107ea57600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152606b60205260409020548111156108895760405162461bcd60e51b815260206004820152602160248201527f4c6f636b696e67506f6f6c3a20696e73756666696369656e742062616c616e6360448201527f6500000000000000000000000000000000000000000000000000000000000000606482015260840161046c565b336000908152606a602052604081204260018201558054909183918391906108b2908490611b09565b909155505060405182815233907f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1906020016107ce565b6108f16114ed565b6108fb6000611547565b565b6109056114ed565b606680549082905560408051828152602081018490527f5dd7b309b7bc5010d9c96159ee535a428121d6803cb847792402fffccaf1569a91015b60405180910390a15050565b6000811161099b5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b696e67506f6f6c3a207a65726f206465706f73697400000000000000604482015260640161046c565b6065546109b3906001600160a01b03163330846115b1565b336000908152606b6020526040812080548392906109d2908490611b09565b9250508190555080606c60008282546109eb9190611b09565b9091555060009050805b606d54811015610a5157336001600160a01b0316606d8281548110610a1c57610a1c611b38565b6000918252602090912001546001600160a01b031603610a3f5760019150610a51565b80610a4981611b96565b9150506109f5565b5080610ab257606d80546001810182556000919091527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555b60405182815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c906020016107ce565b6001600160a01b038116610b3a5760405162461bcd60e51b815260206004820152601e60248201527f4c6f636b696e67506f6f6c3a20696e76616c696420726563697069656e740000604482015260640161046c565b6000606c5411610b8c5760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b696e67506f6f6c3a206e6f20746f6b656e7320746f20736c61736800604482015260640161046c565b60003390506000806000836001600160a01b031663fa24f7436040518163ffffffff1660e01b8152600401600060405180830381865afa158015610bd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bfc9190810190611bdf565b606954604080518082018252601281527f4469737075746547616d65466163746f72790000000000000000000000000000602082015290517fbf40fac10000000000000000000000000000000000000000000000000000000081529497509295509093506000926001600160a01b039091169163bf40fac191610c829190600401611aa5565b602060405180830381865afa158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc39190611cb4565b90506001600160a01b038116610d415760405162461bcd60e51b815260206004820152602960248201527f4c6f636b696e67506f6f6c3a20646973707574652067616d6520666163746f7260448201527f79206e6f74207365740000000000000000000000000000000000000000000000606482015260840161046c565b6040517f5f0150cb0000000000000000000000000000000000000000000000000000000081526000906001600160a01b03831690635f0150cb90610d8d90889088908890600401611cd1565b6040805180830381865afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190611cff565b509050856001600160a01b0316816001600160a01b031614610e1b576040517f6b0f689100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001866001600160a01b031663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190611d75565b6002811115610e9057610e90611d46565b14610ec7576040517f8f8af25f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080606d805480602002602001604051908101604052809291908181526020018280548015610f2057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f02575b505083519394506000925050505b81811015610fda576000838281518110610f4a57610f4a611b38565b6020908102919091018101516001600160a01b0381166000908152606b9092526040909120549091508015610fd057600061271060675483610f8c9190611d96565b610f969190611db5565b90508015610fce57610fa88188611b09565b9650610fb48183611b21565b6001600160a01b0384166000908152606b60205260409020555b505b5050600101610f2e565b50600083116110515760405162461bcd60e51b815260206004820152602360248201527f4c6f636b696e67506f6f6c3a20736c61736820616d6f756e7420746f6f20736d60448201527f616c6c0000000000000000000000000000000000000000000000000000000000606482015260840161046c565b82606c60008282546110639190611b21565b909155505060655461107f906001600160a01b03168b8561143f565b896001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd846040516110ba91815260200190565b60405180910390a250505050505050505050565b6110d66114ed565b6127108111156111285760405162461bcd60e51b815260206004820181905260248201527f4c6f636b696e67506f6f6c3a20696e76616c696420736c61736820726174696f604482015260640161046c565b606780549082905560408051828152602081018490527fa050ce4cdeae150b5a5ed4d137e6dd1f51970954cf77286a2641e543921a3b28910161093f565b600054610100900460ff16158080156111865750600054600160ff909116105b806111a05750303b1580156111a0575060005460ff166001145b6112125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161046c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561127057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611278611608565b61128187611547565b61271060675411156112d55760405162461bcd60e51b815260206004820181905260248201527f4c6f636b696e67506f6f6c3a20696e76616c696420736c61736820726174696f604482015260640161046c565b606580546001600160a01b038089167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560668790556067869055606980548684169083161790556068805492851692909116919091179055801561139757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6113a86114ed565b6001600160a01b0381166114245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161046c565b61142d81611547565b50565b6001600160a01b03163b151590565b6040516001600160a01b0383166024820152604481018290526114e89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261168d565b505050565b6033546001600160a01b031633146108fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046c565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526116029085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611484565b50505050565b600054610100900460ff166116855760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161046c565b6108fb611772565b60006116e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117f89092919063ffffffff16565b8051909150156114e857808060200190518101906117009190611ab8565b6114e85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161046c565b600054610100900460ff166117ef5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161046c565b6108fb33611547565b60606118078484600085611811565b90505b9392505050565b6060824710156118895760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161046c565b6001600160a01b0385163b6118e05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161046c565b600080866001600160a01b031685876040516118fc9190611df0565b60006040518083038185875af1925050503d8060008114611939576040519150601f19603f3d011682016040523d82523d6000602084013e61193e565b606091505b509150915061194e828286611959565b979650505050505050565b6060831561196857508161180a565b8251156119785782518084602001fd5b8160405162461bcd60e51b815260040161046c9190611aa5565b6000602082840312156119a457600080fd5b5035919050565b6001600160a01b038116811461142d57600080fd5b6000602082840312156119d257600080fd5b813561180a816119ab565b60008060008060008060c087890312156119f657600080fd5b8635611a01816119ab565b95506020870135611a11816119ab565b945060408701359350606087013592506080870135611a2f816119ab565b915060a0870135611a3f816119ab565b809150509295509295509295565b60005b83811015611a68578181015183820152602001611a50565b838111156116025750506000910152565b60008151808452611a91816020860160208601611a4d565b601f01601f19169290920160200192915050565b60208152600061180a6020830184611a79565b600060208284031215611aca57600080fd5b8151801515811461180a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611b1c57611b1c611ada565b500190565b600082821015611b3357611b33611ada565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006000198203611ba957611ba9611ada565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215611bf457600080fd5b835163ffffffff81168114611c0857600080fd5b60208501516040860151919450925067ffffffffffffffff80821115611c2d57600080fd5b818601915086601f830112611c4157600080fd5b815181811115611c5357611c53611bb0565b604051601f8201601f19908116603f01168101908382118183101715611c7b57611c7b611bb0565b81604052828152896020848701011115611c9457600080fd5b611ca5836020830160208801611a4d565b80955050505050509250925092565b600060208284031215611cc657600080fd5b815161180a816119ab565b63ffffffff84168152826020820152606060408201526000611cf66060830184611a79565b95945050505050565b60008060408385031215611d1257600080fd5b8251611d1d816119ab565b602084015190925067ffffffffffffffff81168114611d3b57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215611d8757600080fd5b81516003811061180a57600080fd5b6000816000190483118215151615611db057611db0611ada565b500290565b600082611deb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251611e02818460208701611a4d565b919091019291505056fea264697066735822122021071dc923217c8ac24347c1c02f68469a874c91cb09ee59d3ba06a0903bf7df64736f6c634300080f0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c80637a9262a2116100d8578063ce3518aa1161008c578063dfd9826911610066578063dfd982691461033d578063f2fde38b14610386578063fc0c546a1461039957600080fd5b8063ce3518aa1461030e578063d27ca89b14610321578063d2d101621461032a57600080fd5b80638da5cb5b116100bd5780638da5cb5b146102d7578063b6b55f25146102e8578063c96be4cb146102fb57600080fd5b80637a9262a2146102555780638c661b5d1461029157600080fd5b80636198e3391161012f578063715018a611610114578063715018a614610227578063779972da1461022f57806379502c551461024257600080fd5b80636198e339146101f457806370a082311461020757600080fd5b80633fd8b02f116101605780633fd8b02f146101c157806356891412146101d85780635e7ab842146101e157600080fd5b80632e1a7d4d1461017c5780633ab76e9f14610191575b600080fd5b61018f61018a366004611992565b6103ac565b005b6069546101a4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ca60665481565b6040519081526020016101b8565b6101ca606c5481565b6101a46101ef366004611992565b6107da565b61018f610202366004611992565b610804565b6101ca6102153660046119c0565b606b6020526000908152604090205481565b61018f6108e9565b61018f61023d366004611992565b6108fd565b6068546101a4906001600160a01b031681565b61027c6102633660046119c0565b606a602052600090815260409020805460019091015482565b604080519283526020830191909152016101b8565b61027c61029f3660046119c0565b6001600160a01b03166000908152606a6020908152604091829020825180840190935280548084526001909101549290910182905291565b6033546001600160a01b03166101a4565b61018f6102f6366004611992565b61094b565b61018f6103093660046119c0565b610ae4565b61018f61031c366004611992565b6110ce565b6101ca60675481565b61018f6103383660046119dd565b611166565b6103796040518060400160405280601281526020017f4469737075746547616d65466163746f7279000000000000000000000000000081525081565b6040516101b89190611aa5565b61018f6103943660046119c0565b6113a0565b6065546101a4906001600160a01b031681565b606860009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104239190611ab8565b156104755760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b696e67506f6f6c3a20636f6e7472616374206973207061757365640060448201526064015b60405180910390fd5b336000908152606a6020526040902080548211156104fb5760405162461bcd60e51b815260206004820152602d60248201527f4c6f636b696e67506f6f6c3a20696e73756666696369656e7420756e6c6f636b60448201527f6564207769746864726177616c00000000000000000000000000000000000000606482015260840161046c565b60008160010154116105745760405162461bcd60e51b8152602060048201526024808201527f4c6f636b696e67506f6f6c3a207769746864726177616c206e6f7420756e6c6f60448201527f636b656400000000000000000000000000000000000000000000000000000000606482015260840161046c565b4260665482600101546105879190611b09565b11156105fb5760405162461bcd60e51b815260206004820152602560248201527f4c6f636b696e67506f6f6c3a207769746864726177616c2064656c6179206e6f60448201527f74206d6574000000000000000000000000000000000000000000000000000000606482015260840161046c565b8181600001600082825461060f9190611b21565b9091555050336000908152606b602052604081208054849290610633908490611b21565b9250508190555081606c600082825461064c9190611b21565b9091555050336000908152606b602052604081205490036107895760005b606d5481101561078757336001600160a01b0316606d828154811061069157610691611b38565b6000918252602090912001546001600160a01b03160361077557606d80546106bb90600190611b21565b815481106106cb576106cb611b38565b600091825260209091200154606d80546001600160a01b0390921691839081106106f7576106f7611b38565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d80548061073657610736611b67565b600082815260209020810160001990810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055610787565b8061077f81611b96565b91505061066a565b505b6065546107a0906001600160a01b0316338461143f565b60405182815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050565b606d81815481106107ea57600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152606b60205260409020548111156108895760405162461bcd60e51b815260206004820152602160248201527f4c6f636b696e67506f6f6c3a20696e73756666696369656e742062616c616e6360448201527f6500000000000000000000000000000000000000000000000000000000000000606482015260840161046c565b336000908152606a602052604081204260018201558054909183918391906108b2908490611b09565b909155505060405182815233907f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1906020016107ce565b6108f16114ed565b6108fb6000611547565b565b6109056114ed565b606680549082905560408051828152602081018490527f5dd7b309b7bc5010d9c96159ee535a428121d6803cb847792402fffccaf1569a91015b60405180910390a15050565b6000811161099b5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b696e67506f6f6c3a207a65726f206465706f73697400000000000000604482015260640161046c565b6065546109b3906001600160a01b03163330846115b1565b336000908152606b6020526040812080548392906109d2908490611b09565b9250508190555080606c60008282546109eb9190611b09565b9091555060009050805b606d54811015610a5157336001600160a01b0316606d8281548110610a1c57610a1c611b38565b6000918252602090912001546001600160a01b031603610a3f5760019150610a51565b80610a4981611b96565b9150506109f5565b5080610ab257606d80546001810182556000919091527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555b60405182815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c906020016107ce565b6001600160a01b038116610b3a5760405162461bcd60e51b815260206004820152601e60248201527f4c6f636b696e67506f6f6c3a20696e76616c696420726563697069656e740000604482015260640161046c565b6000606c5411610b8c5760405162461bcd60e51b815260206004820152601f60248201527f4c6f636b696e67506f6f6c3a206e6f20746f6b656e7320746f20736c61736800604482015260640161046c565b60003390506000806000836001600160a01b031663fa24f7436040518163ffffffff1660e01b8152600401600060405180830381865afa158015610bd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bfc9190810190611bdf565b606954604080518082018252601281527f4469737075746547616d65466163746f72790000000000000000000000000000602082015290517fbf40fac10000000000000000000000000000000000000000000000000000000081529497509295509093506000926001600160a01b039091169163bf40fac191610c829190600401611aa5565b602060405180830381865afa158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc39190611cb4565b90506001600160a01b038116610d415760405162461bcd60e51b815260206004820152602960248201527f4c6f636b696e67506f6f6c3a20646973707574652067616d6520666163746f7260448201527f79206e6f74207365740000000000000000000000000000000000000000000000606482015260840161046c565b6040517f5f0150cb0000000000000000000000000000000000000000000000000000000081526000906001600160a01b03831690635f0150cb90610d8d90889088908890600401611cd1565b6040805180830381865afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190611cff565b509050856001600160a01b0316816001600160a01b031614610e1b576040517f6b0f689100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001866001600160a01b031663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190611d75565b6002811115610e9057610e90611d46565b14610ec7576040517f8f8af25f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080606d805480602002602001604051908101604052809291908181526020018280548015610f2057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f02575b505083519394506000925050505b81811015610fda576000838281518110610f4a57610f4a611b38565b6020908102919091018101516001600160a01b0381166000908152606b9092526040909120549091508015610fd057600061271060675483610f8c9190611d96565b610f969190611db5565b90508015610fce57610fa88188611b09565b9650610fb48183611b21565b6001600160a01b0384166000908152606b60205260409020555b505b5050600101610f2e565b50600083116110515760405162461bcd60e51b815260206004820152602360248201527f4c6f636b696e67506f6f6c3a20736c61736820616d6f756e7420746f6f20736d60448201527f616c6c0000000000000000000000000000000000000000000000000000000000606482015260840161046c565b82606c60008282546110639190611b21565b909155505060655461107f906001600160a01b03168b8561143f565b896001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd846040516110ba91815260200190565b60405180910390a250505050505050505050565b6110d66114ed565b6127108111156111285760405162461bcd60e51b815260206004820181905260248201527f4c6f636b696e67506f6f6c3a20696e76616c696420736c61736820726174696f604482015260640161046c565b606780549082905560408051828152602081018490527fa050ce4cdeae150b5a5ed4d137e6dd1f51970954cf77286a2641e543921a3b28910161093f565b600054610100900460ff16158080156111865750600054600160ff909116105b806111a05750303b1580156111a0575060005460ff166001145b6112125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161046c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561127057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611278611608565b61128187611547565b61271060675411156112d55760405162461bcd60e51b815260206004820181905260248201527f4c6f636b696e67506f6f6c3a20696e76616c696420736c61736820726174696f604482015260640161046c565b606580546001600160a01b038089167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560668790556067869055606980548684169083161790556068805492851692909116919091179055801561139757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6113a86114ed565b6001600160a01b0381166114245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161046c565b61142d81611547565b50565b6001600160a01b03163b151590565b6040516001600160a01b0383166024820152604481018290526114e89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261168d565b505050565b6033546001600160a01b031633146108fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046c565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526116029085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611484565b50505050565b600054610100900460ff166116855760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161046c565b6108fb611772565b60006116e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117f89092919063ffffffff16565b8051909150156114e857808060200190518101906117009190611ab8565b6114e85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161046c565b600054610100900460ff166117ef5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161046c565b6108fb33611547565b60606118078484600085611811565b90505b9392505050565b6060824710156118895760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161046c565b6001600160a01b0385163b6118e05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161046c565b600080866001600160a01b031685876040516118fc9190611df0565b60006040518083038185875af1925050503d8060008114611939576040519150601f19603f3d011682016040523d82523d6000602084013e61193e565b606091505b509150915061194e828286611959565b979650505050505050565b6060831561196857508161180a565b8251156119785782518084602001fd5b8160405162461bcd60e51b815260040161046c9190611aa5565b6000602082840312156119a457600080fd5b5035919050565b6001600160a01b038116811461142d57600080fd5b6000602082840312156119d257600080fd5b813561180a816119ab565b60008060008060008060c087890312156119f657600080fd5b8635611a01816119ab565b95506020870135611a11816119ab565b945060408701359350606087013592506080870135611a2f816119ab565b915060a0870135611a3f816119ab565b809150509295509295509295565b60005b83811015611a68578181015183820152602001611a50565b838111156116025750506000910152565b60008151808452611a91816020860160208601611a4d565b601f01601f19169290920160200192915050565b60208152600061180a6020830184611a79565b600060208284031215611aca57600080fd5b8151801515811461180a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611b1c57611b1c611ada565b500190565b600082821015611b3357611b33611ada565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006000198203611ba957611ba9611ada565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215611bf457600080fd5b835163ffffffff81168114611c0857600080fd5b60208501516040860151919450925067ffffffffffffffff80821115611c2d57600080fd5b818601915086601f830112611c4157600080fd5b815181811115611c5357611c53611bb0565b604051601f8201601f19908116603f01168101908382118183101715611c7b57611c7b611bb0565b81604052828152896020848701011115611c9457600080fd5b611ca5836020830160208801611a4d565b80955050505050509250925092565b600060208284031215611cc657600080fd5b815161180a816119ab565b63ffffffff84168152826020820152606060408201526000611cf66060830184611a79565b95945050505050565b60008060408385031215611d1257600080fd5b8251611d1d816119ab565b602084015190925067ffffffffffffffff81168114611d3b57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215611d8757600080fd5b81516003811061180a57600080fd5b6000816000190483118215151615611db057611db0611ada565b500290565b600082611deb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251611e02818460208701611a4d565b919091019291505056fea264697066735822122021071dc923217c8ac24347c1c02f68469a874c91cb09ee59d3ba06a0903bf7df64736f6c634300080f0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
