{"contractName":"DailyLimitModule","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"masterCopy","type":"address"}],"name":"ChangedMasterCopy","type":"event"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_masterCopy","type":"address"}],"name":"changeMasterCopy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dailyLimits","outputs":[{"internalType":"uint256","name":"dailyLimit","type":"uint256"},{"internalType":"uint256","name":"spentToday","type":"uint256"},{"internalType":"uint256","name":"lastDay","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"internalType":"contract ModuleManager","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"_dailyLimits","type":"uint256[]"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"dailyLimit","type":"uint256"}],"name":"changeDailyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"executeDailyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"today","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506112bb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806381c5e03b1161006657806381c5e03b146102e0578063a3f4df7e1461032e578063b74e452b146103b1578063d7bffc92146103cf578063ffa1ad741461043557610093565b806328814f0314610098578063481c6a75146101e457806363bae7c31461022e5780637de7edef1461029c575b600080fd5b6101e2600480360360408110156100ae57600080fd5b81019080803590602001906401000000008111156100cb57600080fd5b8201836020820111156100dd57600080fd5b803590602001918460208302840111640100000000831117156100ff57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561015f57600080fd5b82018360208201111561017157600080fd5b8035906020019184602083028401116401000000008311171561019357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506104b8565b005b6101ec61054e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61029a6004803603606081101561024457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610574565b005b6102de600480360360208110156102b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ceb565b005b61032c600480360360408110156102f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ebd565b005b610336610fae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561037657808201518184015260208101905061035b565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103b9610fe7565b6040518082815260200191505060405180910390f35b610411600480360360208110156103e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ffd565b60405180848152602001838152602001828152602001935050505060405180910390f35b61043d611027565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047d578082015181840152602081019050610462565b50505050905090810190601f1680156104aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104c0611060565b60008090505b8251811015610549578181815181106104db57fe5b6020026020010151600260008584815181106104f357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104c6565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b81019080805190602001909291905050506106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061123c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b600081116107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107c68382611167565b610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a4357600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7838360006040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600181111561095a57fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d60208110156109bb57600080fd5b8101908080519060200190929190505050610a3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610ce6565b60608282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836001811115610ba857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610be8578082015181840152602081019050610bcd565b50505050905090810190601f168015610c155780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c3757600080fd5b505af1158015610c4b573d6000803e3d6000fd5b505050506040513d6020811015610c6157600080fd5b8101908080519060200190929190505050610ce4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b505b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806112616026913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112186024913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f75e41bc35ff1bf14d81d1d2f649c0084a0f974f9289c803ec9898eeec4c8d0b881604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806112616026913960400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040518060400160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281610ff557fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040518060400160405280600581526020017f302e312e3000000000000000000000000000000000000000000000000000000081525081565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600201546111b8610fe7565b11156111d9576111c6610fe7565b8160020181905550600081600101819055505b806000015483826001015401111580156111fc5750806001015483826001015401115b1561120b576001915050611211565b60009150505b9291505056fe496e76616c6964206d617374657220636f707920616464726573732070726f76696465644d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e65724d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d616e61676572a265627a7a7231582056b8ed38083b8dd166fe8b8d140ddfb28eef77ccce3c463be6e4d0730350c76164736f6c634300050e0032","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100935760003560e01c806381c5e03b1161006657806381c5e03b146102e0578063a3f4df7e1461032e578063b74e452b146103b1578063d7bffc92146103cf578063ffa1ad741461043557610093565b806328814f0314610098578063481c6a75146101e457806363bae7c31461022e5780637de7edef1461029c575b600080fd5b6101e2600480360360408110156100ae57600080fd5b81019080803590602001906401000000008111156100cb57600080fd5b8201836020820111156100dd57600080fd5b803590602001918460208302840111640100000000831117156100ff57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561015f57600080fd5b82018360208201111561017157600080fd5b8035906020019184602083028401116401000000008311171561019357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506104b8565b005b6101ec61054e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61029a6004803603606081101561024457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610574565b005b6102de600480360360208110156102b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ceb565b005b61032c600480360360408110156102f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ebd565b005b610336610fae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561037657808201518184015260208101905061035b565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103b9610fe7565b6040518082815260200191505060405180910390f35b610411600480360360208110156103e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ffd565b60405180848152602001838152602001828152602001935050505060405180910390f35b61043d611027565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047d578082015181840152602081019050610462565b50505050905090810190601f1680156104aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104c0611060565b60008090505b8251811015610549578181815181106104db57fe5b6020026020010151600260008584815181106104f357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104c6565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561061357600080fd5b505afa158015610627573d6000803e3d6000fd5b505050506040513d602081101561063d57600080fd5b81019080805190602001909291905050506106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061123c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b600081116107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107c68382611167565b610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a4357600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7838360006040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600181111561095a57fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d60208110156109bb57600080fd5b8101908080519060200190929190505050610a3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610ce6565b60608282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836001811115610ba857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610be8578082015181840152602081019050610bcd565b50505050905090810190601f168015610c155780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c3757600080fd5b505af1158015610c4b573d6000803e3d6000fd5b505050506040513d6020811015610c6157600080fd5b8101908080519060200190929190505050610ce4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b505b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806112616026913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112186024913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f75e41bc35ff1bf14d81d1d2f649c0084a0f974f9289c803ec9898eeec4c8d0b881604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806112616026913960400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040518060400160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281610ff557fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040518060400160405280600581526020017f302e312e3000000000000000000000000000000000000000000000000000000081525081565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600201546111b8610fe7565b11156111d9576111c6610fe7565b8160020181905550600081600101819055505b806000015483826001015401111580156111fc5750806001015483826001015401115b1561120b576001915050611211565b60009150505b9291505056fe496e76616c6964206d617374657220636f707920616464726573732070726f76696465644d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e65724d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d616e61676572a265627a7a7231582056b8ed38083b8dd166fe8b8d140ddfb28eef77ccce3c463be6e4d0730350c76164736f6c634300050e0032","sourceMap":"326:3324:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;326:3324:24;;;;;;;","deployedSourceMap":"326:3324:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;326:3324:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:236;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;948:236:24;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;948:236:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;948:236:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;948:236:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;948:236:24;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;948:236:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;948:236:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;948:236:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;948:236:24;;;;;;;;;;;;;;;:::i;:::-;;278:28:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1934:1014:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1934:1014:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;794:302:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;794:302:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;1412:158:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1412:158:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;369:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;369:50:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3532:116;;;:::i;:::-;;;;;;;;;;;;;;;;;;;543:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;543:50:24;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;425:40:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:236;1048:12;:10;:12::i;:::-;1075:9;1087:1;1075:13;;1070:107;1094:6;:13;1090:1;:17;1070:107;;;1162:12;1175:1;1162:15;;;;;;;;;;;;;;1126:11;:22;1138:6;1145:1;1138:9;;;;;;;;;;;;;;1126:22;;;;;;;;;;;;;;;:33;;:51;;;;1109:3;;;;;;;1070:107;;;;948:236;;:::o;278:28:4:-;;;;;;;;;;;;;:::o;1934:1014:24:-;2139:7;;;;;;;;;;;2118:38;;;2157:10;2118:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2118:50:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2118:50:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2118:50:24;;;;;;;;;;;;;;;;2110:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2242:1;2228:16;;:2;:16;;;;2220:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2303:1;2294:6;:10;2286:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2414:27;2427:5;2434:6;2414:12;:27::i;:::-;2406:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2517:6;2484:11;:18;2496:5;2484:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2554:1;2537:19;;:5;:19;;;2533:409;;;2580:7;;;;;;;;;;;:33;;;2614:2;2618:6;2630:19;2580:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2580:70:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2580:70:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2580:70:24;;;;;;;;;;;;;;;;2572:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2533:409;;;2718:17;2791:2;2795:6;2738:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2738:64:24;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2738:64:24;2718:84;;2824:7;;;;;;;;;;;:33;;;2858:5;2865:1;2868:4;2874:19;2824:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2824:70:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2824:70:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2824:70:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2824:70:24;;;;;;;;;;;;;;;;2816:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2533:409;;1934:1014;;;:::o;794:302:9:-;375:7:4;;;;;;;;;;;353:30;;:10;:30;;;345:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;967:1:9;944:25;;:11;:25;;;;936:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1033:11;1020:10;;:24;;;;;;;;;;;;;;;;;;1059:30;1077:11;1059:30;;;;;;;;;;;;;;;;;;;;;;794:302;:::o;1412:158:24:-;375:7:4;;;;;;;;;;;353:30;;:10;:30;;;345:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:10:24;1521:11;:18;1533:5;1521:18;;;;;;;;;;;;;;;:29;;:42;;;;1412:158;;:::o;369:50::-;;;;;;;;;;;;;;;;;;;:::o;3532:116::-;3594:4;3634:6;3628:3;:12;;;;;;3621:3;:20;3614:27;;3532:116;:::o;543:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;425:40::-;;;;;;;;;;;;;;;;;;;:::o;450:309:4:-;672:1;644:30;;652:7;;;;;;;;;;;644:30;;;636:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;741:10;717:7;;:35;;;;;;;;;;;;;;;;;;450:309::o;2954:486:24:-;3041:4;3061:29;3093:11;:18;3105:5;3093:18;;;;;;;;;;;;;;;3061:50;;3135:10;:18;;;3125:7;:5;:7::i;:::-;:28;3121:126;;;3190:7;:5;:7::i;:::-;3169:10;:18;;:28;;;;3235:1;3211:10;:21;;:25;;;;3121:126;3294:10;:21;;;3284:6;3260:10;:21;;;:30;:55;;:126;;;;;3365:10;:21;;;3356:6;3332:10;:21;;;:30;:54;3260:126;3256:155;;;3407:4;3400:11;;;;;3256:155;3428:5;3421:12;;;2954:486;;;;;:::o","source":"pragma solidity >=0.5.0 <0.7.0;\nimport \"../base/Module.sol\";\nimport \"../base/ModuleManager.sol\";\nimport \"../base/OwnerManager.sol\";\nimport \"../common/Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract DailyLimitModule is Module {\n\n    string public constant NAME = \"Daily Limit Module\";\n    string public constant VERSION = \"0.1.0\";\n\n    // dailyLimits mapping maps token address to daily limit settings.\n    mapping (address => DailyLimit) public dailyLimits;\n\n    struct DailyLimit {\n        uint256 dailyLimit;\n        uint256 spentToday;\n        uint256 lastDay;\n    }\n\n    /// @dev Setup function sets initial storage of contract.\n    /// @param tokens List of token addresses. Ether is represented with address 0x0.\n    /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n    function setup(address[] memory tokens, uint256[] memory _dailyLimits)\n        public\n    {\n        setManager();\n        for (uint256 i = 0; i < tokens.length; i++)\n            dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n    }\n\n    /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n    /// @param token Token contract address.\n    /// @param dailyLimit Daily limit in smallest token unit.\n    function changeDailyLimit(address token, uint256 dailyLimit)\n        public\n        authorized\n    {\n        dailyLimits[token].dailyLimit = dailyLimit;\n    }\n\n    /// @dev Returns if Safe transaction is a valid daily limit transaction.\n    /// @param token Address of the token that should be transfered (0 for Ether)\n    /// @param to Address to which the tokens should be transfered\n    /// @param amount Amount of tokens (or Ether) that should be transfered\n    /// @return Returns if transaction can be executed.\n    function executeDailyLimit(address token, address to, uint256 amount)\n        public\n    {\n        // Only Safe owners are allowed to execute daily limit transactions.\n        require(OwnerManager(address(manager)).isOwner(msg.sender), \"Method can only be called by an owner\");\n        require(to != address(0), \"Invalid to address provided\");\n        require(amount > 0, \"Invalid amount provided\");\n        // Validate that transfer is not exceeding daily limit.\n        require(isUnderLimit(token, amount), \"Daily limit has been reached\");\n        dailyLimits[token].spentToday += amount;\n        if (token == address(0)) {\n            require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call), \"Could not execute ether transfer\");\n        } else {\n            bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n            require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call), \"Could not execute token transfer\");\n        }\n    }\n\n    function isUnderLimit(address token, uint256 amount)\n        internal\n        returns (bool)\n    {\n        DailyLimit storage dailyLimit = dailyLimits[token];\n        if (today() > dailyLimit.lastDay) {\n            dailyLimit.lastDay = today();\n            dailyLimit.spentToday = 0;\n        }\n        if (dailyLimit.spentToday + amount <= dailyLimit.dailyLimit && \n            dailyLimit.spentToday + amount > dailyLimit.spentToday)\n            return true;\n        return false;\n    }\n\n    /// @dev Returns last midnight as Unix timestamp.\n    /// @return Unix timestamp.\n    function today()\n        public\n        view\n        returns (uint)\n    {\n        return now - (now % 1 days);\n    }\n}\n","compiler":{"name":"solc","version":"0.5.14+commit.01f1aaa4.Emscripten.clang"},"networks":{},"schemaVersion":"2.0.3","updatedAt":"2022-11-11T08:20:54.747Z"}