0 txs
1 call
constructor
constructor(address _WETH9, address _poolPositionFactory)
functions
factory
viewfunction factory() view returns (address)
getAddLiquidityParams
viewfunction getAddLiquidityParams(address pool, address poolPosition, uint256 lpTokenAmount) view returns (tuple[] addParams, uint256 bin0LpAmount)
managerTokenId
viewfunction managerTokenId() view returns (uint256)
poolPositionFactory
viewfunction poolPositionFactory() view returns (address)
position
viewfunction position() view returns (address)
WETH9
viewfunction WETH9() view returns (address)
addLiquidityCallback
nonpayablefunction addLiquidityCallback(uint256 amountA, uint256 amountB, bytes _data)
addLiquidityToPoolPosition
payablefunction addLiquidityToPoolPosition(address poolPosition, address recipient, uint256 desiredLpTokenAmount, uint256 minLpTokenAmount, tuple addLimits) payable returns (uint256 mintedPoolPositionTokenAmount, uint256 tokenAAmount, uint256 tokenBAmount)
addLiquidityToPoolPositionWithAddParams
payablefunction addLiquidityToPoolPositionWithAddParams(address poolPosition, address recipient, uint256 minLpTokenAmount, tuple addLimits, tuple[] addParams, uint256 bin0LpAmount) payable returns (uint256 mintedPoolPositionTokenAmount, uint256 tokenAAmount, uint256 tokenBAmount)
createPoolPositionAndAddLiquidity
payablefunction createPoolPositionAndAddLiquidity(address pool, address recipient, tuple[] params, bool isStatic, tuple createLimits) payable returns (address poolPosition, uint256 tokenAAmount, uint256 tokenBAmount, tuple[] binDeltas, uint256 mintedPoolPositionTokenAmount)
migrateBinLiquidity
payablefunction migrateBinLiquidity(address poolPosition) payable
migrateBinsUpStack
payablefunction migrateBinsUpStack(address pool, uint128[] binIds, uint32 maxRecursion, uint256 deadline) payable
multicall
payablefunction multicall(bytes[] data) payable returns (bytes[] results)
refundETH
payablefunction refundETH() payable
removeLiquidityFromPoolPosition
payablefunction removeLiquidityFromPoolPosition(address poolPosition, address recipient, uint256 lpTokenAmount, uint256 minTokenAAmount, uint256 minTokenBAmount, uint256 deadline) payable returns (uint256 tokenAAmount, uint256 tokenBAmount)
sweepToken
payablefunction sweepToken(address token, uint256 amountMinimum, address recipient) payable
unwrapWETH9
payablefunction unwrapWETH9(uint256 amountMinimum, address recipient) payable
events
No events.
errors
EthTransferFailed
error EthTransferFailed()
InsufficientBalance
error InsufficientBalance(address token)
InvalidBinIds
error InvalidBinIds(uint128[] binIds)
InvalidMaxTokenAmount
error InvalidMaxTokenAmount(uint256 tokenAAmount, uint256 maxTokenAAmount, uint256 tokenBAmount, uint256 maxTokenBAmount)
InvalidMinLpAmount
error InvalidMinLpAmount(uint256 tokenAmount, uint256 minTokenAmount)
InvalidMinTokenAmount
error InvalidMinTokenAmount(uint256 tokenAAmount, uint256 minTokenAAmount, uint256 tokenBAmount, uint256 minTokenBAmount)
InvalidProportion
error InvalidProportion()
NonPoolCaller
error NonPoolCaller()
NotFactoryPoolPosition
error NotFactoryPoolPosition()
NotWETH9
error NotWETH9()
PastDeadline
error PastDeadline(uint256 timestamp, uint256 deadline)
creation bytecode
0x6101006040523480156200001257600080fd5b506040516200442d3803806200442d8339810160408190526200003591620001b5565b6001600081905550806001600160a01b0316634219dc406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200007c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a29190620001f4565b6001600160a01b03166080819052604080516309218e9160e01b815290516309218e91916004808201926020929091908290030181865afa158015620000ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001129190620001f4565b6001600160a01b0390811660a081905283821660c05290821660e0526040516335313c2160e11b8152306004820152636a627842906024016020604051808303816000875af11580156200016a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019091906200021b565b60015550620002359050565b6001600160a01b0381168114620001b257600080fd5b50565b60008060408385031215620001c957600080fd5b8251620001d6816200019c565b6020840151909250620001e9816200019c565b809150509250929050565b6000602082840312156200020757600080fd5b815162000214816200019c565b9392505050565b6000602082840312156200022e57600080fd5b5051919050565b60805160a05160c05160e05161415c620002d160003960008181610205015281816105190152818161120b015281816121f6015261250201526000818161012f015281816102b50152818161098c01528181610a5301528181610ab50152818161273301528181612793015261285b01526000818161019f015281816122d501526124410152600081816103920152610e32015261415c6000f3fe6080604052600436106101125760003560e01c806364513d5a116100a5578063ac9650d811610074578063dc8fd18211610059578063dc8fd182146103b4578063df2ab5bb146103d4578063f9570cd4146103e757600080fd5b8063ac9650d814610360578063c45a01551461038057600080fd5b806364513d5a146102d7578063741166e2146102fb57806380a51b221461030e578063ab69290a1461033c57600080fd5b80633339aad1116100e15780633339aad1146102555780633d9e7dc71461026857806349404b7c146102905780634aa4a4fc146102a357600080fd5b806309218e911461018d57806312210e8a146101eb5780631bd7c685146101f3578063243872271461022757600080fd5b36610188573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610186576040517f2f1ca35a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561019957600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101866103fa565b3480156101ff57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b61023a610235366004613191565b610487565b604080519384526020840192909252908201526060016101e2565b61018661026336600461323a565b610663565b61027b6102763660046132b3565b610799565b604080519283526020830191909152016101e2565b61018661029e36600461330c565b6108eb565b3480156102af57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b6102ea6102e536600461335a565b610b3a565b6040516101e2959493929190613417565b6101866103093660046134ed565b610c7d565b34801561031a57600080fd5b5061032e61032936600461350a565b610ce0565b6040516101e29291906135d0565b34801561034857600080fd5b5061035260015481565b6040519081526020016101e2565b61037361036e3660046135f2565b610cfb565b6040516101e29190613696565b34801561038c57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c057600080fd5b506101866103cf366004613716565b610df1565b6101866103e2366004613796565b610ff2565b61023a6103f536600461397b565b611179565b60026000540361046b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000554715610480576104803347611342565b6001600055565b60008060008360400135804211156104d4576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b6040517f1f69e45c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301527f00000000000000000000000000000000000000000000000000000000000000001690631f69e45c90602401602060405180830381865afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190613a72565b6105ba576040517f23c508c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190613a8f565b905060008061063b838d8c6113fb565b9150915061064e8c8c8b8b868689611cb2565b919e909d50909b509950505050505050505050565b80804211156106a7576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b8360005b8181101561078f578773ffffffffffffffffffffffffffffffffffffffff1663c0c5d7fb8888848181106106e1576106e1613aac565b90506020020160208101906106f69190613adb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526fffffffffffffffffffffffffffffffff909116600482015263ffffffff88166024820152604401600060405180830381600087803b15801561076457600080fd5b505af1158015610778573d6000803e3d6000fd5b50505050808061078790613b27565b9150506106ab565b5050505050505050565b60008082804211156107e0576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b6040517fa796f71100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8981166024830152604482018990528a169063a796f7119060640160408051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190613b5f565b90935091508583108061089057508482105b156108df576040517fefecf0b600000000000000000000000000000000000000000000000000000000815260048101849052602481018790526044810183905260648101869052608401610462565b50965096945050505050565b600260005403610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610462565b600260009081556040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c9190613b83565b905082811015610a80576040517f897f6c5800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602401610462565b8015610b30576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610b0e57600080fd5b505af1158015610b22573d6000803e3d6000fd5b50505050610b308282611342565b5050600160005550565b600080600060606000856040013580421115610b8b576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b610bf28c6001548c8c808060200260200160405190810160405280939291908181526020016000905b82821015610be057610bd160a08302860136819003810190613b9c565b81526020019060010190610bb4565b50508d359250505060208c0135611df9565b91975095509350610c0690508c848a611f3d565b9550610c4c86610c1c60808a0160608b01613bb8565b610c26578c610c28565b305b85600081518110610c3b57610c3b613aac565b602002602001015160400151612282565b9150610c5e6080880160608901613bb8565b15610c6e57610c6e868c846124ba565b50965096509650965096915050565b8073ffffffffffffffffffffffffffffffffffffffff16637279f5936040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b5050505050565b60606000610cef8585856113fb565b90969095509350505050565b60608167ffffffffffffffff811115610d1657610d166137d8565b604051908082528060200260200182016040528015610d4957816020015b6060815260200190600190039081610d345790505b50905060005b82811015610de957610db930858584818110610d6d57610d6d613aac565b9050602002810190610d7f9190613bd5565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061269192505050565b828281518110610dcb57610dcb613aac565b60200260200101819052508080610de190613b27565b915050610d4f565b505b92915050565b6000610dff82840184613c3a565b6040517f578eaca400000000000000000000000000000000000000000000000000000000815233600482018190529192507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063578eaca490602401602060405180830381865afa158015610e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb29190613a72565b610ee8576040517f5effc82b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8515610f6957610f698173ffffffffffffffffffffffffffffffffffffffff16630fc63d106040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f609190613a8f565b835133896126bd565b8415610fea57610fea8173ffffffffffffffffffffffffffffffffffffffff16635f64b55b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190613a8f565b835133886126bd565b505050505050565b60026000540361105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610462565b600260009081556040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f39190613b83565b905082811015611147576040517f897f6c5800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610462565b801561116e5761116e73ffffffffffffffffffffffffffffffffffffffff85168383612937565b505060016000555050565b60008060008560400135804211156111c6576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b6040517f1f69e45c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301527f00000000000000000000000000000000000000000000000000000000000000001690631f69e45c90602401602060405180830381865afa158015611252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112769190613a72565b6112ac576040517f23c508c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a73ffffffffffffffffffffffffffffffffffffffff166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131d9190613a8f565b905061132e8b8b8b8b8b8b87611cb2565b919d909c50909a5098505050505050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516113799190613c86565b60006040518083038185875af1925050503d80600081146113b6576040519150601f19603f3d011682016040523d82523d6000602084013e6113bb565b606091505b50509050806113f6576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60606000808473ffffffffffffffffffffffffffffffffffffffff1663b15a3bc66040518163ffffffff1660e01b8152600401600060405180830381865afa15801561144b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114919190810190613cad565b905060008673ffffffffffffffffffffffffffffffffffffffff166344a185bb836000815181106114c4576114c4613aac565b60200260200101516040518263ffffffff1660e01b815260040161150091906fffffffffffffffffffffffffffffffff91909116815260200190565b60e060405180830381865afa15801561151d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115419190613d52565b905060008773ffffffffffffffffffffffffffffffffffffffff16633ab72c106040518163ffffffff1660e01b8152600401602060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b49190613b83565b905060008873ffffffffffffffffffffffffffffffffffffffff166321272d4c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116279190613b83565b90508773ffffffffffffffffffffffffffffffffffffffff1663ef0def6a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611674573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116989190613a72565b1580156116ba575060608301516fffffffffffffffffffffffffffffffff1615155b15611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f42696e206973206d65726765643b206d696772617465206669727374000000006044820152606401610462565b835167ffffffffffffffff81111561173b5761173b6137d8565b6040519080825280602002602001820160405280156117b257816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117595790505b50955061194e878a73ffffffffffffffffffffffffffffffffffffffff16636da3bf8b8b73ffffffffffffffffffffffffffffffffffffffff166317d70f7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118449190613b83565b8860008151811061185757611857613aac565b60200260200101516040518363ffffffff1660e01b81526004016118979291909182526fffffffffffffffffffffffffffffffff16602082015260400190565b602060405180830381865afa1580156118b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d89190613b83565b8a73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611923573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119479190613b83565b6001612a0b565b611959906001613e39565b94508460005b8551811015611ca4578015611ad5578a73ffffffffffffffffffffffffffffffffffffffff166344a185bb87838151811061199c5761199c613aac565b60200260200101516040518263ffffffff1660e01b81526004016119d891906fffffffffffffffffffffffffffffffff91909116815260200190565b60e060405180830381865afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a199190613d52565b6040517f771dc86a00000000000000000000000000000000000000000000000000000000815260048101839052909550611ad29073ffffffffffffffffffffffffffffffffffffffff8c169063771dc86a90602401602060405180830381865afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf9190613e4c565b6fffffffffffffffffffffffffffffffff1688670de0b6b3a76400006001612a0b565b91505b8451602086015160009182916fffffffffffffffffffffffffffffffff9182169116818303611b2b576080890151611b2490829088906fffffffffffffffffffffffffffffffff166001612a0b565b9250611bd5565b80600003611b60576080890151611b5990839088906fffffffffffffffffffffffffffffffff166001612a0b565b9350611bd5565b6080890151611b8690839088906fffffffffffffffffffffffffffffffff166001612a0b565b9350611bc3611b988286856001612a0b565b60808b0151611bbe9084908a906fffffffffffffffffffffffffffffffff166001612a0b565b612a68565b9250611bd28284836001612a0b565b93505b6040518060a001604052808a60a0015160ff1681526020018a60c0015160030b815260200160001515815260200183600014611c2457611c1f611c1a878c6001612a7f565b612b3a565b611c27565b60005b6fffffffffffffffffffffffffffffffff1681526020018215611c5857611c53611c1a868b6001612a7f565b611c5b565b60005b6fffffffffffffffffffffffffffffffff168152508c8681518110611c8257611c82613aac565b6020026020010181905250505050508080611c9c90613b27565b91505061195f565b505050505050935093915050565b60008060006060611cc98560015489600080611df9565b91955093509150508735831180611ce35750876020013582115b15611d35576040517f4457899000000000000000000000000000000000000000000000000000000000815260048101849052883560248201526044810183905260208901356064820152608401610462565b611d5d8682600081518110611d4c57611d4c613aac565b602002602001015160400151612be0565b9550611d858b611d7360808b0160608c01613bb8565b611d7d578b611d7f565b305b88612282565b935088841015611dcb576040517fd769256500000000000000000000000000000000000000000000000000000000815260048101859052602481018a9052604401610462565b611ddb6080890160608a01613bb8565b15611deb57611deb8b8b866124ba565b509750975097945050505050565b6040805160208082018352338083528351918201528692600092839260609273ffffffffffffffffffffffffffffffffffffffff8c1691639d5f20bb9188918c91016040516020818303038152906040526040518463ffffffff1660e01b8152600401611e6893929190613e69565b6000604051808303816000875af1158015611e87573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611ecd9190810190613e94565b9195509350915086841080611ee157508583105b15611f30576040517fefecf0b600000000000000000000000000000000000000000000000000000000815260048101859052602481018890526044810184905260648101879052608401610462565b5095509550955095915050565b8151600090818167ffffffffffffffff811115611f5c57611f5c6137d8565b604051908082528060200260200182016040528015611f85578160200160208202803683370190505b50905060008267ffffffffffffffff811115611fa357611fa36137d8565b604051908082528060200260200182016040528015611fcc578160200160208202803683370190505b509050600086600081518110611fe457611fe4613aac565b60200260200101516040015190506120706040518060e0016040528060006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff1681526020016000815260200160006fffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060030b81526020016000151581525090565b6000805b868110156121b85789818151811061208e5761208e613aac565b6020026020010151925082606001518682815181106120af576120af613aac565b60200260200101906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050816fffffffffffffffffffffffffffffffff1686828151811061210657612106613aac565b60200260200101516fffffffffffffffffffffffffffffffff161161215957856040517f031be3980000000000000000000000000000000000000000000000000000000081526004016104629190614003565b612173611c1a8460400151670de0b6b3a764000087612bef565b85828151811061218557612185613aac565b6fffffffffffffffffffffffffffffffff90921660209283029190910190910152806121b081613b27565b915050612074565b506040517f62e9396a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906362e9396a90612231908d90899089908e90600401614016565b6020604051808303816000875af1158015612250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122749190613a8f565b9a9950505050505050505050565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201839052600092917f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b390604401600060405180830381600087803b15801561231b57600080fd5b505af115801561232f573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663499d1081858361235a87612b3a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff909316600484015260248301919091526fffffffffffffffffffffffffffffffff1660448201526064016020604051808303816000875af11580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124089190613b83565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815260006004820152602481018390529092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063095ea7b390604401600060405180830381600087803b15801561249a57600080fd5b505af11580156124ae573d6000803e3d6000fd5b50505050509392505050565b6040517f237120f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063237120f890602401602060405180830381865afa15801561254b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256f9190613a8f565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152602482018590529192509085169063095ea7b3906044016020604051808303816000875af11580156125e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260c9190613a72565b506040517f7acb77570000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff8481166024830152821690637acb775790604401600060405180830381600087803b15801561267d57600080fd5b505af115801561078f573d6000803e3d6000fd5b60606126b6838360405180606001604052806027815260200161410060279139612cbc565b9392505050565b600260005403612729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610462565b60026000819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561278c5750804710155b156128d2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156127f957600080fd5b505af115801561280d573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc9190613a72565b5061116e565b3073ffffffffffffffffffffffffffffffffffffffff8416036129155761291073ffffffffffffffffffffffffffffffffffffffff85168383612937565b61116e565b61116e73ffffffffffffffffffffffffffffffffffffffff8516848484612de4565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526113f69084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612e48565b600080612a19868686612bef565b90506001836002811115612a2f57612a2f613e0a565b148015612a4c575060008480612a4757612a4761406b565b868809115b15612a5f57612a5c600182613e39565b90505b95945050505050565b600081831015612a7857816126b6565b5090919050565b60006001831480612a8e575083155b15612a9a5750826126b6565b7f8000000000000000000000000000000000000000000000000000000000000000831615612af557612aee7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168561409a565b90506126b6565b818015612b1257508280612b0b57612b0b61406b565b6001850915155b612b2557612b2083856140b1565b612aee565b612b2f83856140b1565b612aee906001613e39565b60006fffffffffffffffffffffffffffffffff821115612bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610462565b5090565b6000818310612a7857816126b6565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612c4757838281612c3d57612c3d61406b565b04925050506126b6565b808411612c5357600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b612d62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610462565b6000808573ffffffffffffffffffffffffffffffffffffffff1685604051612d8a9190613c86565b600060405180830381855af49150503d8060008114612dc5576040519150601f19603f3d011682016040523d82523d6000602084013e612dca565b606091505b5091509150612dda828286612f54565b9695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612e429085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612989565b50505050565b6000612eaa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612fa79092919063ffffffff16565b8051909150156113f65780806020019051810190612ec89190613a72565b6113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610462565b60608315612f635750816126b6565b825115612f735782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046291906140ec565b6060612fb68484600085612fbe565b949350505050565b606082471015613050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610462565b73ffffffffffffffffffffffffffffffffffffffff85163b6130ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610462565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516130f79190613c86565b60006040518083038185875af1925050503d8060008114613134576040519150601f19603f3d011682016040523d82523d6000602084013e613139565b606091505b5091509150613149828286612f54565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461317657600080fd5b50565b60006080828403121561318b57600080fd5b50919050565b600080600080600061010086880312156131aa57600080fd5b85356131b581613154565b945060208601356131c581613154565b935060408601359250606086013591506131e28760808801613179565b90509295509295909350565b60008083601f84011261320057600080fd5b50813567ffffffffffffffff81111561321857600080fd5b6020830191508360208260051b850101111561323357600080fd5b9250929050565b60008060008060006080868803121561325257600080fd5b853561325d81613154565b9450602086013567ffffffffffffffff81111561327957600080fd5b613285888289016131ee565b909550935050604086013563ffffffff811681146132a257600080fd5b949793965091946060013592915050565b60008060008060008060c087890312156132cc57600080fd5b86356132d781613154565b955060208701356132e781613154565b95989597505050506040840135936060810135936080820135935060a0909101359150565b6000806040838503121561331f57600080fd5b82359150602083013561333181613154565b809150509250929050565b801515811461317657600080fd5b80356133558161333c565b919050565b600080600080600080610100878903121561337457600080fd5b863561337f81613154565b9550602087013561338f81613154565b9450604087013567ffffffffffffffff808211156133ac57600080fd5b818901915089601f8301126133c057600080fd5b8135818111156133cf57600080fd5b8a602060a0830285010111156133e457600080fd5b6020830196508095505050506133fc6060880161334a565b915061340b8860808901613179565b90509295509295509295565b600060a080830173ffffffffffffffffffffffffffffffffffffffff8916845260208881860152604088818701526060848188015283895180865260c095508589019150848b0160005b828110156134d157815180516fffffffffffffffffffffffffffffffff908116865288820151811689870152878201518887015286820151168686015260808082015160ff16908601528981015160030b8a86015288015115158885015260e09093019290860190600101613461565b5050508096505050505050508260808301529695505050505050565b6000602082840312156134ff57600080fd5b81356126b681613154565b60008060006060848603121561351f57600080fd5b833561352a81613154565b9250602084013561353a81613154565b929592945050506040919091013590565b600081518084526020808501945080840160005b838110156135c5578151805160ff1688528381015160030b848901526040808201511515908901526060808201516fffffffffffffffffffffffffffffffff908116918a0191909152608091820151169088015260a0909601959082019060010161355f565b509495945050505050565b6040815260006135e3604083018561354b565b90508260208301529392505050565b6000806020838503121561360557600080fd5b823567ffffffffffffffff81111561361c57600080fd5b610cef858286016131ee565b60005b8381101561364357818101518382015260200161362b565b50506000910152565b60008151808452613664816020860160208601613628565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613709577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526136f785835161364c565b945092850192908501906001016136bd565b5092979650505050505050565b6000806000806060858703121561372c57600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561375257600080fd5b818701915087601f83011261376657600080fd5b81358181111561377557600080fd5b88602082850101111561378757600080fd5b95989497505060200194505050565b6000806000606084860312156137ab57600080fd5b83356137b681613154565b92506020840135915060408401356137cd81613154565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561382a5761382a6137d8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613877576138776137d8565b604052919050565b600067ffffffffffffffff821115613899576138996137d8565b5060051b60200190565b60ff8116811461317657600080fd5b8060030b811461317657600080fd5b6fffffffffffffffffffffffffffffffff8116811461317657600080fd5b600060a082840312156138f157600080fd5b60405160a0810181811067ffffffffffffffff82111715613914576139146137d8565b6040529050808235613925816138a3565b81526020830135613935816138b2565b602082015260408301356139488161333c565b6040820152606083013561395b816138c1565b6060820152608083013561396e816138c1565b6080919091015292915050565b600080600080600080610120878903121561399557600080fd5b86356139a081613154565b95506020878101356139b181613154565b9550604088013594506139c78960608a01613179565b935060e088013567ffffffffffffffff8111156139e357600080fd5b8801601f81018a136139f457600080fd5b8035613a07613a028261387f565b613830565b81815260a0918202830184019184820191908d841115613a2657600080fd5b938501935b83851015613a4c57613a3d8e866138df565b83529384019391850191613a2b565b50809650505050505061010087013590509295509295509295565b80516133558161333c565b600060208284031215613a8457600080fd5b81516126b68161333c565b600060208284031215613aa157600080fd5b81516126b681613154565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613aed57600080fd5b81356126b6816138c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b5857613b58613af8565b5060010190565b60008060408385031215613b7257600080fd5b505080516020909101519092909150565b600060208284031215613b9557600080fd5b5051919050565b600060a08284031215613bae57600080fd5b6126b683836138df565b600060208284031215613bca57600080fd5b81356126b68161333c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c0a57600080fd5b83018035915067ffffffffffffffff821115613c2557600080fd5b60200191503681900382131561323357600080fd5b600060208284031215613c4c57600080fd5b6040516020810181811067ffffffffffffffff82111715613c6f57613c6f6137d8565b6040528235613c7d81613154565b81529392505050565b60008251613c98818460208701613628565b9190910192915050565b8051613355816138c1565b60006020808385031215613cc057600080fd5b825167ffffffffffffffff811115613cd757600080fd5b8301601f81018513613ce857600080fd5b8051613cf6613a028261387f565b81815260059190911b82018301908381019087831115613d1557600080fd5b928401925b82841015613149578351613d2d816138c1565b82529284019290840190613d1a565b8051613355816138a3565b8051613355816138b2565b600060e08284031215613d6457600080fd5b60405160e0810181811067ffffffffffffffff82111715613d8757613d876137d8565b6040528251613d95816138c1565b81526020830151613da5816138c1565b60208201526040830151613db8816138c1565b60408201526060830151613dcb816138c1565b6060820152613ddc60808401613ca2565b6080820152613ded60a08401613d3c565b60a0820152613dfe60c08401613d47565b60c08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b80820180821115610deb57610deb613af8565b600060208284031215613e5e57600080fd5b81516126b6816138c1565b838152606060208201526000613e82606083018561354b565b8281036040840152612dda818561364c565b60008060006060808587031215613eaa57600080fd5b84519350602080860151935060408087015167ffffffffffffffff811115613ed157600080fd5b8701601f81018913613ee257600080fd5b8051613ef0613a028261387f565b81815260e0918202830185019185820191908c841115613f0f57600080fd5b938601935b83851015613faf5780858e031215613f2c5760008081fd5b613f34613807565b8551613f3f816138c1565b815285880151613f4e816138c1565b81890152858701518782015288860151613f67816138c1565b818a0152608086810151613f7a816138a3565b9082015260a0613f8b878201613d47565b9082015260c0613f9c878201613a67565b9082015283529384019391860191613f14565b50809750505050505050509250925092565b600081518084526020808501945080840160005b838110156135c55781516fffffffffffffffffffffffffffffffff1687529582019590820190600101613fd5565b6020815260006126b66020830184613fc1565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006140456080830186613fc1565b82810360408401526140578186613fc1565b915050821515606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8082028115828204841417610deb57610deb613af8565b6000826140e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6020815260006126b6602083018461364c56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206bf4728c9160eba578955afbbfff0c20f9e5967748207d718c67a4b5d79724cd64736f6c63430008110033000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000004f24d73773fcce560f4fd641125c23a2b93fcb05