0 txs
0 calls
constructor
constructor(address _history, address _bank, uint256 _streamId)
functions
balanceOf
viewfunction balanceOf(uint256 streamId, address who, tuple stream) view returns (uint256 balance)
bank
viewfunction bank() view returns (address)
contractFeeBalance
viewfunction contractFeeBalance() view returns (uint256)
feeRate
viewfunction feeRate() view returns (uint256)
forwarder
viewfunction forwarder() view returns (address)
getMSg
viewfunction getMSg() view returns (address)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
getValue
purefunction getValue(uint256 _value) pure returns (uint256)
history
viewfunction history() view returns (address)
Ierc20permitusdc
viewfunction Ierc20permitusdc() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
minDeposit
viewfunction minDeposit() view returns (uint256)
nextStreamId
viewfunction nextStreamId() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
token
viewfunction token() view returns (address)
versionRecipient
viewfunction versionRecipient() view returns (string)
withDrawFee
viewfunction withDrawFee() view returns (uint256)
cancelStream
nonpayablefunction cancelStream(uint256 streamId)
changeFeeRate
nonpayablefunction changeFeeRate(uint256 _newFeeRate)
createStream
nonpayablefunction createStream(tuple streamDetails, string title)
emergencyEtherWithdraw
nonpayablefunction emergencyEtherWithdraw(uint256 _amount, address _to)
emergencyTokenWithdraw
nonpayablefunction emergencyTokenWithdraw(address _token, uint256 _amount, address _to)
pause
nonpayablefunction pause()
permitUSDC
nonpayablefunction permitUSDC(tuple sig)
setBank
nonpayablefunction setBank(address _newBank)
setForwarder
nonpayablefunction setForwarder(address _newForwarder)
setMinDeposit
nonpayablefunction setMinDeposit(uint256 _minDeposit)
setWithdrawFee
nonpayablefunction setWithdrawFee(uint256 _withDrawFee)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawFromStream
nonpayablefunction withdrawFromStream(uint256 streamId, uint256 amount) returns (bool)
events
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
withdrawFee
event withdrawFee(uint256 amount, address indexed reciver)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600590816200004a91906200064a565b50620186a060065560646007556103e860085573b2b5841dbef766d4b521221732f9b618fcf34a87600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000bf57600080fd5b50604051620053d9380380620053d98339818101604052810190620000e59190620007cc565b620000f56200023c60201b60201c565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019e9062000889565b60405180910390fd5b82600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200021b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200027e60201b60201c565b6200022c82620002c160201b60201c565b806003819055505050506200091d565b6000601460003690501015801562000261575062000260336200037760201b60201c565b5b156200027757601436033560601c90506200027b565b3390505b90565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000333576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200032a90620008fb565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200045257607f821691505b6020821081036200046857620004676200040a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000493565b620004de868362000493565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200052b620005256200051f84620004f6565b62000500565b620004f6565b9050919050565b6000819050919050565b62000547836200050a565b6200055f620005568262000532565b848454620004a0565b825550505050565b600090565b6200057662000567565b620005838184846200053c565b505050565b5b81811015620005ab576200059f6000826200056c565b60018101905062000589565b5050565b601f821115620005fa57620005c4816200046e565b620005cf8462000483565b81016020851015620005df578190505b620005f7620005ee8562000483565b83018262000588565b50505b505050565b600082821c905092915050565b60006200061f60001984600802620005ff565b1980831691505092915050565b60006200063a83836200060c565b9150826002028217905092915050565b6200065582620003d0565b67ffffffffffffffff811115620006715762000670620003db565b5b6200067d825462000439565b6200068a828285620005af565b600060209050601f831160018114620006c25760008415620006ad578287015190505b620006b985826200062c565b86555062000729565b601f198416620006d2866200046e565b60005b82811015620006fc57848901518255600182019150602085019450602081019050620006d5565b868310156200071c578489015162000718601f8916826200060c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007638262000736565b9050919050565b620007758162000756565b81146200078157600080fd5b50565b60008151905062000795816200076a565b92915050565b620007a681620004f6565b8114620007b257600080fd5b50565b600081519050620007c6816200079b565b92915050565b600080600060608486031215620007e857620007e762000731565b5b6000620007f88682870162000784565b93505060206200080b8682870162000784565b92505060406200081e86828701620007b5565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b600062000871600c8362000828565b91506200087e8262000839565b602082019050919050565b60006020820190508181036000830152620008a48162000862565b9050919050565b7f62616e6b207a65726f2061646472657373000000000000000000000000000000600082015250565b6000620008e360118362000828565b9150620008f082620008ab565b602082019050919050565b600060208201905081810360008301526200091681620008d4565b9050919050565b614aac806200092d6000396000f3fe608060405234801561001057600080fd5b50600436106101fa5760003560e01c8063894e9a0d1161011a578063b6c65c83116100ad578063f2fde38b1161007c578063f2fde38b14610553578063f645d4f91461056f578063f95654a71461058d578063fc0c546a146105ab578063fe265e55146105c9576101fa565b8063b6c65c83146104df578063b9998a24146104fb578063ce1b815f14610517578063eea5bf4b14610535576101fa565b806398daac83116100e957806398daac831461046b578063affca93214610489578063b160f9cc146104a5578063b6ac642a146104c3576101fa565b8063894e9a0d146103e35780638da5cb5b146104135780638fcc9cfb14610431578063978bbdb91461044d576101fa565b80635c975abb116101925780637a9b2c6c116101615780637a9b2c6c1461037157806380b14829146103a15780638456cb59146103bd57806388936029146103c7576101fa565b80635c975abb146102fd5780636441edf61461031b5780636db9241b1461033757806376cdb03b14610353576101fa565b80633f4ba83a116101ce5780633f4ba83a1461028757806341b3d18514610291578063486ff0cd146102af578063572b6c05146102cd576101fa565b8062b98a43146101ff578063090d23b91461021d5780630ff4c916146102395780631e99d56914610269575b600080fd5b6102076105f9565b6040516102149190612daf565b60405180910390f35b61023760048036038101906102329190612e1c565b61061f565b005b610253600480360381019061024e9190612e7f565b6106d2565b6040516102609190612ebb565b60405180910390f35b6102716106dc565b60405161027e9190612ebb565b60405180910390f35b61028f6106e2565b005b6102996107de565b6040516102a69190612ebb565b60405180910390f35b6102b76107e4565b6040516102c49190612f66565b60405180910390f35b6102e760048036038101906102e29190612e1c565b610872565b6040516102f49190612fa3565b60405180910390f35b6103056108cb565b6040516103129190612fa3565b60405180910390f35b61033560048036038101906103309190612fbe565b6108e2565b005b610351600480360381019061034c9190612e7f565b6109ea565b005b61035b610bbe565b6040516103689190613020565b60405180910390f35b61038b6004803603810190610386919061303b565b610be4565b6040516103989190612fa3565b60405180910390f35b6103bb60048036038101906103b6919061309f565b611005565b005b6103c56110ca565b005b6103e160048036038101906103dc91906133db565b6111c6565b005b6103fd60048036038101906103f89190612e7f565b611849565b60405161040a91906134ac565b60405180910390f35b61041b6118af565b6040516104289190613020565b60405180910390f35b61044b60048036038101906104469190612e7f565b6118d5565b005b610455611939565b6040516104629190612ebb565b60405180910390f35b61047361193f565b60405161048091906134e8565b60405180910390f35b6104a3600480360381019061049e9190612e7f565b611965565b005b6104ad611a10565b6040516104ba9190612ebb565b60405180910390f35b6104dd60048036038101906104d89190612e7f565b611a16565b005b6104f960048036038101906104f49190613503565b611a7a565b005b61051560048036038101906105109190612e1c565b611c03565b005b61051f611d10565b60405161052c9190613020565b60405180910390f35b61053d611d39565b60405161054a9190612ebb565b60405180910390f35b61056d60048036038101906105689190612e1c565b611d3f565b005b610577611dba565b6040516105849190613020565b60405180910390f35b610595611de0565b6040516105a29190613020565b60405180910390f35b6105b3611def565b6040516105c09190613564565b60405180910390f35b6105e360048036038101906105de9190613623565b611e07565b6040516105f09190612ebb565b60405180910390f35b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361068e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610685906136c2565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000819050919050565b60035481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073c57600080fd5b6107446108cb565b610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077a9061372e565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6107c7612046565b6040516107d49190613020565b60405180910390a1565b60065481565b600580546107f19061377d565b80601f016020809104026020016040519081016040528092919081815260200182805461081d9061377d565b801561086a5780601f1061083f5761010080835404028352916020019161086a565b820191906000526020600020905b81548152906001019060200180831161084d57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b68015af1d78b58c40000732a9dd7d856b18abe62b030d56f8b130c349a6dea73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016109399190613020565b602060405180830381865afa158015610956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097a91906137c3565b116109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b19061383c565b60405180910390fd5b6109e581838573ffffffffffffffffffffffffffffffffffffffff1661207d9092919063ffffffff16565b505050565b80600b600082815260200190815260200160002060030160009054906101000a900460ff16610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a45906138a8565b60405180910390fd5b816000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610aac9190612ebb565b600060405180830381865afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610af29190613af1565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610b17612046565b73ffffffffffffffffffffffffffffffffffffffff161480610b70575080610100015173ffffffffffffffffffffffffffffffffffffffff16610b58612046565b73ffffffffffffffffffffffffffffffffffffffff16145b610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690613bac565b60405180910390fd5b610bb8846120fc565b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600b600082815260200190815260200160002060030160009054906101000a900460ff16610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c41906138a8565b60405180910390fd5b836000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610ca89190612ebb565b600060405180830381865afa158015610cc5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610cee9190613af1565b905080610100015173ffffffffffffffffffffffffffffffffffffffff16610d14612046565b73ffffffffffffffffffffffffffffffffffffffff1614610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6190613c18565b60405180910390fd5b6000600b60008881526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905060008603610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90613c84565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75896040518263ffffffff1660e01b8152600401610e659190612ebb565b600060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610eab9190613af1565b905042816020015167ffffffffffffffff161115610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef590613cf0565b60405180910390fd5b6000610f108983610100015185611e07565b905087811015610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613d82565b60405180910390fd5b610f66898984610100015186612513565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878a8a6040518363ffffffff1660e01b8152600401610fc3929190613da2565b600060405180830381600087803b158015610fdd57600080fd5b505af1158015610ff1573d6000803e3d6000fd5b505050506001965050505050505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf61104b612046565b30846080013585606001358660000160208101906110699190613dcb565b876020013588604001356040518863ffffffff1660e01b81526004016110959796959493929190613e20565b600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461112457600080fd5b61112c6108cb565b1561116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390613edb565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111af612046565b6040516111bc9190613020565b60405180910390a1565b6111ce6108cb565b1561120e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120590613edb565b60405180910390fd5b61121b8260400151612650565b611223612046565b73ffffffffffffffffffffffffffffffffffffffff16826060015173ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90613f47565b60405180910390fd5b600654826020015110156112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d490613fb3565b60405180910390fd5b60006112ec83602001516126a3565b9050806002546112fc9190614002565b60028190555060048360a0015160ff161061134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390614082565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff16036113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b6906140ee565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff1603611431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114289061415a565b60405180910390fd5b611439612046565b73ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff16036114aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a1906141c6565b60405180910390fd5b60008360200151036114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e890614232565b60405180910390fd5b6000836080015160006003811061150b5761150a614252565b5b602002015167ffffffffffffffff160361155c5742836080015160006003811061153857611537614252565b5b602002019067ffffffffffffffff16908167ffffffffffffffff16815250506115d0565b4267ffffffffffffffff16836080015160006003811061157f5761157e614252565b5b602002015167ffffffffffffffff1610156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c6906142cd565b60405180910390fd5b5b82608001516000600381106115e8576115e7614252565b5b602002015167ffffffffffffffff16836080015160016003811061160f5761160e614252565b5b602002015167ffffffffffffffff161161165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165590614339565b60405180910390fd5b6116aa611669612046565b308560200151733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff166126c7909392919063ffffffff16565b6117146116b5612046565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff166126c7909392919063ffffffff16565b61171c612ccb565b836080015160006003811061173457611733614252565b5b6020020151846080015160016003811061175157611750614252565b5b60200201510367ffffffffffffffff168160000181815250506000816000015185602001516117809190614388565b90508160000151856020015161179691906143b9565b826020018181525050600060035490506040518060800160405280846020015181526020018760200151815260200183815260200160011515815250600b600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505060036000815460010191905081905550611841818787612749565b505050505050565b611851612ce5565b600b60008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461192f57600080fd5b8060068190555050565b60075481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bf57600080fd5b6107d06007541115611a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fd90614436565b60405180910390fd5b8060078190555050565b60025481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a7057600080fd5b8060088190555050565b68015af1d78b58c40000732a9dd7d856b18abe62b030d56f8b130c349a6dea73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ad19190613020565b602060405180830381865afa158015611aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1291906137c3565b11611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b499061383c565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1683604051611b7890614487565b60006040518083038185875af1925050503d8060008114611bb5576040519150601f19603f3d011682016040523d82523d6000602084013e611bba565b606091505b5050905080611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf5906144e8565b60405180910390fd5b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c5d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc390614554565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da5906145e6565b60405180910390fd5b611db7816127df565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611dea612046565b905090565b733c499c542cef5e3811e1192ce70d8cc03d5c335981565b600083600b600082815260200190815260200160002060030160009054906101000a900460ff16611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e64906138a8565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75876040518263ffffffff1660e01b8152600401611eca9190612ebb565b600060405180830381865afa158015611ee7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611f109190613af1565b9050611f1a612d0f565b6000611f25886128f3565b90508560400151866000015182611f3c9190614606565b611f469190614002565b826000018181525050856020015183600001511115611f8c57856020015183600001518360000151611f789190614648565b611f829190614002565b8260000181815250505b82610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611fd3578160000151945050505061203e565b8260c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603612036578160000151866020015161201e9190614648565b8260400181815250508160400151945050505061203e565b600094505050505b509392505050565b60006014600036905010158015612062575061206133610872565b5b1561207657601436033560601c905061207a565b3390505b90565b6120f7838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016120b092919061467c565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a7d565b505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b81526004016121599190612ebb565b600060405180830381865afa158015612176573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061219f9190613af1565b905042816060015167ffffffffffffffff1611156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e9906146f1565b60405180910390fd5b42816040015167ffffffffffffffff161015612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a9061475d565b60405180910390fd5b8060c0015173ffffffffffffffffffffffffffffffffffffffff16612266612046565b73ffffffffffffffffffffffffffffffffffffffff161480156122925750600181610140015160ff1614155b80156122a75750600381610140015160ff1614155b156122b157600080fd5b80610100015173ffffffffffffffffffffffffffffffffffffffff166122d5612046565b73ffffffffffffffffffffffffffffffffffffffff161480156123015750600281610140015160ff1614155b80156123165750600381610140015160ff1614155b1561232057600080fd5b6000600b60008481526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050600061238c848460c0015184611e07565b905060006123a08585610100015185611e07565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f86836040518363ffffffff1660e01b81526004016123ff929190613da2565b600060405180830381600087803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b50505050600b6000868152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff02191690555050600081146124c0576124bf84610100015182733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff1661207d9092919063ffffffff16565b5b6000821461250c5761250b8460c0015183733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff1661207d9092919063ffffffff16565b5b5050505050565b6000816040015190508381836020015161252d9190614002565b6125379190614648565b8260200181815250506000826040018181525050600082602001510361259a57600b6000868152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b6125e683600854866125ac9190614648565b733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff1661207d9092919063ffffffff16565b612649600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff1661207d9092919063ffffffff16565b5050505050565b6000813b905060008163ffffffff161461269f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612696906147c9565b60405180910390fd5b5050565b6000612710600754836126b69190614606565b6126c091906143b9565b9050919050565b612743848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016126fc939291906147e9565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a7d565b50505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b81526004016127a893929190614965565b600060405180830381600087803b1580156127c257600080fd5b505af11580156127d6573d6000803e3d6000fd5b50505050505050565b6000732a9dd7d856b18abe62b030d56f8b130c349a6dea73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161282e9190613020565b602060405180830381865afa15801561284b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286f91906137c3565b036128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a69061383c565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600b600082815260200190815260200160002060030160009054906101000a900460ff16612959576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612950906138a8565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b81526004016129b69190612ebb565b600060405180830381865afa1580156129d3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906129fc9190613af1565b9050806020015167ffffffffffffffff164211612a1d576000925050612a77565b806040015167ffffffffffffffff16421015612a5557806020015167ffffffffffffffff1642612a4d9190614648565b925050612a77565b80602001518160400151612a6991906149a5565b67ffffffffffffffff169250505b50919050565b6000612aa8828473ffffffffffffffffffffffffffffffffffffffff16612b1490919063ffffffff16565b90506000815114158015612acd575080806020019051810190612acb91906149f6565b155b15612b0f57826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612b069190613020565b60405180910390fd5b505050565b6060612b2283836000612b2a565b905092915050565b606081471015612b7157306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612b689190613020565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612b9a9190614a5f565b60006040518083038185875af1925050503d8060008114612bd7576040519150601f19603f3d011682016040523d82523d6000602084013e612bdc565b606091505b5091509150612bec868383612bf7565b925050509392505050565b606082612c0c57612c0782612c86565b612c7e565b60008251148015612c34575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612c7657836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612c6d9190613020565b60405180910390fd5b819050612c7f565b5b9392505050565b600081511115612c995780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806040016040528060008152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b60405180606001604052806000815260200160008152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612d75612d70612d6b84612d30565b612d50565b612d30565b9050919050565b6000612d8782612d5a565b9050919050565b6000612d9982612d7c565b9050919050565b612da981612d8e565b82525050565b6000602082019050612dc46000830184612da0565b92915050565b6000604051905090565b600080fd5b600080fd5b6000612de982612d30565b9050919050565b612df981612dde565b8114612e0457600080fd5b50565b600081359050612e1681612df0565b92915050565b600060208284031215612e3257612e31612dd4565b5b6000612e4084828501612e07565b91505092915050565b6000819050919050565b612e5c81612e49565b8114612e6757600080fd5b50565b600081359050612e7981612e53565b92915050565b600060208284031215612e9557612e94612dd4565b5b6000612ea384828501612e6a565b91505092915050565b612eb581612e49565b82525050565b6000602082019050612ed06000830184612eac565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f10578082015181840152602081019050612ef5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f3882612ed6565b612f428185612ee1565b9350612f52818560208601612ef2565b612f5b81612f1c565b840191505092915050565b60006020820190508181036000830152612f808184612f2d565b905092915050565b60008115159050919050565b612f9d81612f88565b82525050565b6000602082019050612fb86000830184612f94565b92915050565b600080600060608486031215612fd757612fd6612dd4565b5b6000612fe586828701612e07565b9350506020612ff686828701612e6a565b925050604061300786828701612e07565b9150509250925092565b61301a81612dde565b82525050565b60006020820190506130356000830184613011565b92915050565b6000806040838503121561305257613051612dd4565b5b600061306085828601612e6a565b925050602061307185828601612e6a565b9150509250929050565b600080fd5b600060a082840312156130965761309561307b565b5b81905092915050565b600060a082840312156130b5576130b4612dd4565b5b60006130c384828501613080565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61310982612f1c565b810181811067ffffffffffffffff82111715613128576131276130d1565b5b80604052505050565b600061313b612dca565b90506131478282613100565b919050565b600080fd5b600080fd5b600067ffffffffffffffff821115613171576131706130d1565b5b602082029050919050565b600080fd5b600067ffffffffffffffff82169050919050565b61319e81613181565b81146131a957600080fd5b50565b6000813590506131bb81613195565b92915050565b60006131d46131cf84613156565b613131565b905080602084028301858111156131ee576131ed61317c565b5b835b81811015613217578061320388826131ac565b8452602084019350506020810190506131f0565b5050509392505050565b600082601f83011261323657613235613151565b5b60036132438482856131c1565b91505092915050565b600060ff82169050919050565b6132628161324c565b811461326d57600080fd5b50565b60008135905061327f81613259565b92915050565b6000610100828403121561329c5761329b6130cc565b5b6132a660c0613131565b905060006132b684828501612e07565b60008301525060206132ca84828501612e6a565b60208301525060406132de84828501612e07565b60408301525060606132f284828501612e07565b606083015250608061330684828501613221565b60808301525060e061331a84828501613270565b60a08301525092915050565b600080fd5b600067ffffffffffffffff821115613346576133456130d1565b5b61334f82612f1c565b9050602081019050919050565b82818337600083830152505050565b600061337e6133798461332b565b613131565b90508281526020810184848401111561339a57613399613326565b5b6133a584828561335c565b509392505050565b600082601f8301126133c2576133c1613151565b5b81356133d284826020860161336b565b91505092915050565b60008061012083850312156133f3576133f2612dd4565b5b600061340185828601613285565b92505061010083013567ffffffffffffffff81111561342357613422612dd9565b5b61342f858286016133ad565b9150509250929050565b61344281612e49565b82525050565b61345181612f88565b82525050565b60808201600082015161346d6000850182613439565b5060208201516134806020850182613439565b5060408201516134936040850182613439565b5060608201516134a66060850182613448565b50505050565b60006080820190506134c16000830184613457565b92915050565b60006134d282612d7c565b9050919050565b6134e2816134c7565b82525050565b60006020820190506134fd60008301846134d9565b92915050565b6000806040838503121561351a57613519612dd4565b5b600061352885828601612e6a565b925050602061353985828601612e07565b9150509250929050565b600061354e82612d7c565b9050919050565b61355e81613543565b82525050565b60006020820190506135796000830184613555565b92915050565b61358881612f88565b811461359357600080fd5b50565b6000813590506135a58161357f565b92915050565b6000608082840312156135c1576135c06130cc565b5b6135cb6080613131565b905060006135db84828501612e6a565b60008301525060206135ef84828501612e6a565b602083015250604061360384828501612e6a565b604083015250606061361784828501613596565b60608301525092915050565b600080600060c0848603121561363c5761363b612dd4565b5b600061364a86828701612e6a565b935050602061365b86828701612e07565b925050604061366c868287016135ab565b9150509250925092565b7f62616e6b207a65726f2061646472657373000000000000000000000000000000600082015250565b60006136ac601183612ee1565b91506136b782613676565b602082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613718601483612ee1565b9150613723826136e2565b602082019050919050565b600060208201905081810360008301526137478161370b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061379557607f821691505b6020821081036137a8576137a761374e565b5b50919050565b6000815190506137bd81612e53565b92915050565b6000602082840312156137d9576137d8612dd4565b5b60006137e7848285016137ae565b91505092915050565b7f6f6e6c79204374726c5800000000000000000000000000000000000000000000600082015250565b6000613826600a83612ee1565b9150613831826137f0565b602082019050919050565b6000602082019050818103600083015261385581613819565b9050919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b6000613892601583612ee1565b915061389d8261385c565b602082019050919050565b600060208201905081810360008301526138c181613885565b9050919050565b6000815190506138d781613195565b92915050565b6000815190506138ec81612df0565b92915050565b600063ffffffff82169050919050565b61390b816138f2565b811461391657600080fd5b50565b60008151905061392881613902565b92915050565b60008151905061393d81613259565b92915050565b60006139566139518461332b565b613131565b90508281526020810184848401111561397257613971613326565b5b61397d848285612ef2565b509392505050565b600082601f83011261399a57613999613151565b5b81516139aa848260208601613943565b91505092915050565b600061018082840312156139ca576139c96130cc565b5b6139d5610180613131565b905060006139e5848285016137ae565b60008301525060206139f9848285016138c8565b6020830152506040613a0d848285016138c8565b6040830152506060613a21848285016138c8565b6060830152506080613a35848285016138c8565b60808301525060a0613a49848285016137ae565b60a08301525060c0613a5d848285016138dd565b60c08301525060e0613a7184828501613919565b60e083015250610100613a86848285016138dd565b61010083015250610120613a9c8482850161392e565b61012083015250610140613ab28482850161392e565b6101408301525061016082015167ffffffffffffffff811115613ad857613ad761314c565b5b613ae484828501613985565b6101608301525092915050565b600060208284031215613b0757613b06612dd4565b5b600082015167ffffffffffffffff811115613b2557613b24612dd9565b5b613b31848285016139b3565b91505092915050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b96602283612ee1565b9150613ba182613b3a565b604082019050919050565b60006020820190508181036000830152613bc581613b89565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613c02601b83612ee1565b9150613c0d82613bcc565b602082019050919050565b60006020820190508181036000830152613c3181613bf5565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613c6e600e83612ee1565b9150613c7982613c38565b602082019050919050565b60006020820190508181036000830152613c9d81613c61565b9050919050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613cda601283612ee1565b9150613ce582613ca4565b602082019050919050565b60006020820190508181036000830152613d0981613ccd565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613d6c602483612ee1565b9150613d7782613d10565b604082019050919050565b60006020820190508181036000830152613d9b81613d5f565b9050919050565b6000604082019050613db76000830185612eac565b613dc46020830184612eac565b9392505050565b600060208284031215613de157613de0612dd4565b5b6000613def84828501613270565b91505092915050565b613e018161324c565b82525050565b6000819050919050565b613e1a81613e07565b82525050565b600060e082019050613e35600083018a613011565b613e426020830189613011565b613e4f6040830188612eac565b613e5c6060830187612eac565b613e696080830186613df8565b613e7660a0830185613e11565b613e8360c0830184613e11565b98975050505050505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613ec5601083612ee1565b9150613ed082613e8f565b602082019050919050565b60006020820190508181036000830152613ef481613eb8565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b6000613f31600c83612ee1565b9150613f3c82613efb565b602082019050919050565b60006020820190508181036000830152613f6081613f24565b9050919050565b7f546f206c6974746c65206465706f736974000000000000000000000000000000600082015250565b6000613f9d601183612ee1565b9150613fa882613f67565b602082019050919050565b60006020820190508181036000830152613fcc81613f90565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061400d82612e49565b915061401883612e49565b92508282019050808211156140305761402f613fd3565b5b92915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b600061406c600d83612ee1565b915061407782614036565b602082019050919050565b6000602082019050818103600083015261409b8161405f565b9050919050565b7f53747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b60006140d8601a83612ee1565b91506140e3826140a2565b602082019050919050565b60006020820190508181036000830152614107816140cb565b9050919050565b7f53747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b6000614144601d83612ee1565b915061414f8261410e565b602082019050919050565b6000602082019050818103600083015261417381614137565b9050919050565b7f53747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006141b0601483612ee1565b91506141bb8261417a565b602082019050919050565b600060208201905081810360008301526141df816141a3565b9050919050565b7f4465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b600061421c600f83612ee1565b9150614227826141e6565b602082019050919050565b6000602082019050818103600083015261424b8161420f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b60006142b7602083612ee1565b91506142c282614281565b602082019050919050565b600060208201905081810360008301526142e6816142aa565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b6000614323601783612ee1565b915061432e826142ed565b602082019050919050565b6000602082019050818103600083015261435281614316565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061439382612e49565b915061439e83612e49565b9250826143ae576143ad614359565b5b828206905092915050565b60006143c482612e49565b91506143cf83612e49565b9250826143df576143de614359565b5b828204905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b6000614420601183612ee1565b915061442b826143ea565b602082019050919050565b6000602082019050818103600083015261444f81614413565b9050919050565b600081905092915050565b50565b6000614471600083614456565b915061447c82614461565b600082019050919050565b600061449282614464565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b60006144d2601483612ee1565b91506144dd8261449c565b602082019050919050565b60006020820190508181036000830152614501816144c5565b9050919050565b7f20666f72776172646572207a65726f2061646472657373000000000000000000600082015250565b600061453e601783612ee1565b915061454982614508565b602082019050919050565b6000602082019050818103600083015261456d81614531565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145d0602683612ee1565b91506145db82614574565b604082019050919050565b600060208201905081810360008301526145ff816145c3565b9050919050565b600061461182612e49565b915061461c83612e49565b925082820261462a81612e49565b9150828204841483151761464157614640613fd3565b5b5092915050565b600061465382612e49565b915061465e83612e49565b925082820390508181111561467657614675613fd3565b5b92915050565b60006040820190506146916000830185613011565b61469e6020830184612eac565b9392505050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b60006146db600e83612ee1565b91506146e6826146a5565b602082019050919050565b6000602082019050818103600083015261470a816146ce565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b6000614747600f83612ee1565b915061475282614711565b602082019050919050565b600060208201905081810360008301526147768161473a565b9050919050565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b60006147b3600c83612ee1565b91506147be8261477d565b602082019050919050565b600060208201905081810360008301526147e2816147a6565b9050919050565b60006060820190506147fe6000830186613011565b61480b6020830185613011565b6148186040830184612eac565b949350505050565b61482981612dde565b82525050565b600060039050919050565b600081905092915050565b6000819050919050565b61485881613181565b82525050565b600061486a838361484f565b60208301905092915050565b6000602082019050919050565b61488c8161482f565b614896818461483a565b92506148a182614845565b8060005b838110156148d25781516148b9878261485e565b96506148c483614876565b9250506001810190506148a5565b505050505050565b6148e38161324c565b82525050565b610100820160008201516149006000850182614820565b5060208201516149136020850182613439565b5060408201516149266040850182614820565b5060608201516149396060850182614820565b50608082015161494c6080850182614883565b5060a082015161495f60e08501826148da565b50505050565b60006101408201905061497b6000830186612eac565b61498860208301856148e9565b81810361012083015261499b8184612f2d565b9050949350505050565b60006149b082613181565b91506149bb83613181565b9250828203905067ffffffffffffffff8111156149db576149da613fd3565b5b92915050565b6000815190506149f08161357f565b92915050565b600060208284031215614a0c57614a0b612dd4565b5b6000614a1a848285016149e1565b91505092915050565b600081519050919050565b6000614a3982614a23565b614a438185614456565b9350614a53818560208601612ef2565b80840191505092915050565b6000614a6b8284614a2e565b91508190509291505056fea2646970667358221220df1c560c440a2f66fb7600cb22fb7ae7f471d8591306e0164ded55c3ee4122d564736f6c63430008130033000000000000000000000000de90006d73593650d8c7b9b16afd04e0bc2d813b00000000000000000000000064c47f5fb776c41ef357274b27897cc5088330c60000000000000000000000000000000000000000000000000000000000000001