0 txs
0 calls
constructor
constructor(address _triviToken, address _treasury)
functions
BPS
viewfunction BPS() view returns (uint256)
CBBTC_TOKEN
viewfunction CBBTC_TOKEN() view returns (address)
deadlineWindow
viewfunction deadlineWindow() view returns (uint256)
FEE_BPS
viewfunction FEE_BPS() view returns (uint256)
getBuyQuotes
viewfunction getBuyQuotes(uint256 triviAmount) view returns (uint256 ethRequired, uint256 usdcRequired, uint256 cbbtcRequired, uint256 virtualRequired)
getExpectedOutput
viewfunction getExpectedOutput(uint256 ethAmount, uint256 usdcAmount, uint256 cbbtcAmount, uint256 virtualAmount) view returns (uint256 triviFromETH, uint256 triviFromUSDC, uint256 triviFromCBBTC, uint256 triviFromVIRTUAL)
getSellQuotes
viewfunction getSellQuotes(uint256 triviAmount) view returns (uint256 ethOut, uint256 usdcOut, uint256 cbbtcOut, uint256 virtualOut)
owner
viewfunction owner() view returns (address)
quoteBufferBps
viewfunction quoteBufferBps() view returns (uint256)
TAX_BPS
viewfunction TAX_BPS() view returns (uint256)
totalFeesCollected
viewfunction totalFeesCollected() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
TRIVI
viewfunction TRIVI() view returns (address)
UNISWAP_ROUTER
viewfunction UNISWAP_ROUTER() view returns (address)
USDC_TOKEN
viewfunction USDC_TOKEN() view returns (address)
VIRTUAL_TOKEN
viewfunction VIRTUAL_TOKEN() view returns (address)
WETH_TOKEN
viewfunction WETH_TOKEN() view returns (address)
buyWithCBBTC
nonpayablefunction buyWithCBBTC(uint256 cbbtcAmount, uint256 minTriviOut)
buyWithETH
payablefunction buyWithETH(uint256 minTriviOut) payable
buyWithUSDC
nonpayablefunction buyWithUSDC(uint256 usdcAmount, uint256 minTriviOut)
buyWithVIRTUAL
nonpayablefunction buyWithVIRTUAL(uint256 virtualAmount, uint256 minTriviOut)
rescueETH
nonpayablefunction rescueETH(uint256 amount)
rescueToken
nonpayablefunction rescueToken(address token, uint256 amount)
sellForCBBTC
nonpayablefunction sellForCBBTC(uint256 triviAmount, uint256 minCBBTCOut)
sellForETH
nonpayablefunction sellForETH(uint256 triviAmount, uint256 minETHOut)
sellForUSDC
nonpayablefunction sellForUSDC(uint256 triviAmount, uint256 minUSDCOut)
sellForVIRTUAL
nonpayablefunction sellForVIRTUAL(uint256 triviAmount, uint256 minVIRTUALOut)
setQuoteConfig
nonpayablefunction setQuoteConfig(uint256 newBufferBps, uint256 newDeadlineWindow)
setTreasury
nonpayablefunction setTreasury(address newTreasury)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
BoughtWithETH
event BoughtWithETH(address indexed buyer, uint256 ethIn, uint256 triviOut, uint256 feeAmount)
BoughtWithToken
event BoughtWithToken(address indexed buyer, address indexed tokenIn, uint256 amountIn, uint256 triviOut, uint256 feeAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
QuoteConfigUpdated
event QuoteConfigUpdated(uint256 bufferBps, uint256 deadlineWindow)
SoldForETH
event SoldForETH(address indexed seller, uint256 triviIn, uint256 ethOut, uint256 feeAmount)
SoldForToken
event SoldForToken(address indexed seller, uint256 triviIn, address indexed tokenOut, uint256 amountOut, uint256 feeAmount)
TreasuryUpdated
event TreasuryUpdated(address indexed newTreasury)
errors
No errors.
creation bytecode
0x60a06040526001805561012c60045561012c6005553480156200002157600080fd5b50604051620048ac380380620048ac83398101604081905262000044916200027b565b6200004f336200020e565b6001600160a01b038216620000955760405162461bcd60e51b8152602060048201526007602482015266054524956493d360cc1b60448201526064015b60405180910390fd5b6001600160a01b038116620000da5760405162461bcd60e51b815260206004820152600a602482015269074726561737572793d360b41b60448201526064016200008c565b6001600160a01b03828116608052600280546001600160a01b031916918316919091179055604080516315ab88c960e31b8152905173420000000000000000000000000000000000000691734752ba5dbc23f44d87826276bf6fd6b1c372ad249163ad5c4648916004808201926020929091908290030181865afa15801562000167573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018d9190620002b3565b6001600160a01b031614620001d25760405162461bcd60e51b815260206004820152600a6024820152690aee4dedcce40ae8aa8960b31b60448201526064016200008c565b6040516001600160a01b038216907f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a25050620002d8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200027657600080fd5b919050565b600080604083850312156200028f57600080fd5b6200029a836200025e565b9150620002aa602084016200025e565b90509250929050565b600060208284031215620002c657600080fd5b620002d1826200025e565b9392505050565b6080516144c3620003e960003960008181610478015281816109ff01528181610a3f01528181610af501528181610b3b01528181610b9401528181610e9e01528181610ede01528181610f9401528181610fda0152818161103101528181611563015281816115a3015281816116590152818161169f015281816116f801528181611d1c01528181611f0e0152818161213b015281816122ea01528181612461015281816124a1015281816125570152818161259d015281816125f601528181612bf301528181612d4801528181612f2401528181613011015281816132080152818161341f015281816136df015281816138560152818161393c01528181613c010152613d5f01526144c36000f3fe6080604052600436106101d15760003560e01c80639e252f00116100f7578063e5bdb85811610095578063f49e792211610064578063f49e79221461053c578063f73f518e1461055c578063fa5692741461057c578063fd2ae5901461059e57600080fd5b8063e5bdb858146104ba578063ec17afd0146104dc578063f0f44260146104fc578063f2fde38b1461051c57600080fd5b8063c28399ef116100d1578063c28399ef1461042e578063d826492014610444578063dba5971114610466578063e062d5671461049a57600080fd5b80639e252f00146103d9578063b116b42f146103f9578063bf333f2c1461041957600080fd5b806337d277d41161016f57806368f4a7861161013e57806368f4a786146103715780637b3c3fb4146103865780638da5cb5b146103a857806394dc9cf3146103c657600080fd5b806337d277d4146102e85780634012c7fd1461031b57806360c6d8ae1461033b57806361d027b31461035157600080fd5b80631a895884116101ab5780631a89588414610264578063249d39e91461028457806330f53057146102a857806333f3d628146102c857600080fd5b8063093b9ee1146101dd578063110eb107146101ff578063166e11b71461024457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004613fa2565b6105b4565b005b34801561020b57600080fd5b5061021f61021a366004613fc4565b6106f7565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b34801561025057600080fd5b506101fd61025f366004613fa2565b61077c565b34801561027057600080fd5b506101fd61027f366004613fa2565b6108a7565b34801561029057600080fd5b5061029a61271081565b60405190815260200161023b565b3480156102b457600080fd5b506101fd6102c3366004613fa2565b6109ae565b3480156102d457600080fd5b506101fd6102e3366004613ff9565b610df9565b3480156102f457600080fd5b506103036006602160991b0181565b6040516001600160a01b03909116815260200161023b565b34801561032757600080fd5b506101fd610336366004613fa2565b610e4d565b34801561034757600080fd5b5061029a60035481565b34801561035d57600080fd5b50600254610303906001600160a01b031681565b34801561037d57600080fd5b5061029a606481565b34801561039257600080fd5b5061030360008051602061446e83398151915281565b3480156103b457600080fd5b506000546001600160a01b0316610303565b6101fd6103d4366004613fc4565b6112b1565b3480156103e557600080fd5b506101fd6103f4366004613fc4565b611451565b34801561040557600080fd5b506101fd610414366004613fa2565b611512565b34801561042557600080fd5b5061029a601981565b34801561043a57600080fd5b5061029a60055481565b34801561045057600080fd5b5061030360008051602061444e83398151915281565b34801561047257600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a657600080fd5b506101fd6104b5366004613fa2565b6119a8565b3480156104c657600080fd5b5061030360008051602061442e83398151915281565b3480156104e857600080fd5b5061021f6104f7366004613fc4565b611ad3565b34801561050857600080fd5b506101fd610517366004614023565b611b0c565b34801561052857600080fd5b506101fd610537366004614023565b611bc3565b34801561054857600080fd5b5061021f610557366004614045565b611c47565b34801561056857600080fd5b506101fd610577366004613fa2565b612410565b34801561058857600080fd5b5061030360008051602061440e83398151915281565b3480156105aa57600080fd5b5061029a60045481565b6002600154036105df5760405162461bcd60e51b81526004016105d690614077565b60405180910390fd5b6002600155816106015760405162461bcd60e51b81526004016105d6906140ae565b61061b60008051602061446e8339815191523330856128e1565b600061271061062b6019856140e6565b61063591906140fd565b90506000610643828561411f565b90508115610689576002546106719060008051602061446e833981519152906001600160a01b0316846129e8565b81600360008282546106839190614132565b90915550505b60006106958285612ae6565b604080518781526020810183905290810185905290915060008051602061446e8339815191529033907fa6e29c00bf1680ba19c30d2a8f45ddaf0f86e04debb29673869c716d220e0818906060015b60405180910390a3505060018055505050565b60008080808061271061070b6064886140e6565b61071591906140fd565b61071f908761411f565b905060006127106107316019846140e6565b61073b91906140fd565b610745908361411f565b905061075081612d11565b955061075b81612eed565b945061076681612fda565b9350610771816131d3565b925050509193509193565b60026001540361079e5760405162461bcd60e51b81526004016105d690614077565b6002600155816107c05760405162461bcd60e51b81526004016105d6906140ae565b6107da60008051602061440e8339815191523330856128e1565b60006127106107ea6019856140e6565b6107f491906140fd565b90506000610802828561411f565b90508115610848576002546108309060008051602061440e833981519152906001600160a01b0316846129e8565b81600360008282546108429190614132565b90915550505b6000610854828561334d565b604080518781526020810183905290810185905290915060008051602061440e8339815191529033907fa6e29c00bf1680ba19c30d2a8f45ddaf0f86e04debb29673869c716d220e0818906060016106e4565b6000546001600160a01b031633146108d15760405162461bcd60e51b81526004016105d690614145565b6107d08211156109155760405162461bcd60e51b815260206004820152600f60248201526e0c4eacccccae440e8dede40d0d2ced608b1b60448201526064016105d6565b603c81101580156109285750610e108111155b6109675760405162461bcd60e51b815260206004820152601060248201526f191958591b1a5b99481a5b9d985b1a5960821b60448201526064016105d6565b6004829055600581905560408051838152602081018390527f14045f4a3d16cb34daef42e409444e1d49619beb63723564f273e85dd7601892910160405180910390a15050565b6002600154036109d05760405162461bcd60e51b81526004016105d690614077565b6002600155816109f25760405162461bcd60e51b81526004016105d6906140ae565b610a276001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856128e1565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab2919061417a565b90506000612710610ac46019846140e6565b610ace91906140fd565b90506000610adc828461411f565b90508115610b3657600254610b1e906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116846129e8565b8160036000828254610b309190614132565b90915550505b610b6f7f000000000000000000000000000000000000000000000000000000000000000060008051602061444e83398151915283613451565b60408051600380825260808201909252600091602082016060803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610bc657610bc66141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600181518110610c0857610c086141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600281518110610c4357610c436141a9565b60200260200101906001600160a01b031690816001600160a01b031681525050600047905060008051602061444e8339815191526001600160a01b031663791ac9478488853060055442610c979190614132565b6040518663ffffffff1660e01b8152600401610cb7959493929190614203565b600060405180830381600087803b158015610cd157600080fd5b505af1158015610ce5573d6000803e3d6000fd5b5050505060008147610cf7919061411f565b905086811015610d195760405162461bcd60e51b81526004016105d69061423f565b604051600090339083908381818185875af1925050503d8060008114610d5b576040519150601f19603f3d011682016040523d82523d6000602084013e610d60565b606091505b5050905080610da75760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016105d6565b604080518a81526020810184905290810187905233907fb956d99dd0c259c3d9d420a89b7dfe23069187ea2a91ed70412f4788a52d77b29060600160405180910390a250506001805550505050505050565b6000546001600160a01b03163314610e235760405162461bcd60e51b81526004016105d690614145565b610e49610e386000546001600160a01b031690565b6001600160a01b03841690836129e8565b5050565b600260015403610e6f5760405162461bcd60e51b81526004016105d690614077565b600260015581610e915760405162461bcd60e51b81526004016105d6906140ae565b610ec66001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856128e1565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f51919061417a565b90506000612710610f636019846140e6565b610f6d91906140fd565b90506000610f7b828461411f565b90508115610fd557600254610fbd906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116846129e8565b8160036000828254610fcf9190614132565b90915550505b61100e7f000000000000000000000000000000000000000000000000000000000000000060008051602061444e83398151915283613451565b6040805160028082526060820183526000926020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611063576110636141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e833981519152816001815181106110a5576110a56141a9565b6001600160a01b0392909216602092830291909101909101526040516370a0823160e01b815233600482015260009060008051602061442e833981519152906370a0823190602401602060405180830381865afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e919061417a565b905060008051602061444e8339815191526001600160a01b0316635c11d795848885336005544261115f9190614132565b6040518663ffffffff1660e01b815260040161117f959493929190614203565b600060405180830381600087803b15801561119957600080fd5b505af11580156111ad573d6000803e3d6000fd5b50506040516370a0823160e01b81523360048201526000925083915060008051602061442e833981519152906370a0823190602401602060405180830381865afa1580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611223919061417a565b61122d919061411f565b90508681101561124f5760405162461bcd60e51b81526004016105d69061423f565b604080518981526020810183905290810186905260008051602061442e8339815191529033907fdf35fa1ebc47cd0ec524c55adf1469142d2c7aead6329cc08ad53e7e7d0b3240906060015b60405180910390a3505060018055505050505050565b6002600154036112d35760405162461bcd60e51b81526004016105d690614077565b6002600155346113135760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b60448201526064016105d6565b60006127106113236019346140e6565b61132d91906140fd565b9050600061133b823461411f565b905081156113f5576002546040516000916001600160a01b03169084908381818185875af1925050503d8060008114611390576040519150601f19603f3d011682016040523d82523d6000602084013e611395565b606091505b50509050806113dc5760405162461bcd60e51b8152602060048201526013602482015272119959481d1c985b9cd9995c8819985a5b1959606a1b60448201526064016105d6565b82600360008282546113ee9190614132565b9091555050505b6000611401828561363a565b604080513481526020810183905290810185905290915033907f8e3075c3ab83d55decf7f0bcc1b3893764b4bb37388fdd5d217991eb056bf0e29060600160405180910390a25050600180555050565b6000546001600160a01b0316331461147b5760405162461bcd60e51b81526004016105d690614145565b600080546040516001600160a01b039091169083908381818185875af1925050503d80600081146114c8576040519150601f19603f3d011682016040523d82523d6000602084013e6114cd565b606091505b5050905080610e495760405162461bcd60e51b8152602060048201526011602482015270115512081c995cd8dd594819985a5b1959607a1b60448201526064016105d6565b6002600154036115345760405162461bcd60e51b81526004016105d690614077565b6002600155816115565760405162461bcd60e51b81526004016105d6906140ae565b61158b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856128e1565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611616919061417a565b905060006127106116286019846140e6565b61163291906140fd565b90506000611640828461411f565b9050811561169a57600254611682906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116846129e8565b81600360008282546116949190614132565b90915550505b6116d37f000000000000000000000000000000000000000000000000000000000000000060008051602061444e83398151915283613451565b60408051600380825260808201909252600091602082016060803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061172a5761172a6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e8339815191528160018151811061176c5761176c6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061440e833981519152816002815181106117ae576117ae6141a9565b6001600160a01b0392909216602092830291909101909101526040516370a0823160e01b815233600482015260009060008051602061440e833981519152906370a0823190602401602060405180830381865afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611837919061417a565b905060008051602061444e8339815191526001600160a01b0316635c11d79584888533600554426118689190614132565b6040518663ffffffff1660e01b8152600401611888959493929190614203565b600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b50506040516370a0823160e01b81523360048201526000925083915060008051602061440e833981519152906370a0823190602401602060405180830381865afa158015611908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192c919061417a565b611936919061411f565b9050868110156119585760405162461bcd60e51b81526004016105d69061423f565b604080518981526020810183905290810186905260008051602061440e8339815191529033907fdf35fa1ebc47cd0ec524c55adf1469142d2c7aead6329cc08ad53e7e7d0b32409060600161129b565b6002600154036119ca5760405162461bcd60e51b81526004016105d690614077565b6002600155816119ec5760405162461bcd60e51b81526004016105d6906140ae565b611a0660008051602061442e8339815191523330856128e1565b6000612710611a166019856140e6565b611a2091906140fd565b90506000611a2e828561411f565b90508115611a7457600254611a5c9060008051602061442e833981519152906001600160a01b0316846129e8565b8160036000828254611a6e9190614132565b90915550505b6000611a8082856137c8565b604080518781526020810183905290810185905290915060008051602061442e8339815191529033907fa6e29c00bf1680ba19c30d2a8f45ddaf0f86e04debb29673869c716d220e0818906060016106e4565b600080600080611ae285613888565b9350611aed85613ab4565b9250611af885613b0b565b9150611b0385613ce8565b90509193509193565b6000546001600160a01b03163314611b365760405162461bcd60e51b81526004016105d690614145565b6001600160a01b038116611b795760405162461bcd60e51b815260206004820152600a602482015269074726561737572793d360b41b60448201526064016105d6565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a250565b6000546001600160a01b03163314611bed5760405162461bcd60e51b81526004016105d690614145565b6001600160a01b038116611c3b5760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016105d6565b611c4481613e46565b50565b60008080808715611e37576000612710611c6260198b6140e6565b611c6c91906140fd565b611c76908a61411f565b6040805160038082526080820190925291925060009190602082016060803683370190505090506006602160991b0181600081518110611cb857611cb86141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600181518110611cfa57611cfa6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110611d4e57611d4e6141a9565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b815260008051602061444e8339815191529063d06ca61f90611d99908590859060040161426c565b600060405180830381865afa925050508015611dd757506040513d6000823e601f3d908101601f19168201604052611dd49190810190614285565b60015b611de45760009550611e34565b8051600303611e3257612710600454612710611e00919061411f565b82600281518110611e1357611e136141a9565b6020026020010151611e2591906140e6565b611e2f91906140fd565b96505b505b50505b8615612029576000612710611e4d60198a6140e6565b611e5791906140fd565b611e61908961411f565b60408051600380825260808201909252919250600091906020820160608036833701905050905060008051602061440e83398151915281600081518110611eaa57611eaa6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600181518110611eec57611eec6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110611f4057611f406141a9565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b815260008051602061444e8339815191529063d06ca61f90611f8b908590859060040161426c565b600060405180830381865afa925050508015611fc957506040513d6000823e601f3d908101601f19168201604052611fc69190810190614285565b60015b611fd65760009450612026565b805160030361202457612710600454612710611ff2919061411f565b82600281518110612005576120056141a9565b602002602001015161201791906140e6565b61202191906140fd565b95505b505b50505b851561225657600061271061203f6019896140e6565b61204991906140fd565b612053908861411f565b60408051600480825260a08201909252919250600091906020820160808036833701905050905060008051602061446e8339815191528160008151811061209c5761209c6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b01816001815181106120d7576120d76141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600281518110612119576121196141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160038151811061216d5761216d6141a9565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b815260008051602061444e8339815191529063d06ca61f906121b8908590859060040161426c565b600060405180830381865afa9250505080156121f657506040513d6000823e601f3d908101601f191682016040526121f39190810190614285565b60015b6122035760009350612253565b80516004036122515761271060045461271061221f919061411f565b82600381518110612232576122326141a9565b602002602001015161224491906140e6565b61224e91906140fd565b94505b505b50505b841561240557600061271061226c6019886140e6565b61227691906140fd565b612280908761411f565b604080516002808252606082018352929350600092909160208301908036833701905050905060008051602061442e833981519152816000815181106122c8576122c86141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061231c5761231c6141a9565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b815260008051602061444e8339815191529063d06ca61f90612367908590859060040161426c565b600060405180830381865afa9250505080156123a557506040513d6000823e601f3d908101601f191682016040526123a29190810190614285565b60015b6123b25760009250612402565b8051600203612400576127106004546127106123ce919061411f565b826001815181106123e1576123e16141a9565b60200260200101516123f391906140e6565b6123fd91906140fd565b93505b505b50505b945094509450949050565b6002600154036124325760405162461bcd60e51b81526004016105d690614077565b6002600155816124545760405162461bcd60e51b81526004016105d6906140ae565b6124896001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856128e1565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612514919061417a565b905060006127106125266019846140e6565b61253091906140fd565b9050600061253e828461411f565b9050811561259857600254612580906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116846129e8565b81600360008282546125929190614132565b90915550505b6125d17f000000000000000000000000000000000000000000000000000000000000000060008051602061444e83398151915283613451565b60408051600480825260a08201909252600091602082016080803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110612628576126286141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e8339815191528160018151811061266a5761266a6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b01816002815181106126a5576126a56141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061446e833981519152816003815181106126e7576126e76141a9565b6001600160a01b0392909216602092830291909101909101526040516370a0823160e01b815233600482015260009060008051602061446e833981519152906370a0823190602401602060405180830381865afa15801561274c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612770919061417a565b905060008051602061444e8339815191526001600160a01b0316635c11d79584888533600554426127a19190614132565b6040518663ffffffff1660e01b81526004016127c1959493929190614203565b600060405180830381600087803b1580156127db57600080fd5b505af11580156127ef573d6000803e3d6000fd5b50506040516370a0823160e01b81523360048201526000925083915060008051602061446e833981519152906370a0823190602401602060405180830381865afa158015612841573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612865919061417a565b61286f919061411f565b9050868110156128915760405162461bcd60e51b81526004016105d69061423f565b604080518981526020810183905290810186905260008051602061446e8339815191529033907fdf35fa1ebc47cd0ec524c55adf1469142d2c7aead6329cc08ad53e7e7d0b32409060600161129b565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092018352602080830180516001600160e01b03166323b872dd60e01b1790528351808501909452601e84527f5361666545524332303a207472616e7366657246726f6d206661696c6564000090840152909160009161297691908816908490613e96565b8051909150156129e057808060200190518101906129949190614343565b6129e05760405162461bcd60e51b815260206004820152601e60248201527f5361666545524332303a207472616e7366657246726f6d206661696c6564000060448201526064016105d6565b505050505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b1790528351808501909452601a84527f5361666545524332303a207472616e73666572206661696c6564000000000000908401529091600091612a7591908716908490613e96565b805190915015612adf5780806020019051810190612a939190614343565b612adf5760405162461bcd60e51b815260206004820152601a60248201527f5361666545524332303a207472616e73666572206661696c656400000000000060448201526064016105d6565b5050505050565b6000612b0f60008051602061446e83398151915260008051602061444e83398151915285613451565b60408051600480825260a082019092526000916020820160808036833701905050905060008051602061446e83398151915281600081518110612b5457612b546141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600181518110612b8f57612b8f6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600281518110612bd157612bd16141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600381518110612c2557612c256141a9565b60200260200101906001600160a01b031690816001600160a01b031681525050600060008051602061444e8339815191526001600160a01b03166338ed17398686853360055442612c769190614132565b6040518663ffffffff1660e01b8152600401612c96959493929190614203565b6000604051808303816000875af1158015612cb5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cdd9190810190614285565b90508060018251612cee919061411f565b81518110612cfe57612cfe6141a9565b6020026020010151925050505b92915050565b600081600003612d2357506000919050565b60408051600380825260808201909252600091602082016060803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110612d7a57612d7a6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600181518110612dbc57612dbc6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600281518110612df757612df76141a9565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b815260008051602061444e8339815191529063d06ca61f90612e42908690859060040161426c565b600060405180830381865afa925050508015612e8057506040513d6000823e601f3d908101601f19168201604052612e7d9190810190614285565b60015b612e8d5750600092915050565b8051600314612ea0575060009392505050565b6000612710600454612710612eb5919061411f565b83600281518110612ec857612ec86141a9565b6020026020010151612eda91906140e6565b612ee491906140fd565b95945050505050565b600081600003612eff57506000919050565b60408051600380825260808201909252600091602082016060803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110612f5657612f566141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600181518110612f9857612f986141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061440e83398151915281600281518110612df757612df76141a9565b600081600003612fec57506000919050565b60408051600480825260a08201909252600091602082016080803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110613043576130436141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600181518110613085576130856141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b01816002815181106130c0576130c06141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061446e83398151915281600381518110613102576131026141a9565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b815260008051602061444e8339815191529063d06ca61f9061314d908690859060040161426c565b600060405180830381865afa92505050801561318b57506040513d6000823e601f3d908101601f191682016040526131889190810190614285565b60015b6131985750600092915050565b80516004146131ab575060009392505050565b60006127106004546127106131c0919061411f565b83600381518110612ec857612ec86141a9565b6000816000036131e557506000919050565b6040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061323a5761323a6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e8339815191528160018151811061327c5761327c6141a9565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b815260008051602061444e8339815191529063d06ca61f906132c7908690859060040161426c565b600060405180830381865afa92505050801561330557506040513d6000823e601f3d908101601f191682016040526133029190810190614285565b60015b6133125750600092915050565b8051600214613325575060009392505050565b600061271060045461271061333a919061411f565b83600181518110612ec857612ec86141a9565b600061337660008051602061440e83398151915260008051602061444e83398151915285613451565b604080516003808252608082019092526000916020820160608036833701905050905060008051602061440e833981519152816000815181106133bb576133bb6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e833981519152816001815181106133fd576133fd6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110612c2557612c256141a9565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151909160009182918716906134af908590614389565b6000604051808303816000865af19150503d80600081146134ec576040519150601f19603f3d011682016040523d82523d6000602084013e6134f1565b606091505b509150915081801561351b57508051158061351b57508080602001905181019061351b9190614343565b6129e057604080516001600160a01b03878116602483015260006044808401919091528351808403909101815260649092018352602080830180516001600160e01b031663095ea7b360e01b1790528351808501909452601f84527f5361666545524332303a20726573657420617070726f7665206661696c656400908401526135a9929089169190613e96565b50604080516001600160a01b03878116602483015260448083018890528351808403909101815260649092018352602080830180516001600160e01b031663095ea7b360e01b1790528351808501909452601c84527f5361666545524332303a2072652d617070726f7665206661696c65640000000090840152613631929089169190613e96565b50505050505050565b60408051600380825260808201909252600091829190602082016060803683370190505090506006602160991b018160008151811061367b5761367b6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e833981519152816001815181106136bd576136bd6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110613711576137116141a9565b60200260200101906001600160a01b031690816001600160a01b031681525050600060008051602061444e8339815191526001600160a01b0316637ff36ab586868533600554426137629190614132565b6040518663ffffffff1660e01b815260040161378194939291906143a5565b60006040518083038185885af115801561379f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612cdd9190810190614285565b60006137f160008051602061442e83398151915260008051602061444e83398151915285613451565b60408051600280825260608201835260009260208301908036833701905050905060008051602061442e83398151915281600081518110613834576138346141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612c2557612c256141a9565b60008160000361389a57506000919050565b60408051600380825260808201909252600091602082016060803683370190505090506006602160991b01816000815181106138d8576138d86141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e8339815191528160018151811061391a5761391a6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160028151811061396e5761396e6141a9565b6001600160a01b03909216602092830291909101909101526040516307c0329d60e21b815260008051602061444e83398151915290631f00ca74906139b9908690859060040161426c565b600060405180830381865afa9250505080156139f757506040513d6000823e601f3d908101601f191682016040526139f49190810190614285565b60015b613a045750600092915050565b80516003141580613a2f575080600081518110613a2357613a236141a9565b60200260200101516000145b15613a3e575060009392505050565b6000613a4d601961271061411f565b61271083600081518110613a6357613a636141a9565b6020026020010151613a7591906140e6565b613a7f91906140fd565b90506000612710600454612710613a969190614132565b613aa090846140e6565b613aaa91906140fd565b9695505050505050565b600081600003613ac657506000919050565b604080516003808252608082019092526000916020820160608036833701905050905060008051602061440e833981519152816000815181106138d8576138d86141a9565b600081600003613b1d57506000919050565b60408051600480825260a082019092526000916020820160808036833701905050905060008051602061446e83398151915281600081518110613b6257613b626141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600181518110613b9d57613b9d6141a9565b60200260200101906001600160a01b031690816001600160a01b03168152505060008051602061442e83398151915281600281518110613bdf57613bdf6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600381518110613c3357613c336141a9565b6001600160a01b03909216602092830291909101909101526040516307c0329d60e21b815260008051602061444e83398151915290631f00ca7490613c7e908690859060040161426c565b600060405180830381865afa925050508015613cbc57506040513d6000823e601f3d908101601f19168201604052613cb99190810190614285565b60015b613cc95750600092915050565b80516004141580613a2f575080600081518110613a2357613a236141a9565b600081600003613cfa57506000919050565b60408051600280825260608201835260009260208301908036833701905050905060008051602061442e83398151915281600081518110613d3d57613d3d6141a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110613d9157613d916141a9565b6001600160a01b03909216602092830291909101909101526040516307c0329d60e21b815260008051602061444e83398151915290631f00ca7490613ddc908690859060040161426c565b600060405180830381865afa925050508015613e1a57506040513d6000823e601f3d908101601f19168201604052613e179190810190614285565b60015b613e275750600092915050565b80516002141580613a2f575080600081518110613a2357613a236141a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060600080856001600160a01b031685604051613eb39190614389565b6000604051808303816000865af19150503d8060008114613ef0576040519150601f19603f3d011682016040523d82523d6000602084013e613ef5565b606091505b5091509150613aaa8683838760608315613f70578251600003613f69576001600160a01b0385163b613f695760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d6565b5081613f9a565b825115613f805782518084602001fd5b8160405162461bcd60e51b81526004016105d691906143da565b949350505050565b60008060408385031215613fb557600080fd5b50508035926020909101359150565b600060208284031215613fd657600080fd5b5035919050565b80356001600160a01b0381168114613ff457600080fd5b919050565b6000806040838503121561400c57600080fd5b61401583613fdd565b946020939093013593505050565b60006020828403121561403557600080fd5b61403e82613fdd565b9392505050565b6000806000806080858703121561405b57600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600890820152670416d6f756e743d360c41b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417612d0b57612d0b6140d0565b60008261411a57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115612d0b57612d0b6140d0565b80820180821115612d0b57612d0b6140d0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561418c57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156141f85781516001600160a01b0316875295820195908201906001016141d3565b509495945050505050565b85815284602082015260a06040820152600061422260a08301866141bf565b6001600160a01b0394909416606083015250608001529392505050565b602080825260139082015272125b9cdd59999a58da595b9d081bdd5d1c1d5d606a1b604082015260600190565b828152604060208201526000613f9a60408301846141bf565b6000602080838503121561429857600080fd5b825167ffffffffffffffff808211156142b057600080fd5b818501915085601f8301126142c457600080fd5b8151818111156142d6576142d6614193565b8060051b604051601f19603f830116810181811085821117156142fb576142fb614193565b60405291825284820192508381018501918883111561431957600080fd5b938501935b828510156143375784518452938501939285019261431e565b98975050505050505050565b60006020828403121561435557600080fd5b8151801515811461403e57600080fd5b60005b83811015614380578181015183820152602001614368565b50506000910152565b6000825161439b818460208701614365565b9190910192915050565b8481526080602082015260006143be60808301866141bf565b6001600160a01b03949094166040830152506060015292915050565b60208152600082518060208401526143f9816040850160208701614365565b601f01601f1916919091016040019291505056fe000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000000b3e328455c4059eeb9e3f84b5543f74e24e7e1b0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad24000000000000000000000000cbb7c0000ab88b473b1f5afd9ef808440eed33bfa2646970667358221220a7a2bc5dfb6455523bf5998499726a674162b746b73fb80672ca2a9a4d662fad64736f6c634300081300330000000000000000000000000e6214f42992683a9177ce65d022f163d7bbd1d2000000000000000000000000ee0b91a41eb1faef101cc4ce3722499a7276f6bd