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)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
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
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600490816200004a919062000630565b50733c499c542cef5e3811e1192ce70d8cc03d5c3359600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600b55348015620000b257600080fd5b5060405162005425380380620054258339818101604052810190620000d89190620007b2565b620000f8620000ec6200021260201b60201c565b6200025460201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200016a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000161906200086f565b60405180910390fd5b60008203620001b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a790620008e1565b60405180910390fd5b82600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038190555062000209816200031a60201b60201c565b50505062000903565b6000601460003690501015801562000237575062000236336200035d60201b60201c565b5b156200024d57601436033560601c905062000251565b3390505b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200043857607f821691505b6020821081036200044e576200044d620003f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000479565b620004c4868362000479565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005116200050b6200050584620004dc565b620004e6565b620004dc565b9050919050565b6000819050919050565b6200052d83620004f0565b620005456200053c8262000518565b84845462000486565b825550505050565b600090565b6200055c6200054d565b6200056981848462000522565b505050565b5b8181101562000591576200058560008262000552565b6001810190506200056f565b5050565b601f821115620005e057620005aa8162000454565b620005b58462000469565b81016020851015620005c5578190505b620005dd620005d48562000469565b8301826200056e565b50505b505050565b600082821c905092915050565b60006200060560001984600802620005e5565b1980831691505092915050565b6000620006208383620005f2565b9150826002028217905092915050565b6200063b82620003b6565b67ffffffffffffffff811115620006575762000656620003c1565b5b6200066382546200041f565b6200067082828562000595565b600060209050601f831160018114620006a8576000841562000693578287015190505b6200069f858262000612565b8655506200070f565b601f198416620006b88662000454565b60005b82811015620006e257848901518255600182019150602085019450602081019050620006bb565b86831015620007025784890151620006fe601f891682620005f2565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000749826200071c565b9050919050565b6200075b816200073c565b81146200076757600080fd5b50565b6000815190506200077b8162000750565b92915050565b6200078c81620004dc565b81146200079857600080fd5b50565b600081519050620007ac8162000781565b92915050565b600080600060608486031215620007ce57620007cd62000717565b5b6000620007de868287016200076a565b9350506020620007f1868287016200079b565b925050604062000804868287016200076a565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b600062000857600c836200080e565b915062000864826200081f565b602082019050919050565b600060208201905081810360008301526200088a8162000848565b9050919050565b7f53747265616d206964206973207a65726f000000000000000000000000000000600082015250565b6000620008c96011836200080e565b9150620008d68262000891565b602082019050919050565b60006020820190508181036000830152620008fc81620008ba565b9050919050565b614b1280620009136000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c806376cdb03b116101045780638cd3f064116100a2578063affca93211610071578063affca9321461054a578063b160f9cc14610566578063ce1b815f14610584578063f2fde38b146105a2576101d9565b80638cd3f064146104c05780638da5cb5b146104f0578063978bbdb91461050e57806398daac831461052c576101d9565b80637c5b3648116100de5780637c5b36481461043a5780638456cb591461046a578063873ed48c14610474578063894e9a0d14610490576101d9565b806376cdb03b146103ce57806377b53ece146103ec5780637a9b2c6c1461040a576101d9565b80633f4ba83a1161017c5780635c975abb1161014b5780635c975abb1461035a5780635fa7b584146103785780636db9241b14610394578063715018a6146103c4576101d9565b80633f4ba83a146102d0578063486ff0cd146102da57806355466c37146102f8578063572b6c051461032a576101d9565b8063090d23b9116101b8578063090d23b9146102485780631e99d5691461026457806328f7c3bf146102825780633656eec2146102a0576101d9565b8062b98a43146101de5780630231ddb3146101fc5780630322bdef14610218575b600080fd5b6101e66105be565b6040516101f39190612f89565b60405180910390f35b61021660048036038101906102119190613142565b6105e4565b005b610232600480360381019061022d9190613228565b610fa4565b60405161023f9190613283565b60405180910390f35b610262600480360381019061025d919061329e565b6111d6565b005b61026c611222565b60405161027991906132da565b60405180910390f35b61028a611228565b60405161029791906132da565b60405180910390f35b6102ba60048036038101906102b59190613228565b61122e565b6040516102c791906132da565b60405180910390f35b6102d86114d8565b005b6102e2611582565b6040516102ef9190613374565b60405180910390f35b610312600480360381019061030d9190613396565b611610565b604051610321939291906133d2565b60405180910390f35b610344600480360381019061033f919061329e565b61165a565b6040516103519190613283565b60405180910390f35b6103626116b3565b60405161036f9190613283565b60405180910390f35b610392600480360381019061038d919061329e565b6116ca565b005b6103ae60048036038101906103a99190613396565b611783565b6040516103bb9190613283565b60405180910390f35b6103cc61195f565b005b6103d6611973565b6040516103e39190613409565b60405180910390f35b6103f4611999565b6040516104019190613409565b60405180910390f35b610424600480360381019061041f9190613424565b6119bf565b6040516104319190613283565b60405180910390f35b610454600480360381019061044f9190613396565b611e2a565b60405161046191906132da565b60405180910390f35b610472611e4e565b005b61048e6004803603810190610489919061329e565b611ef8565b005b6104aa60048036038101906104a59190613396565b611ff1565b6040516104b791906134d7565b60405180910390f35b6104da60048036038101906104d5919061329e565b612057565b6040516104e79190613283565b60405180910390f35b6104f8612077565b6040516105059190613409565b60405180910390f35b6105166120a1565b60405161052391906132da565b60405180910390f35b6105346120a7565b6040516105419190613513565b60405180910390f35b610564600480360381019061055f9190613396565b6120cd565b005b61056e612126565b60405161057b91906132da565b60405180910390f35b61058c61212c565b6040516105999190613409565b60405180910390f35b6105bc60048036038101906105b7919061329e565b612155565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105ec6116b3565b1561062c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106239061357a565b60405180910390fd5b600061063b8460200135611e2a565b905061271084602001351015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067d906135e6565b60405180910390fd5b80600254016002819055506106996121d8565b73ffffffffffffffffffffffffffffffffffffffff168460600160208101906106c2919061329e565b73ffffffffffffffffffffffffffffffffffffffff1614610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90613652565b60405180910390fd5b6009600085600001602081019061072f919061329e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad906136be565b60405180910390fd5b60048460e00160208101906107cb9190613717565b60ff161061080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080590613790565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16846040016020810190610839919061329e565b73ffffffffffffffffffffffffffffffffffffffff160361088f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610886906137fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168460400160208101906108b9919061329e565b73ffffffffffffffffffffffffffffffffffffffff160361090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690613868565b60405180910390fd5b6109176121d8565b73ffffffffffffffffffffffffffffffffffffffff16846040016020810190610940919061329e565b73ffffffffffffffffffffffffffffffffffffffff1603610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d906138d4565b60405180910390fd5b60008460200135036109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490613940565b60405180910390fd5b42846080016000600381106109f5576109f4613960565b5b602002016020810190610a0891906139cf565b67ffffffffffffffff161015610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a90613a48565b60405180910390fd5b83608001600060038110610a6a57610a69613960565b5b602002016020810190610a7d91906139cf565b67ffffffffffffffff1684608001600160038110610a9e57610a9d613960565b5b602002016020810190610ab191906139cf565b67ffffffffffffffff1611610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af290613ab4565b60405180910390fd5b600084608001600260038110610b1457610b13613960565b5b602002016020810190610b2791906139cf565b67ffffffffffffffff161480610ba3575083608001600060038110610b4f57610b4e613960565b5b602002016020810190610b6291906139cf565b67ffffffffffffffff1684608001600260038110610b8357610b82613960565b5b602002016020810190610b9691906139cf565b67ffffffffffffffff1611155b610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd990613b20565b60405180910390fd5b6000846000016020810190610bf7919061329e565b9050846000016020810190610c0c919061329e565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d8557846000016020810190610c73919061329e565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf610cf96121d8565b30858960200135610d0a9190613b6f565b8860600135896000016020810190610d229190613717565b8a602001358b604001356040518863ffffffff1660e01b8152600401610d4e9796959493929190613bcb565b600060405180830381600087803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b50505050610d8a565b600080fd5b610dbb333087602001358473ffffffffffffffffffffffffffffffffffffffff1661220f909392919063ffffffff16565b610de83330848473ffffffffffffffffffffffffffffffffffffffff1661220f909392919063ffffffff16565b610df0612ea5565b85608001600060038110610e0757610e06613960565b5b602002016020810190610e1a91906139cf565b86608001600160038110610e3157610e30613960565b5b602002016020810190610e4491906139cf565b0367ffffffffffffffff16816000018181525050806000015186602001351015610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a90613c86565b60405180910390fd5b60008082600001518860200135610eba9190613cd5565b03610ec85760009050610edf565b81600001518760200135610edc9190613cd5565b90505b81600001518760200135610ef39190613d06565b8260200181815250506000600354905060405180608001604052808460200151815260200189602001358152602001838152602001600115158152506007600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908315150217905550905050600160035401600381905550610f9a818988612291565b5050505050505050565b6000610fae612327565b600254831115610fbd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ff657600080fd5b6000831161100357600080fd5b600c6000815461101290613d37565b9190508190555060405180606001604052808481526020014281526020018373ffffffffffffffffffffffffffffffffffffffff16815250600d6000600c548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050826002546110cb9190613d7f565b60028190555060008273ffffffffffffffffffffffffffffffffffffffff16846040516110f790613de4565b60006040518083038185875af1925050503d8060008114611134576040519150601f19603f3d011682016040523d82523d6000602084013e611139565b606091505b505090508061117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613e45565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f9c74a3eff454be4704451c89978de3c7c598994b70e83bccafa27632a4b80547856040516111c391906132da565b60405180910390a2600191505092915050565b6111de612327565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b600c5481565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff16611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90613eb1565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75866040518263ffffffff1660e01b81526004016112f191906132da565b600060405180830381865afa15801561130e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113379190614119565b90506000600760008781526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905061139c612ebf565b60006113a7886123a5565b905082604001518360000151826113be9190614162565b6113c89190613b6f565b82600001818152505082602001518460000151111561141c57826020015184600001516113f59190613d7f565b826020018181525050816020015182600001516114129190613d7f565b8260000181815250505b83610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036114645781600001519550505050506114d1565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036114c857816000015183602001516114af9190613d7f565b82604001818152505081604001519550505050506114d1565b60009550505050505b5092915050565b6114e0612327565b6114e86116b3565b611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906141f0565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61156b6121d8565b6040516115789190613409565b60405180910390a1565b6004805461158f9061423f565b80601f01602080910402602001604051908101604052809291908181526020018280546115bb9061423f565b80156116085780601f106115dd57610100808354040283529160200191611608565b820191906000526020600020905b8154815290600101906020018083116115eb57829003601f168201915b505050505081565b600d6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b6116d2612327565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661172857600080fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff166117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090613eb1565b60405180910390fd5b826000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b815260040161184791906132da565b600060405180830381865afa158015611864573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061188d9190614119565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff166118b26121d8565b73ffffffffffffffffffffffffffffffffffffffff16148061190b575080610100015173ffffffffffffffffffffffffffffffffffffffff166118f36121d8565b73ffffffffffffffffffffffffffffffffffffffff16145b61194a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611941906142e2565b60405180910390fd5b6119538561252f565b60019350505050919050565b611967612327565b611971600061296d565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff16611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613eb1565b60405180910390fd5b836000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401611a8391906132da565b600060405180830381865afa158015611aa0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611ac99190614119565b905080610100015173ffffffffffffffffffffffffffffffffffffffff16611aef6121d8565b73ffffffffffffffffffffffffffffffffffffffff1614611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c9061434e565b60405180910390fd5b60008503611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f906143ba565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75886040518263ffffffff1660e01b8152600401611be591906132da565b600060405180830381865afa158015611c02573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c2b9190614119565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144896040518263ffffffff1660e01b8152600401611c8a91906132da565b602060405180830381865afa158015611ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccb91906143da565b905042826020015167ffffffffffffffff161115611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614453565b60405180910390fd5b6000611d2f8984610100015161122e565b905087811015611d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6b906144e5565b60405180910390fd5b60008361010001519050611d8a8a8a8386612a33565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878b8b6040518363ffffffff1660e01b8152600401611de7929190614505565b600060405180830381600087803b158015611e0157600080fd5b505af1158015611e15573d6000803e3d6000fd5b50505050600197505050505050505092915050565b6000612710600b5483611e3d9190614162565b611e479190613d06565b9050919050565b611e56612327565b611e5e6116b3565b15611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e959061357a565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611ee16121d8565b604051611eee9190613409565b60405180910390a1565b611f00612327565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f3957600080fd5b60001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611f9657600080fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ff9612ee0565b600760008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120d5612327565b6107d0600b54111561211c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121139061457a565b60405180910390fd5b80600b8190555050565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61215d612327565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c39061460c565b60405180910390fd5b6121d58161296d565b50565b600060146000369050101580156121f457506121f33361165a565b5b1561220857601436033560601c905061220c565b3390505b90565b61228b848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016122449392919061462c565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bd8565b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b81526004016122f093929190614847565b600060405180830381600087803b15801561230a57600080fd5b505af115801561231e573d6000803e3d6000fd5b50505050505050565b61232f6121d8565b73ffffffffffffffffffffffffffffffffffffffff1661234d612077565b73ffffffffffffffffffffffffffffffffffffffff16146123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a906148d3565b60405180910390fd5b565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff1661240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613eb1565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b815260040161246891906132da565b600060405180830381865afa158015612485573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906124ae9190614119565b9050806020015167ffffffffffffffff1642116124cf576000925050612529565b806040015167ffffffffffffffff1642101561250757806020015167ffffffffffffffff16426124ff9190613d7f565b925050612529565b8060200151816040015161251b91906148f3565b67ffffffffffffffff169250505b50919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b815260040161258c91906132da565b600060405180830381865afa1580156125a9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906125d29190614119565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144846040518263ffffffff1660e01b815260040161263191906132da565b602060405180830381865afa15801561264e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267291906143da565b905042826060015167ffffffffffffffff1611156126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc9061497b565b60405180910390fd5b42826040015167ffffffffffffffff161015612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d906149e7565b60405180910390fd5b8160c0015173ffffffffffffffffffffffffffffffffffffffff166127396121d8565b73ffffffffffffffffffffffffffffffffffffffff161480156127655750600182610140015160ff1614155b801561277a5750600382610140015160ff1614155b1561278457600080fd5b81610100015173ffffffffffffffffffffffffffffffffffffffff166127a86121d8565b73ffffffffffffffffffffffffffffffffffffffff161480156127d45750600282610140015160ff1614155b80156127e95750600382610140015160ff1614155b156127f357600080fd5b60008190506000819050600061280d868660c0015161122e565b905060006128208787610100015161122e565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f88836040518363ffffffff1660e01b815260040161287f929190614505565b600060405180830381600087803b15801561289957600080fd5b505af11580156128ad573d6000803e3d6000fd5b5050505060076000888152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550506000811461292c5761292b866101000151828573ffffffffffffffffffffffffffffffffffffffff16612c6f9092919063ffffffff16565b5b60008214612964576129638660c00151838573ffffffffffffffffffffffffffffffffffffffff16612c6f9092919063ffffffff16565b5b50505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905060006007600087815260200190815260200160002060020154905084818360200151612aba9190613b6f565b612ac49190613d7f565b6007600088815260200190815260200160002060010181905550600060076000888152602001908152602001600020600201819055506000600760008881526020019081526020016000206001015403612b5b5760076000878152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b6000839050612b9d856611c37937e0800088612b779190613d7f565b8373ffffffffffffffffffffffffffffffffffffffff16612c6f9092919063ffffffff16565b612bcf306611c37937e080008373ffffffffffffffffffffffffffffffffffffffff16612c6f9092919063ffffffff16565b50505050505050565b6000612c03828473ffffffffffffffffffffffffffffffffffffffff16612cee90919063ffffffff16565b90506000815114158015612c28575080806020019051810190612c269190614a33565b155b15612c6a57826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612c619190613409565b60405180910390fd5b505050565b612ce9838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612ca2929190614a60565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bd8565b505050565b6060612cfc83836000612d04565b905092915050565b606081471015612d4b57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612d429190613409565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612d749190614ac5565b60006040518083038185875af1925050503d8060008114612db1576040519150601f19603f3d011682016040523d82523d6000602084013e612db6565b606091505b5091509150612dc6868383612dd1565b925050509392505050565b606082612de657612de182612e60565b612e58565b60008251148015612e0e575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612e5057836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612e479190613409565b60405180910390fd5b819050612e59565b5b9392505050565b600081511115612e735780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806040016040528060008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612f4f612f4a612f4584612f0a565b612f2a565b612f0a565b9050919050565b6000612f6182612f34565b9050919050565b6000612f7382612f56565b9050919050565b612f8381612f68565b82525050565b6000602082019050612f9e6000830184612f7a565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b60006101008284031215612fd457612fd3612fb8565b5b81905092915050565b600060808284031215612ff357612ff2612fb8565b5b81905092915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304f82613006565b810181811067ffffffffffffffff8211171561306e5761306d613017565b5b80604052505050565b6000613081612fa4565b905061308d8282613046565b919050565b600067ffffffffffffffff8211156130ad576130ac613017565b5b6130b682613006565b9050602081019050919050565b82818337600083830152505050565b60006130e56130e084613092565b613077565b90508281526020810184848401111561310157613100613001565b5b61310c8482856130c3565b509392505050565b600082601f83011261312957613128612ffc565b5b81356131398482602086016130d2565b91505092915050565b60008060006101a0848603121561315c5761315b612fae565b5b600061316a86828701612fbd565b93505061010061317c86828701612fdd565b92505061018084013567ffffffffffffffff81111561319e5761319d612fb3565b5b6131aa86828701613114565b9150509250925092565b6000819050919050565b6131c7816131b4565b81146131d257600080fd5b50565b6000813590506131e4816131be565b92915050565b60006131f582612f0a565b9050919050565b613205816131ea565b811461321057600080fd5b50565b600081359050613222816131fc565b92915050565b6000806040838503121561323f5761323e612fae565b5b600061324d858286016131d5565b925050602061325e85828601613213565b9150509250929050565b60008115159050919050565b61327d81613268565b82525050565b60006020820190506132986000830184613274565b92915050565b6000602082840312156132b4576132b3612fae565b5b60006132c284828501613213565b91505092915050565b6132d4816131b4565b82525050565b60006020820190506132ef60008301846132cb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561332f578082015181840152602081019050613314565b60008484015250505050565b6000613346826132f5565b6133508185613300565b9350613360818560208601613311565b61336981613006565b840191505092915050565b6000602082019050818103600083015261338e818461333b565b905092915050565b6000602082840312156133ac576133ab612fae565b5b60006133ba848285016131d5565b91505092915050565b6133cc816131ea565b82525050565b60006060820190506133e760008301866132cb565b6133f460208301856132cb565b61340160408301846133c3565b949350505050565b600060208201905061341e60008301846133c3565b92915050565b6000806040838503121561343b5761343a612fae565b5b6000613449858286016131d5565b925050602061345a858286016131d5565b9150509250929050565b61346d816131b4565b82525050565b61347c81613268565b82525050565b6080820160008201516134986000850182613464565b5060208201516134ab6020850182613464565b5060408201516134be6040850182613464565b5060608201516134d16060850182613473565b50505050565b60006080820190506134ec6000830184613482565b92915050565b60006134fd82612f56565b9050919050565b61350d816134f2565b82525050565b60006020820190506135286000830184613504565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613564601083613300565b915061356f8261352e565b602082019050919050565b6000602082019050818103600083015261359381613557565b9050919050565b7f57726f6e67206465706f73697400000000000000000000000000000000000000600082015250565b60006135d0600d83613300565b91506135db8261359a565b602082019050919050565b600060208201905081810360008301526135ff816135c3565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b600061363c600c83613300565b915061364782613606565b602082019050919050565b6000602082019050818103600083015261366b8161362f565b9050919050565b7f57726f6e6720746f6b656e000000000000000000000000000000000000000000600082015250565b60006136a8600b83613300565b91506136b382613672565b602082019050919050565b600060208201905081810360008301526136d78161369b565b9050919050565b600060ff82169050919050565b6136f4816136de565b81146136ff57600080fd5b50565b600081359050613711816136eb565b92915050565b60006020828403121561372d5761372c612fae565b5b600061373b84828501613702565b91505092915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b600061377a600d83613300565b915061378582613744565b602082019050919050565b600060208201905081810360008301526137a98161376d565b9050919050565b7f73747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b60006137e6601a83613300565b91506137f1826137b0565b602082019050919050565b60006020820190508181036000830152613815816137d9565b9050919050565b7f73747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b6000613852601d83613300565b915061385d8261381c565b602082019050919050565b6000602082019050818103600083015261388181613845565b9050919050565b7f73747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006138be601483613300565b91506138c982613888565b602082019050919050565b600060208201905081810360008301526138ed816138b1565b9050919050565b7f6465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b600061392a600f83613300565b9150613935826138f4565b602082019050919050565b600060208201905081810360008301526139598161391d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600067ffffffffffffffff82169050919050565b6139ac8161398f565b81146139b757600080fd5b50565b6000813590506139c9816139a3565b92915050565b6000602082840312156139e5576139e4612fae565b5b60006139f3848285016139ba565b91505092915050565b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b6000613a32602083613300565b9150613a3d826139fc565b602082019050919050565b60006020820190508181036000830152613a6181613a25565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b6000613a9e601783613300565b9150613aa982613a68565b602082019050919050565b60006020820190508181036000830152613acd81613a91565b9050919050565b7f496e76616c696420626c6f636b54696d65000000000000000000000000000000600082015250565b6000613b0a601183613300565b9150613b1582613ad4565b602082019050919050565b60006020820190508181036000830152613b3981613afd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b7a826131b4565b9150613b85836131b4565b9250828201905080821115613b9d57613b9c613b40565b5b92915050565b613bac816136de565b82525050565b6000819050919050565b613bc581613bb2565b82525050565b600060e082019050613be0600083018a6133c3565b613bed60208301896133c3565b613bfa60408301886132cb565b613c0760608301876132cb565b613c146080830186613ba3565b613c2160a0830185613bbc565b613c2e60c0830184613bbc565b98975050505050505050565b7f6465706f73697420736d616c6c6572207468616e2074696d652064656c746100600082015250565b6000613c70601f83613300565b9150613c7b82613c3a565b602082019050919050565b60006020820190508181036000830152613c9f81613c63565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ce0826131b4565b9150613ceb836131b4565b925082613cfb57613cfa613ca6565b5b828206905092915050565b6000613d11826131b4565b9150613d1c836131b4565b925082613d2c57613d2b613ca6565b5b828204905092915050565b6000613d42826131b4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d7457613d73613b40565b5b600182019050919050565b6000613d8a826131b4565b9150613d95836131b4565b9250828203905081811115613dad57613dac613b40565b5b92915050565b600081905092915050565b50565b6000613dce600083613db3565b9150613dd982613dbe565b600082019050919050565b6000613def82613dc1565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000613e2f601483613300565b9150613e3a82613df9565b602082019050919050565b60006020820190508181036000830152613e5e81613e22565b9050919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b6000613e9b601583613300565b9150613ea682613e65565b602082019050919050565b60006020820190508181036000830152613eca81613e8e565b9050919050565b600080fd5b600080fd5b600081519050613eea816131be565b92915050565b600081519050613eff816139a3565b92915050565b600081519050613f14816131fc565b92915050565b600063ffffffff82169050919050565b613f3381613f1a565b8114613f3e57600080fd5b50565b600081519050613f5081613f2a565b92915050565b600081519050613f65816136eb565b92915050565b6000613f7e613f7984613092565b613077565b905082815260208101848484011115613f9a57613f99613001565b5b613fa5848285613311565b509392505050565b600082601f830112613fc257613fc1612ffc565b5b8151613fd2848260208601613f6b565b91505092915050565b60006101808284031215613ff257613ff1613ed1565b5b613ffd610180613077565b9050600061400d84828501613edb565b600083015250602061402184828501613ef0565b602083015250604061403584828501613ef0565b604083015250606061404984828501613ef0565b606083015250608061405d84828501613ef0565b60808301525060a061407184828501613edb565b60a08301525060c061408584828501613f05565b60c08301525060e061409984828501613f41565b60e0830152506101006140ae84828501613f05565b610100830152506101206140c484828501613f56565b610120830152506101406140da84828501613f56565b6101408301525061016082015167ffffffffffffffff811115614100576140ff613ed6565b5b61410c84828501613fad565b6101608301525092915050565b60006020828403121561412f5761412e612fae565b5b600082015167ffffffffffffffff81111561414d5761414c612fb3565b5b61415984828501613fdb565b91505092915050565b600061416d826131b4565b9150614178836131b4565b9250828202614186816131b4565b9150828204841483151761419d5761419c613b40565b5b5092915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006141da601483613300565b91506141e5826141a4565b602082019050919050565b60006020820190508181036000830152614209816141cd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061425757607f821691505b60208210810361426a57614269614210565b5b50919050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b60006142cc602283613300565b91506142d782614270565b604082019050919050565b600060208201905081810360008301526142fb816142bf565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000614338601b83613300565b915061434382614302565b602082019050919050565b600060208201905081810360008301526143678161432b565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b60006143a4600e83613300565b91506143af8261436e565b602082019050919050565b600060208201905081810360008301526143d381614397565b9050919050565b6000602082840312156143f0576143ef612fae565b5b60006143fe84828501613f05565b91505092915050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b600061443d601283613300565b915061444882614407565b602082019050919050565b6000602082019050818103600083015261446c81614430565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006144cf602483613300565b91506144da82614473565b604082019050919050565b600060208201905081810360008301526144fe816144c2565b9050919050565b600060408201905061451a60008301856132cb565b61452760208301846132cb565b9392505050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b6000614564601183613300565b915061456f8261452e565b602082019050919050565b6000602082019050818103600083015261459381614557565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145f6602683613300565b91506146018261459a565b604082019050919050565b60006020820190508181036000830152614625816145e9565b9050919050565b600060608201905061464160008301866133c3565b61464e60208301856133c3565b61465b60408301846132cb565b949350505050565b60006146726020840184613213565b905092915050565b614683816131ea565b82525050565b600061469860208401846131d5565b905092915050565b600082905092915050565b600060039050919050565b600081905092915050565b6000819050919050565b6146d48161398f565b82525050565b60006146e683836146cb565b60208301905092915050565b600061470160208401846139ba565b905092915050565b6000602082019050919050565b61471f816146ab565b61472981846146b6565b9250614734826146c1565b8060005b8381101561476d5761474a82846146f2565b61475487826146da565b965061475f83614709565b925050600181019050614738565b505050505050565b60006147846020840184613702565b905092915050565b614795816136de565b82525050565b61010082016147ad6000830183614663565b6147ba600085018261467a565b506147c86020830183614689565b6147d56020850182613464565b506147e36040830183614663565b6147f0604085018261467a565b506147fe6060830183614663565b61480b606085018261467a565b5061481960808301836146a0565b6148266080850182614716565b5061483460e0830183614775565b61484160e085018261478c565b50505050565b60006101408201905061485d60008301866132cb565b61486a602083018561479b565b81810361012083015261487d818461333b565b9050949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148bd602083613300565b91506148c882614887565b602082019050919050565b600060208201905081810360008301526148ec816148b0565b9050919050565b60006148fe8261398f565b91506149098361398f565b9250828203905067ffffffffffffffff81111561492957614928613b40565b5b92915050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b6000614965600e83613300565b91506149708261492f565b602082019050919050565b6000602082019050818103600083015261499481614958565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b60006149d1600f83613300565b91506149dc8261499b565b602082019050919050565b60006020820190508181036000830152614a00816149c4565b9050919050565b614a1081613268565b8114614a1b57600080fd5b50565b600081519050614a2d81614a07565b92915050565b600060208284031215614a4957614a48612fae565b5b6000614a5784828501614a1e565b91505092915050565b6000604082019050614a7560008301856133c3565b614a8260208301846132cb565b9392505050565b600081519050919050565b6000614a9f82614a89565b614aa98185613db3565b9350614ab9818560208601613311565b80840191505092915050565b6000614ad18284614a94565b91508190509291505056fea2646970667358221220a343bbcdd1124d4c3bb6324ced1368c3bb7de3f16c03671bc02fd50f3627ae9b64736f6c63430008110033000000000000000000000000c107ab6ebc7024a1e6123a5ab0d48d6af8a0e4c10000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87