4 txs
65 calls
constructor
constructor(address _initialOwner, address _cowSwapRelayer)
functions
cowSwapRelayer
viewfunction cowSwapRelayer() view returns (address)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
getBuyAmount
viewfunction getBuyAmount(address sellToken) view returns (uint256 unroundedBuyAmount, uint256 roundedBuyAmount)
getSellAmount
viewfunction getSellAmount(address sellToken) view returns (uint256)
getTradeableOrderWithSignature
viewfunction getTradeableOrderWithSignature(address orderOwner, tuple params, bytes, bytes32[]) view returns (tuple order, bytes signature)
isPaused
viewfunction isPaused() view returns (bool)
isValidSignature
viewfunction isValidSignature(bytes32, bytes signature) view returns (bytes4)
orderConfig
viewfunction orderConfig(address sellToken) view returns (tuple config)
owner
viewfunction owner() view returns (address)
supportsInterface
purefunction supportsInterface(bytes4 interfaceId) pure returns (bool)
acceptOwner
nonpayablefunction acceptOwner()
createConditionalOrder
nonpayablefunction createConditionalOrder(address sellToken)
proposeNewOwner
nonpayablefunction proposeNewOwner(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
removeOrderConfig
nonpayablefunction removeOrderConfig(address sellToken)
revokeOwnership
nonpayablefunction revokeOwnership()
setCowApproval
nonpayablefunction setCowApproval(address sellToken, uint256 amount)
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setOrderConfig
nonpayablefunction setOrderConfig(address sellToken, tuple config)
setPaused
nonpayablefunction setPaused(bool paused)
updateAmountsAndPremiumBps
nonpayablefunction updateAmountsAndPremiumBps(address sellToken, uint96 maxSellAmount, uint96 minBuyAmount, uint16 limitPricePremiumBps)
events
ConditionalOrderCreated
event ConditionalOrderCreated(address indexed owner, (address handler, bytes32 salt, bytes staticInput) params)
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
NewOwnerAccepted
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner)
NewOwnerProposed
event NewOwnerProposed(address indexed oldOwner, address indexed oldProposedOwner, address indexed newProposedOwner)
OrderConfigRemoved
event OrderConfigRemoved(address indexed sellToken)
OrderConfigSet
event OrderConfigSet(address indexed sellToken)
PausedSet
event PausedSet(bool paused)
errors
ExpectedNonZero
error ExpectedNonZero()
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress(address addr)
InvalidParam
error InvalidParam()
InvalidSellToken
error InvalidSellToken(address sellToken)
IsPaused
error IsPaused()
OrderDoesNotMatchTradeableOrder
error OrderDoesNotMatchTradeableOrder()
OrderNotValid
error OrderNotValid(string reason)
PollTryAtBlock
error PollTryAtBlock(uint256 blockNumber, string message)
PollTryAtEpoch
error PollTryAtEpoch(uint256 timestamp, string message)
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
Slippage
error Slippage(uint256 minAmountExpected, uint256 actualAmount)
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162003945380380620039458339810160408190526200003491620000ed565b81620000408162000054565b506001600160a01b03166080525062000125565b6000546001600160a01b0316156200007f57604051633006171960e21b815260040160405180910390fd5b6001600160a01b038116620000ae57604051634726455360e11b81526000600482015260240160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620000e857600080fd5b919050565b600080604083850312156200010157600080fd5b6200010c83620000d0565b91506200011c60208401620000d0565b90509250929050565b6080516137fd62000148600039600081816101a9015261189501526137fd6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635f4dfa03116100d8578063a7229fd91161008c578063bfccf0ec11610066578063bfccf0ec146104e7578063daeccc79146104fa578063ebbc49651461052857600080fd5b8063a7229fd91461049c578063b187bd26146104af578063b1f8100d146104d457600080fd5b806370023f6a116100bd57806370023f6a146102fa578063757781081461030d5780638da5cb5b1461048957600080fd5b80635f4dfa03146102bf578063617e7c29146102e757600080fd5b806318978ffd1161012f5780632b968958116101145780632b9689581461029157806333d53bd1146102995780633daaf325146102ac57600080fd5b806318978ffd1461025d57806326e0a1961461027057600080fd5b806310e65c641161016057806310e65c64146101e35780631626ba7e1461020457806316c38b3c1461024857600080fd5b806301ffc9a71461017c5780630cbfe7dc146101a4575b600080fd5b61018f61018a3660046128f8565b610530565b60405190151581526020015b60405180910390f35b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019b565b6101f66101f136600461292b565b610661565b60405190815260200161019b565b6102176102123660046129d2565b610725565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161019b565b61025b610256366004612a7f565b610916565b005b61025b61026b366004612a9c565b6109fe565b61028361027e366004612b2b565b610ee1565b60405161019b929190612d14565b61025b61136e565b61025b6102a7366004612d60565b611489565b61025b6102ba36600461292b565b6116a4565b6102d26102cd36600461292b565b6117ea565b6040805192835260208301919091520161019b565b61025b6102f5366004612dbc565b611822565b61025b61030836600461292b565b6118be565b61047c61031b36600461292b565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152506001600160a01b0390811660009081526003602081815260409283902083516101808101855281546bffffffffffffffffffffffff80821683526c01000000000000000000000000918290048816948301949094526001830154808516968301969096529094048516606085015260028101549485166080850152740100000000000000000000000000000000000000009094041660a083015282015460ff808216151560c0840152610100808304909116151560e084015261ffff62010000830481169184019190915264010000000082041661012083015262ffffff66010000000000009091041661014082015260049091015461016082015290565b60405161019b9190612de8565b6000546101cb906001600160a01b031681565b61025b6104aa366004612efe565b6119a7565b60025461018f9074010000000000000000000000000000000000000000900460ff1681565b61025b6104e236600461292b565b611a71565b61025b6104f5366004612f3f565b611b99565b61018f610508366004612fc7565b600160209081526000928352604080842090915290825290205460ff1681565b61025b611d81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f96b3f2e30000000000000000000000000000000000000000000000000000000014806105c357507fffffffff0000000000000000000000000000000000000000000000000000000082167f26e0a19600000000000000000000000000000000000000000000000000000000145b8061060f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061065b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f1626ba7e00000000000000000000000000000000000000000000000000000000145b92915050565b6000818161066e82611e35565b805460038201546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292935061071d926bffffffffffffffffffffffff9092169161010090910460ff16906001600160a01b038616906370a0823190602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190612ffc565b611eaa565b949350505050565b60025460009074010000000000000000000000000000000000000000900460ff161561077d576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082806020019051810190610793919061303f565b905060006107a48260000151611e35565b805460608401519192506bffffffffffffffffffffffff169060009082116107cc57816107d2565b83606001515b905060006107e585600001518386611ed0565b6003860154909250640100000000900461ffff16905060008161080c57866080015161081d565b608087015161081d9083600061208b565b905080831115610868576040517f2746152a00000000000000000000000000000000000000000000000000000000815260048101829052602481018490526044015b60405180910390fd5b600061087e886000015186898b608001516120ac565b905089805190602001208160405160200161089991906130fd565b60405160208183030381529060405280519060200120146108e6576040517f98c850a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507f1626ba7e000000000000000000000000000000000000000000000000000000009a9950505050505050505050565b610944336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b61097a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805482151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f40db37ff5c0bdc2c427fbb2078c8f24afea940abac0e3c23bb4ea3bf2da2b212906109f390831515815260200190565b60405180910390a150565b610a2c336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b610a62576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610aad576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161085f565b6000610abf604083016020840161292b565b6001600160a01b031603610b1b57610add604082016020830161292b565b6040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240161085f565b610b2b604082016020830161292b565b6001600160a01b0316826001600160a01b031603610b5357610add604082016020830161292b565b610b60602082018261310c565b6bffffffffffffffffffffffff16600003610ba7576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb7606082016040830161310c565b6bffffffffffffffffffffffff16600003610bfe576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c10608083016060840161292b565b6001600160a01b031614610d0f57610c2e608082016060830161292b565b6001600160a01b0316639502128083610c4d604085016020860161292b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd49190613129565b610d0a576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d5f565b6000610d2361012083016101008401613146565b61ffff161115610d5f576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d7160a083016080840161292b565b6001600160a01b031603610d8f57610add60a082016080830161292b565b612710610da461014083016101208401613146565b61ffff161115610de0576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df261016082016101408301613174565b62ffffff16600003610e30576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a80610e4661016083016101408401613174565b62ffffff161115610e83576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526003602052604090208190610ea782826131d2565b50506040516001600160a01b038316907f620697ccb4f53d5acb95d022fff93232f3be2e80bcdc342dd974fc516c4c271c90600090a25050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260025460609074010000000000000000000000000000000000000000900460ff1615610fdd57610f7461012c426134b7565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600660448201527f5061757365640000000000000000000000000000000000000000000000000000606482015260840161085f565b6001600160a01b038816301461104f576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6f72646572206f776e6572206d7573742062652073656c660000000000000000604482015260640161085f565b600061105e602089018961292b565b6001600160a01b0316146110ce576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f68616e646c6572206d75737420626520756e7365740000000000000000000000604482015260640161085f565b60208701351561113a576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f73616c74206d75737420626520756e7365740000000000000000000000000000604482015260640161085f565b600061114960408901896134ca565b810190611156919061292b565b6001600160a01b0380821660009081526003602052604090208054929350916c010000000000000000000000009004166111ec576040517fc8fc272500000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73656c6c546f6b656e206e6f7420636f6e666967757265640000000000000000604482015260640161085f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190612ffc565b9050806000036112ef5761128661012c426134b7565b604080517f7e33463700000000000000000000000000000000000000000000000000000000815260048101929092526024820152600b60448201527f5a65726f42616c616e6365000000000000000000000000000000000000000000606482015260840161085f565b8154600383015460009161131c916bffffffffffffffffffffffff90911690610100900460ff1684611eaa565b9050600061132b858386611ed0565b91505061133a858386846120ac565b96508660405160200161134d91906130fd565b60405160208183030381529060405295505050505050965096945050505050565b61139c336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b6113d2576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b031661dead14611427576002546040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240161085f565b600080546040516001600160a01b03909116907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6114b7336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b6114ed576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826bffffffffffffffffffffffff16600003611535576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816bffffffffffffffffffffffff1660000361157d576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061158885611e35565b60018101549091506c0100000000000000000000000090046001600160a01b03166115e95761ffff8216156115e9576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546bffffffffffffffffffffffff8086167fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009283161783556001830180549186169190921617905560038101805461ffff841662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff9091161790556040516001600160a01b038616907f620697ccb4f53d5acb95d022fff93232f3be2e80bcdc342dd974fc516c4c271c90600090a25050505050565b6116d2336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b611708576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025474010000000000000000000000000000000000000000900460ff161561175d576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61176681611e35565b50604080516001600160a01b0383166020808301919091528251808303909101815260a0820183526000828401818152606084018290526080909301829052925130939283929185917f2cceac5555b0ca45a3744ced542f54b56ad2eb45e521962372eef212a2cbf361916117db919061352f565b60405180910390a25050505050565b60008082816117f882611e35565b80549091506118179083906bffffffffffffffffffffffff1683611ed0565b935093505050915091565b611850336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b611886576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118ba6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083612269565b5050565b6118ec336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b611922576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166000818152600360208190526040808320838155600181018490556002810184905591820180547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001690556004909101829055517f77112f16adb9ba38b96415abef057fc90ed118ff5cd9ccd3640ebd3d36db56309190a250565b6119d5336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b611a0b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611a5091815260200190565b60405180910390a3611a6c6001600160a01b03841683836123a5565b505050565b611a9f336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b611ad5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611b20576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161085f565b600254600080546040516001600160a01b03808616948116939216917f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d891a4600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611bc7336000357fffffffff0000000000000000000000000000000000000000000000000000000016612201565b611bfd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316611c48576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161085f565b604080518082019091526000808252602082015260005b82811015611d7a57838382818110611c7957611c79613567565b905060400201803603810190611c8f9190613596565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b038716600090815260018352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611d73816135f3565b9050611c5f565b5050505050565b6002546001600160a01b03163314611dc5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460405133926001600160a01b03909216917f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55491a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600280549091169055565b6001600160a01b038082166000908152600360205260409020805490916c0100000000000000000000000090910416611ea5576040517fe39ca5270000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161085f565b919050565b600082611eb75783611ec6565b838210611ec45783611ec6565b815b90505b9392505050565b600181015460009081906c0100000000000000000000000090046001600160a01b03168015611fd45760018401546040517f7349615f0000000000000000000000000000000000000000000000000000000081526c010000000000000000000000009091046001600160a01b031690637349615f90611f5a90899089906000908190600401613691565b602060405180830381865afa158015611f77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9b9190612ffc565b600385015490935062010000900461ffff168015611fd2576003850154611fcf90859062010000900461ffff16600061208b565b93505b505b60018401546bffffffffffffffffffffffff16838111611ff45783611ff6565b805b60028601549094507401000000000000000000000000000000000000000090046bffffffffffffffffffffffff168061202f5784612044565b8061203a81876136fe565b6120449190613712565b935083600003612080576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050935093915050565b600080836127100190506120a38582612710866123ee565b95945050505050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260408051610180810182526001600160a01b03878116825285546c01000000000000000000000000900481166020830152600286015416918101919091526060810185905260808101839052600384015460a082019061217b906601000000000000900462ffffff1661249f565b63ffffffff16815260048501546020820152600060408201527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee3467756060820152600385015460ff16151560808201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc960a0820181905260c0909101529050949350505050565b600080546001600160a01b0384811691161480611ec957506001600160a01b03831660009081526001602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff169392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526122e884826124c1565b61239f576040516001600160a01b0384166024820152600060448201526123959085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612564565b61239f8482612564565b50505050565b6040516001600160a01b038316602482015260448101829052611a6c9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612331565b60006123fb858585612666565b905060018260018111156124115761241161362b565b0361071d578280612424576124246136cf565b8486091561071d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561245c5760010161071d565b6040517f63a0577800000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044810184905260640161085f565b600081806124ad8142613729565b6124b7919061374c565b61065b9190613774565b6000806000846001600160a01b0316846040516124de9190613798565b6000604051808303816000865af19150503d806000811461251b576040519150601f19603f3d011682016040523d82523d6000602084013e612520565b606091505b509150915081801561254a57508051158061254a57508080602001905181019061254a9190613129565b80156120a35750505050506001600160a01b03163b151590565b60006125b9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127719092919063ffffffff16565b90508051600014806125da5750808060200190518101906125da9190613129565b611a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161085f565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036126be578382816126b4576126b46136cf565b0492505050611ec9565b838110612708576040517f63a0577800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526044810185905260640161085f565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6060611ec6848460008585600080866001600160a01b031685876040516127989190613798565b60006040518083038185875af1925050503d80600081146127d5576040519150601f19603f3d011682016040523d82523d6000602084013e6127da565b606091505b50915091506127eb878383876127f6565b979650505050505050565b6060831561287f578251600003612878576001600160a01b0385163b612878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161085f565b508161071d565b61071d83838151156128945781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085f91906137b4565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ea557600080fd5b60006020828403121561290a57600080fd5b611ec9826128c8565b6001600160a01b038116811461292857600080fd5b50565b60006020828403121561293d57600080fd5b8135611ec981612913565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171561299b5761299b612948565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156129ca576129ca612948565b604052919050565b600080604083850312156129e557600080fd5b8235915060208084013567ffffffffffffffff80821115612a0557600080fd5b818601915086601f830112612a1957600080fd5b813581811115612a2b57612a2b612948565b612a3d84601f19601f840116016129a1565b91508082528784828501011115612a5357600080fd5b80848401858401376000848284010152508093505050509250929050565b801515811461292857600080fd5b600060208284031215612a9157600080fd5b8135611ec981612a71565b6000808284036101a0811215612ab157600080fd5b8335612abc81612913565b9250610180601f1982011215612ad157600080fd5b506020830190509250929050565b60008083601f840112612af157600080fd5b50813567ffffffffffffffff811115612b0957600080fd5b6020830191508360208260051b8501011115612b2457600080fd5b9250929050565b60008060008060008060808789031215612b4457600080fd5b8635612b4f81612913565b9550602087013567ffffffffffffffff80821115612b6c57600080fd5b908801906060828b031215612b8057600080fd5b90955060408801359080821115612b9657600080fd5b818901915089601f830112612baa57600080fd5b813581811115612bb957600080fd5b8a6020828501011115612bcb57600080fd5b602083019650809550506060890135915080821115612be957600080fd5b50612bf689828a01612adf565b979a9699509497509295939492505050565b80516001600160a01b031682526020810151612c2f60208401826001600160a01b03169052565b506040810151612c4a60408401826001600160a01b03169052565b50606081015160608301526080810151608083015260a0810151612c7660a084018263ffffffff169052565b5060c081015160c083015260e081015160e083015261010080820151818401525061012080820151612cab8285018215159052565b5050610140818101519083015261016090810151910152565b60005b83811015612cdf578181015183820152602001612cc7565b50506000910152565b60008151808452612d00816020860160208601612cc4565b601f01601f19169290920160200192915050565b60006101a0612d238386612c08565b806101808401526120a381840185612ce8565b6bffffffffffffffffffffffff8116811461292857600080fd5b61ffff8116811461292857600080fd5b60008060008060808587031215612d7657600080fd5b8435612d8181612913565b93506020850135612d9181612d36565b92506040850135612da181612d36565b91506060850135612db181612d50565b939692955090935050565b60008060408385031215612dcf57600080fd5b8235612dda81612913565b946020939093013593505050565b81516bffffffffffffffffffffffff16815261018081016020830151612e1960208401826001600160a01b03169052565b506040830151612e3960408401826bffffffffffffffffffffffff169052565b506060830151612e5460608401826001600160a01b03169052565b506080830151612e6f60808401826001600160a01b03169052565b5060a0830151612e8f60a08401826bffffffffffffffffffffffff169052565b5060c0830151612ea360c084018215159052565b5060e0830151612eb760e084018215159052565b506101008381015161ffff81168483015250506101208381015161ffff81168483015250506101408381015162ffffff811684830152505061016092830151919092015290565b600080600060608486031215612f1357600080fd5b8335612f1e81612913565b92506020840135612f2e81612913565b929592945050506040919091013590565b600080600060408486031215612f5457600080fd5b8335612f5f81612913565b9250602084013567ffffffffffffffff80821115612f7c57600080fd5b818601915086601f830112612f9057600080fd5b813581811115612f9f57600080fd5b8760208260061b8501011115612fb457600080fd5b6020830194508093505050509250925092565b60008060408385031215612fda57600080fd5b8235612fe581612913565b9150612ff3602084016128c8565b90509250929050565b60006020828403121561300e57600080fd5b5051919050565b8051611ea581612913565b805163ffffffff81168114611ea557600080fd5b8051611ea581612a71565b6000610180828403121561305257600080fd5b61305a612977565b61306383613015565b815261307160208401613015565b602082015261308260408401613015565b604082015260608301516060820152608083015160808201526130a760a08401613020565b60a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206130da818501613034565b908201526101408381015190820152610160928301519281019290925250919050565b610180810161065b8284612c08565b60006020828403121561311e57600080fd5b8135611ec981612d36565b60006020828403121561313b57600080fd5b8151611ec981612a71565b60006020828403121561315857600080fd5b8135611ec981612d50565b62ffffff8116811461292857600080fd5b60006020828403121561318657600080fd5b8135611ec981613163565b6000813561065b81612d36565b6000813561065b81612913565b6000813561065b81612a71565b6000813561065b81612d50565b6000813561065b81613163565b6132186131de83613191565b82547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116178255565b6132646132276020840161319e565b82546bffffffffffffffffffffffff1660609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016178255565b600181016132776131de60408501613191565b6132866132276060850161319e565b50600281016132cf61329a6080850161319e565b82547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391909116178255565b6133166132de60a08501613191565b82546001600160a01b031660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016178255565b506003810161335c61332a60c085016131ab565b825490151560ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091909116178255565b6133a261336b60e085016131ab565b8280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1691151560081b61ff0016919091179055565b6133e76133b261010085016131b8565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1660109190911b63ffff000016178255565b61342e6133f761012085016131b8565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1660209190911b65ffff0000000016178255565b61347861343e61014085016131c5565b82547fffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff1660309190911b68ffffff00000000000016178255565b5061016082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561065b5761065b613488565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134ff57600080fd5b83018035915067ffffffffffffffff82111561351a57600080fd5b602001915036819003821315612b2457600080fd5b602081526001600160a01b038251166020820152602082015160408201526000604083015160608084015261071d6080840182612ce8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000604082840312156135a857600080fd5b6040516040810181811067ffffffffffffffff821117156135cb576135cb612948565b6040526135d7836128c8565b815260208301356135e781612a71565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362457613624613488565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110612928577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6001600160a01b038516815260208101849052608081016136b18461365a565b8360408301526136c08361365a565b82606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261370d5761370d6136cf565b500490565b808202811582820484141761065b5761065b613488565b600063ffffffff80841680613740576137406136cf565b92169190910492915050565b63ffffffff81811683821602808216919082811461376c5761376c613488565b505092915050565b63ffffffff81811683821601908082111561379157613791613488565b5092915050565b600082516137aa818460208701612cc4565b9190910192915050565b602081526000611ec96020830184612ce856fea2646970667358221220511419867090957fc68a1f7a1bdd6b8cd4f5514c6dbe11cf27512d6376e7c38564736f6c63430008130033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d80000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110