@perp/hottub-deployments
Version:
Perpetual Protocol Hot Tub contract artifacts (ABIs) and deployed addresses
462 lines (461 loc) • 46.9 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "KtbArbitrageur",
"sourceName": "contracts/KtbArbitrageur.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "kantabanVault",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "enum IKtbArbitrageurStruct.ArbitrageType",
"name": "arbitrageType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "profit",
"type": "uint256"
}
],
"name": "ArbitrageWithType",
"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": "address",
"name": "ktbArbitrageurDispatcher",
"type": "address"
}
],
"name": "UpdateKtbArbitrageurDispatcher",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "maxUsdcDepeggedDeviation",
"type": "uint256"
}
],
"name": "UpdateMaxUsdcDepeggedDeviation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "enable",
"type": "bool"
}
],
"name": "UpdateWhitelistedCaller",
"type": "event"
},
{
"inputs": [],
"name": "ONE_INCH_AGGREGATION_ROUTER_V5",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "USDC_USD_CHAINLINK_AGGREGATOR",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "kantabanVault",
"type": "address"
},
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "enum IKtbArbitrageurStruct.ArbitrageType",
"name": "arbitrageType",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "callData",
"type": "bytes"
}
],
"name": "arbitrage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "candidate",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "kantabanVault",
"type": "address"
},
{
"internalType": "uint256",
"name": "reducedPositionSizeAbs",
"type": "uint256"
}
],
"name": "deleverage",
"outputs": [
{
"internalType": "int256",
"name": "pnl",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getKtbArbitrageurDispatcher",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMaxUsdcDepeggedDeviation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "ktbArbitrageurDispatcherArg",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "caller",
"type": "address"
}
],
"name": "isWhitelistedCaller",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"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": "address",
"name": "arbitrageur",
"type": "address"
},
{
"internalType": "address",
"name": "kantabanVault",
"type": "address"
},
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "enum IKtbArbitrageurStruct.ArbitrageType",
"name": "arbitrageType",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "oneInchTxData",
"type": "bytes"
}
],
"name": "revertArbitrageFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "arbitrageur",
"type": "address"
},
{
"internalType": "address",
"name": "kantabanVault",
"type": "address"
},
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
}
],
"name": "revertSwapOnKtbFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "ktbArbitrageurDispatcherArg",
"type": "address"
}
],
"name": "setKtbArbitrageurDispatcher",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "maxUsdcDepeggedDeviationArg",
"type": "uint256"
}
],
"name": "setMaxUsdcDepeggedDeviation",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "setOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "whitelistedCallerArg",
"type": "address"
},
{
"internalType": "bool",
"name": "enable",
"type": "bool"
}
],
"name": "setWhitelistedCaller",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdrawToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b506123dc806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637841729f116100ad5780639e281a98116100715780639e281a9814610213578063bc5920ba14610226578063c4d66de81461022e578063cabfa28414610241578063cb5c29fe1461026157610121565b80637841729f146101d55780638da5cb5b146101e857806395bc5259146101f0578063962d1aec146101f85780639c74e3ce1461020b57610121565b806317f1f641116100f457806317f1f6411461018a5780632681b6d91461019f5780636146a503146101b25780636c8381f8146101c5578063715018a6146101cd57610121565b806307c4902f146101265780630a93a3191461014f5780630f05552b1461016457806313af403514610177575b600080fd5b610139610134366004611f48565b610269565b6040516101469190612126565b60405180910390f35b61016261015d366004611d8b565b6103a0565b005b610162610172366004611de6565b6103c6565b610162610185366004611d71565b6103d8565b610192610533565b604051610146919061203d565b6101396101ad366004611e84565b61054b565b6101626101c0366004611f12565b6105ec565b6101926106ea565b6101626106f9565b6101626101e3366004611fa5565b6107ac565b61019261086c565b61019261087b565b610162610206366004611d71565b610893565b610139610973565b610162610221366004611f48565b610979565b6101626109ec565b61016261023c366004611d71565b610aea565b61025461024f366004611d71565b610bbc565b604051610146919061211b565b610192610bde565b6000600260675414156102c3576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002606755609960006102d4610bf2565b6001600160a01b0316815260208101919091526040016000205460ff166103165760405162461bcd60e51b815260040161030d906121ad565b60405180910390fd5b604051634fed5f6160e11b81526001600160a01b03841690639fdabec290610342908590600401612126565b602060405180830381600087803b15801561035c57600080fd5b505af1158015610370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103949190611f8d565b60016067559392505050565b6103ab838683610bf6565b60006103b985858585610d37565b9050604051818152602081fd5b60006103b98989898989898989610e77565b6103e0610bf2565b6001600160a01b03166103f161086c565b6001600160a01b031614610435576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610479576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104c5576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610511576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b731111111254eeb25477b68fb85ed929f73a96058281565b6000600260675414156105a5576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002606755333281146105ca5760405162461bcd60e51b815260040161030d906122a1565b6105da818a8a8a8a8a8a8a610e77565b60016067559998505050505050505050565b6105f4610bf2565b6001600160a01b031661060561086c565b6001600160a01b031614610649576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03821660009081526099602052604090205460ff16151581151514156106885760405162461bcd60e51b815260040161030d90612150565b6001600160a01b03821660009081526099602052604090819020805460ff1916831515179055517f1cd0d78be338f23047fa36d31306e438ebe558150d27602894e338cd61cac917906106de90849084906120e7565b60405180910390a15050565b6034546001600160a01b031690565b610701610bf2565b6001600160a01b031661071261086c565b6001600160a01b031614610756576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b6107b4610bf2565b6001600160a01b03166107c561086c565b6001600160a01b031614610809576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6305f5e100811061082c5760405162461bcd60e51b815260040161030d9061212f565b609a8190556040517f9cb86d07b0fd4ac112413803c0e90615a24863b415b49a07aa3b14aeb9105e5b90610861908390612126565b60405180910390a150565b6033546001600160a01b031690565b7316a9fa2fda030272ce99b29cf780dfa30361e0f381565b61089b610bf2565b6001600160a01b03166108ac61086c565b6001600160a01b0316146108f0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609b546001600160a01b038281166101009092041614156109235760405162461bcd60e51b815260040161030d90612150565b609b8054610100600160a81b0319166101006001600160a01b038416021790556040517f5eee7d6783e7e832fc04afbfda4eb6580f886e396594b76c08cba09ce7dd55bb9061086190839061203d565b609a5490565b610981610bf2565b6001600160a01b031661099261086c565b6001600160a01b0316146109d6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6109e8826109e261086c565b83610fea565b5050565b6034546001600160a01b0316610a31576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610a39610bf2565b6034546001600160a01b03908116911614610a84576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff1680610b035750610b03611041565b80610b11575060005460ff16155b610b4c5760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff16158015610b77576000805460ff1961ff0019909116610100171660011790555b610b7f611052565b610b87611154565b609b8054610100600160a81b0319166101006001600160a01b0385160217905580156109e8576000805461ff00191690555050565b6001600160a01b03811660009081526099602052604090205460ff165b919050565b609b5461010090046001600160a01b031690565b3390565b6040516370a0823160e01b81526000906001600160a01b038516906370a0823190610c2590309060040161203d565b60206040518083038186803b158015610c3d57600080fd5b505afa158015610c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c759190611f8d565b9050610c83848430856111fd565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190610cb290309060040161203d565b60206040518083038186803b158015610cca57600080fd5b505afa158015610cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d029190611f8d565b90508181118015610d14575082828203145b610d305760405162461bcd60e51b815260040161030d90612262565b5050505050565b60405163095ea7b360e01b81526000906001600160a01b0385169063095ea7b390610d689088908690600401612102565b602060405180830381600087803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dba9190611f71565b506040805160e0810182526001600160a01b0386811682528581166020830152308284015242606083015260808201859052600060a0830181905260c0830152915163139ed81360e31b815291871691639cf6c09891610e1c916004016122c1565b602060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6e9190611f8d565b95945050505050565b6000610e8161125d565b610e8c878a87610bf6565b600080856003811115610e9b57fe5b1415610ec6576000610eaf8a8a8a8a610d37565b9050610ebe888a8388886113d8565b915050610f63565b6001856003811115610ed457fe5b1415610ef7576000610ee989898988886113d8565b9050610ebe8a898b84610d37565b6002856003811115610f0557fe5b1415610f1a576000610ee989898988886114fa565b6003856003811115610f2857fe5b1415610f4b576000610f3c8a8a8a8a610d37565b9050610ebe888a8388886114fa565b60405162461bcd60e51b815260040161030d906121eb565b858111610f825760405162461bcd60e51b815260040161030d9061218e565b610f8d888b88610fea565b858103610f9b898b83610fea565b7fbb8c6292da6c38136ca2b564c8f93825c350254b7a45a70847474a555b4284b18a8a8a8a8a86604051610fd496959493929190612051565b60405180910390a19a9950505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261103c90849061173d565b505050565b600061104c306117ee565b15905090565b600054610100900460ff168061106b575061106b611041565b80611079575060005460ff16155b6110b45760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff161580156110df576000805460ff1961ff0019909116610100171660011790555b6110e76117f4565b60006110f1610bf2565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611151576000805461ff00191690555b50565b600054610100900460ff168061116d575061116d611041565b8061117b575060005460ff16155b6111b65760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff161580156111e1576000805460ff1961ff0019909116610100171660011790555b6111e9611889565b8015611151576000805461ff001916905550565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261125790859061173d565b50505050565b60007316a9fa2fda030272ce99b29cf780dfa30361e0f390506000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b157600080fd5b505afa1580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e9919061200c565b90508060ff1660081461130e5760405162461bcd60e51b815260040161030d90612282565b6000826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561134957600080fd5b505afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113819190611fbd565b50505091505060008112156113a85760405162461bcd60e51b815260040161030d9061216f565b609a546113ba826305f5e1000361192f565b111561103c5760405162461bcd60e51b815260040161030d906121cc565b609b5460405163095ea7b360e01b81526000916001600160a01b036101009091048116919088169063095ea7b3906114169084908990600401612102565b602060405180830381600087803b15801561143057600080fd5b505af1158015611444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114689190611f71565b5060405163f4427f9360e01b81526001600160a01b0382169063f4427f939061149d908a908a908a908a908a90600401612096565b602060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190611f8d565b979650505050505050565b60405163095ea7b360e01b81526000906001600160a01b0387169063095ea7b39061153f90731111111254eeb25477b68fb85ed929f73a960582908890600401612102565b602060405180830381600087803b15801561155957600080fd5b505af115801561156d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115919190611f71565b506040516370a0823160e01b81526000906001600160a01b038716906370a08231906115c190309060040161203d565b60206040518083038186803b1580156115d957600080fd5b505afa1580156115ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116119190611f8d565b90506000731111111254eeb25477b68fb85ed929f73a9605826001600160a01b03166000868660405161164592919061202d565b60006040518083038185875af1925050503d8060008114611682576040519150601f19603f3d011682016040523d82523d6000602084013e611687565b606091505b50509050806116a85760405162461bcd60e51b815260040161030d9061220b565b600061173083896001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016116da919061203d565b60206040518083038186803b1580156116f257600080fd5b505afa158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190611f8d565b9061195e565b9998505050505050505050565b6000611792826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119bb9092919063ffffffff16565b80519091501561103c578080602001905160208110156117b157600080fd5b505161103c5760405162461bcd60e51b815260040180806020018281038252602a81526020018061237d602a913960400191505060405180910390fd5b3b151590565b600054610100900460ff168061180d575061180d611041565b8061181b575060005460ff16155b6118565760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff16158015611881576000805460ff1961ff0019909116610100171660011790555b6111e96119d4565b600054610100900460ff16806118a257506118a2611041565b806118b0575060005460ff16155b6118eb5760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff16158015611916576000805460ff1961ff0019909116610100171660011790555b60016067558015611151576000805461ff001916905550565b60008082121561194f5761194a61194583611a74565b611aa0565b611958565b61195882611aa0565b92915050565b6000828211156119b5576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60606119ca8484600085611afb565b90505b9392505050565b600054610100900460ff16806119ed57506119ed611041565b806119fb575060005460ff16155b611a365760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff161580156111e9576000805460ff1961ff0019909116610100171660011790558015611151576000805461ff001916905550565b6000600160ff1b8213611a995760405162461bcd60e51b815260040161030d9061222b565b5060000390565b600080821215611af7576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b606082471015611b3c5760405162461bcd60e51b81526004018080602001828103825260268152602001806123296026913960400191505060405180910390fd5b611b45856117ee565b611b96576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310611bd45780518252601f199092019160209182019101611bb5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611c36576040519150601f19603f3d011682016040523d82523d6000602084013e611c3b565b606091505b50915091506114ef82828660608315611c555750816119cd565b825115611c655782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611caf578181015183820152602001611c97565b50505050905090810190601f168015611cdc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b80356001600160a01b0381168114610bd957600080fd5b60008083601f840112611d12578182fd5b50813567ffffffffffffffff811115611d29578182fd5b602083019150836020828501011115611d4157600080fd5b9250929050565b803560048110610bd957600080fd5b805169ffffffffffffffffffff81168114610bd957600080fd5b600060208284031215611d82578081fd5b6119cd82611cea565b600080600080600060a08688031215611da2578081fd5b611dab86611cea565b9450611db960208701611cea565b9350611dc760408701611cea565b9250611dd560608701611cea565b949793965091946080013592915050565b60008060008060008060008060e0898b031215611e01578283fd5b611e0a89611cea565b9750611e1860208a01611cea565b9650611e2660408a01611cea565b9550611e3460608a01611cea565b945060808901359350611e4960a08a01611d48565b925060c089013567ffffffffffffffff811115611e64578283fd5b611e708b828c01611d01565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a031215611e9e578283fd5b611ea788611cea565b9650611eb560208901611cea565b9550611ec360408901611cea565b945060608801359350611ed860808901611d48565b925060a088013567ffffffffffffffff811115611ef3578283fd5b611eff8a828b01611d01565b989b979a50959850939692959293505050565b60008060408385031215611f24578182fd5b611f2d83611cea565b91506020830135611f3d8161231a565b809150509250929050565b60008060408385031215611f5a578182fd5b611f6383611cea565b946020939093013593505050565b600060208284031215611f82578081fd5b81516119cd8161231a565b600060208284031215611f9e578081fd5b5051919050565b600060208284031215611fb6578081fd5b5035919050565b600080600080600060a08688031215611fd4578081fd5b611fdd86611d57565b945060208601519350604086015192506060860151915061200060808701611d57565b90509295509295909350565b60006020828403121561201d578081fd5b815160ff811681146119cd578182fd5b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c081016004841061208257fe5b608082019390935260a00152949350505050565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a084013781830160a090810191909152601f909201601f19160101949350505050565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6020808252600790820152664b415f4944445560c81b604082015260600190565b60208082526005908201526425a0afa9ab60d91b604082015260600190565b60208082526005908201526404b415f49560dc1b604082015260600190565b60208082526005908201526404b415f4e560dc1b604082015260600190565b6020808252600590820152644b415f494360d81b604082015260600190565b60208082526005908201526412d057d55160da1b604082015260600190565b60208082526006908201526512d057d5505560d21b604082015260600190565b60208082526006908201526525a0afa7a9a360d11b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b6020808252600690820152654b415f49424160d01b604082015260600190565b6020808252600590820152644b415f444360d81b604082015260600190565b6020808252600690820152654b415f43414360d01b604082015260600190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151908301526080808401519083015260a0838101519083015260c092830151169181019190915260e00190565b801515811461115157600080fdfe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122055c7e66beeb50e5cd83ff12eab85d9832618876b1957f2baf507984f08ed804064736f6c63430007060033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637841729f116100ad5780639e281a98116100715780639e281a9814610213578063bc5920ba14610226578063c4d66de81461022e578063cabfa28414610241578063cb5c29fe1461026157610121565b80637841729f146101d55780638da5cb5b146101e857806395bc5259146101f0578063962d1aec146101f85780639c74e3ce1461020b57610121565b806317f1f641116100f457806317f1f6411461018a5780632681b6d91461019f5780636146a503146101b25780636c8381f8146101c5578063715018a6146101cd57610121565b806307c4902f146101265780630a93a3191461014f5780630f05552b1461016457806313af403514610177575b600080fd5b610139610134366004611f48565b610269565b6040516101469190612126565b60405180910390f35b61016261015d366004611d8b565b6103a0565b005b610162610172366004611de6565b6103c6565b610162610185366004611d71565b6103d8565b610192610533565b604051610146919061203d565b6101396101ad366004611e84565b61054b565b6101626101c0366004611f12565b6105ec565b6101926106ea565b6101626106f9565b6101626101e3366004611fa5565b6107ac565b61019261086c565b61019261087b565b610162610206366004611d71565b610893565b610139610973565b610162610221366004611f48565b610979565b6101626109ec565b61016261023c366004611d71565b610aea565b61025461024f366004611d71565b610bbc565b604051610146919061211b565b610192610bde565b6000600260675414156102c3576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002606755609960006102d4610bf2565b6001600160a01b0316815260208101919091526040016000205460ff166103165760405162461bcd60e51b815260040161030d906121ad565b60405180910390fd5b604051634fed5f6160e11b81526001600160a01b03841690639fdabec290610342908590600401612126565b602060405180830381600087803b15801561035c57600080fd5b505af1158015610370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103949190611f8d565b60016067559392505050565b6103ab838683610bf6565b60006103b985858585610d37565b9050604051818152602081fd5b60006103b98989898989898989610e77565b6103e0610bf2565b6001600160a01b03166103f161086c565b6001600160a01b031614610435576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b038116610479576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156104c5576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610511576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b731111111254eeb25477b68fb85ed929f73a96058281565b6000600260675414156105a5576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002606755333281146105ca5760405162461bcd60e51b815260040161030d906122a1565b6105da818a8a8a8a8a8a8a610e77565b60016067559998505050505050505050565b6105f4610bf2565b6001600160a01b031661060561086c565b6001600160a01b031614610649576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03821660009081526099602052604090205460ff16151581151514156106885760405162461bcd60e51b815260040161030d90612150565b6001600160a01b03821660009081526099602052604090819020805460ff1916831515179055517f1cd0d78be338f23047fa36d31306e438ebe558150d27602894e338cd61cac917906106de90849084906120e7565b60405180910390a15050565b6034546001600160a01b031690565b610701610bf2565b6001600160a01b031661071261086c565b6001600160a01b031614610756576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b6107b4610bf2565b6001600160a01b03166107c561086c565b6001600160a01b031614610809576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6305f5e100811061082c5760405162461bcd60e51b815260040161030d9061212f565b609a8190556040517f9cb86d07b0fd4ac112413803c0e90615a24863b415b49a07aa3b14aeb9105e5b90610861908390612126565b60405180910390a150565b6033546001600160a01b031690565b7316a9fa2fda030272ce99b29cf780dfa30361e0f381565b61089b610bf2565b6001600160a01b03166108ac61086c565b6001600160a01b0316146108f0576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609b546001600160a01b038281166101009092041614156109235760405162461bcd60e51b815260040161030d90612150565b609b8054610100600160a81b0319166101006001600160a01b038416021790556040517f5eee7d6783e7e832fc04afbfda4eb6580f886e396594b76c08cba09ce7dd55bb9061086190839061203d565b609a5490565b610981610bf2565b6001600160a01b031661099261086c565b6001600160a01b0316146109d6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6109e8826109e261086c565b83610fea565b5050565b6034546001600160a01b0316610a31576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b610a39610bf2565b6034546001600160a01b03908116911614610a84576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b600054610100900460ff1680610b035750610b03611041565b80610b11575060005460ff16155b610b4c5760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff16158015610b77576000805460ff1961ff0019909116610100171660011790555b610b7f611052565b610b87611154565b609b8054610100600160a81b0319166101006001600160a01b0385160217905580156109e8576000805461ff00191690555050565b6001600160a01b03811660009081526099602052604090205460ff165b919050565b609b5461010090046001600160a01b031690565b3390565b6040516370a0823160e01b81526000906001600160a01b038516906370a0823190610c2590309060040161203d565b60206040518083038186803b158015610c3d57600080fd5b505afa158015610c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c759190611f8d565b9050610c83848430856111fd565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190610cb290309060040161203d565b60206040518083038186803b158015610cca57600080fd5b505afa158015610cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d029190611f8d565b90508181118015610d14575082828203145b610d305760405162461bcd60e51b815260040161030d90612262565b5050505050565b60405163095ea7b360e01b81526000906001600160a01b0385169063095ea7b390610d689088908690600401612102565b602060405180830381600087803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dba9190611f71565b506040805160e0810182526001600160a01b0386811682528581166020830152308284015242606083015260808201859052600060a0830181905260c0830152915163139ed81360e31b815291871691639cf6c09891610e1c916004016122c1565b602060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6e9190611f8d565b95945050505050565b6000610e8161125d565b610e8c878a87610bf6565b600080856003811115610e9b57fe5b1415610ec6576000610eaf8a8a8a8a610d37565b9050610ebe888a8388886113d8565b915050610f63565b6001856003811115610ed457fe5b1415610ef7576000610ee989898988886113d8565b9050610ebe8a898b84610d37565b6002856003811115610f0557fe5b1415610f1a576000610ee989898988886114fa565b6003856003811115610f2857fe5b1415610f4b576000610f3c8a8a8a8a610d37565b9050610ebe888a8388886114fa565b60405162461bcd60e51b815260040161030d906121eb565b858111610f825760405162461bcd60e51b815260040161030d9061218e565b610f8d888b88610fea565b858103610f9b898b83610fea565b7fbb8c6292da6c38136ca2b564c8f93825c350254b7a45a70847474a555b4284b18a8a8a8a8a86604051610fd496959493929190612051565b60405180910390a19a9950505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261103c90849061173d565b505050565b600061104c306117ee565b15905090565b600054610100900460ff168061106b575061106b611041565b80611079575060005460ff16155b6110b45760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff161580156110df576000805460ff1961ff0019909116610100171660011790555b6110e76117f4565b60006110f1610bf2565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611151576000805461ff00191690555b50565b600054610100900460ff168061116d575061116d611041565b8061117b575060005460ff16155b6111b65760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff161580156111e1576000805460ff1961ff0019909116610100171660011790555b6111e9611889565b8015611151576000805461ff001916905550565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261125790859061173d565b50505050565b60007316a9fa2fda030272ce99b29cf780dfa30361e0f390506000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b157600080fd5b505afa1580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e9919061200c565b90508060ff1660081461130e5760405162461bcd60e51b815260040161030d90612282565b6000826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561134957600080fd5b505afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113819190611fbd565b50505091505060008112156113a85760405162461bcd60e51b815260040161030d9061216f565b609a546113ba826305f5e1000361192f565b111561103c5760405162461bcd60e51b815260040161030d906121cc565b609b5460405163095ea7b360e01b81526000916001600160a01b036101009091048116919088169063095ea7b3906114169084908990600401612102565b602060405180830381600087803b15801561143057600080fd5b505af1158015611444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114689190611f71565b5060405163f4427f9360e01b81526001600160a01b0382169063f4427f939061149d908a908a908a908a908a90600401612096565b602060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190611f8d565b979650505050505050565b60405163095ea7b360e01b81526000906001600160a01b0387169063095ea7b39061153f90731111111254eeb25477b68fb85ed929f73a960582908890600401612102565b602060405180830381600087803b15801561155957600080fd5b505af115801561156d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115919190611f71565b506040516370a0823160e01b81526000906001600160a01b038716906370a08231906115c190309060040161203d565b60206040518083038186803b1580156115d957600080fd5b505afa1580156115ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116119190611f8d565b90506000731111111254eeb25477b68fb85ed929f73a9605826001600160a01b03166000868660405161164592919061202d565b60006040518083038185875af1925050503d8060008114611682576040519150601f19603f3d011682016040523d82523d6000602084013e611687565b606091505b50509050806116a85760405162461bcd60e51b815260040161030d9061220b565b600061173083896001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016116da919061203d565b60206040518083038186803b1580156116f257600080fd5b505afa158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190611f8d565b9061195e565b9998505050505050505050565b6000611792826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119bb9092919063ffffffff16565b80519091501561103c578080602001905160208110156117b157600080fd5b505161103c5760405162461bcd60e51b815260040180806020018281038252602a81526020018061237d602a913960400191505060405180910390fd5b3b151590565b600054610100900460ff168061180d575061180d611041565b8061181b575060005460ff16155b6118565760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff16158015611881576000805460ff1961ff0019909116610100171660011790555b6111e96119d4565b600054610100900460ff16806118a257506118a2611041565b806118b0575060005460ff16155b6118eb5760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff16158015611916576000805460ff1961ff0019909116610100171660011790555b60016067558015611151576000805461ff001916905550565b60008082121561194f5761194a61194583611a74565b611aa0565b611958565b61195882611aa0565b92915050565b6000828211156119b5576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60606119ca8484600085611afb565b90505b9392505050565b600054610100900460ff16806119ed57506119ed611041565b806119fb575060005460ff16155b611a365760405162461bcd60e51b815260040180806020018281038252602e81526020018061234f602e913960400191505060405180910390fd5b600054610100900460ff161580156111e9576000805460ff1961ff0019909116610100171660011790558015611151576000805461ff001916905550565b6000600160ff1b8213611a995760405162461bcd60e51b815260040161030d9061222b565b5060000390565b600080821215611af7576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b606082471015611b3c5760405162461bcd60e51b81526004018080602001828103825260268152602001806123296026913960400191505060405180910390fd5b611b45856117ee565b611b96576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310611bd45780518252601f199092019160209182019101611bb5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611c36576040519150601f19603f3d011682016040523d82523d6000602084013e611c3b565b606091505b50915091506114ef82828660608315611c555750816119cd565b825115611c655782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611caf578181015183820152602001611c97565b50505050905090810190601f168015611cdc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b80356001600160a01b0381168114610bd957600080fd5b60008083601f840112611d12578182fd5b50813567ffffffffffffffff811115611d29578182fd5b602083019150836020828501011115611d4157600080fd5b9250929050565b803560048110610bd957600080fd5b805169ffffffffffffffffffff81168114610bd957600080fd5b600060208284031215611d82578081fd5b6119cd82611cea565b600080600080600060a08688031215611da2578081fd5b611dab86611cea565b9450611db960208701611cea565b9350611dc760408701611cea565b9250611dd560608701611cea565b949793965091946080013592915050565b60008060008060008060008060e0898b031215611e01578283fd5b611e0a89611cea565b9750611e1860208a01611cea565b9650611e2660408a01611cea565b9550611e3460608a01611cea565b945060808901359350611e4960a08a01611d48565b925060c089013567ffffffffffffffff811115611e64578283fd5b611e708b828c01611d01565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a031215611e9e578283fd5b611ea788611cea565b9650611eb560208901611cea565b9550611ec360408901611cea565b945060608801359350611ed860808901611d48565b925060a088013567ffffffffffffffff811115611ef3578283fd5b611eff8a828b01611d01565b989b979a50959850939692959293505050565b60008060408385031215611f24578182fd5b611f2d83611cea565b91506020830135611f3d8161231a565b809150509250929050565b60008060408385031215611f5a578182fd5b611f6383611cea565b946020939093013593505050565b600060208284031215611f82578081fd5b81516119cd8161231a565b600060208284031215611f9e578081fd5b5051919050565b600060208284031215611fb6578081fd5b5035919050565b600080600080600060a08688031215611fd4578081fd5b611fdd86611d57565b945060208601519350604086015192506060860151915061200060808701611d57565b90509295509295909350565b60006020828403121561201d578081fd5b815160ff811681146119cd578182fd5b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c081016004841061208257fe5b608082019390935260a00152949350505050565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a084013781830160a090810191909152601f909201601f19160101949350505050565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6020808252600790820152664b415f4944445560c81b604082015260600190565b60208082526005908201526425a0afa9ab60d91b604082015260600190565b60208082526005908201526404b415f49560dc1b604082015260600190565b60208082526005908201526404b415f4e560dc1b604082015260600190565b6020808252600590820152644b415f494360d81b604082015260600190565b60208082526005908201526412d057d55160da1b604082015260600190565b60208082526006908201526512d057d5505560d21b604082015260600190565b60208082526006908201526525a0afa7a9a360d11b604082015260600190565b6020808252601c908201527f506572704d6174683a20696e76657273696f6e206f766572666c6f7700000000604082015260600190565b6020808252600690820152654b415f49424160d01b604082015260600190565b6020808252600590820152644b415f444360d81b604082015260600190565b6020808252600690820152654b415f43414360d01b604082015260600190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151908301526080808401519083015260a0838101519083015260c092830151169181019190915260e00190565b801515811461115157600080fdfe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122055c7e66beeb50e5cd83ff12eab85d9832618876b1957f2baf507984f08ed804064736f6c63430007060033",
"linkReferences": {},
"deployedLinkReferences": {}
}