0 txs
0 calls
constructor
constructor(address _history, uint256 _nextStreamId, address forwarder)
functions
acceptToken
viewfunction acceptToken(address) view returns (bool)
balanceOf
viewfunction balanceOf(uint256 streamId, address who) view returns (uint256 balance)
bank
viewfunction bank() view returns (address)
contractFeeBalance
viewfunction contractFeeBalance() view returns (uint256)
feeCharge
viewfunction feeCharge(uint256 deposit) view returns (uint256)
feeRate
viewfunction feeRate() view returns (uint256)
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)
nextStreamId
viewfunction nextStreamId() view returns (uint256)
numberOfFeeWithdraws
viewfunction numberOfFeeWithdraws() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
usdcTokenAddress
viewfunction usdcTokenAddress() view returns (address)
versionRecipient
viewfunction versionRecipient() view returns (string)
withdraws
viewfunction withdraws(uint256) view returns (uint256 amount, uint256 time, address who)
addTokenForStream
nonpayablefunction addTokenForStream(address _token)
cancelStream
nonpayablefunction cancelStream(uint256 streamId) returns (bool)
changeFeeRate
nonpayablefunction changeFeeRate(uint256 _newFeeRate)
createStream
nonpayablefunction createStream(tuple streamDetails, tuple sig, string title)
pause
nonpayablefunction pause()
removeToken
nonpayablefunction removeToken(address _token)
renounceOwnership
nonpayablefunction renounceOwnership()
setBank
nonpayablefunction setBank(address _newBank)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawFeeForHolders
nonpayablefunction withdrawFeeForHolders(uint256 amount, address reciver) returns (bool)
withdrawFromStream
nonpayablefunction withdrawFromStream(uint256 streamId, uint256 amount) returns (bool)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
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
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600490816200004a919062000630565b50733c499c542cef5e3811e1192ce70d8cc03d5c3359600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600b55348015620000b257600080fd5b50604051620054a5380380620054a58339818101604052810190620000d89190620007b2565b620000f8620000ec6200021260201b60201c565b6200025460201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200016a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000161906200086f565b60405180910390fd5b60008203620001b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a790620008e1565b60405180910390fd5b82600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038190555062000209816200031a60201b60201c565b50505062000903565b6000601460003690501015801562000237575062000236336200035d60201b60201c565b5b156200024d57601436033560601c905062000251565b3390505b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200043857607f821691505b6020821081036200044e576200044d620003f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000479565b620004c4868362000479565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005116200050b6200050584620004dc565b620004e6565b620004dc565b9050919050565b6000819050919050565b6200052d83620004f0565b620005456200053c8262000518565b84845462000486565b825550505050565b600090565b6200055c6200054d565b6200056981848462000522565b505050565b5b8181101562000591576200058560008262000552565b6001810190506200056f565b5050565b601f821115620005e057620005aa8162000454565b620005b58462000469565b81016020851015620005c5578190505b620005dd620005d48562000469565b8301826200056e565b50505b505050565b600082821c905092915050565b60006200060560001984600802620005e5565b1980831691505092915050565b6000620006208383620005f2565b9150826002028217905092915050565b6200063b82620003b6565b67ffffffffffffffff811115620006575762000656620003c1565b5b6200066382546200041f565b6200067082828562000595565b600060209050601f831160018114620006a8576000841562000693578287015190505b6200069f858262000612565b8655506200070f565b601f198416620006b88662000454565b60005b82811015620006e257848901518255600182019150602085019450602081019050620006bb565b86831015620007025784890151620006fe601f891682620005f2565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000749826200071c565b9050919050565b6200075b816200073c565b81146200076757600080fd5b50565b6000815190506200077b8162000750565b92915050565b6200078c81620004dc565b81146200079857600080fd5b50565b600081519050620007ac8162000781565b92915050565b600080600060608486031215620007ce57620007cd62000717565b5b6000620007de868287016200076a565b9350506020620007f1868287016200079b565b925050604062000804868287016200076a565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b600062000857600c836200080e565b915062000864826200081f565b602082019050919050565b600060208201905081810360008301526200088a8162000848565b9050919050565b7f53747265616d206964206973207a65726f000000000000000000000000000000600082015250565b6000620008c96011836200080e565b9150620008d68262000891565b602082019050919050565b60006020820190508181036000830152620008fc81620008ba565b9050919050565b614b9280620009136000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c806377b53ece1161010f5780638da5cb5b116100a2578063b160f9cc11610071578063b160f9cc146105ac578063ce1b815f146105ca578063f2fde38b146105e8578063f95654a714610604576101ef565b80638da5cb5b14610536578063978bbdb91461055457806398daac8314610572578063affca93214610590576101ef565b8063873ed48c116100de578063873ed48c1461049e578063894e9a0d146104ba5780638bc103e2146104ea5780638cd3f06414610506576101ef565b806377b53ece146104165780637a9b2c6c146104345780637c5b3648146104645780638456cb5914610494576101ef565b8063486ff0cd116101875780635fa7b584116101565780635fa7b584146103a25780636db9241b146103be578063715018a6146103ee57806376cdb03b146103f8576101ef565b8063486ff0cd1461030457806355466c3714610322578063572b6c05146103545780635c975abb14610384576101ef565b80631e99d569116101c35780631e99d5691461028e57806328f7c3bf146102ac5780633656eec2146102ca5780633f4ba83a146102fa576101ef565b8062b98a43146101f45780630322bdef14610212578063090d23b9146102425780630ff4c9161461025e575b600080fd5b6101fc610622565b6040516102099190613009565b60405180910390f35b61022c600480360381019061022791906130ac565b610648565b6040516102399190613107565b60405180910390f35b61025c60048036038101906102579190613122565b61087a565b005b6102786004803603810190610273919061314f565b6108c6565b604051610285919061318b565b60405180910390f35b6102966108d0565b6040516102a3919061318b565b60405180910390f35b6102b46108d6565b6040516102c1919061318b565b60405180910390f35b6102e460048036038101906102df91906130ac565b6108dc565b6040516102f1919061318b565b60405180910390f35b610302610b86565b005b61030c610c30565b6040516103199190613236565b60405180910390f35b61033c6004803603810190610337919061314f565b610cbe565b60405161034b93929190613267565b60405180910390f35b61036e60048036038101906103699190613122565b610d08565b60405161037b9190613107565b60405180910390f35b61038c610d61565b6040516103999190613107565b60405180910390f35b6103bc60048036038101906103b79190613122565b610d78565b005b6103d860048036038101906103d3919061314f565b610e31565b6040516103e59190613107565b60405180910390f35b6103f661100d565b005b610400611021565b60405161040d919061329e565b60405180910390f35b61041e611047565b60405161042b919061329e565b60405180910390f35b61044e600480360381019061044991906132b9565b61106d565b60405161045b9190613107565b60405180910390f35b61047e6004803603810190610479919061314f565b6114d8565b60405161048b919061318b565b60405180910390f35b61049c6114fc565b005b6104b860048036038101906104b39190613122565b6115a6565b005b6104d460048036038101906104cf919061314f565b61169f565b6040516104e1919061336c565b60405180910390f35b61050460048036038101906104ff9190613500565b611705565b005b610520600480360381019061051b9190613122565b6120c8565b60405161052d9190613107565b60405180910390f35b61053e6120e8565b60405161054b919061329e565b60405180910390f35b61055c612112565b604051610569919061318b565b60405180910390f35b61057a612118565b6040516105879190613593565b60405180910390f35b6105aa60048036038101906105a5919061314f565b61213e565b005b6105b4612197565b6040516105c1919061318b565b60405180910390f35b6105d261219d565b6040516105df919061329e565b60405180910390f35b61060260048036038101906105fd9190613122565b6121c6565b005b61060c612249565b604051610619919061329e565b60405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610652612258565b60025483111561066157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361069a57600080fd5b600083116106a757600080fd5b600c600081546106b6906135dd565b9190508190555060405180606001604052808481526020014281526020018373ffffffffffffffffffffffffffffffffffffffff16815250600d6000600c548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508260025461076f9190613625565b60028190555060008273ffffffffffffffffffffffffffffffffffffffff168460405161079b9061368a565b60006040518083038185875af1925050503d80600081146107d8576040519150601f19603f3d011682016040523d82523d6000602084013e6107dd565b606091505b5050905080610821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610818906136eb565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f9c74a3eff454be4704451c89978de3c7c598994b70e83bccafa27632a4b8054785604051610867919061318b565b60405180910390a2600191505092915050565b610882612258565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000819050919050565b60035481565b600c5481565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff16610942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093990613757565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75866040518263ffffffff1660e01b815260040161099f919061318b565b600060405180830381865afa1580156109bc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109e59190613a0e565b90506000600760008781526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050610a4a612f25565b6000610a55886122d6565b90508260400151836000015182610a6c9190613a57565b610a769190613a99565b826000018181525050826020015184600001511115610aca5782602001518460000151610aa39190613625565b82602001818152505081602001518260000151610ac09190613625565b8260000181815250505b83610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610b12578160000151955050505050610b7f565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610b765781600001518360200151610b5d9190613625565b8260400181815250508160400151955050505050610b7f565b60009550505050505b5092915050565b610b8e612258565b610b96610d61565b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90613b19565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610c19612460565b604051610c26919061329e565b60405180910390a1565b60048054610c3d90613b68565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6990613b68565b8015610cb65780601f10610c8b57610100808354040283529160200191610cb6565b820191906000526020600020905b815481529060010190602001808311610c9957829003601f168201915b505050505081565b600d6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b610d80612258565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd657600080fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff16610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90613757565b60405180910390fd5b826000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610ef5919061318b565b600060405180830381865afa158015610f12573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610f3b9190613a0e565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610f60612460565b73ffffffffffffffffffffffffffffffffffffffff161480610fb9575080610100015173ffffffffffffffffffffffffffffffffffffffff16610fa1612460565b73ffffffffffffffffffffffffffffffffffffffff16145b610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90613c0b565b60405180910390fd5b61100185612497565b60019350505050919050565b611015612258565b61101f60006128d5565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff166110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca90613757565b60405180910390fd5b836000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401611131919061318b565b600060405180830381865afa15801561114e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906111779190613a0e565b905080610100015173ffffffffffffffffffffffffffffffffffffffff1661119d612460565b73ffffffffffffffffffffffffffffffffffffffff16146111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90613c77565b60405180910390fd5b60008503611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d90613ce3565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75886040518263ffffffff1660e01b8152600401611293919061318b565b600060405180830381865afa1580156112b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112d99190613a0e565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144896040518263ffffffff1660e01b8152600401611338919061318b565b602060405180830381865afa158015611355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113799190613d03565b905042826020015167ffffffffffffffff1611156113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c390613d7c565b60405180910390fd5b60006113dd898461010001516108dc565b905087811015611422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141990613e0e565b60405180910390fd5b600083610100015190506114388a8a838661299b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878b8b6040518363ffffffff1660e01b8152600401611495929190613e2e565b600060405180830381600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b50505050600197505050505050505092915050565b6000612710600b54836114eb9190613a57565b6114f59190613e86565b9050919050565b611504612258565b61150c610d61565b1561154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390613f03565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861158f612460565b60405161159c919061329e565b60405180910390a1565b6115ae612258565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115e757600080fd5b60001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461164457600080fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116a7612f46565b600760008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b61170d610d61565b1561174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174490613f03565b60405180910390fd5b600061175c84602001356114d8565b9050612710846020013510156117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e90613f6f565b60405180910390fd5b80600254016002819055506117ba612460565b73ffffffffffffffffffffffffffffffffffffffff168460600160208101906117e39190613122565b73ffffffffffffffffffffffffffffffffffffffff1614611839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183090613fdb565b60405180910390fd5b600960008560000160208101906118509190613122565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce90614047565b60405180910390fd5b60048460e00160208101906118ec919061407c565b60ff161061192f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611926906140f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1684604001602081019061195a9190613122565b73ffffffffffffffffffffffffffffffffffffffff16036119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790614161565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168460400160208101906119da9190613122565b73ffffffffffffffffffffffffffffffffffffffff1603611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a27906141cd565b60405180910390fd5b611a38612460565b73ffffffffffffffffffffffffffffffffffffffff16846040016020810190611a619190613122565b73ffffffffffffffffffffffffffffffffffffffff1603611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90614239565b60405180910390fd5b6000846020013503611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af5906142a5565b60405180910390fd5b4284608001600060038110611b1657611b156142c5565b5b602002016020810190611b299190614309565b67ffffffffffffffff161015611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90614382565b60405180910390fd5b83608001600060038110611b8b57611b8a6142c5565b5b602002016020810190611b9e9190614309565b67ffffffffffffffff1684608001600160038110611bbf57611bbe6142c5565b5b602002016020810190611bd29190614309565b67ffffffffffffffff1611611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c13906143ee565b60405180910390fd5b600084608001600260038110611c3557611c346142c5565b5b602002016020810190611c489190614309565b67ffffffffffffffff161480611cc4575083608001600060038110611c7057611c6f6142c5565b5b602002016020810190611c839190614309565b67ffffffffffffffff1684608001600260038110611ca457611ca36142c5565b5b602002016020810190611cb79190614309565b67ffffffffffffffff1611155b611d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfa9061445a565b60405180910390fd5b6000846000016020810190611d189190613122565b9050846000016020810190611d2d9190613122565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e9b57846000016020810190611d949190613122565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf611e1a612460565b3087608001358860600135896000016020810190611e38919061407c565b8a602001358b604001356040518863ffffffff1660e01b8152600401611e6497969594939291906144a2565b600060405180830381600087803b158015611e7e57600080fd5b505af1158015611e92573d6000803e3d6000fd5b50505050611ea0565b600080fd5b611ed8611eab612460565b3087602001358473ffffffffffffffffffffffffffffffffffffffff16612b40909392919063ffffffff16565b611f0c611ee3612460565b30848473ffffffffffffffffffffffffffffffffffffffff16612b40909392919063ffffffff16565b611f14612f70565b85608001600060038110611f2b57611f2a6142c5565b5b602002016020810190611f3e9190614309565b86608001600160038110611f5557611f546142c5565b5b602002016020810190611f689190614309565b0367ffffffffffffffff16816000018181525050806000015186602001351015611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe9061455d565b60405180910390fd5b60008082600001518860200135611fde919061457d565b03611fec5760009050612003565b81600001518760200135612000919061457d565b90505b816000015187602001356120179190613e86565b8260200181815250506000600354905060405180608001604052808460200151815260200189602001358152602001838152602001600115158152506007600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050506001600354016003819055506120be818988612bc2565b5050505050505050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612146612258565b6107d0600b54111561218d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612184906145fa565b60405180910390fd5b80600b8190555050565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6121ce612258565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361223d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122349061468c565b60405180910390fd5b612246816128d5565b50565b6000612253612460565b905090565b612260612460565b73ffffffffffffffffffffffffffffffffffffffff1661227e6120e8565b73ffffffffffffffffffffffffffffffffffffffff16146122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb906146f8565b60405180910390fd5b565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff1661233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390613757565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b8152600401612399919061318b565b600060405180830381865afa1580156123b6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906123df9190613a0e565b9050806020015167ffffffffffffffff16421161240057600092505061245a565b806040015167ffffffffffffffff1642101561243857806020015167ffffffffffffffff16426124309190613625565b92505061245a565b8060200151816040015161244c9190614718565b67ffffffffffffffff169250505b50919050565b6000601460003690501015801561247c575061247b33610d08565b5b1561249057601436033560601c9050612494565b3390505b90565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b81526004016124f4919061318b565b600060405180830381865afa158015612511573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061253a9190613a0e565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144846040518263ffffffff1660e01b8152600401612599919061318b565b602060405180830381865afa1580156125b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125da9190613d03565b905042826060015167ffffffffffffffff16111561262d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612624906147a0565b60405180910390fd5b42826040015167ffffffffffffffff16101561267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126759061480c565b60405180910390fd5b8160c0015173ffffffffffffffffffffffffffffffffffffffff166126a1612460565b73ffffffffffffffffffffffffffffffffffffffff161480156126cd5750600182610140015160ff1614155b80156126e25750600382610140015160ff1614155b156126ec57600080fd5b81610100015173ffffffffffffffffffffffffffffffffffffffff16612710612460565b73ffffffffffffffffffffffffffffffffffffffff1614801561273c5750600282610140015160ff1614155b80156127515750600382610140015160ff1614155b1561275b57600080fd5b600081905060008190506000612775868660c001516108dc565b90506000612788878761010001516108dc565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f88836040518363ffffffff1660e01b81526004016127e7929190613e2e565b600060405180830381600087803b15801561280157600080fd5b505af1158015612815573d6000803e3d6000fd5b5050505060076000888152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550506000811461289457612893866101000151828573ffffffffffffffffffffffffffffffffffffffff16612c589092919063ffffffff16565b5b600082146128cc576128cb8660c00151838573ffffffffffffffffffffffffffffffffffffffff16612c589092919063ffffffff16565b5b50505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905060006007600087815260200190815260200160002060020154905084818360200151612a229190613a99565b612a2c9190613625565b6007600088815260200190815260200160002060010181905550600060076000888152602001908152602001600020600201819055506000600760008881526020019081526020016000206001015403612ac35760076000878152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b6000839050612b05856611c37937e0800088612adf9190613625565b8373ffffffffffffffffffffffffffffffffffffffff16612c589092919063ffffffff16565b612b37306611c37937e080008373ffffffffffffffffffffffffffffffffffffffff16612c589092919063ffffffff16565b50505050505050565b612bbc848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612b759392919061482c565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cd7565b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b8152600401612c2193929190614a47565b600060405180830381600087803b158015612c3b57600080fd5b505af1158015612c4f573d6000803e3d6000fd5b50505050505050565b612cd2838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612c8b929190614a87565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cd7565b505050565b6000612d02828473ffffffffffffffffffffffffffffffffffffffff16612d6e90919063ffffffff16565b90506000815114158015612d27575080806020019051810190612d259190614adc565b155b15612d6957826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612d60919061329e565b60405180910390fd5b505050565b6060612d7c83836000612d84565b905092915050565b606081471015612dcb57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612dc2919061329e565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612df49190614b45565b60006040518083038185875af1925050503d8060008114612e31576040519150601f19603f3d011682016040523d82523d6000602084013e612e36565b606091505b5091509150612e46868383612e51565b925050509392505050565b606082612e6657612e6182612ee0565b612ed8565b60008251148015612e8e575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612ed057836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612ec7919061329e565b60405180910390fd5b819050612ed9565b5b9392505050565b600081511115612ef35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052806000815260200160008152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612fcf612fca612fc584612f8a565b612faa565b612f8a565b9050919050565b6000612fe182612fb4565b9050919050565b6000612ff382612fd6565b9050919050565b61300381612fe8565b82525050565b600060208201905061301e6000830184612ffa565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61304b81613038565b811461305657600080fd5b50565b60008135905061306881613042565b92915050565b600061307982612f8a565b9050919050565b6130898161306e565b811461309457600080fd5b50565b6000813590506130a681613080565b92915050565b600080604083850312156130c3576130c261302e565b5b60006130d185828601613059565b92505060206130e285828601613097565b9150509250929050565b60008115159050919050565b613101816130ec565b82525050565b600060208201905061311c60008301846130f8565b92915050565b6000602082840312156131385761313761302e565b5b600061314684828501613097565b91505092915050565b6000602082840312156131655761316461302e565b5b600061317384828501613059565b91505092915050565b61318581613038565b82525050565b60006020820190506131a0600083018461317c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131e05780820151818401526020810190506131c5565b60008484015250505050565b6000601f19601f8301169050919050565b6000613208826131a6565b61321281856131b1565b93506132228185602086016131c2565b61322b816131ec565b840191505092915050565b6000602082019050818103600083015261325081846131fd565b905092915050565b6132618161306e565b82525050565b600060608201905061327c600083018661317c565b613289602083018561317c565b6132966040830184613258565b949350505050565b60006020820190506132b36000830184613258565b92915050565b600080604083850312156132d0576132cf61302e565b5b60006132de85828601613059565b92505060206132ef85828601613059565b9150509250929050565b61330281613038565b82525050565b613311816130ec565b82525050565b60808201600082015161332d60008501826132f9565b50602082015161334060208501826132f9565b50604082015161335360408501826132f9565b5060608201516133666060850182613308565b50505050565b60006080820190506133816000830184613317565b92915050565b600080fd5b600061010082840312156133a3576133a2613387565b5b81905092915050565b600060a082840312156133c2576133c1613387565b5b81905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61340d826131ec565b810181811067ffffffffffffffff8211171561342c5761342b6133d5565b5b80604052505050565b600061343f613024565b905061344b8282613404565b919050565b600067ffffffffffffffff82111561346b5761346a6133d5565b5b613474826131ec565b9050602081019050919050565b82818337600083830152505050565b60006134a361349e84613450565b613435565b9050828152602081018484840111156134bf576134be6133d0565b5b6134ca848285613481565b509392505050565b600082601f8301126134e7576134e66133cb565b5b81356134f7848260208601613490565b91505092915050565b60008060006101c0848603121561351a5761351961302e565b5b60006135288682870161338c565b93505061010061353a868287016133ac565b9250506101a084013567ffffffffffffffff81111561355c5761355b613033565b5b613568868287016134d2565b9150509250925092565b600061357d82612fd6565b9050919050565b61358d81613572565b82525050565b60006020820190506135a86000830184613584565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135e882613038565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361361a576136196135ae565b5b600182019050919050565b600061363082613038565b915061363b83613038565b9250828203905081811115613653576136526135ae565b5b92915050565b600081905092915050565b50565b6000613674600083613659565b915061367f82613664565b600082019050919050565b600061369582613667565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b60006136d56014836131b1565b91506136e08261369f565b602082019050919050565b60006020820190508181036000830152613704816136c8565b9050919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b60006137416015836131b1565b915061374c8261370b565b602082019050919050565b6000602082019050818103600083015261377081613734565b9050919050565b600080fd5b600080fd5b60008151905061379081613042565b92915050565b600067ffffffffffffffff82169050919050565b6137b381613796565b81146137be57600080fd5b50565b6000815190506137d0816137aa565b92915050565b6000815190506137e581613080565b92915050565b600063ffffffff82169050919050565b613804816137eb565b811461380f57600080fd5b50565b600081519050613821816137fb565b92915050565b600060ff82169050919050565b61383d81613827565b811461384857600080fd5b50565b60008151905061385a81613834565b92915050565b600061387361386e84613450565b613435565b90508281526020810184848401111561388f5761388e6133d0565b5b61389a8482856131c2565b509392505050565b600082601f8301126138b7576138b66133cb565b5b81516138c7848260208601613860565b91505092915050565b600061018082840312156138e7576138e6613777565b5b6138f2610180613435565b9050600061390284828501613781565b6000830152506020613916848285016137c1565b602083015250604061392a848285016137c1565b604083015250606061393e848285016137c1565b6060830152506080613952848285016137c1565b60808301525060a061396684828501613781565b60a08301525060c061397a848285016137d6565b60c08301525060e061398e84828501613812565b60e0830152506101006139a3848285016137d6565b610100830152506101206139b98482850161384b565b610120830152506101406139cf8482850161384b565b6101408301525061016082015167ffffffffffffffff8111156139f5576139f461377c565b5b613a01848285016138a2565b6101608301525092915050565b600060208284031215613a2457613a2361302e565b5b600082015167ffffffffffffffff811115613a4257613a41613033565b5b613a4e848285016138d0565b91505092915050565b6000613a6282613038565b9150613a6d83613038565b9250828202613a7b81613038565b91508282048414831517613a9257613a916135ae565b5b5092915050565b6000613aa482613038565b9150613aaf83613038565b9250828201905080821115613ac757613ac66135ae565b5b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613b036014836131b1565b9150613b0e82613acd565b602082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b8057607f821691505b602082108103613b9357613b92613b39565b5b50919050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf56022836131b1565b9150613c0082613b99565b604082019050919050565b60006020820190508181036000830152613c2481613be8565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613c61601b836131b1565b9150613c6c82613c2b565b602082019050919050565b60006020820190508181036000830152613c9081613c54565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613ccd600e836131b1565b9150613cd882613c97565b602082019050919050565b60006020820190508181036000830152613cfc81613cc0565b9050919050565b600060208284031215613d1957613d1861302e565b5b6000613d27848285016137d6565b91505092915050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613d666012836131b1565b9150613d7182613d30565b602082019050919050565b60006020820190508181036000830152613d9581613d59565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613df86024836131b1565b9150613e0382613d9c565b604082019050919050565b60006020820190508181036000830152613e2781613deb565b9050919050565b6000604082019050613e43600083018561317c565b613e50602083018461317c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e9182613038565b9150613e9c83613038565b925082613eac57613eab613e57565b5b828204905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613eed6010836131b1565b9150613ef882613eb7565b602082019050919050565b60006020820190508181036000830152613f1c81613ee0565b9050919050565b7f57726f6e67206465706f73697400000000000000000000000000000000000000600082015250565b6000613f59600d836131b1565b9150613f6482613f23565b602082019050919050565b60006020820190508181036000830152613f8881613f4c565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b6000613fc5600c836131b1565b9150613fd082613f8f565b602082019050919050565b60006020820190508181036000830152613ff481613fb8565b9050919050565b7f57726f6e6720746f6b656e000000000000000000000000000000000000000000600082015250565b6000614031600b836131b1565b915061403c82613ffb565b602082019050919050565b6000602082019050818103600083015261406081614024565b9050919050565b60008135905061407681613834565b92915050565b6000602082840312156140925761409161302e565b5b60006140a084828501614067565b91505092915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b60006140df600d836131b1565b91506140ea826140a9565b602082019050919050565b6000602082019050818103600083015261410e816140d2565b9050919050565b7f73747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b600061414b601a836131b1565b915061415682614115565b602082019050919050565b6000602082019050818103600083015261417a8161413e565b9050919050565b7f73747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b60006141b7601d836131b1565b91506141c282614181565b602082019050919050565b600060208201905081810360008301526141e6816141aa565b9050919050565b7f73747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006142236014836131b1565b915061422e826141ed565b602082019050919050565b6000602082019050818103600083015261425281614216565b9050919050565b7f6465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b600061428f600f836131b1565b915061429a82614259565b602082019050919050565b600060208201905081810360008301526142be81614282565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081359050614303816137aa565b92915050565b60006020828403121561431f5761431e61302e565b5b600061432d848285016142f4565b91505092915050565b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b600061436c6020836131b1565b915061437782614336565b602082019050919050565b6000602082019050818103600083015261439b8161435f565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b60006143d86017836131b1565b91506143e3826143a2565b602082019050919050565b60006020820190508181036000830152614407816143cb565b9050919050565b7f496e76616c696420626c6f636b54696d65000000000000000000000000000000600082015250565b60006144446011836131b1565b915061444f8261440e565b602082019050919050565b6000602082019050818103600083015261447381614437565b9050919050565b61448381613827565b82525050565b6000819050919050565b61449c81614489565b82525050565b600060e0820190506144b7600083018a613258565b6144c46020830189613258565b6144d1604083018861317c565b6144de606083018761317c565b6144eb608083018661447a565b6144f860a0830185614493565b61450560c0830184614493565b98975050505050505050565b7f6465706f73697420736d616c6c6572207468616e2074696d652064656c746100600082015250565b6000614547601f836131b1565b915061455282614511565b602082019050919050565b600060208201905081810360008301526145768161453a565b9050919050565b600061458882613038565b915061459383613038565b9250826145a3576145a2613e57565b5b828206905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b60006145e46011836131b1565b91506145ef826145ae565b602082019050919050565b60006020820190508181036000830152614613816145d7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006146766026836131b1565b91506146818261461a565b604082019050919050565b600060208201905081810360008301526146a581614669565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146e26020836131b1565b91506146ed826146ac565b602082019050919050565b60006020820190508181036000830152614711816146d5565b9050919050565b600061472382613796565b915061472e83613796565b9250828203905067ffffffffffffffff81111561474e5761474d6135ae565b5b92915050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b600061478a600e836131b1565b915061479582614754565b602082019050919050565b600060208201905081810360008301526147b98161477d565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b60006147f6600f836131b1565b9150614801826147c0565b602082019050919050565b60006020820190508181036000830152614825816147e9565b9050919050565b60006060820190506148416000830186613258565b61484e6020830185613258565b61485b604083018461317c565b949350505050565b60006148726020840184613097565b905092915050565b6148838161306e565b82525050565b60006148986020840184613059565b905092915050565b600082905092915050565b600060039050919050565b600081905092915050565b6000819050919050565b6148d481613796565b82525050565b60006148e683836148cb565b60208301905092915050565b600061490160208401846142f4565b905092915050565b6000602082019050919050565b61491f816148ab565b61492981846148b6565b9250614934826148c1565b8060005b8381101561496d5761494a82846148f2565b61495487826148da565b965061495f83614909565b925050600181019050614938565b505050505050565b60006149846020840184614067565b905092915050565b61499581613827565b82525050565b61010082016149ad6000830183614863565b6149ba600085018261487a565b506149c86020830183614889565b6149d560208501826132f9565b506149e36040830183614863565b6149f0604085018261487a565b506149fe6060830183614863565b614a0b606085018261487a565b50614a1960808301836148a0565b614a266080850182614916565b50614a3460e0830183614975565b614a4160e085018261498c565b50505050565b600061014082019050614a5d600083018661317c565b614a6a602083018561499b565b818103610120830152614a7d81846131fd565b9050949350505050565b6000604082019050614a9c6000830185613258565b614aa9602083018461317c565b9392505050565b614ab9816130ec565b8114614ac457600080fd5b50565b600081519050614ad681614ab0565b92915050565b600060208284031215614af257614af161302e565b5b6000614b0084828501614ac7565b91505092915050565b600081519050919050565b6000614b1f82614b09565b614b298185613659565b9350614b398185602086016131c2565b80840191505092915050565b6000614b518284614b14565b91508190509291505056fea2646970667358221220bf256fc243c970bba85c2c33d1cf8decb07d52f4e756502d6ef7732549a4ccc064736f6c63430008110033000000000000000000000000c107ab6ebc7024a1e6123a5ab0d48d6af8a0e4c10000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87