0 txs
0 calls
constructor
constructor(address _history, address _bank, uint256 _streamId)
functions
balanceOf
viewfunction balanceOf(uint256 streamId, address who, tuple stream) view returns (uint256 balance)
bank
viewfunction bank() view returns (address)
contractFeeBalance
viewfunction contractFeeBalance() view returns (uint256)
feeRate
viewfunction feeRate() view returns (uint256)
forwarder
viewfunction forwarder() view returns (address)
getMSg
viewfunction getMSg() view returns (address)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
getValue
purefunction getValue(uint256 _value) pure returns (uint256)
history
viewfunction history() view returns (address)
Ierc20permitusdc
viewfunction Ierc20permitusdc() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
minDeposit
viewfunction minDeposit() view returns (uint256)
nextStreamId
viewfunction nextStreamId() view returns (uint256)
numberOfFeeWithdraws
viewfunction numberOfFeeWithdraws() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
token
viewfunction token() view returns (address)
versionRecipient
viewfunction versionRecipient() view returns (string)
withDrawFee
viewfunction withDrawFee() view returns (uint256)
withdraws
viewfunction withdraws(uint256) view returns (uint256 amount, uint256 time, address who)
cancelStream
nonpayablefunction cancelStream(uint256 streamId)
changeFeeRate
nonpayablefunction changeFeeRate(uint256 _newFeeRate)
createStream
nonpayablefunction createStream(tuple streamDetails, tuple sig, string title)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setBank
nonpayablefunction setBank(address _newBank)
setForwarder
nonpayablefunction setForwarder(address _newForwarder)
setMinDeposit
nonpayablefunction setMinDeposit(uint256 _minDeposit)
setWithdrawFee
nonpayablefunction setWithdrawFee(uint256 _withDrawFee)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawFeeForHolders
nonpayablefunction withdrawFeeForHolders(uint256 amount, address reciever) 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
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600590816200004a9190620007ab565b50620186a060065560646007556103e860095573b2b5841dbef766d4b521221732f9b618fcf34a87600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000bf57600080fd5b5060405162005325380380620053258339818101604052810190620000e591906200092d565b62000105620000f96200020c60201b60201c565b6200024e60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000177576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200016e90620009ea565b60405180910390fd5b82600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001eb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200031460201b60201c565b620001fc826200035760201b60201c565b8060038190555050505062000af0565b6000601460003690501015801562000231575062000230336200041d60201b60201c565b5b156200024757601436033560601c90506200024b565b3390505b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b620003676200047660201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620003d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003d09062000a5c565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b620004866200020c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004ac6200050760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000505576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004fc9062000ace565b60405180910390fd5b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005b357607f821691505b602082108103620005c957620005c86200056b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005f4565b6200063f8683620005f4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200068c62000686620006808462000657565b62000661565b62000657565b9050919050565b6000819050919050565b620006a8836200066b565b620006c0620006b78262000693565b84845462000601565b825550505050565b600090565b620006d7620006c8565b620006e48184846200069d565b505050565b5b818110156200070c5762000700600082620006cd565b600181019050620006ea565b5050565b601f8211156200075b576200072581620005cf565b6200073084620005e4565b8101602085101562000740578190505b620007586200074f85620005e4565b830182620006e9565b50505b505050565b600082821c905092915050565b6000620007806000198460080262000760565b1980831691505092915050565b60006200079b83836200076d565b9150826002028217905092915050565b620007b68262000531565b67ffffffffffffffff811115620007d257620007d16200053c565b5b620007de82546200059a565b620007eb82828562000710565b600060209050601f8311600181146200082357600084156200080e578287015190505b6200081a85826200078d565b8655506200088a565b601f1984166200083386620005cf565b60005b828110156200085d5784890151825560018201915060208501945060208101905062000836565b868310156200087d578489015162000879601f8916826200076d565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008c48262000897565b9050919050565b620008d681620008b7565b8114620008e257600080fd5b50565b600081519050620008f681620008cb565b92915050565b620009078162000657565b81146200091357600080fd5b50565b6000815190506200092781620008fc565b92915050565b60008060006060848603121562000949576200094862000892565b5b60006200095986828701620008e5565b93505060206200096c86828701620008e5565b92505060406200097f8682870162000916565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b6000620009d2600c8362000989565b9150620009df826200099a565b602082019050919050565b6000602082019050818103600083015262000a0581620009c3565b9050919050565b7f62616e6b207a65726f2061646472657373000000000000000000000000000000600082015250565b600062000a4460118362000989565b915062000a518262000a0c565b602082019050919050565b6000602082019050818103600083015262000a778162000a35565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ab660208362000989565b915062000ac38262000a7e565b602082019050919050565b6000602082019050818103600083015262000ae98162000aa7565b9050919050565b6148258062000b006000396000f3fe608060405234801561001057600080fd5b50600436106102055760003560e01c8063894e9a0d1161011a578063b6ac642a116100ad578063f2fde38b1161007c578063f2fde38b14610594578063f645d4f9146105b0578063f95654a7146105ce578063fc0c546a146105ec578063fe265e551461060a57610205565b8063b6ac642a14610520578063b9998a241461053c578063ce1b815f14610558578063eea5bf4b1461057657610205565b8063978bbdb9116100e9578063978bbdb9146104aa57806398daac83146104c8578063affca932146104e6578063b160f9cc1461050257610205565b8063894e9a0d146104245780638bc103e2146104545780638da5cb5b146104705780638fcc9cfb1461048e57610205565b8063486ff0cd1161019d5780636db9241b1161016c5780636db9241b146103a6578063715018a6146103c257806376cdb03b146103cc5780637a9b2c6c146103ea5780638456cb591461041a57610205565b8063486ff0cd1461030857806355466c3714610326578063572b6c05146103585780635c975abb1461038857610205565b80631e99d569116101d95780631e99d569146102a457806328f7c3bf146102c25780633f4ba83a146102e057806341b3d185146102ea57610205565b8062b98a431461020a5780630322bdef14610228578063090d23b9146102585780630ff4c91614610274575b600080fd5b61021261063a565b60405161021f9190612be9565b60405180910390f35b610242600480360381019061023d9190612c8c565b610660565b60405161024f9190612ce7565b60405180910390f35b610272600480360381019061026d9190612d02565b610824565b005b61028e60048036038101906102899190612d2f565b6108df565b60405161029b9190612d6b565b60405180910390f35b6102ac6108e9565b6040516102b99190612d6b565b60405180910390f35b6102ca6108ef565b6040516102d79190612d6b565b60405180910390f35b6102e86108f5565b005b6102f261099f565b6040516102ff9190612d6b565b60405180910390f35b6103106109a5565b60405161031d9190612e16565b60405180910390f35b610340600480360381019061033b9190612d2f565b610a33565b60405161034f93929190612e47565b60405180910390f35b610372600480360381019061036d9190612d02565b610a7d565b60405161037f9190612ce7565b60405180910390f35b610390610ad6565b60405161039d9190612ce7565b60405180910390f35b6103c060048036038101906103bb9190612d2f565b610aed565b005b6103ca610cc1565b005b6103d4610cd5565b6040516103e19190612e7e565b60405180910390f35b61040460048036038101906103ff9190612e99565b610cfb565b6040516104119190612ce7565b60405180910390f35b61042261111c565b005b61043e60048036038101906104399190612d2f565b6111c6565b60405161044b9190612f4c565b60405180910390f35b61046e6004803603810190610469919061329a565b61122c565b005b6104786118b9565b6040516104859190612e7e565b60405180910390f35b6104a860048036038101906104a39190612d2f565b6118e3565b005b6104b26118f5565b6040516104bf9190612d6b565b60405180910390f35b6104d06118fb565b6040516104dd919061332d565b60405180910390f35b61050060048036038101906104fb9190612d2f565b611921565b005b61050a61197a565b6040516105179190612d6b565b60405180910390f35b61053a60048036038101906105359190612d2f565b611980565b005b61055660048036038101906105519190612d02565b611992565b005b610560611a4d565b60405161056d9190612e7e565b60405180910390f35b61057e611a76565b60405161058b9190612d6b565b60405180910390f35b6105ae60048036038101906105a99190612d02565b611a7c565b005b6105b8611aff565b6040516105c59190612e7e565b60405180910390f35b6105d6611b25565b6040516105e39190612e7e565b60405180910390f35b6105f4611b34565b6040516106019190613369565b60405180910390f35b610624600480360381019061061f9190613428565b611b4c565b6040516106319190612d6b565b60405180910390f35b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061066a611d8b565b60025483111561067957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106b257600080fd5b600083116106bf57600080fd5b6008600081546106ce906134aa565b9190508190555060405180606001604052808481526020014281526020018373ffffffffffffffffffffffffffffffffffffffff16815250600d60006008548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508260025461078791906134f2565b6002819055506107cc8284733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611e099092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f9c74a3eff454be4704451c89978de3c7c598994b70e83bccafa27632a4b80547846040516108129190612d6b565b60405180910390a26001905092915050565b61082c611d8b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361089b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089290613572565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000819050919050565b60035481565b60085481565b6108fd611d8b565b610905610ad6565b610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b906135de565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610988611e88565b6040516109959190612e7e565b60405180910390a1565b60065481565b600580546109b29061362d565b80601f01602080910402602001604051908101604052809291908181526020018280546109de9061362d565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b505050505081565b600d6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b80600c600082815260200190815260200160002060030160009054906101000a900460ff16610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b48906136aa565b60405180910390fd5b816000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610baf9190612d6b565b600060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610bf59190613908565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610c1a611e88565b73ffffffffffffffffffffffffffffffffffffffff161480610c73575080610100015173ffffffffffffffffffffffffffffffffffffffff16610c5b611e88565b73ffffffffffffffffffffffffffffffffffffffff16145b610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca9906139c3565b60405180910390fd5b610cbb84611ebf565b50505050565b610cc9611d8b565b610cd360006122d6565b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600c600082815260200190815260200160002060030160009054906101000a900460ff16610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d58906136aa565b60405180910390fd5b836000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610dbf9190612d6b565b600060405180830381865afa158015610ddc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e059190613908565b905080610100015173ffffffffffffffffffffffffffffffffffffffff16610e2b611e88565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890613a2f565b60405180910390fd5b6000600c60008881526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905060008603610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690613a9b565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75896040518263ffffffff1660e01b8152600401610f7c9190612d6b565b600060405180830381865afa158015610f99573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610fc29190613908565b905042816020015167ffffffffffffffff161115611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613b07565b60405180910390fd5b60006110278983610100015185611b4c565b90508781101561106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106390613b99565b60405180910390fd5b61107d89898461010001518661239c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878a8a6040518363ffffffff1660e01b81526004016110da929190613bb9565b600060405180830381600087803b1580156110f457600080fd5b505af1158015611108573d6000803e3d6000fd5b505050506001965050505050505092915050565b611124611d8b565b61112c610ad6565b1561116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390613c2e565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111af611e88565b6040516111bc9190612e7e565b60405180910390a1565b6111ce612b05565b600c60008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b611234610ad6565b15611274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126b90613c2e565b60405180910390fd5b61128183604001516124d9565b611289611e88565b73ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613c9a565b60405180910390fd5b60065483602001511015611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90613d06565b60405180910390fd5b6000611352846020015161252c565b905061135d83612550565b8060025461136b9190613d26565b60028190555060048460a0015160ff16106113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290613da6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16846040015173ffffffffffffffffffffffffffffffffffffffff160361142e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142590613e12565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16846040015173ffffffffffffffffffffffffffffffffffffffff16036114a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149790613e7e565b60405180910390fd5b6114a8611e88565b73ffffffffffffffffffffffffffffffffffffffff16846040015173ffffffffffffffffffffffffffffffffffffffff1603611519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151090613eea565b60405180910390fd5b6000846020015103611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155790613f56565b60405180910390fd5b6000846080015160006003811061157a57611579613f76565b5b602002015167ffffffffffffffff16036115cb574284608001516000600381106115a7576115a6613f76565b5b602002019067ffffffffffffffff16908167ffffffffffffffff168152505061163f565b4267ffffffffffffffff1684608001516000600381106115ee576115ed613f76565b5b602002015167ffffffffffffffff16101561163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590613ff1565b60405180910390fd5b5b836080015160006003811061165757611656613f76565b5b602002015167ffffffffffffffff16846080015160016003811061167e5761167d613f76565b5b602002015167ffffffffffffffff16116116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c49061405d565b60405180910390fd5b6117196116d8611e88565b308660200151733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16612615909392919063ffffffff16565b611783611724611e88565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16612615909392919063ffffffff16565b61178b612b2f565b84608001516000600381106117a3576117a2613f76565b5b602002015185608001516001600381106117c0576117bf613f76565b5b60200201510367ffffffffffffffff168160000181815250506000816000015186602001516117ef91906140ac565b90508160000151866020015161180591906140dd565b826020018181525050600060035490506040518060800160405280846020015181526020018860200151815260200183815260200160011515815250600c600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908315150217905550905050600360008154600101919050819055506118b0818887612697565b50505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118eb611d8b565b8060068190555050565b60075481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611929611d8b565b6107d06007541115611970576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119679061415a565b60405180910390fd5b8060078190555050565b60025481565b611988611d8b565b8060098190555050565b61199a611d8b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a00906141c6565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b611a84611d8b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea90614258565b60405180910390fd5b611afc816122d6565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b2f611e88565b905090565b733c499c542cef5e3811e1192ce70d8cc03d5c335981565b600083600c600082815260200190815260200160002060030160009054906101000a900460ff16611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba9906136aa565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75876040518263ffffffff1660e01b8152600401611c0f9190612d6b565b600060405180830381865afa158015611c2c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c559190613908565b9050611c5f612b49565b6000611c6a8861272d565b90508560400151866000015182611c819190614278565b611c8b9190613d26565b826000018181525050856020015183600001511115611cd157856020015183600001518360000151611cbd91906134f2565b611cc79190613d26565b8260000181815250505b82610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611d185781600001519450505050611d83565b8260c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611d7b5781600001518660200151611d6391906134f2565b82604001818152505081604001519450505050611d83565b600094505050505b509392505050565b611d93611e88565b73ffffffffffffffffffffffffffffffffffffffff16611db16118b9565b73ffffffffffffffffffffffffffffffffffffffff1614611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe90614306565b60405180910390fd5b565b611e83838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611e3c929190614326565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506128b7565b505050565b60006014600036905010158015611ea45750611ea333610a7d565b5b15611eb857601436033560601c9050611ebc565b3390505b90565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401611f1c9190612d6b565b600060405180830381865afa158015611f39573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611f629190613908565b905042816060015167ffffffffffffffff161115611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac9061439b565b60405180910390fd5b42816040015167ffffffffffffffff161015612006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffd90614407565b60405180910390fd5b8060c0015173ffffffffffffffffffffffffffffffffffffffff16612029611e88565b73ffffffffffffffffffffffffffffffffffffffff161480156120555750600181610140015160ff1614155b801561206a5750600381610140015160ff1614155b1561207457600080fd5b80610100015173ffffffffffffffffffffffffffffffffffffffff16612098611e88565b73ffffffffffffffffffffffffffffffffffffffff161480156120c45750600281610140015160ff1614155b80156120d95750600381610140015160ff1614155b156120e357600080fd5b6000600c60008481526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050600061214f848460c0015184611b4c565b905060006121638585610100015185611b4c565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f86836040518363ffffffff1660e01b81526004016121c2929190613bb9565b600060405180830381600087803b1580156121dc57600080fd5b505af11580156121f0573d6000803e3d6000fd5b50505050600c6000868152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff02191690555050600081146122835761228284610100015182733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611e099092919063ffffffff16565b5b600082146122cf576122ce8460c0015183733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611e099092919063ffffffff16565b5b5050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081604001519050838183602001516123b69190613d26565b6123c091906134f2565b8260200181815250506000826040018181525050600082602001510361242357600c6000868152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b61246f836009548661243591906134f2565b733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611e099092919063ffffffff16565b6124d2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611e099092919063ffffffff16565b5050505050565b6000813b905060008163ffffffff1614612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f90614473565b60405180910390fd5b5050565b60006127106007548361253f9190614278565b61254991906140dd565b9050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf612596611e88565b30846080013585606001358660000160208101906125b49190614493565b876020013588604001356040518863ffffffff1660e01b81526004016125e097969594939291906144e8565b600060405180830381600087803b1580156125fa57600080fd5b505af115801561260e573d6000803e3d6000fd5b5050505050565b612691848573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161264a93929190614557565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506128b7565b50505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b81526004016126f6939291906146d3565b600060405180830381600087803b15801561271057600080fd5b505af1158015612724573d6000803e3d6000fd5b50505050505050565b600081600c600082815260200190815260200160002060030160009054906101000a900460ff16612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a906136aa565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b81526004016127f09190612d6b565b600060405180830381865afa15801561280d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906128369190613908565b9050806020015167ffffffffffffffff1642116128575760009250506128b1565b806040015167ffffffffffffffff1642101561288f57806020015167ffffffffffffffff164261288791906134f2565b9250506128b1565b806020015181604001516128a39190614713565b67ffffffffffffffff169250505b50919050565b60006128e2828473ffffffffffffffffffffffffffffffffffffffff1661294e90919063ffffffff16565b905060008151141580156129075750808060200190518101906129059190614764565b155b1561294957826040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016129409190612e7e565b60405180910390fd5b505050565b606061295c83836000612964565b905092915050565b6060814710156129ab57306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016129a29190612e7e565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516129d491906147d8565b60006040518083038185875af1925050503d8060008114612a11576040519150601f19603f3d011682016040523d82523d6000602084013e612a16565b606091505b5091509150612a26868383612a31565b925050509392505050565b606082612a4657612a4182612ac0565b612ab8565b60008251148015612a6e575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612ab057836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612aa79190612e7e565b60405180910390fd5b819050612ab9565b5b9392505050565b600081511115612ad35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612baf612baa612ba584612b6a565b612b8a565b612b6a565b9050919050565b6000612bc182612b94565b9050919050565b6000612bd382612bb6565b9050919050565b612be381612bc8565b82525050565b6000602082019050612bfe6000830184612bda565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b612c2b81612c18565b8114612c3657600080fd5b50565b600081359050612c4881612c22565b92915050565b6000612c5982612b6a565b9050919050565b612c6981612c4e565b8114612c7457600080fd5b50565b600081359050612c8681612c60565b92915050565b60008060408385031215612ca357612ca2612c0e565b5b6000612cb185828601612c39565b9250506020612cc285828601612c77565b9150509250929050565b60008115159050919050565b612ce181612ccc565b82525050565b6000602082019050612cfc6000830184612cd8565b92915050565b600060208284031215612d1857612d17612c0e565b5b6000612d2684828501612c77565b91505092915050565b600060208284031215612d4557612d44612c0e565b5b6000612d5384828501612c39565b91505092915050565b612d6581612c18565b82525050565b6000602082019050612d806000830184612d5c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dc0578082015181840152602081019050612da5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612de882612d86565b612df28185612d91565b9350612e02818560208601612da2565b612e0b81612dcc565b840191505092915050565b60006020820190508181036000830152612e308184612ddd565b905092915050565b612e4181612c4e565b82525050565b6000606082019050612e5c6000830186612d5c565b612e696020830185612d5c565b612e766040830184612e38565b949350505050565b6000602082019050612e936000830184612e38565b92915050565b60008060408385031215612eb057612eaf612c0e565b5b6000612ebe85828601612c39565b9250506020612ecf85828601612c39565b9150509250929050565b612ee281612c18565b82525050565b612ef181612ccc565b82525050565b608082016000820151612f0d6000850182612ed9565b506020820151612f206020850182612ed9565b506040820151612f336040850182612ed9565b506060820151612f466060850182612ee8565b50505050565b6000608082019050612f616000830184612ef7565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fa482612dcc565b810181811067ffffffffffffffff82111715612fc357612fc2612f6c565b5b80604052505050565b6000612fd6612c04565b9050612fe28282612f9b565b919050565b600080fd5b600080fd5b600067ffffffffffffffff82111561300c5761300b612f6c565b5b602082029050919050565b600080fd5b600067ffffffffffffffff82169050919050565b6130398161301c565b811461304457600080fd5b50565b60008135905061305681613030565b92915050565b600061306f61306a84612ff1565b612fcc565b9050806020840283018581111561308957613088613017565b5b835b818110156130b2578061309e8882613047565b84526020840193505060208101905061308b565b5050509392505050565b600082601f8301126130d1576130d0612fec565b5b60036130de84828561305c565b91505092915050565b600060ff82169050919050565b6130fd816130e7565b811461310857600080fd5b50565b60008135905061311a816130f4565b92915050565b6000610100828403121561313757613136612f67565b5b61314160c0612fcc565b9050600061315184828501612c77565b600083015250602061316584828501612c39565b602083015250604061317984828501612c77565b604083015250606061318d84828501612c77565b60608301525060806131a1848285016130bc565b60808301525060e06131b58482850161310b565b60a08301525092915050565b600080fd5b600060a082840312156131dc576131db6131c1565b5b81905092915050565b600080fd5b600067ffffffffffffffff82111561320557613204612f6c565b5b61320e82612dcc565b9050602081019050919050565b82818337600083830152505050565b600061323d613238846131ea565b612fcc565b905082815260208101848484011115613259576132586131e5565b5b61326484828561321b565b509392505050565b600082601f83011261328157613280612fec565b5b813561329184826020860161322a565b91505092915050565b60008060006101c084860312156132b4576132b3612c0e565b5b60006132c286828701613120565b9350506101006132d4868287016131c6565b9250506101a084013567ffffffffffffffff8111156132f6576132f5612c13565b5b6133028682870161326c565b9150509250925092565b600061331782612bb6565b9050919050565b6133278161330c565b82525050565b6000602082019050613342600083018461331e565b92915050565b600061335382612bb6565b9050919050565b61336381613348565b82525050565b600060208201905061337e600083018461335a565b92915050565b61338d81612ccc565b811461339857600080fd5b50565b6000813590506133aa81613384565b92915050565b6000608082840312156133c6576133c5612f67565b5b6133d06080612fcc565b905060006133e084828501612c39565b60008301525060206133f484828501612c39565b602083015250604061340884828501612c39565b604083015250606061341c8482850161339b565b60608301525092915050565b600080600060c0848603121561344157613440612c0e565b5b600061344f86828701612c39565b935050602061346086828701612c77565b9250506040613471868287016133b0565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134b582612c18565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134e7576134e661347b565b5b600182019050919050565b60006134fd82612c18565b915061350883612c18565b92508282039050818111156135205761351f61347b565b5b92915050565b7f62616e6b207a65726f2061646472657373000000000000000000000000000000600082015250565b600061355c601183612d91565b915061356782613526565b602082019050919050565b6000602082019050818103600083015261358b8161354f565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006135c8601483612d91565b91506135d382613592565b602082019050919050565b600060208201905081810360008301526135f7816135bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061364557607f821691505b602082108103613658576136576135fe565b5b50919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b6000613694601583612d91565b915061369f8261365e565b602082019050919050565b600060208201905081810360008301526136c381613687565b9050919050565b6000815190506136d981612c22565b92915050565b6000815190506136ee81613030565b92915050565b60008151905061370381612c60565b92915050565b600063ffffffff82169050919050565b61372281613709565b811461372d57600080fd5b50565b60008151905061373f81613719565b92915050565b600081519050613754816130f4565b92915050565b600061376d613768846131ea565b612fcc565b905082815260208101848484011115613789576137886131e5565b5b613794848285612da2565b509392505050565b600082601f8301126137b1576137b0612fec565b5b81516137c184826020860161375a565b91505092915050565b600061018082840312156137e1576137e0612f67565b5b6137ec610180612fcc565b905060006137fc848285016136ca565b6000830152506020613810848285016136df565b6020830152506040613824848285016136df565b6040830152506060613838848285016136df565b606083015250608061384c848285016136df565b60808301525060a0613860848285016136ca565b60a08301525060c0613874848285016136f4565b60c08301525060e061388884828501613730565b60e08301525061010061389d848285016136f4565b610100830152506101206138b384828501613745565b610120830152506101406138c984828501613745565b6101408301525061016082015167ffffffffffffffff8111156138ef576138ee612fe7565b5b6138fb8482850161379c565b6101608301525092915050565b60006020828403121561391e5761391d612c0e565b5b600082015167ffffffffffffffff81111561393c5761393b612c13565b5b613948848285016137ca565b91505092915050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b60006139ad602283612d91565b91506139b882613951565b604082019050919050565b600060208201905081810360008301526139dc816139a0565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613a19601b83612d91565b9150613a24826139e3565b602082019050919050565b60006020820190508181036000830152613a4881613a0c565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613a85600e83612d91565b9150613a9082613a4f565b602082019050919050565b60006020820190508181036000830152613ab481613a78565b9050919050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613af1601283612d91565b9150613afc82613abb565b602082019050919050565b60006020820190508181036000830152613b2081613ae4565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613b83602483612d91565b9150613b8e82613b27565b604082019050919050565b60006020820190508181036000830152613bb281613b76565b9050919050565b6000604082019050613bce6000830185612d5c565b613bdb6020830184612d5c565b9392505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613c18601083612d91565b9150613c2382613be2565b602082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b6000613c84600c83612d91565b9150613c8f82613c4e565b602082019050919050565b60006020820190508181036000830152613cb381613c77565b9050919050565b7f546f206c6974746c65206465706f736974000000000000000000000000000000600082015250565b6000613cf0601183612d91565b9150613cfb82613cba565b602082019050919050565b60006020820190508181036000830152613d1f81613ce3565b9050919050565b6000613d3182612c18565b9150613d3c83612c18565b9250828201905080821115613d5457613d5361347b565b5b92915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b6000613d90600d83612d91565b9150613d9b82613d5a565b602082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b7f53747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b6000613dfc601a83612d91565b9150613e0782613dc6565b602082019050919050565b60006020820190508181036000830152613e2b81613def565b9050919050565b7f53747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b6000613e68601d83612d91565b9150613e7382613e32565b602082019050919050565b60006020820190508181036000830152613e9781613e5b565b9050919050565b7f53747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b6000613ed4601483612d91565b9150613edf82613e9e565b602082019050919050565b60006020820190508181036000830152613f0381613ec7565b9050919050565b7f4465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b6000613f40600f83612d91565b9150613f4b82613f0a565b602082019050919050565b60006020820190508181036000830152613f6f81613f33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b6000613fdb602083612d91565b9150613fe682613fa5565b602082019050919050565b6000602082019050818103600083015261400a81613fce565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b6000614047601783612d91565b915061405282614011565b602082019050919050565b600060208201905081810360008301526140768161403a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140b782612c18565b91506140c283612c18565b9250826140d2576140d161407d565b5b828206905092915050565b60006140e882612c18565b91506140f383612c18565b9250826141035761410261407d565b5b828204905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b6000614144601183612d91565b915061414f8261410e565b602082019050919050565b6000602082019050818103600083015261417381614137565b9050919050565b7f20666f72776172646572207a65726f2061646472657373000000000000000000600082015250565b60006141b0601783612d91565b91506141bb8261417a565b602082019050919050565b600060208201905081810360008301526141df816141a3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614242602683612d91565b915061424d826141e6565b604082019050919050565b6000602082019050818103600083015261427181614235565b9050919050565b600061428382612c18565b915061428e83612c18565b925082820261429c81612c18565b915082820484148315176142b3576142b261347b565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006142f0602083612d91565b91506142fb826142ba565b602082019050919050565b6000602082019050818103600083015261431f816142e3565b9050919050565b600060408201905061433b6000830185612e38565b6143486020830184612d5c565b9392505050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b6000614385600e83612d91565b91506143908261434f565b602082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b60006143f1600f83612d91565b91506143fc826143bb565b602082019050919050565b60006020820190508181036000830152614420816143e4565b9050919050565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b600061445d600c83612d91565b915061446882614427565b602082019050919050565b6000602082019050818103600083015261448c81614450565b9050919050565b6000602082840312156144a9576144a8612c0e565b5b60006144b78482850161310b565b91505092915050565b6144c9816130e7565b82525050565b6000819050919050565b6144e2816144cf565b82525050565b600060e0820190506144fd600083018a612e38565b61450a6020830189612e38565b6145176040830188612d5c565b6145246060830187612d5c565b61453160808301866144c0565b61453e60a08301856144d9565b61454b60c08301846144d9565b98975050505050505050565b600060608201905061456c6000830186612e38565b6145796020830185612e38565b6145866040830184612d5c565b949350505050565b61459781612c4e565b82525050565b600060039050919050565b600081905092915050565b6000819050919050565b6145c68161301c565b82525050565b60006145d883836145bd565b60208301905092915050565b6000602082019050919050565b6145fa8161459d565b61460481846145a8565b925061460f826145b3565b8060005b8381101561464057815161462787826145cc565b9650614632836145e4565b925050600181019050614613565b505050505050565b614651816130e7565b82525050565b6101008201600082015161466e600085018261458e565b5060208201516146816020850182612ed9565b506040820151614694604085018261458e565b5060608201516146a7606085018261458e565b5060808201516146ba60808501826145f1565b5060a08201516146cd60e0850182614648565b50505050565b6000610140820190506146e96000830186612d5c565b6146f66020830185614657565b8181036101208301526147098184612ddd565b9050949350505050565b600061471e8261301c565b91506147298361301c565b9250828203905067ffffffffffffffff8111156147495761474861347b565b5b92915050565b60008151905061475e81613384565b92915050565b60006020828403121561477a57614779612c0e565b5b60006147888482850161474f565b91505092915050565b600081519050919050565b600081905092915050565b60006147b282614791565b6147bc818561479c565b93506147cc818560208601612da2565b80840191505092915050565b60006147e482846147a7565b91508190509291505056fea26469706673582212201a38dcf469f97711138d0908686d8df2fe05fb037527b40d7804481f92226e3664736f6c63430008130033000000000000000000000000de90006d73593650d8c7b9b16afd04e0bc2d813b00000000000000000000000064c47f5fb776c41ef357274b27897cc5088330c60000000000000000000000000000000000000000000000000000000000000001