0 txs
0 calls
constructor
No constructor.
functions
getAllBalance
viewfunction getAllBalance(address account, address token) view returns (tuple b)
getAllBalances
viewfunction getAllBalances(address account, address[] tokens) view returns (tuple[] balances)
getBalance
viewfunction getBalance(address account, address token) view returns (uint256 balance)
getBalances
viewfunction getBalances(address account, address[] tokens) view returns (uint256[] balances)
getExternalBalance
viewfunction getExternalBalance(address account, address token) view returns (uint256 balance)
getExternalBalances
viewfunction getExternalBalances(address account, address[] tokens) view returns (uint256[] balances)
getInternalBalance
viewfunction getInternalBalance(address account, address token) view returns (uint256 balance)
getInternalBalances
viewfunction getInternalBalances(address account, address[] tokens) view returns (uint256[] balances)
onERC1155BatchReceived
purefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) pure returns (bytes4)
onERC1155Received
purefunction onERC1155Received(address, address, uint256, uint256, bytes) pure returns (bytes4)
tokenAllowance
viewfunction tokenAllowance(address account, address spender, address token) view returns (uint256)
approveToken
payablefunction approveToken(address spender, address token, uint256 amount) payable
decreaseTokenAllowance
nonpayablefunction decreaseTokenAllowance(address spender, address token, uint256 subtractedValue) returns (bool)
increaseTokenAllowance
nonpayablefunction increaseTokenAllowance(address spender, address token, uint256 addedValue) returns (bool)
transferInternalTokenFrom
payablefunction transferInternalTokenFrom(address token, address sender, address recipient, uint256 amount, uint8 toMode) payable
transferToken
payablefunction transferToken(address token, address recipient, uint256 amount, uint8 fromMode, uint8 toMode) payable
unwrapEth
payablefunction unwrapEth(uint256 amount, uint8 mode) payable
wrapEth
payablefunction wrapEth(uint256 amount, uint8 mode) payable
events
InternalBalanceChanged
event InternalBalanceChanged(address indexed account, address indexed token, int256 delta)
TokenApproval
event TokenApproval(address indexed owner, address indexed spender, address token, uint256 amount)
TokenTransferred
event TokenTransferred(address indexed token, address indexed sender, address indexed recipient, uint256 amount, uint8 fromMode, uint8 toMode)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600e575f80fd5b5061386f8061001c5f395ff3fe6080604052600436106100e7575f3560e01c8063b6fc38f911610083578063b6fc38f91461021c578063bc197c8114610248578063bd32fac314610280578063c371472314610293578063d3f4ec6f146102b2578063d4fac45d146102c5578063da3e3397146102e4578063f23a6e61146102f7578063fdb2881114610311575f80fd5b80630bc33ce4146100eb5780631c0593651461011f5780634667fa3d146101345780636204aa43146101615780636a385ae9146101745780638a65d2e0146101a05780638e8758d8146101bf578063a98edb17146101de578063b39062e6146101fd575b5f80fd5b3480156100f6575f80fd5b5061010a610105366004612f97565b61033d565b60405190151581526020015b60405180910390f35b61013261012d366004612fe8565b610649565b005b34801561013f575f80fd5b5061015361014e366004613012565b61092c565b604051908152602001610116565b61013261016f366004613057565b6109a0565b34801561017f575f80fd5b5061019361018e36600461311b565b610c2f565b60405161011691906131c9565b3480156101ab575f80fd5b506101536101ba366004613012565b610cd0565b3480156101ca575f80fd5b506101536101d936600461320c565b610cdb565b3480156101e9575f80fd5b506101936101f836600461311b565b610cef565b348015610208575f80fd5b5061010a610217366004612f97565b610d89565b348015610227575f80fd5b5061023b61023636600461311b565b61101c565b6040516101169190613254565b348015610253575f80fd5b5061026761026236600461332d565b6110df565b6040516001600160e01b03199091168152602001610116565b61013261028e3660046133e3565b61113e565b34801561029e575f80fd5b506101936102ad36600461311b565b6113b1565b6101326102c0366004613404565b61144b565b3480156102d0575f80fd5b506101536102df366004613012565b6116fc565b6101326102f2366004612f97565b611707565b348015610302575f80fd5b50610267610262366004613458565b34801561031c575f80fd5b5061033061032b366004613012565b61197d565b60405161011691906134ce565b60c4545f908161034b6119d1565b90505f61035782611b00565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156103a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c891906134ef565b600354909150600119016103f75760405162461bcd60e51b81526004016103ee90613506565b60405180910390fd5b60026003555f61040f610408611c01565b8a8a611c4c565b90508681101561046d5760405162461bcd60e51b8152602060048201526024808201527f53696c6f3a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b60648201526084016103ee565b610489610478611c01565b8a8a610484858c611c82565b611c93565b600195505060016003558061049b5f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156104e4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050891906134ef565b146105255760405162461bcd60e51b81526004016103ee9061353d565b505f61053083611b00565b9050835f60c4015410156105565760405162461bcd60e51b81526004016103ee9061356a565b5f5b83518110156105ba57818181518110610573576105736135a1565b602002602001015183828151811061058d5761058d6135a1565b6020026020010151146105b25760405162461bcd60e51b81526004016103ee906135b5565b600101610558565b50505050505f6105c86119d1565b90505f806105d583611d0e565b915091505f5b835181101561063e578281815181106105f6576105f66135a1565b6020026020010151828281518110610610576106106135a1565b602002602001015110156106365760405162461bcd60e51b81526004016103ee906135f9565b6001016105db565b505050509392505050565b6003546001190161066c5760405162461bcd60e51b81526004016103ee90613506565b600260035560c4545f61067d6119d1565b90505f61068982611b00565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156106d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fa91906134ef565b9050610706868661210e565b61070e612135565b600154604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610755573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077991906134ef565b146107965760405162461bcd60e51b81526004016103ee9061353d565b505f6107a183611b00565b9050835f60c4015410156107f75760405162461bcd60e51b815260206004820152601e60248201527f494e563a206e6f4f7574466c6f77205374616c6b20646563726561736564000060448201526064016103ee565b5f5b835181101561089b57818181518110610814576108146135a1565b602002602001015183828151811061082e5761082e6135a1565b602002602001015111156108935760405162461bcd60e51b815260206004820152602660248201527f494e563a206e6f4f7574466c6f7720546f6b656e2062616c616e6365206465636044820152651c99585cd95960d21b60648201526084016103ee565b6001016107f9565b50505050505f6108a96119d1565b90505f806108b683611d0e565b915091505f5b835181101561091f578281815181106108d7576108d76135a1565b60200260200101518282815181106108f1576108f16135a1565b602002602001015110156109175760405162461bcd60e51b81526004016103ee906135f9565b6001016108bc565b5050600160035550505050565b6040516370a0823160e01b81525f906001600160a01b038316906370a082319061095a908690600401613630565b602060405180830381865afa158015610975573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099991906134ef565b9392505050565b600154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156109e7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0b91906134ef565b9050855f610a176119d1565b90505f610a2382611b00565b60035490915060011901610a495760405162461bcd60e51b81526004016103ee90613506565b6002600355610a6389610a5a611c01565b8a8a8a8a6121f7565b5060016003555f610a7383611b00565b90505f5b8351811015610b0d57846001600160a01b0316848281518110610a9c57610a9c6135a1565b60200260200101516001600160a01b03160315610b0557818181518110610ac557610ac56135a1565b6020026020010151838281518110610adf57610adf6135a1565b60200260200101511115610b055760405162461bcd60e51b81526004016103ee90613644565b600101610a77565b505050505080610b1a5f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610b63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8791906134ef565b14610ba45760405162461bcd60e51b81526004016103ee9061353d565b505f610bae6119d1565b90505f80610bbb83611d0e565b915091505f5b8351811015610c2457828181518110610bdc57610bdc6135a1565b6020026020010151828281518110610bf657610bf66135a1565b60200260200101511015610c1c5760405162461bcd60e51b81526004016103ee906135f9565b600101610bc1565b505050505050505050565b606081516001600160401b03811115610c4a57610c4a6130b5565b604051908082528060200260200182016040528015610c73578160200160208202803683370190505b5090505f5b8251811015610cc957610ca484848381518110610c9757610c976135a1565b60200260200101516116fc565b828281518110610cb657610cb66135a1565b6020908102919091010152600101610c78565b5092915050565b5f61099983836123ae565b5f610ce7848484611c4c565b949350505050565b606081516001600160401b03811115610d0a57610d0a6130b5565b604051908082528060200260200182016040528015610d33578160200160208202803683370190505b5090505f5b8251811015610cc957610d6484848381518110610d5757610d576135a1565b6020026020010151610cd0565b828281518110610d7657610d766135a1565b6020908102919091010152600101610d38565b60c4545f9081610d976119d1565b90505f610da382611b00565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1491906134ef565b60035490915060011901610e3a5760405162461bcd60e51b81526004016103ee90613506565b6002600355610e68610e4a611c01565b89896104848a610e62610e5b611c01565b8f8f611c4c565b906123da565b60019450600160035580610e795f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610ec2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee691906134ef565b14610f035760405162461bcd60e51b81526004016103ee9061353d565b505f610f0e83611b00565b9050835f60c401541015610f345760405162461bcd60e51b81526004016103ee9061356a565b5f5b8351811015610f9857818181518110610f5157610f516135a1565b6020026020010151838281518110610f6b57610f6b6135a1565b602002602001015114610f905760405162461bcd60e51b81526004016103ee906135b5565b600101610f36565b50505050505f610fa66119d1565b90505f80610fb383611d0e565b915091505f5b835181101561063e57828181518110610fd457610fd46135a1565b6020026020010151828281518110610fee57610fee6135a1565b602002602001015110156110145760405162461bcd60e51b81526004016103ee906135f9565b600101610fb9565b606081516001600160401b03811115611037576110376130b5565b60405190808252806020026020018201604052801561108957816020015b61107660405180606001604052805f81526020015f81526020015f81525090565b8152602001906001900390816110555790505b5090505f5b8251811015610cc9576110ba848483815181106110ad576110ad6135a1565b602002602001015161197d565b8282815181106110cc576110cc6135a1565b602090810291909101015260010161108e565b60405162461bcd60e51b815260206004820152602c60248201527f53696c6f3a2045524331313535206465706f7369747320617265206e6f74206160448201526b31b1b2b83a32b2103cb2ba1760a11b60648201525f906084016103ee565b600354600119016111615760405162461bcd60e51b81526004016103ee90613506565b60026003556006602160991b015f6111776119d1565b90505f61118382611b00565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156111d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f491906134ef565b905061120086866123e5565b600154604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015611247573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126b91906134ef565b146112885760405162461bcd60e51b81526004016103ee9061353d565b505f61129383611b00565b90505f5b835181101561132d57846001600160a01b03168482815181106112bc576112bc6135a1565b60200260200101516001600160a01b03160315611325578181815181106112e5576112e56135a1565b60200260200101518382815181106112ff576112ff6135a1565b602002602001015111156113255760405162461bcd60e51b81526004016103ee90613644565b600101611297565b50505050505f61133b6119d1565b90505f8061134883611d0e565b915091505f5b835181101561091f57828181518110611369576113696135a1565b6020026020010151828281518110611383576113836135a1565b602002602001015110156113a95760405162461bcd60e51b81526004016103ee906135f9565b60010161134e565b606081516001600160401b038111156113cc576113cc6130b5565b6040519080825280602002602001820160405280156113f5578160200160208202803683370190505b5090505f5b8251811015610cc95761142684848381518110611419576114196135a1565b602002602001015161092c565b828281518110611438576114386135a1565b60209081029190910101526001016113fa565b600154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015611492573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b691906134ef565b9050855f6114c26119d1565b90505f6114ce82611b00565b600354909150600119016114f45760405162461bcd60e51b81526004016103ee90613506565b60026003556115088989898960018a6121f7565b50611511611c01565b6001600160a01b0316886001600160a01b03161461153c5761153c88611535611c01565b8b896124c6565b60016003555f61154b83611b00565b90505f5b83518110156115e557846001600160a01b0316848281518110611574576115746135a1565b60200260200101516001600160a01b031603156115dd5781818151811061159d5761159d6135a1565b60200260200101518382815181106115b7576115b76135a1565b602002602001015111156115dd5760405162461bcd60e51b81526004016103ee90613644565b60010161154f565b5050505050806115f25f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561163b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165f91906134ef565b1461167c5760405162461bcd60e51b81526004016103ee9061353d565b505f6116866119d1565b90505f8061169383611d0e565b915091505f5b8351811015610c24578281815181106116b4576116b46135a1565b60200260200101518282815181106116ce576116ce6135a1565b602002602001015110156116f45760405162461bcd60e51b81526004016103ee906135f9565b600101611699565b5f6109998383612543565b60c4545f6117136119d1565b90505f61171f82611b00565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561176c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179091906134ef565b600354909150600119016117b65760405162461bcd60e51b81526004016103ee90613506565b60026003556117ce6117c6611c01565b888888611c93565b6001600381905554604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801561181a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183e91906134ef565b1461185b5760405162461bcd60e51b81526004016103ee9061353d565b505f61186683611b00565b9050835f60c40154101561188c5760405162461bcd60e51b81526004016103ee9061356a565b5f5b83518110156118f0578181815181106118a9576118a96135a1565b60200260200101518382815181106118c3576118c36135a1565b6020026020010151146118e85760405162461bcd60e51b81526004016103ee906135b5565b60010161188e565b50505050505f6118fe6119d1565b90505f8061190b83611d0e565b915091505f5b83518110156119745782818151811061192c5761192c6135a1565b6020026020010151828281518110611946576119466135a1565b6020026020010151101561196c5760405162461bcd60e51b81526004016103ee906135f9565b600101611911565b50505050505050565b61199e60405180606001604052805f81526020015f81526020015f81525090565b6119a88383610cd0565b81526119b4838361092c565b6020820181905281516119c6916123da565b604082015292915050565b60605f6119dc6125bc565b90505f6119e76126bd565b90505f815183516119f891906136a9565b9050806001600160401b03811115611a1257611a126130b5565b604051908082528060200260200182016040528015611a3b578160200160208202803683370190505b5093505f5b8351811015611a9557838181518110611a5b57611a5b6135a1565b6020026020010151858281518110611a7557611a756135a1565b6001600160a01b0390921660209283029190910190910152600101611a40565b505f5b8251811015611af957828181518110611ab357611ab36135a1565b602002602001015185828651611ac991906136a9565b81518110611ad957611ad96135a1565b6001600160a01b0390921660209283029190910190910152600101611a98565b5050505090565b606081516001600160401b03811115611b1b57611b1b6130b5565b604051908082528060200260200182016040528015611b44578160200160208202803683370190505b5090505f5b8251811015611bfb57828181518110611b6457611b646135a1565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611b979190613630565b602060405180830381865afa158015611bb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd691906134ef565b828281518110611be857611be86135a1565b6020908102919091010152600101611b49565b50919050565b5f611c337f7efbaaac9214ca1879e26b4df38e29a72561affb741bba775ce66d5bb6a82a09546001600160a01b031690565b905060016001600160a01b03821611611c495750335b90565b6001600160a01b039283165f90815260208181526040808320948616835260179094018152838220929094168152925290205490565b5f61099982846136bc565b92915050565b6001600160a01b038481165f8181526020818152604080832088861680855260179091018352818420958816808552958352818420879055815195865291850186905291939092917f2c6e87be19eb54f68d01e25832a3ea2b8247b5cc92fcc754d67e161193a154f591015b60405180910390a35050505050565b6060805f83516001600160401b03811115611d2b57611d2b6130b5565b604051908082528060200260200182016040528015611d54578160200160208202803683370190505b50925083516001600160401b03811115611d7057611d706130b5565b604051908082528060200260200182016040528015611d99578160200160208202803683370190505b5091505f5b84518110156121075781600101601b015f868381518110611dc157611dc16135a1565b6020908102919091018101516001600160a01b031682528101919091526040015f908120549060ca840190600181526020019081526020015f205f878481518110611e0e57611e0e6135a1565b6020908102919091018101516001600160a01b031682528101919091526040015f908120546001600160801b03169060ca8501908081526020019081526020015f205f888581518110611e6357611e636135a1565b6020908102919091018101516001600160a01b031682528101919091526040015f9081205488516001600160801b039091169160c78701918a9087908110611ead57611ead6135a1565b6020908102919091018101516001600160a01b031682528101919091526040015f2054611ee391906001600160801b03166136e3565b611eed91906136e3565b6001600160801b0316611f0091906136a9565b848281518110611f1257611f126135a1565b6020908102919091010152600182015485516001600160a01b0390911690869083908110611f4257611f426135a1565b60200260200101516001600160a01b031603611fee578160010160080154848281518110611f7257611f726135a1565b60200260200101818151611f8691906136a9565b9052505f5b6008830154811015611fec575f81815260208085019052604090206001810154600290910154611fbb91906136bc565b858381518110611fcd57611fcd6135a1565b60200260200101818151611fe191906136a9565b905250600101611f8b565b505b81600101610101015f015f86838151811061200b5761200b6135a1565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054848281518110612045576120456135a1565b6020026020010181815161205991906136a9565b9052508451859082908110612070576120706135a1565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016120a39190613630565b602060405180830381865afa1580156120be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e291906134ef565b8382815181106120f4576120f46135a1565b6020908102919091010152600101611d9e565b5050915091565b61211782612729565b6121316006602160991b018361212b611c01565b84612783565b5050565b47156121f5575f612144611c01565b604080515f815260208101918290526001600160a01b039290921691479161216c9190613703565b5f6040518083038185875af1925050503d805f81146121a6576040519150601f19603f3d011682016040523d82523d5f602084013e6121ab565b606091505b50509050806121f35760405162461bcd60e51b815260206004820152601460248201527322ba34103a3930b739b332b9102330b4b632b21760611b60448201526064016103ee565b505b565b5f8083600381111561220b5761220b6136cf565b14801561222857505f826001811115612226576122266136cf565b145b1561232e576040516370a0823160e01b81525f906001600160a01b038916906370a082319061225b908990600401613630565b602060405180830381865afa158015612276573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229a91906134ef565b90506122b16001600160a01b0389168888886127cc565b61232681896001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016122e19190613630565b602060405180830381865afa1580156122fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232091906134ef565b90611c82565b9150506123a4565b61233a87858886612833565b935061234887858785612783565b846001600160a01b0316866001600160a01b0316886001600160a01b03167ff17dedb192dec928d65fe29571baf7bb2940578a1f9070ee29a836bf1a07283287878760405161239993929190613719565b60405180910390a450825b9695505050505050565b6001600160a01b039182165f90815260208181526040808320939094168252601b909201909152205490565b5f61099982846136a9565b6123ff6006602160991b01836123f9611c01565b84612833565b915061240a8261296b565b5f612413611c01565b604080515f815260208101918290526001600160a01b039290921691859161243b9190613703565b5f6040518083038185875af1925050503d805f8114612475576040519150601f19603f3d011682016040523d82523d5f602084013e61247a565b606091505b50509050806124c15760405162461bcd60e51b815260206004820152601360248201527215d95d1a0e881d5b9ddc985c0819985a5b1959606a1b60448201526064016103ee565b505050565b5f6124d2858585611c4c565b90505f19811461253c578181101561252c5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103ee565b61253c85858561048486866136bc565b5050505050565b5f61099961255184846123ae565b6040516370a0823160e01b81526001600160a01b038516906370a082319061257d908890600401613630565b602060405180830381865afa158015612598573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6291906134ef565b60c9546060905f9081816001600160401b038111156125dd576125dd6130b5565b604051908082528060200260200182016040528015612606578160200160208202803683370190505b5093505f5b828110156126b35760c98401805482908110612629576126296135a1565b5f91825260209091200154600160a01b900460ff16156126ab5760c98401805482908110612659576126596135a1565b5f918252602090912001546001600160a01b0316858361267881613754565b94508151811061268a5761268a6135a1565b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161260b565b5080845250505090565b60605f6126c86129ba565b90505f5b8151811015611bfb576126f78282815181106126ea576126ea6135a1565b6020026020010151612ab1565b828281518110612709576127096135a1565b6001600160a01b03909216602092830291909101909101526001016126cc565b6006602160991b016001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612769575f80fd5b505af115801561277b573d5f803e3d5ffd5b505050505050565b82156127c657600181600181111561279d5761279d6136cf565b036127b2576127ad828585612b41565b6127c6565b6127c66001600160a01b0385168385612b6f565b50505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526127c69186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612ba0565b5f835f0361284257505f610ce7565b5f826003811115612855576128556136cf565b146128a15761287b8386866001866003811115612874576128746136cf565b1415612bf8565b90508084148061289c5750600382600381111561289a5761289a6136cf565b145b610ce7575b6040516370a0823160e01b81525f906001600160a01b038716906370a08231906128cf903090600401613630565b602060405180830381865afa1580156128ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061290e91906134ef565b9050612931843061291f85896136bc565b6001600160a01b038a169291906127cc565b6123a461296482886001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016122e19190613630565b83906123da565b604051632e1a7d4d60e01b8152600481018290526006602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156129a8575f80fd5b505af115801561253c573d5f803e3d5ffd5b60c9546060905f9081816001600160401b038111156129db576129db6130b5565b604051908082528060200260200182016040528015612a04578160200160208202803683370190505b5093505f5b828110156126b35760c98401805482908110612a2757612a276135a1565b5f91825260209091200154600160b81b900460ff1615612aa95760c98401805482908110612a5757612a576135a1565b5f918252602090912001546001600160a01b03168583612a7681613754565b945081518110612a8857612a886135a1565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612a09565b5f80826001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612aee573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b15919081019061376c565b905080612b2182612ca8565b81518110612b3157612b316135a1565b6020026020010151915050919050565b5f612b4c84846123ae565b90505f612b5982846123da565b905061253c858583612b6a87612d39565b612d69565b6040516001600160a01b038381166024830152604482018390526124c191859182169063a9059cbb90606401612801565b5f612bb46001600160a01b03841683612e5b565b905080515f14158015612bd8575080806020019051810190612bd69190613800565b155b156124c15782604051635274afe760e01b81526004016103ee9190613630565b5f80612c0486866123ae565b90508280612c125750838110155b612c6d5760405162461bcd60e51b815260206004820152602660248201527f42616c616e63653a20496e73756666696369656e7420696e7465726e616c2062604482015265616c616e636560d01b60648201526084016103ee565b612c778185612e68565b91505f612c8483836136bc565b9050612c9e878783612c9587612d39565b612b6a9061381f565b5050949350505050565b5f805b8251821015612cf957828281518110612cc657612cc66135a1565b602090810291909101015160018201546001600160a01b03908116911614612cee5750919050565b816001019150612cab565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b60448201526064016103ee565b5f6001600160ff1b03821115612d655760405163123baf0360e11b8152600481018390526024016103ee565b5090565b5f80821215612dbf57612d9e612d7e8361381f565b6001600160a01b0386165f908152601c8401602052604090205490611c82565b6001600160a01b0385165f908152601c830160205260409020819055612e00565b6001600160a01b0384165f908152601c82016020526040902054612de390836123da565b6001600160a01b0385165f908152601c8301602052604090208190555b506001600160a01b038581165f81815260208481526040808320948916808452601b90950182529182902087905590518581527f18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c429101611cff565b606061099983835f612e7d565b5f818310612e765781610999565b5090919050565b606081471015612ea2573060405163cd78605960e01b81526004016103ee9190613630565b5f80856001600160a01b03168486604051612ebd9190613703565b5f6040518083038185875af1925050503d805f8114612ef7576040519150601f19603f3d011682016040523d82523d5f602084013e612efc565b606091505b50915091506123a4868383606082612f1c57612f1782612f5a565b610999565b8151158015612f3357506001600160a01b0384163b155b15612f535783604051639996b31560e01b81526004016103ee9190613630565b5080610999565b805115612f6a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146121f3575f80fd5b5f805f60608486031215612fa9575f80fd5b8335612fb481612f83565b92506020840135612fc481612f83565b929592945050506040919091013590565b803560028110612fe3575f80fd5b919050565b5f8060408385031215612ff9575f80fd5b8235915061300960208401612fd5565b90509250929050565b5f8060408385031215613023575f80fd5b823561302e81612f83565b9150602083013561303e81612f83565b809150509250929050565b803560048110612fe3575f80fd5b5f805f805f60a0868803121561306b575f80fd5b853561307681612f83565b9450602086013561308681612f83565b93506040860135925061309b60608701613049565b91506130a960808701612fd5565b90509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156130f1576130f16130b5565b604052919050565b5f6001600160401b03821115613111576131116130b5565b5060051b60200190565b5f806040838503121561312c575f80fd5b823561313781612f83565b91506020838101356001600160401b03811115613152575f80fd5b8401601f81018613613162575f80fd5b8035613175613170826130f9565b6130c9565b81815260059190911b82018301908381019088831115613193575f80fd5b928401925b828410156131ba5783356131ab81612f83565b82529284019290840190613198565b80955050505050509250929050565b602080825282518282018190525f9190848201906040850190845b81811015613200578351835292840192918401916001016131e4565b50909695505050505050565b5f805f6060848603121561321e575f80fd5b833561322981612f83565b9250602084013561323981612f83565b9150604084013561324981612f83565b809150509250925092565b602080825282518282018190525f9190848201906040850190845b81811015613200576132968385518051825260208082015190830152604090810151910152565b928401926060929092019160010161326f565b5f8083601f8401126132b9575f80fd5b5081356001600160401b038111156132cf575f80fd5b6020830191508360208260051b85010111156132e9575f80fd5b9250929050565b5f8083601f840112613300575f80fd5b5081356001600160401b03811115613316575f80fd5b6020830191508360208285010111156132e9575f80fd5b5f805f805f805f8060a0898b031215613344575f80fd5b883561334f81612f83565b9750602089013561335f81612f83565b965060408901356001600160401b038082111561337a575f80fd5b6133868c838d016132a9565b909850965060608b013591508082111561339e575f80fd5b6133aa8c838d016132a9565b909650945060808b01359150808211156133c2575f80fd5b506133cf8b828c016132f0565b999c989b5096995094979396929594505050565b5f80604083850312156133f4575f80fd5b8235915061300960208401613049565b5f805f805f60a08688031215613418575f80fd5b853561342381612f83565b9450602086013561343381612f83565b9350604086013561344381612f83565b9250606086013591506130a960808701612fd5565b5f805f805f8060a0878903121561346d575f80fd5b863561347881612f83565b9550602087013561348881612f83565b9450604087013593506060870135925060808701356001600160401b038111156134b0575f80fd5b6134bc89828a016132f0565b979a9699509497509295939492505050565b81518152602080830151908201526040808301519082015260608101611c8d565b5f602082840312156134ff575f80fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152721253958e8814dd5c1c1b1e4818da185b99d959606a1b604082015260600190565b6020808252601e908201527f494e563a206e6f4e6574466c6f77205374616c6b206465637265617365640000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526024908201527f494e563a206e6f4e6574466c6f7720546f6b656e2062616c616e6365206368616040820152631b99d95960e21b606082015260800190565b6020808252601f908201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604082015260600190565b6001600160a01b0391909116815260200190565b60208082526031908201527f494e563a206f6e654f7574466c6f77206d756c7469706c6520746f6b656e2062604082015270185b185b98d95cc8191958dc99585cd959607a1b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611c8d57611c8d613695565b81810381811115611c8d57611c8d613695565b634e487b7160e01b5f52602160045260245ffd5b6001600160801b03818116838216019080821115610cc957610cc9613695565b5f82518060208501845e5f920191825250919050565b8381526060810160048410613730576137306136cf565b83602083015260028310613746576137466136cf565b826040830152949350505050565b5f6001820161376557613765613695565b5060010190565b5f602080838503121561377d575f80fd5b82516001600160401b03811115613792575f80fd5b8301601f810185136137a2575f80fd5b80516137b0613170826130f9565b81815260059190911b820183019083810190878311156137ce575f80fd5b928401925b828410156137f55783516137e681612f83565b825292840192908401906137d3565b979650505050505050565b5f60208284031215613810575f80fd5b81518015158114610999575f80fd5b5f600160ff1b820161383357613833613695565b505f039056fea2646970667358221220ffd462a1ea2d3a5a5019c7fffe844a32e58f08c23b32d5ee923f44cb0660bb9264736f6c63430008190033