diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs index a16f4cc6a..751870ed3 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoFees.cs @@ -27,7 +27,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.abi"; protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoFees)}.bin"; - protected override BigInteger DeploymentGasUnits => 1200000; + protected override BigInteger DeploymentGasUnits => 1400000; public Task DeployAsync(string tokenAddress) => base.DeployAsync(tokenAddress); diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs index e128472b4..78b531e85 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/AlgoMiner.cs @@ -32,10 +32,10 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenDistribution protected override string AbiResourceName => $"SmartContracts.src.bin.{nameof(AlgoMiner)}.abi"; protected override string BinResourceName => $"SmartContracts.src.bin.{nameof(AlgoMiner)}.bin"; - protected override BigInteger DeploymentGasUnits => 1200000; + protected override BigInteger DeploymentGasUnits => 1400000; - public Task DeployAsync(ushort minerType, byte category, string ownerAddress, string tokenAddress) - => base.DeployAsync(minerType, category, ownerAddress, tokenAddress); + public Task DeployAsync(ushort minerType, byte category, string minerAccountAddress, string tokenAddress) + => base.DeployAsync(minerType, category, minerAccountAddress, tokenAddress); protected override void Initialize(Contract contractDescriptor) { diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol index b9b350377..2850b2e05 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol @@ -4,10 +4,11 @@ import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; import "./IAlgoMiner.sol"; +import "./ERC20TokenHolder.sol"; import "./AlgoSystemRole.sol"; import "./AlgoCoreTeamRole.sol"; -contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { +contract AlgoFees is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole { using SafeERC20 for IERC20; uint256 constant CAT_0_VALUE_PROPORTION = 1; @@ -17,19 +18,19 @@ contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { uint256 constant CAT_4_VALUE_PROPORTION = 40; uint256 constant CAT_5_VALUE_PROPORTION = 50; - IERC20 private _token; address[] private _miners; mapping(address => uint256) private _minersByAddress; constructor(address tokenAddress) + ERC20TokenHolder(tokenAddress) AlgoSystemRole() AlgoCoreTeamRole() public { - _token = IERC20(tokenAddress); _miners.push(address(0)); // Reserved as a marker for unregistered miner. } - function registerMiner(address minerAddress) public onlyCoreTeam { + function registerMiner(address minerAddress) public notTerminated onlyCoreTeam { + require(_miners.length < 1000); require(_minersByAddress[minerAddress] == 0); IAlgoMiner algoMiner = IAlgoMiner(minerAddress); @@ -44,7 +45,7 @@ contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { _miners.push(minerAddress); } - function unregisterMiner(address minerAddress) public onlyCoreTeam { + function unregisterMiner(address minerAddress) public notTerminated onlyCoreTeam { require(_miners.length > 1); if(_miners.length == 2) { @@ -67,7 +68,7 @@ contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { } } - function mine() public onlySystem { + function mine() public notTerminated onlySystem { require(_miners.length > 1); uint256 currentFeesBalance = _token.balanceOf(address(this)); @@ -128,6 +129,10 @@ contract AlgoFees is AlgoSystemRole, AlgoCoreTeamRole { } } + function terminate() public onlyCoreTeam { + _terminate(); + } + function getMinerCount() public view returns (uint256) { return _miners.length - 1; } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol index 76aa60bf1..555aa271a 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol @@ -4,11 +4,12 @@ import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; import "./IAlgoMiner.sol"; +import "./ERC20TokenHolder.sol"; import "./AlgoSystemRole.sol"; import "./AlgoCoreTeamRole.sol"; import "./AlgoSupervisorRole.sol"; -contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlgoMiner { +contract AlgoMiner is ERC20TokenHolder, AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlgoMiner { using SafeERC20 for IERC20; uint256 public constant DAYS_PER_YEAR = 365; @@ -23,7 +24,6 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg uint16 private _minerType; uint8 private _category; address private _miner; - IERC20 private _token; MinerState private _state; bool private _mining; @@ -31,7 +31,8 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg uint16 private _currentDay; uint256 private _currentYearSupply; - constructor(uint16 minerType, uint8 category, address ownerAddress, address tokenAddress) + constructor(uint16 minerType, uint8 category, address minerAccountAddress, address tokenAddress) + ERC20TokenHolder(tokenAddress) AlgoSystemRole() AlgoCoreTeamRole() AlgoSupervisorRole() @@ -41,8 +42,7 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _minerType = minerType; _category = category; - _miner = ownerAddress; - _token = IERC20(tokenAddress); + _miner = minerAccountAddress; } modifier onlyMiner() { @@ -50,7 +50,7 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _; } - function activateMiner() public onlyCoreTeam { + function activateMiner() public notTerminated onlyCoreTeam { require(_state == MinerState.Deactivated); if(_currentYearSupply == 0) { @@ -64,32 +64,33 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _state = MinerState.Activated; } - function deactivateMiner() public onlyCoreTeam { + function deactivateMiner() public notTerminated onlyCoreTeam { require(_state != MinerState.Deactivated); _state = MinerState.Deactivated; _mining = false; } + // TODO: Transfer the entire state to the new miner. function migrateMiner(address newMinerAddress) public onlyCoreTeam { require(_state == MinerState.Deactivated); _token.safeTransfer(newMinerAddress, _token.balanceOf(address(this))); } - function pauseMining() public onlySupervisor { + function pauseMining() public notTerminated onlySupervisor { require(_state == MinerState.Activated); _state = MinerState.Suspended; } - function resumeMining() public onlySupervisor { + function resumeMining() public notTerminated onlySupervisor { require(_state == MinerState.Suspended); _state = MinerState.Activated; } - function stopAndRemoveOwnership() public onlySupervisor { + function stopAndRemoveOwnership() public notTerminated onlySupervisor { require(_state != MinerState.Stopped); _state = MinerState.Stopped; @@ -97,28 +98,28 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _miner = address(0); } - function resetMiner(address newOwnerAddress) public onlySupervisor { + function resetMiner(address newOwnerAddress) public notTerminated onlySupervisor { require(_state == MinerState.Stopped); _state = MinerState.Activated; _miner = newOwnerAddress; } - function startMining() public onlyMiner { + function startMining() public notTerminated onlyMiner { require(_state == MinerState.Activated); require(!_mining); _mining = true; } - function stopMining() public onlyMiner { + function stopMining() public notTerminated onlyMiner { require(_state == MinerState.Activated); require(_mining); _mining = false; } - function mine() public onlySystem { + function mine() public notTerminated onlySystem { require(_state == MinerState.Activated); require(_mining); @@ -141,6 +142,10 @@ contract AlgoMiner is AlgoSystemRole, AlgoCoreTeamRole, AlgoSupervisorRole, IAlg _token.safeTransfer(_miner, tokens); } + function terminate() public onlyCoreTeam { + _terminate(); + } + function isAlgoMiner() public pure returns (bool) { return true; } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol index 0ad4c2324..1edcb38c2 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol @@ -4,9 +4,10 @@ import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; import "./IAlgoMiner.sol"; +import "./ERC20TokenHolder.sol"; import "./AlgoCoreTeamRole.sol"; -contract AlgoPool is AlgoCoreTeamRole { +contract AlgoPool is ERC20TokenHolder, AlgoCoreTeamRole { using SafeERC20 for IERC20; uint256 public constant TOKEN_FACTOR = 10 ** uint256(18); @@ -18,17 +19,16 @@ contract AlgoPool is AlgoCoreTeamRole { uint256 public constant CAT_5_VALUE = 5 * 1000000 * TOKEN_FACTOR; uint16 private _poolType; - IERC20 private _token; mapping(address => bool) _fundedMiners; constructor(uint16 poolType, address tokenAddress) + ERC20TokenHolder(tokenAddress) AlgoCoreTeamRole() public { _poolType = poolType; - _token = IERC20(tokenAddress); } - function trasferToMiner(address minerAddress) public onlyCoreTeam { + function trasferToMiner(address minerAddress) public notTerminated onlyCoreTeam { require(!_fundedMiners[minerAddress]); IAlgoMiner algoMiner = IAlgoMiner(minerAddress); @@ -60,4 +60,8 @@ contract AlgoPool is AlgoCoreTeamRole { _fundedMiners[minerAddress] = true; _token.safeTransfer(minerAddress, value); } + + function terminate() public onlyCoreTeam { + _terminate(); + } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol new file mode 100644 index 000000000..21d79497f --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol @@ -0,0 +1,24 @@ +pragma solidity 0.4.24; + +import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; + +import "./Terminable.sol"; + +contract ERC20TokenHolder is Terminable { + using SafeERC20 for IERC20; + + IERC20 internal _token; + + constructor(address tokenAddress) Terminable() internal { + _token = IERC20(tokenAddress); + } + + function _terminate() internal { + uint256 currentBalance = _token.balanceOf(address(this)); + if(currentBalance > 0) { + _token.safeTransfer(_creator, currentBalance); + } + Terminable._terminate(); + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol new file mode 100644 index 000000000..1e773f3f3 --- /dev/null +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol @@ -0,0 +1,21 @@ +pragma solidity 0.4.24; + +contract Terminable { + + address internal _creator; + bool internal _terminated; + + constructor() internal { + _creator = msg.sender; + _terminated = false; + } + + modifier notTerminated() { + require(!_terminated); + _; + } + + function _terminate() internal { + _terminated = true; + } +} \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json index 384826148..05aa66a62 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees-sol-output.json @@ -78,6 +78,15 @@ "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol": { "AlgoFees": { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -250,27 +259,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH2 0xEDC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH2 0x34 CALLER PUSH5 0x100000000 PUSH2 0xA2 DUP2 MUL DIV JUMP JUMPDEST PUSH2 0x46 CALLER PUSH5 0x100000000 PUSH2 0xBD DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH2 0x163 JUMP JUMPDEST PUSH2 0xBA PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0xC43 PUSH2 0xD5 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xBA PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH2 0xC43 PUSH2 0xD5 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFD DUP3 DUP3 PUSH5 0x100000000 PUSH2 0x12C DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xD6A DUP1 PUSH2 0x172 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2E6B6849 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x1FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x210 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x230 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12B PUSH1 0x4 CALLDATALOAD PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x428 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x458 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x5E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D4 PUSH2 0xB0A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB15 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB20 JUMP JUMPDEST PUSH2 0x219 CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH2 0xB29 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23C CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x334 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x366 JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xB3A AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x40D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F3 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xB3A AND JUMP JUMPDEST PUSH2 0x444 CALLER PUSH2 0x3E1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x44F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x461 CALLER PUSH2 0x428 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 LT PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x495 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x4C8 PUSH1 0x3 DUP3 PUSH2 0xCDD JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x22D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x581 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x51A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x3 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x552 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x593 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP1 PUSH2 0x5CC SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xCDD JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F1 PUSH2 0xD01 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x5FF PUSH2 0xD01 JUMP JUMPDEST PUSH2 0x608 CALLER PUSH2 0x3E1 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 LT PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x688 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x69C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x3 SLOAD DUP6 LT ISZERO PUSH2 0x872 JUMPI PUSH1 0x3 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x6E0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x752 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x775 JUMPI PUSH2 0x867 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x7FF JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x867 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x813 JUMPI DUP6 PUSH1 0x1 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x827 JUMPI DUP6 PUSH1 0x2 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x83B JUMPI DUP6 PUSH1 0x3 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x84F JUMPI DUP6 PUSH1 0x4 PUSH2 0x7EF JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x867 JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x6C8 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x8B8 JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8C9 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8DD JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x8F1 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x905 JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x919 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x3 SLOAD DUP6 LT ISZERO PUSH2 0xB01 JUMPI PUSH1 0x3 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x93C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x9D1 JUMPI PUSH2 0xAF6 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xAF6 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xAD8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xB82 AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x924 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0xB1E CALLER PUSH2 0xC21 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xB1E CALLER PUSH2 0xC32 JUMP JUMPDEST PUSH2 0x22D PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC43 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x22D PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC43 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x22D PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH2 0x22D PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xC91 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xC58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC62 DUP3 DUP3 PUSH2 0xB3A JUMP JUMPDEST ISZERO PUSH2 0xC6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB0 DUP3 DUP3 PUSH2 0xB3A JUMP JUMPDEST ISZERO ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xC1C SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xD20 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB12 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xD3A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD26 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xa5 0xe DUP5 0xe4 CALLCODE 0xd CALL JUMPDEST PUSH21 0xA513C238B268F416D4F45F8632AF54E0CB02D0AAFF PUSH19 0x79002900000000000000000000000000000000 ", - "sourceMap": "522:4571:1:-;;;1046:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1046:235:1;;;;;;;;;;;;;364:22:2;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1161:6:1;:29;;-1:-1:-1;;;;;1161:29:1;;;-1:-1:-1;;;;;;1161:29:1;;;;;;1201:7;27:10:-1;;1161:29:1;23:18:-1;;45:23;;1161:6:1;1201:24;;;;;;;;;;;;;522:4571;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:4:-;-1:-1:-1;;;;;316:21:4;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:4;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:4;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:4;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:4;:11;:20;;;;;;;;;;;;;;;725:166::o;522:4571:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x10D0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH3 0x6C SWAP1 PUSH5 0x100000000 PUSH3 0xC7 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x80 CALLER PUSH5 0x100000000 PUSH3 0xE5 DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP1 SSTORE PUSH3 0x193 JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xE2 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xE06 PUSH3 0x100 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x12B DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x15B DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xF2D DUP1 PUSH3 0x1A3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x341CCFCB EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x3D19AB13 EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x81F909F3 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0xBB52C137 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x206 JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x21B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x24E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x26E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x457 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x4 CALLDATALOAD PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11F PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x49F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x686 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F4 PUSH2 0xBD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBDC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0xBE5 JUMP JUMPDEST PUSH2 0x239 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24C PUSH2 0xBEE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x257 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCB5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x3E8 GT PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x358 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO SWAP1 PUSH2 0x3DC JUMPI POP PUSH1 0x5 DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP5 SWAP1 SSTORE PUSH1 0x1 DUP5 ADD DUP4 SSTORE SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 SWAP2 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP3 PUSH1 0x1 ADD DUP2 SLOAD DUP2 LT ISZERO ISZERO PUSH2 0x484 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46A PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xCC6 AND JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26B DUP2 PUSH2 0xCFD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x500 CALLER PUSH2 0x49F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x586 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0x534 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH2 0x567 PUSH1 0x4 DUP3 PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0x620 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 DUP2 AND DUP5 MSTORE PUSH1 0x5 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SLOAD PUSH1 0x4 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP3 SWAP2 DUP2 LT PUSH2 0x5F1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x632 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH2 0x66B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0xEA0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x690 PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x69E PUSH2 0xEC4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6CF CALLER PUSH2 0x457 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 LT PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP7 POP PUSH1 0x0 DUP8 GT PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0x939 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x83C JUMPI PUSH2 0x92E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0xFF DUP4 AND ISZERO ISZERO PUSH2 0x8C6 JUMPI DUP6 PUSH1 0x0 JUMPDEST PUSH1 0x20 MUL ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x92E JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x8DA JUMPI DUP6 PUSH1 0x1 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x8EE JUMPI DUP6 PUSH1 0x2 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x902 JUMPI DUP6 PUSH1 0x3 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x916 JUMPI DUP6 PUSH1 0x4 PUSH2 0x8B6 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x92E JUMPI PUSH1 0xA0 DUP7 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x78F JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD DUP11 MLOAD PUSH1 0xA SWAP1 SWAP2 MUL ADD PUSH1 0x14 SWAP1 SWAP2 MUL ADD PUSH1 0x1E SWAP1 SWAP2 MUL ADD PUSH1 0x28 SWAP1 SWAP2 MUL ADD PUSH1 0x32 SWAP1 SWAP2 MUL ADD SWAP2 POP DUP2 DUP8 DUP2 ISZERO ISZERO PUSH2 0x97F JUMPI INVALID JUMPDEST DIV DUP2 MSTORE DUP2 PUSH1 0xA DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x990 JUMPI INVALID JUMPDEST DIV PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x14 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9A4 JUMPI INVALID JUMPDEST DIV PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x1E DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9B8 JUMPI INVALID JUMPDEST DIV PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x28 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9CC JUMPI INVALID JUMPDEST DIV PUSH1 0x80 DUP3 ADD MSTORE DUP2 PUSH1 0x32 DUP9 MUL DUP2 ISZERO ISZERO PUSH2 0x9E0 JUMPI INVALID JUMPDEST DIV PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x1 SWAP5 POP JUMPDEST PUSH1 0x4 SLOAD DUP6 LT ISZERO PUSH2 0xBC8 JUMPI PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 DUP2 LT PUSH2 0xA03 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP4 POP DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x19A74AB3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xA98 JUMPI PUSH2 0xBBD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x302C11CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xBBD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND SWAP2 PUSH4 0x302C11CA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 PUSH1 0xFF DUP7 AND PUSH1 0x6 DUP2 LT PUSH2 0xB9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x9EB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x0 NOT ADD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDAD JUMP JUMPDEST PUSH2 0x24C CALLER PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC67 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xCAD JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xCAD SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD0E AND JUMP JUMPDEST PUSH2 0x26B PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xCDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE06 AND JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26B PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x26B PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE25 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO PUSH2 0xE2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE73 DUP3 DUP3 PUSH2 0xCC6 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0xDA8 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBD9 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEE9 JUMP JUMPDEST POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LT CALLER MOD PUSH27 0x6CEAFCFDD5906365E4A9EA37491EDACA7ECEA2EAE390D605B7AA71 0xc3 STOP 0x29 ", + "sourceMap": "556:4724:1:-;;;1070:235;8:9:-1;5:2;;;30:1;27;20:12;5:2;1070:235:1;;;;;;;;;;;;;156:8:5;:21;;167:10;-1:-1:-1;;;;;;156:21:5;;;;;-1:-1:-1;;;;;;188:19:5;;;;-1:-1:-1;636:29:3;;;;;-1:-1:-1;;;;;636:29:3;;;;;364:22:2;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;-1:-1:-1;1225:7:1;27:10:-1;;39:1;23:18;;45:23;;1246:1:1;1225:24;;;;;;;;-1:-1:-1;;;;;;1225:24:1;;;556:4724;;800:92:2;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;244:167:6:-;-1:-1:-1;;;;;316:21:6;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:6;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:6;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:6;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:6;:11;:20;;;;;;;;;;;;;;;725:166::o;556:4724:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "686800", + "codeDepositCost": "777000", "executionCost": "infinite", "totalCost": "infinite" }, "external": { "addCoreTeam(address)": "infinite", "addSystem(address)": "infinite", - "getMinerByIndex(uint256)": "980", - "getMinerCount()": "633", + "getMinerByIndex(uint256)": "1002", + "getMinerCount()": "655", "isCoreTeam(address)": "infinite", "isSystem(address)": "infinite", "mine()": "infinite", "registerMiner(address)": "infinite", "renounceCoreTeam()": "infinite", "renounceSystem()": "infinite", + "terminate()": "infinite", "unregisterMiner(address)": "infinite" } }, @@ -285,10 +295,11 @@ "registerMiner(address)": "341ccfcb", "renounceCoreTeam()": "d43acc79", "renounceSystem()": "e9d61859", + "terminate()": "0c08bf88", "unregisterMiner(address)": "81f909f3" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x44afcd80827ee5d04f516395a4e0455c27c449ced894852a613fb605a96eb60c\",\"urls\":[\"bzzr://dd89f111ef301d812e7a5eb40ceb283652e0755cbde33b58742ceee33246bc4f\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"registerMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getMinerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"unregisterMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":\"AlgoFees\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol\":{\"keccak256\":\"0x143e742903e9fb652810dd60b96a084f550c5308784c4797270c651a3f407447\",\"urls\":[\"bzzr://a56b09e9fc46585c07a4fd9cd33c6624e86c745582536921fc16a9eda742f988\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -369,6 +380,40 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { + "ERC20TokenHolder": { + "abi": [ + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { "IAlgoMiner": { "abi": [ @@ -453,6 +498,35 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "Terminable": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "Roles": { "abi": [], @@ -465,7 +539,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "109:784:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -499,7 +573,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "117:1531:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -739,7 +813,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "353:1296:9:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -793,7 +867,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 791, + "sourceUnit": 905, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -818,10 +892,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 790, + "referencedDeclaration": 904, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$790", + "typeIdentifier": "t_contract$_Roles_$904", "typeString": "library Roles" } }, @@ -832,10 +906,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, + "referencedDeclaration": 817, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", "typeString": "struct Roles.Role" } } @@ -850,7 +924,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -858,10 +932,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, + "referencedDeclaration": 817, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -886,7 +960,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -994,7 +1068,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1060,10 +1134,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, + "referencedDeclaration": 1263, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1148,7 +1222,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1159,10 +1233,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 789, + "referencedDeclaration": 903, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1422,7 +1496,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1549,7 +1623,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1560,10 +1634,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 735, + "referencedDeclaration": 849, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1681,7 +1755,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1692,10 +1766,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 766, + "referencedDeclaration": 880, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1787,10 +1861,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoFees.sol", "exportedSymbols": { "AlgoFees": [ - 586 + 606 ] }, - "id": 587, + "id": 607, "nodeType": "SourceUnit", "nodes": [ { @@ -1808,8 +1882,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 587, - "sourceUnit": 988, + "scope": 607, + "sourceUnit": 1102, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -1819,8 +1893,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 587, - "sourceUnit": 1132, + "scope": 607, + "sourceUnit": 1246, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -1830,31 +1904,42 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 587, - "sourceUnit": 697, + "scope": 607, + "sourceUnit": 774, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", + "file": "./ERC20TokenHolder.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 607, + "sourceUnit": 751, + "src": "454:32:1", + "symbolAliases": [], + "unitAlias": "" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "file": "./AlgoSystemRole.sol", - "id": 92, + "id": 93, "nodeType": "ImportDirective", - "scope": 587, - "sourceUnit": 674, - "src": "454:30:1", + "scope": 607, + "sourceUnit": 694, + "src": "488:30:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", "file": "./AlgoCoreTeamRole.sol", - "id": 93, + "id": 94, "nodeType": "ImportDirective", - "scope": 587, + "scope": 607, "sourceUnit": 87, - "src": "486:32:1", + "src": "520:32:1", "symbolAliases": [], "unitAlias": "" }, @@ -1864,91 +1949,113 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 94, - "name": "AlgoSystemRole", + "id": 95, + "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 673, - "src": "543:14:1", + "referencedDeclaration": 750, + "src": "577:16:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$673", - "typeString": "contract AlgoSystemRole" + "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeString": "contract ERC20TokenHolder" } }, - "id": 95, + "id": 96, "nodeType": "InheritanceSpecifier", - "src": "543:14:1" + "src": "577:16:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 96, + "id": 97, + "name": "AlgoSystemRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 693, + "src": "595:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSystemRole_$693", + "typeString": "contract AlgoSystemRole" + } + }, + "id": 98, + "nodeType": "InheritanceSpecifier", + "src": "595:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 99, "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 86, - "src": "559:16:1", + "src": "611:16:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", "typeString": "contract AlgoCoreTeamRole" } }, - "id": 97, + "id": 100, "nodeType": "InheritanceSpecifier", - "src": "559:16:1" + "src": "611:16:1" } ], "contractDependencies": [ + 750, 86, - 673 + 693, + 810 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 586, + "id": 606, "linearizedBaseContracts": [ - 586, + 606, 86, - 673 + 693, + 750, + 810 ], "name": "AlgoFees", "nodeType": "ContractDefinition", "nodes": [ { - "id": 100, + "id": 103, "libraryName": { "contractScope": null, - "id": 98, + "id": 101, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "589:9:1", + "referencedDeclaration": 1245, + "src": "641:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "583:27:1", + "src": "635:27:1", "typeName": { "contractScope": null, - "id": 99, + "id": 102, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "603:6:1", + "referencedDeclaration": 1101, + "src": "655:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } } }, { "constant": true, - "id": 103, + "id": 106, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "618:43:1", + "scope": 606, + "src": "670:43:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1956,10 +2063,10 @@ "typeString": "uint256" }, "typeName": { - "id": 101, + "id": 104, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "618:7:1", + "src": "670:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1968,14 +2075,14 @@ "value": { "argumentTypes": null, "hexValue": "31", - "id": 102, + "id": 105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "660:1:1", + "src": "712:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -1987,11 +2094,11 @@ }, { "constant": true, - "id": 106, + "id": 109, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "668:44:1", + "scope": 606, + "src": "720:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1999,10 +2106,10 @@ "typeString": "uint256" }, "typeName": { - "id": 104, + "id": 107, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "668:7:1", + "src": "720:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2011,14 +2118,14 @@ "value": { "argumentTypes": null, "hexValue": "3130", - "id": 105, + "id": 108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "710:2:1", + "src": "762:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -2030,11 +2137,11 @@ }, { "constant": true, - "id": 109, + "id": 112, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "719:44:1", + "scope": 606, + "src": "771:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2042,10 +2149,10 @@ "typeString": "uint256" }, "typeName": { - "id": 107, + "id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "719:7:1", + "src": "771:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2054,14 +2161,14 @@ "value": { "argumentTypes": null, "hexValue": "3230", - "id": 108, + "id": 111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "761:2:1", + "src": "813:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", @@ -2073,11 +2180,11 @@ }, { "constant": true, - "id": 112, + "id": 115, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "770:44:1", + "scope": 606, + "src": "822:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2085,10 +2192,10 @@ "typeString": "uint256" }, "typeName": { - "id": 110, + "id": 113, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "770:7:1", + "src": "822:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2097,14 +2204,14 @@ "value": { "argumentTypes": null, "hexValue": "3330", - "id": 111, + "id": 114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "812:2:1", + "src": "864:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_30_by_1", @@ -2116,11 +2223,11 @@ }, { "constant": true, - "id": 115, + "id": 118, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "821:44:1", + "scope": 606, + "src": "873:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2128,10 +2235,10 @@ "typeString": "uint256" }, "typeName": { - "id": 113, + "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "821:7:1", + "src": "873:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2140,14 +2247,14 @@ "value": { "argumentTypes": null, "hexValue": "3430", - "id": 114, + "id": 117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "863:2:1", + "src": "915:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_40_by_1", @@ -2159,11 +2266,11 @@ }, { "constant": true, - "id": 118, + "id": 121, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "872:44:1", + "scope": 606, + "src": "924:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2171,10 +2278,10 @@ "typeString": "uint256" }, "typeName": { - "id": 116, + "id": 119, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "872:7:1", + "src": "924:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2183,14 +2290,14 @@ "value": { "argumentTypes": null, "hexValue": "3530", - "id": 117, + "id": 120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "914:2:1", + "src": "966:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", @@ -2202,39 +2309,11 @@ }, { "constant": false, - "id": 120, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 586, - "src": "925:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 119, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "925:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 123, + "id": 124, "name": "_miners", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "953:25:1", + "scope": 606, + "src": "977:25:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2243,19 +2322,19 @@ }, "typeName": { "baseType": { - "id": 121, + "id": 122, "name": "address", "nodeType": "ElementaryTypeName", - "src": "953:7:1", + "src": "977:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 122, + "id": 123, "length": null, "nodeType": "ArrayTypeName", - "src": "953:9:1", + "src": "977:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2266,11 +2345,11 @@ }, { "constant": false, - "id": 127, + "id": 128, "name": "_minersByAddress", "nodeType": "VariableDeclaration", - "scope": 586, - "src": "985:52:1", + "scope": 606, + "src": "1009:52:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2278,28 +2357,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 126, + "id": 127, "keyType": { - "id": 124, + "id": 125, "name": "address", "nodeType": "ElementaryTypeName", - "src": "993:7:1", + "src": "1017:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "985:27:1", + "src": "1009:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 125, + "id": 126, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1004:7:1", + "src": "1028:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2311,92 +2390,10 @@ }, { "body": { - "id": 150, + "id": 148, "nodeType": "Block", - "src": "1150:131:1", + "src": "1214:91:1", "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 136, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "1161:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 138, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "1177:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 137, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "1170:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$987_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 139, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1170:20:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - } - }, - "src": "1161:29:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", - "typeString": "contract IERC20" - } - }, - "id": 141, - "nodeType": "ExpressionStatement", - "src": "1161:29:1" - }, { "expression": { "argumentTypes": null, @@ -2407,14 +2404,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 146, + "id": 144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1222:1:1", + "src": "1246:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2430,20 +2427,20 @@ "typeString": "int_const 0" } ], - "id": 145, + "id": 143, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1214:7:1", + "src": "1238:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 147, + "id": 145, "isConstant": false, "isLValue": false, "isPure": true, @@ -2451,7 +2448,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1214:10:1", + "src": "1238:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2467,18 +2464,18 @@ ], "expression": { "argumentTypes": null, - "id": 142, + "id": 140, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1201:7:1", + "referencedDeclaration": 124, + "src": "1225:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 144, + "id": 142, "isConstant": false, "isLValue": false, "isPure": false, @@ -2486,13 +2483,13 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1201:12:1", + "src": "1225:12:1", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" } }, - "id": 148, + "id": 146, "isConstant": false, "isLValue": false, "isPure": false, @@ -2500,76 +2497,109 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1201:24:1", + "src": "1225:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 149, + "id": 147, "nodeType": "ExpressionStatement", - "src": "1201:24:1" + "src": "1225:24:1" } ] }, "documentation": null, - "id": 151, + "id": 149, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 132, + "arguments": [ + { + "argumentTypes": null, + "id": 133, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "1130:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 134, "modifierName": { "argumentTypes": null, - "id": 131, + "id": 132, + "name": "ERC20TokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 750, + "src": "1113:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$750_$", + "typeString": "type(contract ERC20TokenHolder)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1113:30:1" + }, + { + "arguments": [], + "id": 136, + "modifierName": { + "argumentTypes": null, + "id": 135, "name": "AlgoSystemRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "1089:14:1", + "referencedDeclaration": 693, + "src": "1153:14:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$673_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$693_$", "typeString": "type(contract AlgoSystemRole)" } }, "nodeType": "ModifierInvocation", - "src": "1089:16:1" + "src": "1153:16:1" }, { "arguments": [], - "id": 134, + "id": 138, "modifierName": { "argumentTypes": null, - "id": 133, + "id": 137, "name": "AlgoCoreTeamRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "1115:16:1", + "src": "1179:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1115:18:1" + "src": "1179:18:1" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 130, + "id": 131, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 129, + "id": 130, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 151, - "src": "1058:20:1", + "scope": 149, + "src": "1082:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2577,10 +2607,10 @@ "typeString": "address" }, "typeName": { - "id": 128, + "id": 129, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1058:7:1", + "src": "1082:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2590,26 +2620,26 @@ "visibility": "internal" } ], - "src": "1057:22:1" + "src": "1081:22:1" }, "payable": false, "returnParameters": { - "id": 135, + "id": 139, "nodeType": "ParameterList", "parameters": [], - "src": "1150:0:1" + "src": "1214:0:1" }, - "scope": 586, - "src": "1046:235:1", + "scope": 606, + "src": "1070:235:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 207, + "id": 214, "nodeType": "Block", - "src": "1354:401:1", + "src": "1392:442:1", "statements": [ { "expression": { @@ -2621,72 +2651,61 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 163, + "id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "baseExpression": { + "expression": { "argumentTypes": null, "id": 159, - "name": "_minersByAddress", + "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1373:16:1", + "referencedDeclaration": 124, + "src": "1411:7:1", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 161, - "indexExpression": { - "argumentTypes": null, - "id": 160, - "name": "minerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1390:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" } }, + "id": 160, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1373:30:1", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1411:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "==", + "operator": "<", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 162, + "hexValue": "31303030", + "id": 161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1407:1:1", + "src": "1428:4:1", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" }, - "value": "0" + "value": "1000" }, - "src": "1373:35:1", + "src": "1411:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2704,17 +2723,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1365:7:1", + "referencedDeclaration": 1263, + "src": "1403:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 164, + "id": 163, "isConstant": false, "isLValue": false, "isPure": false, @@ -2722,43 +2741,164 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1365:44:1", + "src": "1403:30:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 165, + "id": 164, "nodeType": "ExpressionStatement", - "src": "1365:44:1" + "src": "1403:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 166, + "name": "_minersByAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 128, + "src": "1452:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 168, + "indexExpression": { + "argumentTypes": null, + "id": 167, + "name": "minerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 151, + "src": "1469:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1452:30:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1486:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1452:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 165, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "1444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1444:44:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 172, + "nodeType": "ExpressionStatement", + "src": "1444:44:1" }, { "assignments": [ - 167 + 174 ], "declarations": [ { "constant": false, - "id": 167, + "id": 174, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 208, - "src": "1422:20:1", + "scope": 215, + "src": "1501:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" }, "typeName": { "contractScope": null, - "id": 166, + "id": 173, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 696, - "src": "1422:10:1", + "referencedDeclaration": 773, + "src": "1501:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, @@ -2766,18 +2906,18 @@ "visibility": "internal" } ], - "id": 171, + "id": 178, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 169, + "id": 176, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1456:12:1", + "referencedDeclaration": 151, + "src": "1535:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2791,18 +2931,18 @@ "typeString": "address" } ], - "id": 168, + "id": 175, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, - "src": "1445:10:1", + "referencedDeclaration": 773, + "src": "1524:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 170, + "id": 177, "isConstant": false, "isLValue": false, "isPure": false, @@ -2810,14 +2950,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1445:24:1", + "src": "1524:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1422:47:1" + "src": "1501:47:1" }, { "expression": { @@ -2830,32 +2970,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 173, + "id": 180, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "1498:9:1", + "referencedDeclaration": 174, + "src": "1577:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 174, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 680, - "src": "1498:21:1", + "referencedDeclaration": 757, + "src": "1577:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" } }, - "id": 175, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, @@ -2863,7 +3003,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1498:23:1", + "src": "1577:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2877,21 +3017,21 @@ "typeString": "bool" } ], - "id": 172, + "id": 179, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1490:7:1", + "referencedDeclaration": 1263, + "src": "1569:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 176, + "id": 183, "isConstant": false, "isLValue": false, "isPure": false, @@ -2899,28 +3039,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1490:32:1", + "src": "1569:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 177, + "id": 184, "nodeType": "ExpressionStatement", - "src": "1490:32:1" + "src": "1569:32:1" }, { "assignments": [ - 179 + 186 ], "declarations": [ { "constant": false, - "id": 179, + "id": 186, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 208, - "src": "1543:19:1", + "scope": 215, + "src": "1622:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2928,10 +3068,10 @@ "typeString": "uint8" }, "typeName": { - "id": 178, + "id": 185, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1543:5:1", + "src": "1622:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2941,7 +3081,7 @@ "visibility": "internal" } ], - "id": 183, + "id": 190, "initialValue": { "argumentTypes": null, "arguments": [], @@ -2949,32 +3089,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 180, + "id": 187, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "1565:9:1", + "referencedDeclaration": 174, + "src": "1644:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 181, + "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 685, - "src": "1565:21:1", + "referencedDeclaration": 762, + "src": "1644:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 182, + "id": 189, "isConstant": false, "isLValue": false, "isPure": false, @@ -2982,14 +3122,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1565:23:1", + "src": "1644:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1543:45:1" + "src": "1622:45:1" }, { "expression": { @@ -3001,7 +3141,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 191, + "id": 198, "isConstant": false, "isLValue": false, "isPure": false, @@ -3012,19 +3152,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 187, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 185, + "id": 192, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "1609:13:1", + "referencedDeclaration": 186, + "src": "1688:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3035,14 +3175,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 186, + "id": 193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1626:1:1", + "src": "1705:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3050,7 +3190,7 @@ }, "value": "0" }, - "src": "1609:18:1", + "src": "1688:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3064,19 +3204,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 190, + "id": 197, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 188, + "id": 195, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "1631:13:1", + "referencedDeclaration": 186, + "src": "1710:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3087,14 +3227,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 189, + "id": 196, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1648:1:1", + "src": "1727:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3102,13 +3242,13 @@ }, "value": "5" }, - "src": "1631:18:1", + "src": "1710:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1609:40:1", + "src": "1688:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3122,21 +3262,21 @@ "typeString": "bool" } ], - "id": 184, + "id": 191, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1601:7:1", + "referencedDeclaration": 1263, + "src": "1680:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 192, + "id": 199, "isConstant": false, "isLValue": false, "isPure": false, @@ -3144,20 +3284,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:49:1", + "src": "1680:49:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 193, + "id": 200, "nodeType": "ExpressionStatement", - "src": "1601:49:1" + "src": "1680:49:1" }, { "expression": { "argumentTypes": null, - "id": 199, + "id": 206, "isConstant": false, "isLValue": false, "isPure": false, @@ -3166,26 +3306,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 194, + "id": 201, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1663:16:1", + "referencedDeclaration": 128, + "src": "1742:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 196, + "id": 203, "indexExpression": { "argumentTypes": null, - "id": 195, + "id": 202, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1680:12:1", + "referencedDeclaration": 151, + "src": "1759:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3196,7 +3336,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1663:30:1", + "src": "1742:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3208,18 +3348,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 197, + "id": 204, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1696:7:1", + "referencedDeclaration": 124, + "src": "1775:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 198, + "id": 205, "isConstant": false, "isLValue": true, "isPure": false, @@ -3227,21 +3367,21 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1696:14:1", + "src": "1775:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1663:47:1", + "src": "1742:47:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 200, + "id": 207, "nodeType": "ExpressionStatement", - "src": "1663:47:1" + "src": "1742:47:1" }, { "expression": { @@ -3249,12 +3389,12 @@ "arguments": [ { "argumentTypes": null, - "id": 204, + "id": 211, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "1734:12:1", + "referencedDeclaration": 151, + "src": "1813:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3270,18 +3410,18 @@ ], "expression": { "argumentTypes": null, - "id": 201, + "id": 208, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1721:7:1", + "referencedDeclaration": 124, + "src": "1800:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 203, + "id": 210, "isConstant": false, "isLValue": false, "isPure": false, @@ -3289,13 +3429,13 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1721:12:1", + "src": "1800:12:1", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) returns (uint256)" } }, - "id": 205, + "id": 212, "isConstant": false, "isLValue": false, "isPure": false, @@ -3303,24 +3443,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1721:26:1", + "src": "1800:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 206, + "id": 213, "nodeType": "ExpressionStatement", - "src": "1721:26:1" + "src": "1800:26:1" } ] }, "documentation": null, - "id": 208, + "id": 215, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ + { + "arguments": null, + "id": 154, + "modifierName": { + "argumentTypes": null, + "id": 153, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 801, + "src": "1365:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1365:13:1" + }, { "arguments": null, "id": 156, @@ -3331,29 +3490,29 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1341:12:1", + "src": "1379:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1341:12:1" + "src": "1379:12:1" } ], "name": "registerMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 154, + "id": 152, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 153, + "id": 151, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 208, - "src": "1312:20:1", + "scope": 215, + "src": "1336:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3361,10 +3520,10 @@ "typeString": "address" }, "typeName": { - "id": 152, + "id": 150, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1312:7:1", + "src": "1336:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3374,26 +3533,26 @@ "visibility": "internal" } ], - "src": "1311:22:1" + "src": "1335:22:1" }, "payable": false, "returnParameters": { "id": 157, "nodeType": "ParameterList", "parameters": [], - "src": "1354:0:1" + "src": "1392:0:1" }, - "scope": 586, - "src": "1289:466:1", + "scope": 606, + "src": "1313:521:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 284, + "id": 293, "nodeType": "Block", - "src": "1830:682:1", + "src": "1923:682:1", "statements": [ { "expression": { @@ -3405,7 +3564,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 219, + "id": 228, "isConstant": false, "isLValue": false, "isPure": false, @@ -3414,18 +3573,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 216, + "id": 225, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1849:7:1", + "referencedDeclaration": 124, + "src": "1942:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 217, + "id": 226, "isConstant": false, "isLValue": true, "isPure": false, @@ -3433,7 +3592,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1849:14:1", + "src": "1942:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3444,14 +3603,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 218, + "id": 227, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1866:1:1", + "src": "1959:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3459,7 +3618,7 @@ }, "value": "1" }, - "src": "1849:18:1", + "src": "1942:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3473,21 +3632,21 @@ "typeString": "bool" } ], - "id": 215, + "id": 224, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1841:7:1", + "referencedDeclaration": 1263, + "src": "1934:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 220, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -3495,15 +3654,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1841:27:1", + "src": "1934:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 221, + "id": 230, "nodeType": "ExpressionStatement", - "src": "1841:27:1" + "src": "1934:27:1" }, { "condition": { @@ -3512,7 +3671,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 225, + "id": 234, "isConstant": false, "isLValue": false, "isPure": false, @@ -3521,18 +3680,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 222, + "id": 231, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1884:7:1", + "referencedDeclaration": 124, + "src": "1977:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 223, + "id": 232, "isConstant": false, "isLValue": true, "isPure": false, @@ -3540,7 +3699,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1884:14:1", + "src": "1977:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3551,14 +3710,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 224, + "id": 233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1902:1:1", + "src": "1995:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3566,16 +3725,16 @@ }, "value": "2" }, - "src": "1884:19:1", + "src": "1977:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 282, + "id": 291, "nodeType": "Block", - "src": "2117:388:1", + "src": "2210:388:1", "statements": [ { "condition": { @@ -3584,7 +3743,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 248, + "id": 257, "isConstant": false, "isLValue": false, "isPure": false, @@ -3593,26 +3752,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 243, + "id": 252, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2149:16:1", + "referencedDeclaration": 128, + "src": "2242:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 245, + "id": 254, "indexExpression": { "argumentTypes": null, - "id": 244, + "id": 253, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 210, - "src": "2166:12:1", + "referencedDeclaration": 217, + "src": "2259:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3623,7 +3782,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2149:30:1", + "src": "2242:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3635,18 +3794,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 246, + "id": 255, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2183:7:1", + "referencedDeclaration": 124, + "src": "2276:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 247, + "id": 256, "isConstant": false, "isLValue": true, "isPure": false, @@ -3654,31 +3813,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2183:14:1", + "src": "2276:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2149:48:1", + "src": "2242:48:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 263, + "id": 272, "nodeType": "IfStatement", - "src": "2146:214:1", + "src": "2239:214:1", "trueBody": { - "id": 262, + "id": 271, "nodeType": "Block", - "src": "2199:161:1", + "src": "2292:161:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 260, + "id": 269, "isConstant": false, "isLValue": false, "isPure": false, @@ -3687,42 +3846,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 249, + "id": 258, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2275:7:1", + "referencedDeclaration": 124, + "src": "2368:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 253, + "id": 262, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 250, + "id": 259, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2283:16:1", + "referencedDeclaration": 128, + "src": "2376:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 252, + "id": 261, "indexExpression": { "argumentTypes": null, - "id": 251, + "id": 260, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 210, - "src": "2300:12:1", + "referencedDeclaration": 217, + "src": "2393:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3733,7 +3892,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2283:30:1", + "src": "2376:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3744,7 +3903,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2275:39:1", + "src": "2368:39:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3756,25 +3915,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 254, + "id": 263, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2317:7:1", + "referencedDeclaration": 124, + "src": "2410:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 259, + "id": 268, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 258, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -3783,18 +3942,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 255, + "id": 264, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2325:7:1", + "referencedDeclaration": 124, + "src": "2418:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 256, + "id": 265, "isConstant": false, "isLValue": true, "isPure": false, @@ -3802,7 +3961,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2325:14:1", + "src": "2418:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3813,14 +3972,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 257, + "id": 266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2342:1:1", + "src": "2435:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3828,7 +3987,7 @@ }, "value": "1" }, - "src": "2325:18:1", + "src": "2418:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3839,21 +3998,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2317:27:1", + "src": "2410:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2275:69:1", + "src": "2368:69:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 261, + "id": 270, "nodeType": "ExpressionStatement", - "src": "2275:69:1" + "src": "2368:69:1" } ] } @@ -3861,7 +4020,7 @@ { "expression": { "argumentTypes": null, - "id": 270, + "id": 279, "isConstant": false, "isLValue": false, "isPure": false, @@ -3869,30 +4028,30 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2376:34:1", + "src": "2469:34:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 264, + "id": 273, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2383:7:1", + "referencedDeclaration": 124, + "src": "2476:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 269, + "id": 278, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 268, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, @@ -3901,18 +4060,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 265, + "id": 274, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2391:7:1", + "referencedDeclaration": 124, + "src": "2484:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 266, + "id": 275, "isConstant": false, "isLValue": true, "isPure": false, @@ -3920,7 +4079,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2391:14:1", + "src": "2484:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3931,14 +4090,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 267, + "id": 276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2408:1:1", + "src": "2501:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3946,7 +4105,7 @@ }, "value": "1" }, - "src": "2391:18:1", + "src": "2484:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3957,7 +4116,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2383:27:1", + "src": "2476:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3968,14 +4127,14 @@ "typeString": "tuple()" } }, - "id": 271, + "id": 280, "nodeType": "ExpressionStatement", - "src": "2376:34:1" + "src": "2469:34:1" }, { "expression": { "argumentTypes": null, - "id": 275, + "id": 284, "isConstant": false, "isLValue": false, "isPure": false, @@ -3983,23 +4142,23 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "2425:16:1", + "src": "2518:16:1", "subExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 272, + "id": 281, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2425:7:1", + "referencedDeclaration": 124, + "src": "2518:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 274, + "id": 283, "isConstant": false, "isLValue": true, "isPure": false, @@ -4007,7 +4166,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2425:14:1", + "src": "2518:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4018,14 +4177,14 @@ "typeString": "uint256" } }, - "id": 276, + "id": 285, "nodeType": "ExpressionStatement", - "src": "2425:16:1" + "src": "2518:16:1" }, { "expression": { "argumentTypes": null, - "id": 280, + "id": 289, "isConstant": false, "isLValue": false, "isPure": false, @@ -4033,31 +4192,31 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2456:37:1", + "src": "2549:37:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 277, + "id": 286, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2463:16:1", + "referencedDeclaration": 128, + "src": "2556:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 279, + "id": 288, "indexExpression": { "argumentTypes": null, - "id": 278, + "id": 287, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 210, - "src": "2480:12:1", + "referencedDeclaration": 217, + "src": "2573:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4068,7 +4227,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2463:30:1", + "src": "2556:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4079,24 +4238,24 @@ "typeString": "tuple()" } }, - "id": 281, + "id": 290, "nodeType": "ExpressionStatement", - "src": "2456:37:1" + "src": "2549:37:1" } ] }, - "id": 283, + "id": 292, "nodeType": "IfStatement", - "src": "1881:624:1", + "src": "1974:624:1", "trueBody": { - "id": 242, + "id": 251, "nodeType": "Block", - "src": "1905:206:1", + "src": "1998:206:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 229, + "id": 238, "isConstant": false, "isLValue": false, "isPure": false, @@ -4104,34 +4263,34 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "1987:17:1", + "src": "2080:17:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 226, + "id": 235, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1994:7:1", + "referencedDeclaration": 124, + "src": "2087:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 228, + "id": 237, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 227, + "id": 236, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2002:1:1", + "src": "2095:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4144,7 +4303,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1994:10:1", + "src": "2087:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4155,14 +4314,14 @@ "typeString": "tuple()" } }, - "id": 230, + "id": 239, "nodeType": "ExpressionStatement", - "src": "1987:17:1" + "src": "2080:17:1" }, { "expression": { "argumentTypes": null, - "id": 235, + "id": 244, "isConstant": false, "isLValue": false, "isPure": false, @@ -4171,18 +4330,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 231, + "id": 240, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2019:7:1", + "referencedDeclaration": 124, + "src": "2112:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 233, + "id": 242, "isConstant": false, "isLValue": true, "isPure": false, @@ -4190,7 +4349,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2019:14:1", + "src": "2112:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4201,14 +4360,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 234, + "id": 243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2036:1:1", + "src": "2129:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4216,20 +4375,20 @@ }, "value": "1" }, - "src": "2019:18:1", + "src": "2112:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 236, + "id": 245, "nodeType": "ExpressionStatement", - "src": "2019:18:1" + "src": "2112:18:1" }, { "expression": { "argumentTypes": null, - "id": 240, + "id": 249, "isConstant": false, "isLValue": false, "isPure": false, @@ -4237,31 +4396,31 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2052:37:1", + "src": "2145:37:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 237, + "id": 246, "name": "_minersByAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2059:16:1", + "referencedDeclaration": 128, + "src": "2152:16:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 239, + "id": 248, "indexExpression": { "argumentTypes": null, - "id": 238, + "id": 247, "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 210, - "src": "2076:12:1", + "referencedDeclaration": 217, + "src": "2169:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4272,7 +4431,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2059:30:1", + "src": "2152:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4283,9 +4442,9 @@ "typeString": "tuple()" } }, - "id": 241, + "id": 250, "nodeType": "ExpressionStatement", - "src": "2052:37:1" + "src": "2145:37:1" } ] } @@ -4293,44 +4452,63 @@ ] }, "documentation": null, - "id": 285, + "id": 294, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 213, + "id": 220, "modifierName": { "argumentTypes": null, - "id": 212, - "name": "onlyCoreTeam", + "id": 219, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "1817:12:1", + "referencedDeclaration": 801, + "src": "1896:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1817:12:1" + "src": "1896:13:1" + }, + { + "arguments": null, + "id": 222, + "modifierName": { + "argumentTypes": null, + "id": 221, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1910:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1910:12:1" } ], "name": "unregisterMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 211, + "id": 218, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 210, + "id": 217, "name": "minerAddress", "nodeType": "VariableDeclaration", - "scope": 285, - "src": "1788:20:1", + "scope": 294, + "src": "1867:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4338,10 +4516,10 @@ "typeString": "address" }, "typeName": { - "id": 209, + "id": 216, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1788:7:1", + "src": "1867:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4351,26 +4529,26 @@ "visibility": "internal" } ], - "src": "1787:22:1" + "src": "1866:22:1" }, "payable": false, "returnParameters": { - "id": 214, + "id": 223, "nodeType": "ParameterList", "parameters": [], - "src": "1830:0:1" + "src": "1923:0:1" }, - "scope": 586, - "src": "1763:749:1", + "scope": 606, + "src": "1842:763:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 559, + "id": 570, "nodeType": "Block", - "src": "2554:2307:1", + "src": "2661:2307:1", "statements": [ { "expression": { @@ -4382,7 +4560,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 294, + "id": 305, "isConstant": false, "isLValue": false, "isPure": false, @@ -4391,18 +4569,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 291, + "id": 302, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2573:7:1", + "referencedDeclaration": 124, + "src": "2680:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 292, + "id": 303, "isConstant": false, "isLValue": true, "isPure": false, @@ -4410,7 +4588,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2573:14:1", + "src": "2680:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4421,14 +4599,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 293, + "id": 304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2590:1:1", + "src": "2697:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4436,7 +4614,7 @@ }, "value": "1" }, - "src": "2573:18:1", + "src": "2680:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4450,21 +4628,21 @@ "typeString": "bool" } ], - "id": 290, + "id": 301, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "2565:7:1", + "referencedDeclaration": 1263, + "src": "2672:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 295, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, @@ -4472,28 +4650,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2565:27:1", + "src": "2672:27:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 296, + "id": 307, "nodeType": "ExpressionStatement", - "src": "2565:27:1" + "src": "2672:27:1" }, { "assignments": [ - 298 + 309 ], "declarations": [ { "constant": false, - "id": 298, + "id": 309, "name": "currentFeesBalance", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2605:26:1", + "scope": 571, + "src": "2712:26:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4501,10 +4679,10 @@ "typeString": "uint256" }, "typeName": { - "id": 297, + "id": 308, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2605:7:1", + "src": "2712:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4514,7 +4692,7 @@ "visibility": "internal" } ], - "id": 305, + "id": 316, "initialValue": { "argumentTypes": null, "arguments": [ @@ -4523,14 +4701,14 @@ "arguments": [ { "argumentTypes": null, - "id": 302, + "id": 313, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1173, - "src": "2659:4:1", + "referencedDeclaration": 1291, + "src": "2766:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoFees_$586", + "typeIdentifier": "t_contract$_AlgoFees_$606", "typeString": "contract AlgoFees" } } @@ -4538,24 +4716,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoFees_$586", + "typeIdentifier": "t_contract$_AlgoFees_$606", "typeString": "contract AlgoFees" } ], - "id": 301, + "id": 312, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2651:7:1", + "src": "2758:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 303, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, @@ -4563,7 +4741,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2651:13:1", + "src": "2758:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4579,32 +4757,32 @@ ], "expression": { "argumentTypes": null, - "id": 299, + "id": 310, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "2634:6:1", + "referencedDeclaration": 705, + "src": "2741:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 300, + "id": 311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 932, - "src": "2634:16:1", + "referencedDeclaration": 1046, + "src": "2741:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 304, + "id": 315, "isConstant": false, "isLValue": false, "isPure": false, @@ -4612,14 +4790,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2634:31:1", + "src": "2741:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2605:60:1" + "src": "2712:60:1" }, { "expression": { @@ -4631,19 +4809,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 309, + "id": 320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 307, + "id": 318, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "2680:18:1", + "referencedDeclaration": 309, + "src": "2787:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4654,14 +4832,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 308, + "id": 319, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2701:1:1", + "src": "2808:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4669,7 +4847,7 @@ }, "value": "0" }, - "src": "2680:22:1", + "src": "2787:22:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4683,21 +4861,21 @@ "typeString": "bool" } ], - "id": 306, + "id": 317, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "2672:7:1", + "referencedDeclaration": 1263, + "src": "2779:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 310, + "id": 321, "isConstant": false, "isLValue": false, "isPure": false, @@ -4705,26 +4883,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2672:31:1", + "src": "2779:31:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 311, + "id": 322, "nodeType": "ExpressionStatement", - "src": "2672:31:1" + "src": "2779:31:1" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 316, + "id": 327, "name": "miners", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2787:24:1", + "scope": 571, + "src": "2894:24:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4733,27 +4911,27 @@ }, "typeName": { "baseType": { - "id": 314, + "id": 325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2787:7:1", + "src": "2894:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 315, + "id": 326, "length": { "argumentTypes": null, "hexValue": "36", - "id": 313, + "id": 324, "isConstant": false, "isLValue": false, "isPure": false, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2795:1:1", + "src": "2902:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": null, @@ -4762,7 +4940,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "2787:10:1", + "src": "2894:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -4772,44 +4950,44 @@ "visibility": "internal" } ], - "id": 317, + "id": 328, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2787:24:1" + "src": "2894:24:1" }, { "body": { - "id": 409, + "id": 420, "nodeType": "Block", - "src": "2868:657:1", + "src": "2975:657:1", "statements": [ { "assignments": [ - 330 + 341 ], "declarations": [ { "constant": false, - "id": 330, + "id": 341, "name": "algoMiner", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2883:20:1", + "scope": 571, + "src": "2990:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" }, "typeName": { "contractScope": null, - "id": 329, + "id": 340, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 696, - "src": "2883:10:1", + "referencedDeclaration": 773, + "src": "2990:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, @@ -4817,7 +4995,7 @@ "visibility": "internal" } ], - "id": 336, + "id": 347, "initialValue": { "argumentTypes": null, "arguments": [ @@ -4825,26 +5003,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 332, + "id": 343, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2917:7:1", + "referencedDeclaration": 124, + "src": "3024:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 334, + "id": 345, "indexExpression": { "argumentTypes": null, - "id": 333, + "id": 344, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "2925:1:1", + "referencedDeclaration": 330, + "src": "3032:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4855,7 +5033,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2917:10:1", + "src": "3024:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4869,18 +5047,18 @@ "typeString": "address" } ], - "id": 331, + "id": 342, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, - "src": "2906:10:1", + "referencedDeclaration": 773, + "src": "3013:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 335, + "id": 346, "isConstant": false, "isLValue": false, "isPure": false, @@ -4888,19 +5066,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2906:22:1", + "src": "3013:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "2883:45:1" + "src": "2990:45:1" }, { "condition": { "argumentTypes": null, - "id": 340, + "id": 351, "isConstant": false, "isLValue": false, "isPure": false, @@ -4908,7 +5086,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2948:21:1", + "src": "3055:21:1", "subExpression": { "argumentTypes": null, "arguments": [], @@ -4916,32 +5094,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 337, + "id": 348, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "2949:9:1", + "referencedDeclaration": 341, + "src": "3056:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 338, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 690, - "src": "2949:18:1", + "referencedDeclaration": 767, + "src": "3056:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 339, + "id": 350, "isConstant": false, "isLValue": false, "isPure": false, @@ -4949,7 +5127,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2949:20:1", + "src": "3056:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4961,27 +5139,27 @@ } }, "falseBody": null, - "id": 342, + "id": 353, "nodeType": "IfStatement", - "src": "2945:34:1", + "src": "3052:34:1", "trueBody": { - "id": 341, + "id": 352, "nodeType": "Continue", - "src": "2971:8:1" + "src": "3078:8:1" } }, { "assignments": [ - 344 + 355 ], "declarations": [ { "constant": false, - "id": 344, + "id": 355, "name": "minerCategory", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2996:19:1", + "scope": 571, + "src": "3103:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4989,10 +5167,10 @@ "typeString": "uint8" }, "typeName": { - "id": 343, + "id": 354, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2996:5:1", + "src": "3103:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5002,7 +5180,7 @@ "visibility": "internal" } ], - "id": 348, + "id": 359, "initialValue": { "argumentTypes": null, "arguments": [], @@ -5010,32 +5188,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 345, + "id": 356, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "3018:9:1", + "referencedDeclaration": 341, + "src": "3125:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 346, + "id": 357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 685, - "src": "3018:21:1", + "referencedDeclaration": 762, + "src": "3125:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 347, + "id": 358, "isConstant": false, "isLValue": false, "isPure": false, @@ -5043,14 +5221,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3018:23:1", + "src": "3125:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2996:45:1" + "src": "3103:45:1" }, { "condition": { @@ -5059,19 +5237,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 351, + "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 349, + "id": 360, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3061:13:1", + "referencedDeclaration": 355, + "src": "3168:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5082,14 +5260,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 350, + "id": 361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3078:1:1", + "src": "3185:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5097,7 +5275,7 @@ }, "value": "0" }, - "src": "3061:18:1", + "src": "3168:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5110,19 +5288,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 360, + "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 358, + "id": 369, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3136:13:1", + "referencedDeclaration": 355, + "src": "3243:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5133,14 +5311,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 359, + "id": 370, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3153:1:1", + "src": "3260:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5148,7 +5326,7 @@ }, "value": "1" }, - "src": "3136:18:1", + "src": "3243:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5161,19 +5339,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 369, + "id": 380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 367, + "id": 378, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3211:13:1", + "referencedDeclaration": 355, + "src": "3318:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5184,14 +5362,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 368, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3228:1:1", + "src": "3335:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5199,7 +5377,7 @@ }, "value": "2" }, - "src": "3211:18:1", + "src": "3318:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5212,19 +5390,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 378, + "id": 389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 376, + "id": 387, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3286:13:1", + "referencedDeclaration": 355, + "src": "3393:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5235,14 +5413,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "33", - "id": 377, + "id": 388, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3303:1:1", + "src": "3410:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -5250,7 +5428,7 @@ }, "value": "3" }, - "src": "3286:18:1", + "src": "3393:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5263,19 +5441,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 387, + "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 385, + "id": 396, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3361:13:1", + "referencedDeclaration": 355, + "src": "3468:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5286,14 +5464,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "34", - "id": 386, + "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3378:1:1", + "src": "3485:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -5301,7 +5479,7 @@ }, "value": "4" }, - "src": "3361:18:1", + "src": "3468:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5314,19 +5492,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 396, + "id": 407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 394, + "id": 405, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "3436:13:1", + "referencedDeclaration": 355, + "src": "3543:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5337,14 +5515,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 395, + "id": 406, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3453:1:1", + "src": "3560:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -5352,25 +5530,25 @@ }, "value": "5" }, - "src": "3436:18:1", + "src": "3543:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 403, + "id": 414, "nodeType": "IfStatement", - "src": "3433:69:1", + "src": "3540:69:1", "trueBody": { - "id": 402, + "id": 413, "nodeType": "Block", - "src": "3456:46:1", + "src": "3563:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 400, + "id": 411, "isConstant": false, "isLValue": false, "isPure": false, @@ -5378,34 +5556,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3475:11:1", + "src": "3582:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 397, + "id": 408, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3475:6:1", + "referencedDeclaration": 327, + "src": "3582:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 399, + "id": 410, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 398, + "id": 409, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3482:1:1", + "src": "3589:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -5418,7 +5596,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3475:9:1", + "src": "3582:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5429,25 +5607,25 @@ "typeString": "uint256" } }, - "id": 401, + "id": 412, "nodeType": "ExpressionStatement", - "src": "3475:11:1" + "src": "3582:11:1" } ] } }, - "id": 404, + "id": 415, "nodeType": "IfStatement", - "src": "3358:144:1", + "src": "3465:144:1", "trueBody": { - "id": 393, + "id": 404, "nodeType": "Block", - "src": "3381:46:1", + "src": "3488:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 391, + "id": 402, "isConstant": false, "isLValue": false, "isPure": false, @@ -5455,34 +5633,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3400:11:1", + "src": "3507:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 388, + "id": 399, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3400:6:1", + "referencedDeclaration": 327, + "src": "3507:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 390, + "id": 401, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 389, + "id": 400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3407:1:1", + "src": "3514:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -5495,7 +5673,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3400:9:1", + "src": "3507:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5506,25 +5684,25 @@ "typeString": "uint256" } }, - "id": 392, + "id": 403, "nodeType": "ExpressionStatement", - "src": "3400:11:1" + "src": "3507:11:1" } ] } }, - "id": 405, + "id": 416, "nodeType": "IfStatement", - "src": "3283:219:1", + "src": "3390:219:1", "trueBody": { - "id": 384, + "id": 395, "nodeType": "Block", - "src": "3306:46:1", + "src": "3413:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 382, + "id": 393, "isConstant": false, "isLValue": false, "isPure": false, @@ -5532,34 +5710,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3325:11:1", + "src": "3432:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 379, + "id": 390, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3325:6:1", + "referencedDeclaration": 327, + "src": "3432:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 381, + "id": 392, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 380, + "id": 391, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3332:1:1", + "src": "3439:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -5572,7 +5750,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3325:9:1", + "src": "3432:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5583,25 +5761,25 @@ "typeString": "uint256" } }, - "id": 383, + "id": 394, "nodeType": "ExpressionStatement", - "src": "3325:11:1" + "src": "3432:11:1" } ] } }, - "id": 406, + "id": 417, "nodeType": "IfStatement", - "src": "3208:294:1", + "src": "3315:294:1", "trueBody": { - "id": 375, + "id": 386, "nodeType": "Block", - "src": "3231:46:1", + "src": "3338:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 373, + "id": 384, "isConstant": false, "isLValue": false, "isPure": false, @@ -5609,34 +5787,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3250:11:1", + "src": "3357:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 370, + "id": 381, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3250:6:1", + "referencedDeclaration": 327, + "src": "3357:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 372, + "id": 383, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 371, + "id": 382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3257:1:1", + "src": "3364:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -5649,7 +5827,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3250:9:1", + "src": "3357:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5660,25 +5838,25 @@ "typeString": "uint256" } }, - "id": 374, + "id": 385, "nodeType": "ExpressionStatement", - "src": "3250:11:1" + "src": "3357:11:1" } ] } }, - "id": 407, + "id": 418, "nodeType": "IfStatement", - "src": "3133:369:1", + "src": "3240:369:1", "trueBody": { - "id": 366, + "id": 377, "nodeType": "Block", - "src": "3156:46:1", + "src": "3263:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 364, + "id": 375, "isConstant": false, "isLValue": false, "isPure": false, @@ -5686,34 +5864,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3175:11:1", + "src": "3282:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 361, + "id": 372, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3175:6:1", + "referencedDeclaration": 327, + "src": "3282:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 363, + "id": 374, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 362, + "id": 373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3182:1:1", + "src": "3289:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5726,7 +5904,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3175:9:1", + "src": "3282:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5737,25 +5915,25 @@ "typeString": "uint256" } }, - "id": 365, + "id": 376, "nodeType": "ExpressionStatement", - "src": "3175:11:1" + "src": "3282:11:1" } ] } }, - "id": 408, + "id": 419, "nodeType": "IfStatement", - "src": "3058:444:1", + "src": "3165:444:1", "trueBody": { - "id": 357, + "id": 368, "nodeType": "Block", - "src": "3081:46:1", + "src": "3188:46:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 355, + "id": 366, "isConstant": false, "isLValue": false, "isPure": false, @@ -5763,34 +5941,34 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3100:11:1", + "src": "3207:11:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 352, + "id": 363, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3100:6:1", + "referencedDeclaration": 327, + "src": "3207:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 354, + "id": 365, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 353, + "id": 364, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3107:1:1", + "src": "3214:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5803,7 +5981,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3100:9:1", + "src": "3207:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5814,9 +5992,9 @@ "typeString": "uint256" } }, - "id": 356, + "id": 367, "nodeType": "ExpressionStatement", - "src": "3100:11:1" + "src": "3207:11:1" } ] } @@ -5829,19 +6007,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 325, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 322, + "id": 333, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "2843:1:1", + "referencedDeclaration": 330, + "src": "2950:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5853,18 +6031,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 323, + "id": 334, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2847:7:1", + "referencedDeclaration": 124, + "src": "2954:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 324, + "id": 335, "isConstant": false, "isLValue": true, "isPure": false, @@ -5872,31 +6050,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2847:14:1", + "src": "2954:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2843:18:1", + "src": "2950:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 410, + "id": 421, "initializationExpression": { "assignments": [ - 319 + 330 ], "declarations": [ { "constant": false, - "id": 319, + "id": 330, "name": "i", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "2828:9:1", + "scope": 571, + "src": "2935:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5904,10 +6082,10 @@ "typeString": "uint256" }, "typeName": { - "id": 318, + "id": 329, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2828:7:1", + "src": "2935:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5917,18 +6095,18 @@ "visibility": "internal" } ], - "id": 321, + "id": 332, "initialValue": { "argumentTypes": null, "hexValue": "31", - "id": 320, + "id": 331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2840:1:1", + "src": "2947:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5937,12 +6115,12 @@ "value": "1" }, "nodeType": "VariableDeclarationStatement", - "src": "2828:13:1" + "src": "2935:13:1" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 327, + "id": 338, "isConstant": false, "isLValue": false, "isPure": false, @@ -5950,15 +6128,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2863:3:1", + "src": "2970:3:1", "subExpression": { "argumentTypes": null, - "id": 326, + "id": 337, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "2863:1:1", + "referencedDeclaration": 330, + "src": "2970:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5969,25 +6147,25 @@ "typeString": "uint256" } }, - "id": 328, + "id": 339, "nodeType": "ExpressionStatement", - "src": "2863:3:1" + "src": "2970:3:1" }, "nodeType": "ForStatement", - "src": "2824:701:1" + "src": "2931:701:1" }, { "assignments": [ - 412 + 423 ], "declarations": [ { "constant": false, - "id": 412, + "id": 423, "name": "totalProportion", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "3613:23:1", + "scope": 571, + "src": "3720:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5995,10 +6173,10 @@ "typeString": "uint256" }, "typeName": { - "id": 411, + "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3613:7:1", + "src": "3720:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6008,14 +6186,14 @@ "visibility": "internal" } ], - "id": 448, + "id": 459, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 447, + "id": 458, "isConstant": false, "isLValue": false, "isPure": false, @@ -6026,7 +6204,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 441, + "id": 452, "isConstant": false, "isLValue": false, "isPure": false, @@ -6037,7 +6215,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 435, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -6048,7 +6226,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 429, + "id": 440, "isConstant": false, "isLValue": false, "isPure": false, @@ -6059,7 +6237,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 423, + "id": 434, "isConstant": false, "isLValue": false, "isPure": false, @@ -6070,19 +6248,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 417, + "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 413, + "id": 424, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "3639:22:1", + "referencedDeclaration": 106, + "src": "3746:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6094,29 +6272,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 414, + "id": 425, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3664:6:1", + "referencedDeclaration": 327, + "src": "3771:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 416, + "id": 427, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 415, + "id": 426, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3671:1:1", + "src": "3778:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6129,13 +6307,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3664:9:1", + "src": "3771:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:34:1", + "src": "3746:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6149,19 +6327,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 422, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 418, + "id": 429, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 106, - "src": "3689:22:1", + "referencedDeclaration": 109, + "src": "3796:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6173,29 +6351,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 419, + "id": 430, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3714:6:1", + "referencedDeclaration": 327, + "src": "3821:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 421, + "id": 432, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 420, + "id": 431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3721:1:1", + "src": "3828:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6208,19 +6386,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3714:9:1", + "src": "3821:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3689:34:1", + "src": "3796:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:84:1", + "src": "3746:84:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6234,19 +6412,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 428, + "id": 439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 424, + "id": 435, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "3739:22:1", + "referencedDeclaration": 112, + "src": "3846:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6258,29 +6436,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 425, + "id": 436, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3764:6:1", + "referencedDeclaration": 327, + "src": "3871:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 427, + "id": 438, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 426, + "id": 437, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3771:1:1", + "src": "3878:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6293,19 +6471,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3764:9:1", + "src": "3871:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3739:34:1", + "src": "3846:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:134:1", + "src": "3746:134:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6319,19 +6497,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 434, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 430, + "id": 441, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 112, - "src": "3789:22:1", + "referencedDeclaration": 115, + "src": "3896:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6343,29 +6521,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 431, + "id": 442, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3814:6:1", + "referencedDeclaration": 327, + "src": "3921:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 433, + "id": 444, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 432, + "id": 443, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3821:1:1", + "src": "3928:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -6378,19 +6556,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3814:9:1", + "src": "3921:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3789:34:1", + "src": "3896:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:184:1", + "src": "3746:184:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6404,19 +6582,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 440, + "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 436, + "id": 447, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "3839:22:1", + "referencedDeclaration": 118, + "src": "3946:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6428,29 +6606,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 437, + "id": 448, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3864:6:1", + "referencedDeclaration": 327, + "src": "3971:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 439, + "id": 450, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 438, + "id": 449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3871:1:1", + "src": "3978:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -6463,19 +6641,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3864:9:1", + "src": "3971:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3839:34:1", + "src": "3946:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:234:1", + "src": "3746:234:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6489,19 +6667,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 446, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 442, + "id": 453, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "3889:22:1", + "referencedDeclaration": 121, + "src": "3996:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6513,29 +6691,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 443, + "id": 454, "name": "miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3914:6:1", + "referencedDeclaration": 327, + "src": "4021:6:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 445, + "id": 456, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 444, + "id": 455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3921:1:1", + "src": "4028:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -6548,37 +6726,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3914:9:1", + "src": "4021:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3889:34:1", + "src": "3996:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3639:284:1", + "src": "3746:284:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3613:310:1" + "src": "3720:310:1" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 453, + "id": 464, "name": "feePerMiner", "nodeType": "VariableDeclaration", - "scope": 560, - "src": "3944:29:1", + "scope": 571, + "src": "4051:29:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6587,27 +6765,27 @@ }, "typeName": { "baseType": { - "id": 451, + "id": 462, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3944:7:1", + "src": "4051:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 452, + "id": 463, "length": { "argumentTypes": null, "hexValue": "36", - "id": 450, + "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3952:1:1", + "src": "4059:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": null, @@ -6616,7 +6794,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "3944:10:1", + "src": "4051:10:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -6626,15 +6804,15 @@ "visibility": "internal" } ], - "id": 454, + "id": 465, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3944:29:1" + "src": "4051:29:1" }, { "expression": { "argumentTypes": null, - "id": 463, + "id": 474, "isConstant": false, "isLValue": false, "isPure": false, @@ -6643,29 +6821,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 455, + "id": 466, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "3986:11:1", + "referencedDeclaration": 464, + "src": "4093:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 457, + "id": 468, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 456, + "id": 467, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3998:1:1", + "src": "4105:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6678,7 +6856,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3986:14:1", + "src": "4093:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6692,7 +6870,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 462, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -6703,19 +6881,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 460, + "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 458, + "id": 469, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4003:18:1", + "referencedDeclaration": 309, + "src": "4110:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6725,18 +6903,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 459, + "id": 470, "name": "CAT_0_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "4024:22:1", + "referencedDeclaration": 106, + "src": "4131:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4003:43:1", + "src": "4110:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6746,37 +6924,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 461, + "id": 472, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4049:15:1", + "referencedDeclaration": 423, + "src": "4156:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4003:61:1", + "src": "4110:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3986:78:1", + "src": "4093:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 464, + "id": 475, "nodeType": "ExpressionStatement", - "src": "3986:78:1" + "src": "4093:78:1" }, { "expression": { "argumentTypes": null, - "id": 473, + "id": 484, "isConstant": false, "isLValue": false, "isPure": false, @@ -6785,29 +6963,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 465, + "id": 476, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4075:11:1", + "referencedDeclaration": 464, + "src": "4182:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 467, + "id": 478, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 466, + "id": 477, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4087:1:1", + "src": "4194:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6820,7 +6998,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4075:14:1", + "src": "4182:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6834,7 +7012,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 472, + "id": 483, "isConstant": false, "isLValue": false, "isPure": false, @@ -6845,19 +7023,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 470, + "id": 481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 468, + "id": 479, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4092:18:1", + "referencedDeclaration": 309, + "src": "4199:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6867,18 +7045,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 469, + "id": 480, "name": "CAT_1_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 106, - "src": "4113:22:1", + "referencedDeclaration": 109, + "src": "4220:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4092:43:1", + "src": "4199:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6888,37 +7066,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 471, + "id": 482, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4138:15:1", + "referencedDeclaration": 423, + "src": "4245:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4092:61:1", + "src": "4199:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4075:78:1", + "src": "4182:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 474, + "id": 485, "nodeType": "ExpressionStatement", - "src": "4075:78:1" + "src": "4182:78:1" }, { "expression": { "argumentTypes": null, - "id": 483, + "id": 494, "isConstant": false, "isLValue": false, "isPure": false, @@ -6927,29 +7105,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 475, + "id": 486, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4164:11:1", + "referencedDeclaration": 464, + "src": "4271:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 477, + "id": 488, "indexExpression": { "argumentTypes": null, "hexValue": "32", - "id": 476, + "id": 487, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4176:1:1", + "src": "4283:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6962,7 +7140,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4164:14:1", + "src": "4271:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6976,7 +7154,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 482, + "id": 493, "isConstant": false, "isLValue": false, "isPure": false, @@ -6987,19 +7165,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 480, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 478, + "id": 489, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4181:18:1", + "referencedDeclaration": 309, + "src": "4288:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7009,18 +7187,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 479, + "id": 490, "name": "CAT_2_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "4202:22:1", + "referencedDeclaration": 112, + "src": "4309:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4181:43:1", + "src": "4288:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7030,37 +7208,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 481, + "id": 492, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4227:15:1", + "referencedDeclaration": 423, + "src": "4334:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4181:61:1", + "src": "4288:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4164:78:1", + "src": "4271:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 484, + "id": 495, "nodeType": "ExpressionStatement", - "src": "4164:78:1" + "src": "4271:78:1" }, { "expression": { "argumentTypes": null, - "id": 493, + "id": 504, "isConstant": false, "isLValue": false, "isPure": false, @@ -7069,29 +7247,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 485, + "id": 496, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4253:11:1", + "referencedDeclaration": 464, + "src": "4360:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 487, + "id": 498, "indexExpression": { "argumentTypes": null, "hexValue": "33", - "id": 486, + "id": 497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4265:1:1", + "src": "4372:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -7104,7 +7282,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4253:14:1", + "src": "4360:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7118,7 +7296,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 492, + "id": 503, "isConstant": false, "isLValue": false, "isPure": false, @@ -7129,19 +7307,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 490, + "id": 501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 488, + "id": 499, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4270:18:1", + "referencedDeclaration": 309, + "src": "4377:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7151,18 +7329,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 489, + "id": 500, "name": "CAT_3_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 112, - "src": "4291:22:1", + "referencedDeclaration": 115, + "src": "4398:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4270:43:1", + "src": "4377:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7172,37 +7350,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 491, + "id": 502, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4316:15:1", + "referencedDeclaration": 423, + "src": "4423:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4270:61:1", + "src": "4377:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4253:78:1", + "src": "4360:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 494, + "id": 505, "nodeType": "ExpressionStatement", - "src": "4253:78:1" + "src": "4360:78:1" }, { "expression": { "argumentTypes": null, - "id": 503, + "id": 514, "isConstant": false, "isLValue": false, "isPure": false, @@ -7211,29 +7389,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 495, + "id": 506, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4342:11:1", + "referencedDeclaration": 464, + "src": "4449:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 497, + "id": 508, "indexExpression": { "argumentTypes": null, "hexValue": "34", - "id": 496, + "id": 507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4354:1:1", + "src": "4461:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -7246,7 +7424,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4342:14:1", + "src": "4449:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7260,7 +7438,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 502, + "id": 513, "isConstant": false, "isLValue": false, "isPure": false, @@ -7271,19 +7449,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 500, + "id": 511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 498, + "id": 509, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4359:18:1", + "referencedDeclaration": 309, + "src": "4466:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7293,18 +7471,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 499, + "id": 510, "name": "CAT_4_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "4380:22:1", + "referencedDeclaration": 118, + "src": "4487:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4359:43:1", + "src": "4466:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7314,37 +7492,37 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 501, + "id": 512, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4405:15:1", + "referencedDeclaration": 423, + "src": "4512:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4359:61:1", + "src": "4466:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4342:78:1", + "src": "4449:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 504, + "id": 515, "nodeType": "ExpressionStatement", - "src": "4342:78:1" + "src": "4449:78:1" }, { "expression": { "argumentTypes": null, - "id": 513, + "id": 524, "isConstant": false, "isLValue": false, "isPure": false, @@ -7353,29 +7531,29 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 505, + "id": 516, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4431:11:1", + "referencedDeclaration": 464, + "src": "4538:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 507, + "id": 518, "indexExpression": { "argumentTypes": null, "hexValue": "35", - "id": 506, + "id": 517, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4443:1:1", + "src": "4550:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -7388,7 +7566,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4431:14:1", + "src": "4538:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7402,7 +7580,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 512, + "id": 523, "isConstant": false, "isLValue": false, "isPure": false, @@ -7413,19 +7591,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 510, + "id": 521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 508, + "id": 519, "name": "currentFeesBalance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 298, - "src": "4448:18:1", + "referencedDeclaration": 309, + "src": "4555:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7435,18 +7613,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 509, + "id": 520, "name": "CAT_5_VALUE_PROPORTION", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "4469:22:1", + "referencedDeclaration": 121, + "src": "4576:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4448:43:1", + "src": "4555:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7456,57 +7634,57 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 511, + "id": 522, "name": "totalProportion", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4494:15:1", + "referencedDeclaration": 423, + "src": "4601:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4448:61:1", + "src": "4555:61:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4431:78:1", + "src": "4538:78:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 514, + "id": 525, "nodeType": "ExpressionStatement", - "src": "4431:78:1" + "src": "4538:78:1" }, { "body": { - "id": 557, + "id": 568, "nodeType": "Block", - "src": "4609:245:1", + "src": "4716:245:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 532, + "id": 543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 526, + "id": 537, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4624:9:1", + "referencedDeclaration": 341, + "src": "4731:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, @@ -7519,26 +7697,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 528, + "id": 539, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "4647:7:1", + "referencedDeclaration": 124, + "src": "4754:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 530, + "id": 541, "indexExpression": { "argumentTypes": null, - "id": 529, + "id": 540, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "4655:1:1", + "referencedDeclaration": 330, + "src": "4762:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7549,7 +7727,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4647:10:1", + "src": "4754:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7563,18 +7741,18 @@ "typeString": "address" } ], - "id": 527, + "id": 538, "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, - "src": "4636:10:1", + "referencedDeclaration": 773, + "src": "4743:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$696_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$773_$", "typeString": "type(contract IAlgoMiner)" } }, - "id": 531, + "id": 542, "isConstant": false, "isLValue": false, "isPure": false, @@ -7582,26 +7760,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4636:22:1", + "src": "4743:22:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "src": "4624:34:1", + "src": "4731:34:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 533, + "id": 544, "nodeType": "ExpressionStatement", - "src": "4624:34:1" + "src": "4731:34:1" }, { "condition": { "argumentTypes": null, - "id": 537, + "id": 548, "isConstant": false, "isLValue": false, "isPure": false, @@ -7609,7 +7787,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4678:21:1", + "src": "4785:21:1", "subExpression": { "argumentTypes": null, "arguments": [], @@ -7617,32 +7795,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 534, + "id": 545, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4679:9:1", + "referencedDeclaration": 341, + "src": "4786:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 535, + "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isMining", "nodeType": "MemberAccess", - "referencedDeclaration": 690, - "src": "4679:18:1", + "referencedDeclaration": 767, + "src": "4786:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 536, + "id": 547, "isConstant": false, "isLValue": false, "isPure": false, @@ -7650,7 +7828,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4679:20:1", + "src": "4786:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7662,31 +7840,31 @@ } }, "falseBody": null, - "id": 539, + "id": 550, "nodeType": "IfStatement", - "src": "4675:34:1", + "src": "4782:34:1", "trueBody": { - "id": 538, + "id": 549, "nodeType": "Continue", - "src": "4701:8:1" + "src": "4808:8:1" } }, { "expression": { "argumentTypes": null, - "id": 544, + "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 540, + "id": 551, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "4726:13:1", + "referencedDeclaration": 355, + "src": "4833:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7701,32 +7879,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 541, + "id": 552, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4742:9:1", + "referencedDeclaration": 341, + "src": "4849:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 542, + "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 685, - "src": "4742:21:1", + "referencedDeclaration": 762, + "src": "4849:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 543, + "id": 554, "isConstant": false, "isLValue": false, "isPure": false, @@ -7734,21 +7912,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4742:23:1", + "src": "4849:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4726:39:1", + "src": "4833:39:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 545, + "id": 556, "nodeType": "ExpressionStatement", - "src": "4726:39:1" + "src": "4833:39:1" }, { "expression": { @@ -7761,32 +7939,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 549, + "id": 560, "name": "algoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "4793:9:1", + "referencedDeclaration": 341, + "src": "4900:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$696", + "typeIdentifier": "t_contract$_IAlgoMiner_$773", "typeString": "contract IAlgoMiner" } }, - "id": 550, + "id": 561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 695, - "src": "4793:18:1", + "referencedDeclaration": 772, + "src": "4900:18:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 551, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -7794,7 +7972,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4793:20:1", + "src": "4900:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7804,26 +7982,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 552, + "id": 563, "name": "feePerMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4815:11:1", + "referencedDeclaration": 464, + "src": "4922:11:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" } }, - "id": 554, + "id": 565, "indexExpression": { "argumentTypes": null, - "id": 553, + "id": 564, "name": "minerCategory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 344, - "src": "4827:13:1", + "referencedDeclaration": 355, + "src": "4934:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7834,7 +8012,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4815:26:1", + "src": "4922:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7854,32 +8032,32 @@ ], "expression": { "argumentTypes": null, - "id": 546, + "id": 557, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "4773:6:1", + "referencedDeclaration": 705, + "src": "4880:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 548, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1012, - "src": "4773:19:1", + "referencedDeclaration": 1126, + "src": "4880:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$987_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$987_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1101_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1101_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 555, + "id": 566, "isConstant": false, "isLValue": false, "isPure": false, @@ -7887,15 +8065,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4773:69:1", + "src": "4880:69:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 556, + "id": 567, "nodeType": "ExpressionStatement", - "src": "4773:69:1" + "src": "4880:69:1" } ] }, @@ -7905,19 +8083,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 522, + "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 519, + "id": 530, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "4584:1:1", + "referencedDeclaration": 330, + "src": "4691:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7929,18 +8107,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 520, + "id": 531, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "4588:7:1", + "referencedDeclaration": 124, + "src": "4695:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 521, + "id": 532, "isConstant": false, "isLValue": true, "isPure": false, @@ -7948,35 +8126,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4588:14:1", + "src": "4695:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4584:18:1", + "src": "4691:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 558, + "id": 569, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 517, + "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 515, + "id": 526, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "4577:1:1", + "referencedDeclaration": 330, + "src": "4684:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7987,14 +8165,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 516, + "id": 527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4581:1:1", + "src": "4688:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8002,20 +8180,20 @@ }, "value": "1" }, - "src": "4577:5:1", + "src": "4684:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 518, + "id": 529, "nodeType": "ExpressionStatement", - "src": "4577:5:1" + "src": "4684:5:1" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 524, + "id": 535, "isConstant": false, "isLValue": false, "isPure": false, @@ -8023,15 +8201,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4604:3:1", + "src": "4711:3:1", "subExpression": { "argumentTypes": null, - "id": 523, + "id": 534, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "4604:1:1", + "referencedDeclaration": 330, + "src": "4711:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8042,67 +8220,178 @@ "typeString": "uint256" } }, - "id": 525, + "id": 536, "nodeType": "ExpressionStatement", - "src": "4604:3:1" + "src": "4711:3:1" }, "nodeType": "ForStatement", - "src": "4573:281:1" + "src": "4680:281:1" } ] }, "documentation": null, - "id": 560, + "id": 571, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 288, + "id": 297, "modifierName": { "argumentTypes": null, - "id": 287, - "name": "onlySystem", + "id": 296, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "2543:10:1", + "referencedDeclaration": 801, + "src": "2636:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2543:10:1" + "src": "2636:13:1" + }, + { + "arguments": null, + "id": 299, + "modifierName": { + "argumentTypes": null, + "id": 298, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 634, + "src": "2650:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2650:10:1" } ], "name": "mine", "nodeType": "FunctionDefinition", "parameters": { - "id": 286, + "id": 295, "nodeType": "ParameterList", "parameters": [], - "src": "2533:2:1" + "src": "2626:2:1" }, "payable": false, "returnParameters": { - "id": 289, + "id": 300, "nodeType": "ParameterList", "parameters": [], - "src": "2554:0:1" + "src": "2661:0:1" }, - "scope": 586, - "src": "2520:2341:1", + "scope": 606, + "src": "2613:2355:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 570, + "id": 579, "nodeType": "Block", - "src": "4924:44:1", + "src": "5017:31:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 576, + "name": "_terminate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 749 + ], + "referencedDeclaration": 749, + "src": "5028:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5028:12:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 578, + "nodeType": "ExpressionStatement", + "src": "5028:12:1" + } + ] + }, + "documentation": null, + "id": 580, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 574, + "modifierName": { + "argumentTypes": null, + "id": 573, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "5004:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5004:12:1" + } + ], + "name": "terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 572, + "nodeType": "ParameterList", + "parameters": [], + "src": "4994:2:1" + }, + "payable": false, + "returnParameters": { + "id": 575, + "nodeType": "ParameterList", + "parameters": [], + "src": "5017:0:1" + }, + "scope": 606, + "src": "4976:72:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 590, + "nodeType": "Block", + "src": "5111:44:1", "statements": [ { "expression": { @@ -8111,7 +8400,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 568, + "id": 588, "isConstant": false, "isLValue": false, "isPure": false, @@ -8120,18 +8409,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 565, + "id": 585, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "4942:7:1", + "referencedDeclaration": 124, + "src": "5129:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 566, + "id": 586, "isConstant": false, "isLValue": true, "isPure": false, @@ -8139,7 +8428,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4942:14:1", + "src": "5129:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8150,14 +8439,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 567, + "id": 587, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4959:1:1", + "src": "5146:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8165,21 +8454,21 @@ }, "value": "1" }, - "src": "4942:18:1", + "src": "5129:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 564, - "id": 569, + "functionReturnParameters": 584, + "id": 589, "nodeType": "Return", - "src": "4935:25:1" + "src": "5122:25:1" } ] }, "documentation": null, - "id": 571, + "id": 591, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8187,23 +8476,23 @@ "name": "getMinerCount", "nodeType": "FunctionDefinition", "parameters": { - "id": 561, + "id": 581, "nodeType": "ParameterList", "parameters": [], - "src": "4891:2:1" + "src": "5078:2:1" }, "payable": false, "returnParameters": { - "id": 564, + "id": 584, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 583, "name": "", "nodeType": "VariableDeclaration", - "scope": 571, - "src": "4915:7:1", + "scope": 591, + "src": "5102:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8211,10 +8500,10 @@ "typeString": "uint256" }, "typeName": { - "id": 562, + "id": 582, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4915:7:1", + "src": "5102:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8224,56 +8513,56 @@ "visibility": "internal" } ], - "src": "4914:9:1" + "src": "5101:9:1" }, - "scope": 586, - "src": "4869:99:1", + "scope": 606, + "src": "5056:99:1", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 584, + "id": 604, "nodeType": "Block", - "src": "5046:44:1", + "src": "5233:44:1", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 578, + "id": 598, "name": "_miners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "5064:7:1", + "referencedDeclaration": 124, + "src": "5251:7:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 582, + "id": 602, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 581, + "id": 601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 579, + "id": 599, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 573, - "src": "5072:5:1", + "referencedDeclaration": 593, + "src": "5259:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8284,14 +8573,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 580, + "id": 600, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5080:1:1", + "src": "5267:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8299,7 +8588,7 @@ }, "value": "1" }, - "src": "5072:9:1", + "src": "5259:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8310,21 +8599,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5064:18:1", + "src": "5251:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 577, - "id": 583, + "functionReturnParameters": 597, + "id": 603, "nodeType": "Return", - "src": "5057:25:1" + "src": "5244:25:1" } ] }, "documentation": null, - "id": 585, + "id": 605, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8332,16 +8621,16 @@ "name": "getMinerByIndex", "nodeType": "FunctionDefinition", "parameters": { - "id": 574, + "id": 594, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 573, + "id": 593, "name": "index", "nodeType": "VariableDeclaration", - "scope": 585, - "src": "5001:13:1", + "scope": 605, + "src": "5188:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8349,10 +8638,10 @@ "typeString": "uint256" }, "typeName": { - "id": 572, + "id": 592, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5001:7:1", + "src": "5188:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8362,20 +8651,20 @@ "visibility": "internal" } ], - "src": "5000:15:1" + "src": "5187:15:1" }, "payable": false, "returnParameters": { - "id": 577, + "id": 597, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 576, + "id": 596, "name": "", "nodeType": "VariableDeclaration", - "scope": 585, - "src": "5037:7:1", + "scope": 605, + "src": "5224:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8383,10 +8672,10 @@ "typeString": "address" }, "typeName": { - "id": 575, + "id": 595, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5037:7:1", + "src": "5224:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8396,20 +8685,20 @@ "visibility": "internal" } ], - "src": "5036:9:1" + "src": "5223:9:1" }, - "scope": 586, - "src": "4976:114:1", + "scope": 606, + "src": "5163:114:1", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 587, - "src": "522:4571:1" + "scope": 607, + "src": "556:4724:1" } ], - "src": "0:5093:1" + "src": "0:5280:1" }, "id": 1 }, @@ -8418,14 +8707,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 673 + 693 ] }, - "id": 674, + "id": 694, "nodeType": "SourceUnit", "nodes": [ { - "id": 588, + "id": 608, "literals": [ "solidity", "^", @@ -8438,10 +8727,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 589, + "id": 609, "nodeType": "ImportDirective", - "scope": 674, - "sourceUnit": 791, + "scope": 694, + "sourceUnit": 905, "src": "28:189:2", "symbolAliases": [], "unitAlias": "" @@ -8452,24 +8741,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 673, + "id": 693, "linearizedBaseContracts": [ - 673 + 693 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 592, + "id": 612, "libraryName": { "contractScope": null, - "id": 590, + "id": 610, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 790, + "referencedDeclaration": 904, "src": "258:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$790", + "typeIdentifier": "t_contract$_Roles_$904", "typeString": "library Roles" } }, @@ -8477,39 +8766,39 @@ "src": "252:27:2", "typeName": { "contractScope": null, - "id": 591, + "id": 611, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, + "referencedDeclaration": 817, "src": "268:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 594, + "id": 614, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 673, + "scope": 693, "src": "287:33:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 593, + "id": 613, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, + "referencedDeclaration": 817, "src": "287:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8518,7 +8807,7 @@ }, { "body": { - "id": 602, + "id": 622, "nodeType": "Block", "src": "353:41:2", "statements": [ @@ -8530,18 +8819,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 598, + "id": 618, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "375:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 599, + "id": 619, "isConstant": false, "isLValue": false, "isPure": false, @@ -8563,18 +8852,18 @@ "typeString": "address" } ], - "id": 597, + "id": 617, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, + "referencedDeclaration": 680, "src": "364:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 600, + "id": 620, "isConstant": false, "isLValue": false, "isPure": false, @@ -8588,14 +8877,14 @@ "typeString": "tuple()" } }, - "id": 601, + "id": 621, "nodeType": "ExpressionStatement", "src": "364:22:2" } ] }, "documentation": null, - "id": 603, + "id": 623, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -8603,19 +8892,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 595, + "id": 615, "nodeType": "ParameterList", "parameters": [], "src": "341:2:2" }, "payable": false, "returnParameters": { - "id": 596, + "id": 616, "nodeType": "ParameterList", "parameters": [], "src": "353:0:2" }, - "scope": 673, + "scope": 693, "src": "329:65:2", "stateMutability": "nonpayable", "superFunction": null, @@ -8623,7 +8912,7 @@ }, { "body": { - "id": 613, + "id": 633, "nodeType": "Block", "src": "424:60:2", "statements": [ @@ -8638,18 +8927,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 607, + "id": 627, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "452:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 608, + "id": 628, "isConstant": false, "isLValue": false, "isPure": false, @@ -8671,18 +8960,18 @@ "typeString": "address" } ], - "id": 606, + "id": 626, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 627, + "referencedDeclaration": 647, "src": "443:8:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 609, + "id": 629, "isConstant": false, "isLValue": false, "isPure": false, @@ -8704,21 +8993,21 @@ "typeString": "bool" } ], - "id": 605, + "id": 625, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, + "referencedDeclaration": 1263, "src": "435:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 610, + "id": 630, "isConstant": false, "isLValue": false, "isPure": false, @@ -8732,23 +9021,23 @@ "typeString": "tuple()" } }, - "id": 611, + "id": 631, "nodeType": "ExpressionStatement", "src": "435:29:2" }, { - "id": 612, + "id": 632, "nodeType": "PlaceholderStatement", "src": "475:1:2" } ] }, "documentation": null, - "id": 614, + "id": 634, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 604, + "id": 624, "nodeType": "ParameterList", "parameters": [], "src": "421:2:2" @@ -8758,7 +9047,7 @@ }, { "body": { - "id": 626, + "id": 646, "nodeType": "Block", "src": "554:53:2", "statements": [ @@ -8768,11 +9057,11 @@ "arguments": [ { "argumentTypes": null, - "id": 623, + "id": 643, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 616, + "referencedDeclaration": 636, "src": "591:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8789,32 +9078,32 @@ ], "expression": { "argumentTypes": null, - "id": 621, + "id": 641, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, + "referencedDeclaration": 614, "src": "572:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 622, + "id": 642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 789, + "referencedDeclaration": 903, "src": "572:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 624, + "id": 644, "isConstant": false, "isLValue": false, "isPure": false, @@ -8828,15 +9117,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 620, - "id": 625, + "functionReturnParameters": 640, + "id": 645, "nodeType": "Return", "src": "565:34:2" } ] }, "documentation": null, - "id": 627, + "id": 647, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8844,15 +9133,15 @@ "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 617, + "id": 637, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 616, + "id": 636, "name": "account", "nodeType": "VariableDeclaration", - "scope": 627, + "scope": 647, "src": "510:15:2", "stateVariable": false, "storageLocation": "default", @@ -8861,7 +9150,7 @@ "typeString": "address" }, "typeName": { - "id": 615, + "id": 635, "name": "address", "nodeType": "ElementaryTypeName", "src": "510:7:2", @@ -8878,15 +9167,15 @@ }, "payable": false, "returnParameters": { - "id": 620, + "id": 640, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 619, + "id": 639, "name": "", "nodeType": "VariableDeclaration", - "scope": 627, + "scope": 647, "src": "548:4:2", "stateVariable": false, "storageLocation": "default", @@ -8895,7 +9184,7 @@ "typeString": "bool" }, "typeName": { - "id": 618, + "id": 638, "name": "bool", "nodeType": "ElementaryTypeName", "src": "548:4:2", @@ -8910,7 +9199,7 @@ ], "src": "547:6:2" }, - "scope": 673, + "scope": 693, "src": "492:115:2", "stateMutability": "view", "superFunction": null, @@ -8918,7 +9207,7 @@ }, { "body": { - "id": 638, + "id": 658, "nodeType": "Block", "src": "669:38:2", "statements": [ @@ -8928,11 +9217,11 @@ "arguments": [ { "argumentTypes": null, - "id": 635, + "id": 655, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 629, + "referencedDeclaration": 649, "src": "691:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8947,18 +9236,18 @@ "typeString": "address" } ], - "id": 634, + "id": 654, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, + "referencedDeclaration": 680, "src": "680:10:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 636, + "id": 656, "isConstant": false, "isLValue": false, "isPure": false, @@ -8972,28 +9261,28 @@ "typeString": "tuple()" } }, - "id": 637, + "id": 657, "nodeType": "ExpressionStatement", "src": "680:19:2" } ] }, "documentation": null, - "id": 639, + "id": 659, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 632, + "id": 652, "modifierName": { "argumentTypes": null, - "id": 631, + "id": 651, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 614, + "referencedDeclaration": 634, "src": "658:10:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -9007,15 +9296,15 @@ "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 630, + "id": 650, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 629, + "id": 649, "name": "account", "nodeType": "VariableDeclaration", - "scope": 639, + "scope": 659, "src": "634:15:2", "stateVariable": false, "storageLocation": "default", @@ -9024,7 +9313,7 @@ "typeString": "address" }, "typeName": { - "id": 628, + "id": 648, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:2", @@ -9041,12 +9330,12 @@ }, "payable": false, "returnParameters": { - "id": 633, + "id": 653, "nodeType": "ParameterList", "parameters": [], "src": "669:0:2" }, - "scope": 673, + "scope": 693, "src": "615:92:2", "stateMutability": "nonpayable", "superFunction": null, @@ -9054,7 +9343,7 @@ }, { "body": { - "id": 647, + "id": 667, "nodeType": "Block", "src": "748:44:2", "statements": [ @@ -9066,18 +9355,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 643, + "id": 663, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, + "referencedDeclaration": 1260, "src": "773:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 644, + "id": 664, "isConstant": false, "isLValue": false, "isPure": false, @@ -9099,18 +9388,18 @@ "typeString": "address" } ], - "id": 642, + "id": 662, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 672, + "referencedDeclaration": 692, "src": "759:13:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 645, + "id": 665, "isConstant": false, "isLValue": false, "isPure": false, @@ -9124,14 +9413,14 @@ "typeString": "tuple()" } }, - "id": 646, + "id": 666, "nodeType": "ExpressionStatement", "src": "759:25:2" } ] }, "documentation": null, - "id": 648, + "id": 668, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9139,19 +9428,19 @@ "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 640, + "id": 660, "nodeType": "ParameterList", "parameters": [], "src": "738:2:2" }, "payable": false, "returnParameters": { - "id": 641, + "id": 661, "nodeType": "ParameterList", "parameters": [], "src": "748:0:2" }, - "scope": 673, + "scope": 693, "src": "715:77:2", "stateMutability": "nonpayable", "superFunction": null, @@ -9159,7 +9448,7 @@ }, { "body": { - "id": 659, + "id": 679, "nodeType": "Block", "src": "846:46:2", "statements": [ @@ -9169,11 +9458,11 @@ "arguments": [ { "argumentTypes": null, - "id": 656, + "id": 676, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 650, + "referencedDeclaration": 670, "src": "876:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9190,32 +9479,32 @@ ], "expression": { "argumentTypes": null, - "id": 653, + "id": 673, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, + "referencedDeclaration": 614, "src": "857:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 655, + "id": 675, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 735, + "referencedDeclaration": 849, "src": "857:18:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 657, + "id": 677, "isConstant": false, "isLValue": false, "isPure": false, @@ -9229,14 +9518,14 @@ "typeString": "tuple()" } }, - "id": 658, + "id": 678, "nodeType": "ExpressionStatement", "src": "857:27:2" } ] }, "documentation": null, - "id": 660, + "id": 680, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9244,15 +9533,15 @@ "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 651, + "id": 671, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 650, + "id": 670, "name": "account", "nodeType": "VariableDeclaration", - "scope": 660, + "scope": 680, "src": "820:15:2", "stateVariable": false, "storageLocation": "default", @@ -9261,7 +9550,7 @@ "typeString": "address" }, "typeName": { - "id": 649, + "id": 669, "name": "address", "nodeType": "ElementaryTypeName", "src": "820:7:2", @@ -9278,12 +9567,12 @@ }, "payable": false, "returnParameters": { - "id": 652, + "id": 672, "nodeType": "ParameterList", "parameters": [], "src": "846:0:2" }, - "scope": 673, + "scope": 693, "src": "800:92:2", "stateMutability": "nonpayable", "superFunction": null, @@ -9291,7 +9580,7 @@ }, { "body": { - "id": 671, + "id": 691, "nodeType": "Block", "src": "949:49:2", "statements": [ @@ -9301,11 +9590,11 @@ "arguments": [ { "argumentTypes": null, - "id": 668, + "id": 688, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 662, + "referencedDeclaration": 682, "src": "982:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9322,32 +9611,32 @@ ], "expression": { "argumentTypes": null, - "id": 665, + "id": 685, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 594, + "referencedDeclaration": 614, "src": "960:14:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage", + "typeIdentifier": "t_struct$_Role_$817_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 667, + "id": 687, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 766, + "referencedDeclaration": 880, "src": "960:21:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$703_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$817_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 669, + "id": 689, "isConstant": false, "isLValue": false, "isPure": false, @@ -9361,14 +9650,14 @@ "typeString": "tuple()" } }, - "id": 670, + "id": 690, "nodeType": "ExpressionStatement", "src": "960:30:2" } ] }, "documentation": null, - "id": 672, + "id": 692, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9376,15 +9665,15 @@ "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 663, + "id": 683, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 662, + "id": 682, "name": "account", "nodeType": "VariableDeclaration", - "scope": 672, + "scope": 692, "src": "923:15:2", "stateVariable": false, "storageLocation": "default", @@ -9393,7 +9682,7 @@ "typeString": "address" }, "typeName": { - "id": 661, + "id": 681, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:2", @@ -9410,19 +9699,19 @@ }, "payable": false, "returnParameters": { - "id": 664, + "id": 684, "nodeType": "ParameterList", "parameters": [], "src": "949:0:2" }, - "scope": 673, + "scope": 693, "src": "900:98:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 674, + "scope": 694, "src": "221:780:2" } ], @@ -9430,19 +9719,19 @@ }, "id": 2 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { - "IAlgoMiner": [ - 696 + "ERC20TokenHolder": [ + 750 ] }, - "id": 697, + "id": 751, "nodeType": "SourceUnit", "nodes": [ { - "id": 675, + "id": 695, "literals": [ "solidity", "0.4", @@ -9451,15 +9740,709 @@ "nodeType": "PragmaDirective", "src": "0:23:3" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 696, + "nodeType": "ImportDirective", + "scope": 751, + "sourceUnit": 1102, + "src": "27:195:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 697, + "nodeType": "ImportDirective", + "scope": 751, + "sourceUnit": 1246, + "src": "224:198:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "file": "./Terminable.sol", + "id": 698, + "nodeType": "ImportDirective", + "scope": 751, + "sourceUnit": 811, + "src": "426:26:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 699, + "name": "Terminable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 810, + "src": "485:10:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Terminable_$810", + "typeString": "contract Terminable" + } + }, + "id": 700, + "nodeType": "InheritanceSpecifier", + "src": "485:10:3" + } + ], + "contractDependencies": [ + 810 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 750, + "linearizedBaseContracts": [ + 750, + 810 + ], + "name": "ERC20TokenHolder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 703, + "libraryName": { + "contractScope": null, + "id": 701, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1245, + "src": "509:9:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1245", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "503:27:3", + "typeName": { + "contractScope": null, + "id": 702, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1101, + "src": "523:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 705, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 750, + "src": "538:22:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 704, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1101, + "src": "538:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 718, + "nodeType": "Block", + "src": "625:48:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 712, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "636:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 714, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 707, + "src": "652:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 713, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1101, + "src": "645:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1101_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "645:20:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "src": "636:29:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "id": 717, + "nodeType": "ExpressionStatement", + "src": "636:29:3" + } + ] + }, + "documentation": null, + "id": 719, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 710, + "modifierName": { + "argumentTypes": null, + "id": 709, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 810, + "src": "603:10:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$810_$", + "typeString": "type(contract Terminable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "603:12:3" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 707, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "581:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 706, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "580:22:3" + }, + "payable": false, + "returnParameters": { + "id": 711, + "nodeType": "ParameterList", + "parameters": [], + "src": "625:0:3" + }, + "scope": 750, + "src": "569:104:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 748, + "nodeType": "Block", + "src": "712:214:3", + "statements": [ + { + "assignments": [ + 723 + ], + "declarations": [ + { + "constant": false, + "id": 723, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "723:22:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "723:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 730, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 727, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1287, + "src": "773:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeString": "contract ERC20TokenHolder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$750", + "typeString": "contract ERC20TokenHolder" + } + ], + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "765:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "765:13:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 724, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "748:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1046, + "src": "748:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:31:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "723:56:3" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 731, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "793:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "810:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "793:18:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 742, + "nodeType": "IfStatement", + "src": "790:95:3", + "trueBody": { + "id": 741, + "nodeType": "Block", + "src": "813:72:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 737, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 777, + "src": "848:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 738, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "858:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 734, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "828:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1101", + "typeString": "contract IERC20" + } + }, + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1126, + "src": "828:19:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1101_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1101_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "828:45:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 740, + "nodeType": "ExpressionStatement", + "src": "828:45:3" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 743, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 810, + "src": "895:10:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$810_$", + "typeString": "type(contract Terminable)" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_terminate", + "nodeType": "MemberAccess", + "referencedDeclaration": 809, + "src": "895:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "895:23:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 747, + "nodeType": "ExpressionStatement", + "src": "895:23:3" + } + ] + }, + "documentation": null, + "id": 749, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 720, + "nodeType": "ParameterList", + "parameters": [], + "src": "700:2:3" + }, + "payable": false, + "returnParameters": { + "id": 721, + "nodeType": "ParameterList", + "parameters": [], + "src": "712:0:3" + }, + "scope": 750, + "src": "681:245:3", + "stateMutability": "nonpayable", + "superFunction": 809, + "visibility": "internal" + } + ], + "scope": 751, + "src": "456:473:3" + } + ], + "src": "0:929:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 773 + ] + }, + "id": 774, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 752, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 696, + "id": 773, "linearizedBaseContracts": [ - 696 + 773 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -9467,7 +10450,7 @@ { "body": null, "documentation": null, - "id": 680, + "id": 757, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9475,23 +10458,23 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 676, + "id": 753, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:3" + "src": "74:2:4" }, "payable": false, "returnParameters": { - "id": 679, + "id": 756, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 678, + "id": 755, "name": "", "nodeType": "VariableDeclaration", - "scope": 680, - "src": "98:4:3", + "scope": 757, + "src": "98:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9499,10 +10482,10 @@ "typeString": "bool" }, "typeName": { - "id": 677, + "id": 754, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "98:4:3", + "src": "98:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9512,10 +10495,10 @@ "visibility": "internal" } ], - "src": "97:6:3" + "src": "97:6:4" }, - "scope": 696, - "src": "54:50:3", + "scope": 773, + "src": "54:50:4", "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -9523,7 +10506,7 @@ { "body": null, "documentation": null, - "id": 685, + "id": 762, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9531,23 +10514,23 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 681, + "id": 758, "nodeType": "ParameterList", "parameters": [], - "src": "130:2:3" + "src": "130:2:4" }, "payable": false, "returnParameters": { - "id": 684, + "id": 761, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 683, + "id": 760, "name": "", "nodeType": "VariableDeclaration", - "scope": 685, - "src": "154:5:3", + "scope": 762, + "src": "154:5:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9555,10 +10538,10 @@ "typeString": "uint8" }, "typeName": { - "id": 682, + "id": 759, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "154:5:3", + "src": "154:5:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9568,10 +10551,10 @@ "visibility": "internal" } ], - "src": "153:7:3" + "src": "153:7:4" }, - "scope": 696, - "src": "110:51:3", + "scope": 773, + "src": "110:51:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9579,7 +10562,7 @@ { "body": null, "documentation": null, - "id": 690, + "id": 767, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9587,23 +10570,23 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 686, + "id": 763, "nodeType": "ParameterList", "parameters": [], - "src": "184:2:3" + "src": "184:2:4" }, "payable": false, "returnParameters": { - "id": 689, + "id": 766, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 765, "name": "", "nodeType": "VariableDeclaration", - "scope": 690, - "src": "208:4:3", + "scope": 767, + "src": "208:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9611,10 +10594,10 @@ "typeString": "bool" }, "typeName": { - "id": 687, + "id": 764, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "208:4:3", + "src": "208:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9624,10 +10607,10 @@ "visibility": "internal" } ], - "src": "207:6:3" + "src": "207:6:4" }, - "scope": 696, - "src": "167:47:3", + "scope": 773, + "src": "167:47:4", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9635,7 +10618,7 @@ { "body": null, "documentation": null, - "id": 695, + "id": 772, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9643,23 +10626,23 @@ "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 691, + "id": 768, "nodeType": "ParameterList", "parameters": [], - "src": "237:2:3" + "src": "237:2:4" }, "payable": false, "returnParameters": { - "id": 694, + "id": 771, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 693, + "id": 770, "name": "", "nodeType": "VariableDeclaration", - "scope": 695, - "src": "261:7:3", + "scope": 772, + "src": "261:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9667,10 +10650,10 @@ "typeString": "address" }, "typeName": { - "id": 692, + "id": 769, "name": "address", "nodeType": "ElementaryTypeName", - "src": "261:7:3", + "src": "261:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9680,119 +10663,262 @@ "visibility": "internal" } ], - "src": "260:9:3" + "src": "260:9:4" }, - "scope": 696, - "src": "220:50:3", + "scope": 773, + "src": "220:50:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 697, - "src": "27:246:3" + "scope": 774, + "src": "27:246:4" } ], - "src": "0:273:3" + "src": "0:273:4" }, - "id": 3 + "id": 4 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { - "Roles": [ - 790 + "Terminable": [ + 810 ] }, - "id": 791, + "id": 811, "nodeType": "SourceUnit", "nodes": [ { - "id": 698, + "id": 775, "literals": [ "solidity", - "^", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:4" + "src": "0:23:5" }, { "baseContracts": [], "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "contractKind": "contract", + "documentation": null, "fullyImplemented": true, - "id": 790, + "id": 810, "linearizedBaseContracts": [ - 790 + 810 ], - "name": "Roles", + "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { - "canonicalName": "Roles.Role", - "id": 703, - "members": [ - { - "constant": false, - "id": 702, - "name": "bearer", - "nodeType": "VariableDeclaration", - "scope": 703, - "src": "145:32:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 701, - "keyType": { - "id": 699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "154:7:4", + "constant": false, + "id": 777, + "name": "_creator", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "56:25:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 779, + "name": "_terminated", + "nodeType": "VariableDeclaration", + "scope": 810, + "src": "88:25:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 778, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "88:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 791, + "nodeType": "Block", + "src": "145:70:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 782, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 777, + "src": "156:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "167:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "167:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:21:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "Mapping", - "src": "145:25:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 700, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "165:4:4", + "id": 786, + "nodeType": "ExpressionStatement", + "src": "156:21:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 787, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "188:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "202:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "188:19:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Role", - "nodeType": "StructDefinition", - "scope": 790, - "src": "127:55:4", - "visibility": "public" + }, + "id": 790, + "nodeType": "ExpressionStatement", + "src": "188:19:5" + } + ] + }, + "documentation": null, + "id": 792, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 780, + "nodeType": "ParameterList", + "parameters": [], + "src": "133:2:5" + }, + "payable": false, + "returnParameters": { + "id": 781, + "nodeType": "ParameterList", + "parameters": [], + "src": "145:0:5" + }, + "scope": 810, + "src": "122:93:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { "body": { - "id": 734, + "id": 800, "nodeType": "Block", - "src": "302:109:4", + "src": "248:52:5", "statements": [ { "expression": { @@ -9800,139 +10926,7 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 711, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "316:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 713, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "335:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 712, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 714, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "327:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "316:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 710, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "308:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 716, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "308:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 717, - "nodeType": "ExpressionStatement", - "src": "308:30:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 723, + "id": 796, "isConstant": false, "isLValue": false, "isPure": false, @@ -9940,68 +10934,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:4", + "src": "267:12:5", "subExpression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 720, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "357:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 721, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "363:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 719, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "353:3:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "353:18:4", + "id": 795, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "268:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10020,21 +10961,21 @@ "typeString": "bool" } ], - "id": 718, + "id": 794, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "344:7:4", + "referencedDeclaration": 1263, + "src": "259:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 724, + "id": 797, "isConstant": false, "isLValue": false, "isPure": false, @@ -10042,75 +10983,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:4", + "src": "259:21:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 725, + "id": 798, "nodeType": "ExpressionStatement", - "src": "344:28:4" + "src": "259:21:5" }, + { + "id": 799, + "nodeType": "PlaceholderStatement", + "src": "291:1:5" + } + ] + }, + "documentation": null, + "id": 801, + "name": "notTerminated", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 793, + "nodeType": "ParameterList", + "parameters": [], + "src": "245:2:5" + }, + "src": "223:77:5", + "visibility": "internal" + }, + { + "body": { + "id": 808, + "nodeType": "Block", + "src": "339:37:5", + "statements": [ { "expression": { "argumentTypes": null, - "id": 732, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 726, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 705, - "src": "379:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 729, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 702, - "src": "379:11:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 730, - "indexExpression": { - "argumentTypes": null, - "id": 728, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 707, - "src": "391:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "379:20:4", + "id": 804, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 779, + "src": "350:11:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10121,14 +11045,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 731, + "id": 805, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:4", + "src": "364:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10136,859 +11060,67 @@ }, "value": "true" }, - "src": "379:27:4", + "src": "350:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 733, + "id": 807, "nodeType": "ExpressionStatement", - "src": "379:27:4" + "src": "350:18:5" } ] }, - "documentation": "@dev give an account access to this role", - "id": 735, + "documentation": null, + "id": 809, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "add", + "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 708, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 705, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 735, - "src": "257:17:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 704, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, - "src": "257:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 707, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 735, - "src": "276:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 706, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "276:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "256:36:4" - }, - "payable": false, - "returnParameters": { - "id": 709, + "id": 802, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:4" - }, - "scope": 790, - "src": "244:167:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 765, - "nodeType": "Block", - "src": "538:109:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 743, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "552:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 745, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "571:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 744, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 746, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "563:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "552:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 742, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "544:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 748, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "544:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 749, - "nodeType": "ExpressionStatement", - "src": "544:30:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 752, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 737, - "src": "592:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 753, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "598:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 751, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "588:3:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$703_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "588:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 750, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "580:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "580:27:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 756, - "nodeType": "ExpressionStatement", - "src": "580:27:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 757, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 737, - "src": "614:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 760, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 702, - "src": "614:11:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 761, - "indexExpression": { - "argumentTypes": null, - "id": 759, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "626:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "614:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "637:5:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "614:28:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 764, - "nodeType": "ExpressionStatement", - "src": "614:28:4" - } - ] - }, - "documentation": "@dev remove an account's access to this role", - "id": 766, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "remove", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 740, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 737, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 766, - "src": "493:17:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 736, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, - "src": "493:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 739, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 766, - "src": "512:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 738, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "512:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "492:36:4" + "src": "327:2:5" }, "payable": false, "returnParameters": { - "id": 741, + "id": 803, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:4" + "src": "339:0:5" }, - "scope": 790, - "src": "477:170:4", + "scope": 810, + "src": "308:68:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" - }, - { - "body": { - "id": 788, - "nodeType": "Block", - "src": "817:74:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 776, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 770, - "src": "831:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 778, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "850:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 777, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "842:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "831:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 775, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "823:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "823:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "ExpressionStatement", - "src": "823:30:4" - }, - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 783, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "866:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 784, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 702, - "src": "866:11:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 786, - "indexExpression": { - "argumentTypes": null, - "id": 785, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 770, - "src": "878:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "866:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 774, - "id": 787, - "nodeType": "Return", - "src": "859:27:4" - } - ] - }, - "documentation": "@dev check if an account has this role\n@return bool", - "id": 789, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "has", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 771, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 768, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 789, - "src": "738:17:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 767, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 703, - "src": "738:4:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$703_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 770, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 789, - "src": "757:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 769, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "757:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "737:36:4" - }, - "payable": false, - "returnParameters": { - "id": 774, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 773, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 789, - "src": "809:4:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 772, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "809:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "808:6:4" - }, - "scope": 790, - "src": "725:166:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" } ], - "scope": 791, - "src": "109:784:4" + "scope": 811, + "src": "27:352:5" } ], - "src": "0:894:4" + "src": "0:379:5" }, - "id": 4 + "id": 5 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { - "SafeMath": [ - 918 + "Roles": [ + 904 ] }, - "id": 919, + "id": 905, "nodeType": "SourceUnit", "nodes": [ { - "id": 792, + "id": 812, "literals": [ "solidity", "^", @@ -10996,195 +11128,83 @@ ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:5" + "src": "0:24:6" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 918, + "id": 904, "linearizedBaseContracts": [ - 918 + 904 ], - "name": "SafeMath", + "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { - "body": { - "id": 824, - "nodeType": "Block", - "src": "271:314:5", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 803, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 801, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "486:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 802, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "491:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "486:6:5", + "canonicalName": "Roles.Role", + "id": 817, + "members": [ + { + "constant": false, + "id": 816, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 817, + "src": "145:32:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 815, + "keyType": { + "id": 813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 814, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - }, - "falseBody": null, - "id": 807, - "nodeType": "IfStatement", - "src": "482:35:5", - "trueBody": { - "id": 806, - "nodeType": "Block", - "src": "494:23:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 804, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "509:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 800, - "id": 805, - "nodeType": "Return", - "src": "502:8:5" - } - ] } }, - { - "assignments": [ - 809 - ], - "declarations": [ - { - "constant": false, - "id": 809, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 825, - "src": "523:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 808, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "523:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 813, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 810, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "535:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 811, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 796, - "src": "539:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "535:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "523:17:5" - }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 904, + "src": "127:55:6", + "visibility": "public" + }, + { + "body": { + "id": 848, + "nodeType": "Block", + "src": "302:109:6", + "statements": [ { "expression": { "argumentTypes": null, @@ -11192,75 +11212,86 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 819, + "id": 829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 815, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "554:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 816, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "558:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:5:5", + "id": 825, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "316:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "==", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 818, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 796, - "src": "563:1:5", + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "554:10:5", + "src": "316:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11274,21 +11305,21 @@ "typeString": "bool" } ], - "id": 814, + "id": 824, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "546:7:5", + "referencedDeclaration": 1263, + "src": "308:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 820, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, @@ -11296,199 +11327,97 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "546:19:5", + "src": "308:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 821, + "id": 831, "nodeType": "ExpressionStatement", - "src": "546:19:5" + "src": "308:30:6" }, - { - "expression": { - "argumentTypes": null, - "id": 822, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "579:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 800, - "id": 823, - "nodeType": "Return", - "src": "572:8:5" - } - ] - }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 825, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 797, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 794, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 825, - "src": "217:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 793, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "217:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 796, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 825, - "src": "228:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 795, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "228:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "216:22:5" - }, - "payable": false, - "returnParameters": { - "id": 800, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 799, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 825, - "src": "262:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 798, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "262:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "261:9:5" - }, - "scope": 918, - "src": "204:381:5", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 848, - "nodeType": "Block", - "src": "762:203:5", - "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:6", + "subExpression": { "argumentTypes": null, - "id": 835, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 829, - "src": "776:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", + "arguments": [ + { + "argumentTypes": null, + "id": 834, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 819, + "src": "357:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 835, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "363:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 833, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "353:3:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, "id": 836, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "780:1:5", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:6", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "src": "776:5:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11502,15 +11431,15 @@ "typeString": "bool" } ], - "id": 834, + "id": 832, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "768:7:5", + "referencedDeclaration": 1263, + "src": "344:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -11524,7 +11453,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:14:5", + "src": "344:28:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -11532,143 +11461,139 @@ }, "id": 839, "nodeType": "ExpressionStatement", - "src": "768:14:5" - }, - { - "assignments": [ - 841 - ], - "declarations": [ - { - "constant": false, - "id": 841, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 849, - "src": "846:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 840, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "846:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 845, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 844, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 842, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "858:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 843, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 829, - "src": "862:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "858:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "846:17:5" + "src": "344:28:6" }, { "expression": { "argumentTypes": null, "id": 846, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "959:1:5", + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 840, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 819, + "src": "379:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 843, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 816, + "src": "379:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 844, + "indexExpression": { + "argumentTypes": null, + "id": 842, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "391:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "functionReturnParameters": 833, "id": 847, - "nodeType": "Return", - "src": "952:8:5" + "nodeType": "ExpressionStatement", + "src": "379:27:6" } ] }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "documentation": "@dev give an account access to this role", "id": 849, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "div", + "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 830, + "id": 822, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 827, - "name": "a", + "id": 819, + "name": "role", "nodeType": "VariableDeclaration", "scope": 849, - "src": "708:9:5", + "src": "257:17:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" }, "typeName": { - "id": 826, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "708:7:5", + "contractScope": null, + "id": 818, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 817, + "src": "257:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" } }, "value": null, @@ -11676,78 +11601,51 @@ }, { "constant": false, - "id": 829, - "name": "b", + "id": 821, + "name": "account", "nodeType": "VariableDeclaration", "scope": 849, - "src": "719:9:5", + "src": "276:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 828, - "name": "uint256", + "id": 820, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "719:7:5", + "src": "276:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "707:22:5" + "src": "256:36:6" }, "payable": false, "returnParameters": { - "id": 833, + "id": 823, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 832, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 849, - "src": "753:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 831, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "753:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "752:9:5" + "parameters": [], + "src": "302:0:6" }, - "scope": 918, - "src": "695:270:5", - "stateMutability": "pure", + "scope": 904, + "src": "244:167:6", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 872, + "id": 879, "nodeType": "Block", - "src": "1145:64:5", + "src": "538:109:6", "statements": [ { "expression": { @@ -11756,8 +11654,8 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "id": 861, "isConstant": false, @@ -11766,33 +11664,76 @@ "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 859, - "name": "b", + "id": 857, + "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, - "src": "1159:1:5", + "src": "552:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "<=", + "operator": "!=", "rightExpression": { "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, "id": 860, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "1164:1:5", + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1159:6:5", + "src": "552:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11806,15 +11747,15 @@ "typeString": "bool" } ], - "id": 858, + "id": 856, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1151:7:5", + "referencedDeclaration": 1263, + "src": "544:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -11828,7 +11769,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1151:15:5", + "src": "544:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -11836,117 +11777,221 @@ }, "id": 863, "nodeType": "ExpressionStatement", - "src": "1151:15:5" - }, - { - "assignments": [ - 865 - ], - "declarations": [ - { - "constant": false, - "id": 865, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 873, - "src": "1172:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 864, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1172:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 869, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 868, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 866, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "1184:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 867, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 853, - "src": "1188:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1184:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1172:17:5" + "src": "544:30:6" }, { "expression": { "argumentTypes": null, - "id": 870, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 865, - "src": "1203:1:5", + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 866, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "592:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 867, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "598:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 865, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "588:3:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$817_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 864, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "580:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "functionReturnParameters": 857, - "id": 871, - "nodeType": "Return", - "src": "1196:8:5" + "id": 870, + "nodeType": "ExpressionStatement", + "src": "580:27:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 871, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "614:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 874, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 816, + "src": "614:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 875, + "indexExpression": { + "argumentTypes": null, + "id": 873, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 853, + "src": "626:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 878, + "nodeType": "ExpressionStatement", + "src": "614:28:6" } ] }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 873, + "documentation": "@dev remove an account's access to this role", + "id": 880, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "sub", + "name": "remove", "nodeType": "FunctionDefinition", "parameters": { "id": 854, @@ -11955,24 +12000,26 @@ { "constant": false, "id": 851, - "name": "a", + "name": "role", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "1091:9:5", + "scope": 880, + "src": "493:17:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" }, "typeName": { + "contractScope": null, "id": 850, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1091:7:5", + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 817, + "src": "493:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" } }, "value": null, @@ -11981,159 +12028,51 @@ { "constant": false, "id": 853, - "name": "b", + "name": "account", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "1102:9:5", + "scope": 880, + "src": "512:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { "id": 852, - "name": "uint256", + "name": "address", "nodeType": "ElementaryTypeName", - "src": "1102:7:5", + "src": "512:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "1090:22:5" + "src": "492:36:6" }, "payable": false, "returnParameters": { - "id": 857, + "id": 855, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 856, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 873, - "src": "1136:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 855, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1135:9:5" + "parameters": [], + "src": "538:0:6" }, - "scope": 918, - "src": "1078:131:5", - "stateMutability": "pure", + "scope": 904, + "src": "477:170:6", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 896, + "id": 902, "nodeType": "Block", - "src": "1339:64:5", + "src": "817:74:6", "statements": [ - { - "assignments": [ - 883 - ], - "declarations": [ - { - "constant": false, - "id": 883, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 897, - "src": "1345:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 882, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1345:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 887, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 884, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "1357:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 885, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 877, - "src": "1361:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1357:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1345:17:5" - }, { "expression": { "argumentTypes": null, @@ -12141,271 +12080,86 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 891, + "id": 894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "argumentTypes": null, - "id": 889, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 883, - "src": "1376:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { "argumentTypes": null, "id": 890, - "name": "a", + "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "1381:1:5", + "referencedDeclaration": 884, + "src": "831:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1376:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 888, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1149, - 1150 - ], - "referencedDeclaration": 1149, - "src": "1368:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1368:15:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 893, - "nodeType": "ExpressionStatement", - "src": "1368:15:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 894, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 883, - "src": "1397:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 881, - "id": 895, - "nodeType": "Return", - "src": "1390:8:5" - } - ] - }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 897, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 878, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 875, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 897, - "src": "1285:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 874, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1285:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 877, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 897, - "src": "1296:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 876, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1296:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1284:22:5" - }, - "payable": false, - "returnParameters": { - "id": 881, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 880, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 897, - "src": "1330:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 879, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1330:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1329:9:5" - }, - "scope": 918, - "src": "1272:131:5", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 916, - "nodeType": "Block", - "src": "1602:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 907, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1616:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 908, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 893, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "1621:1:5", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:6", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "src": "1616:6:5", + "src": "831:21:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12419,21 +12173,21 @@ "typeString": "bool" } ], - "id": 906, + "id": 889, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1608:7:5", + "referencedDeclaration": 1263, + "src": "823:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 910, + "id": 895, "isConstant": false, "isLValue": false, "isPure": false, @@ -12441,102 +12195,115 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:5", + "src": "823:30:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 911, + "id": 896, "nodeType": "ExpressionStatement", - "src": "1608:15:5" + "src": "823:30:6" }, { "expression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 897, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 882, + "src": "866:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 898, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 816, + "src": "866:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 900, + "indexExpression": { + "argumentTypes": null, + "id": 899, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 884, + "src": "878:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 914, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 912, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 899, - "src": "1636:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "id": 913, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "1640:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1636:5:5", + "nodeType": "IndexAccess", + "src": "866:20:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "functionReturnParameters": 905, - "id": 915, + "functionReturnParameters": 888, + "id": 901, "nodeType": "Return", - "src": "1629:12:5" + "src": "859:27:6" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 917, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 903, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "mod", + "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 885, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 899, - "name": "a", + "id": 882, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 917, - "src": "1548:9:5", + "scope": 903, + "src": "738:17:6", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" }, "typeName": { - "id": 898, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1548:7:5", + "contractScope": null, + "id": 881, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 817, + "src": "738:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_Role_$817_storage_ptr", + "typeString": "struct Roles.Role" } }, "value": null, @@ -12544,932 +12311,95 @@ }, { "constant": false, - "id": 901, - "name": "b", + "id": 884, + "name": "account", "nodeType": "VariableDeclaration", - "scope": 917, - "src": "1559:9:5", + "scope": 903, + "src": "757:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 900, - "name": "uint256", + "id": 883, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "1559:7:5", + "src": "757:7:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "1547:22:5" + "src": "737:36:6" }, "payable": false, "returnParameters": { - "id": 905, + "id": 888, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 904, + "id": 887, "name": "", "nodeType": "VariableDeclaration", - "scope": 917, - "src": "1593:7:5", + "scope": 903, + "src": "809:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 903, - "name": "uint256", + "id": 886, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1593:7:5", + "src": "809:4:6", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "value": null, "visibility": "internal" } ], - "src": "1592:9:5" + "src": "808:6:6" }, - "scope": 918, - "src": "1535:111:5", - "stateMutability": "pure", + "scope": 904, + "src": "725:166:6", + "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 919, - "src": "117:1531:5" + "scope": 905, + "src": "109:784:6" } ], - "src": "0:1649:5" - }, - "id": 5 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "exportedSymbols": { - "IERC20": [ - 987 - ] - }, - "id": 988, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 920, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:6" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", - "fullyImplemented": false, - "id": 987, - "linearizedBaseContracts": [ - 987 - ], - "name": "IERC20", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": null, - "id": 925, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "totalSupply", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 921, - "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:6" - }, - "payable": false, - "returnParameters": { - "id": 924, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 923, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 925, - "src": "182:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 922, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "182:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "181:9:6" - }, - "scope": 987, - "src": "136:55:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 932, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 928, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 927, - "name": "who", - "nodeType": "VariableDeclaration", - "scope": 932, - "src": "214:11:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 926, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "214:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "213:13:6" - }, - "payable": false, - "returnParameters": { - "id": 931, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 930, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 932, - "src": "250:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 929, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "250:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "249:9:6" - }, - "scope": 987, - "src": "195:64:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 941, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 937, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 934, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 941, - "src": "282:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 933, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 936, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 941, - "src": "297:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 935, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:6" - }, - "payable": false, - "returnParameters": { - "id": 940, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 939, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 941, - "src": "341:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 938, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:6" - }, - "scope": 987, - "src": "263:87:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 950, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 946, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 943, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 950, - "src": "372:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 942, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 945, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 950, - "src": "384:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 944, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "384:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:27:6" - }, - "payable": false, - "returnParameters": { - "id": 949, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 948, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 950, - "src": "417:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 947, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "416:6:6" - }, - "scope": 987, - "src": "354:69:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 959, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 955, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 952, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 959, - "src": "444:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 951, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "444:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 954, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 959, - "src": "461:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 953, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "461:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "443:32:6" - }, - "payable": false, - "returnParameters": { - "id": 958, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 957, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 959, - "src": "498:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 956, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:6" - }, - "scope": 987, - "src": "427:77:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 970, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 966, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 961, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 970, - "src": "530:12:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 960, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 963, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 970, - "src": "544:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 962, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 965, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 970, - "src": "556:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 964, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "556:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "529:41:6" - }, - "payable": false, - "returnParameters": { - "id": 969, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 968, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 970, - "src": "593:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 967, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:6" - }, - "scope": 987, - "src": "508:91:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": null, - "id": 978, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 977, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 972, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 978, - "src": "623:20:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 971, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 974, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 978, - "src": "649:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 973, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 976, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 978, - "src": "673:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 975, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "673:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "617:73:6" - }, - "src": "603:88:6" - }, - { - "anonymous": false, - "documentation": null, - "id": 986, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 985, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 980, - "indexed": true, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 986, - "src": "715:21:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 979, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "715:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 982, - "indexed": true, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 986, - "src": "742:23:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 981, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "742:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 984, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 986, - "src": "771:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 983, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "771:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "709:79:6" - }, - "src": "695:94:6" - } - ], - "scope": 988, - "src": "115:676:6" - } - ], - "src": "0:792:6" + "src": "0:894:6" }, "id": 6 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { - "SafeERC20": [ - 1131 + "SafeMath": [ + 1032 ] }, - "id": 1132, + "id": 1033, "nodeType": "SourceUnit", "nodes": [ { - "id": 989, + "id": 906, "literals": [ "solidity", "^", @@ -13479,25 +12409,2506 @@ "nodeType": "PragmaDirective", "src": "0:24:7" }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 1032, + "linearizedBaseContracts": [ + 1032 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 938, + "nodeType": "Block", + "src": "271:314:7", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 915, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "486:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 921, + "nodeType": "IfStatement", + "src": "482:35:7", + "trueBody": { + "id": 920, + "nodeType": "Block", + "src": "494:23:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 914, + "id": 919, + "nodeType": "Return", + "src": "502:8:7" + } + ] + } + }, + { + "assignments": [ + 923 + ], + "declarations": [ + { + "constant": false, + "id": 923, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 939, + "src": "523:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 927, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 924, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "535:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 925, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 910, + "src": "539:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 929, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "554:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 930, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "558:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 932, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 910, + "src": "563:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 928, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "546:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 935, + "nodeType": "ExpressionStatement", + "src": "546:19:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 936, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "579:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 914, + "id": 937, + "nodeType": "Return", + "src": "572:8:7" + } + ] + }, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 939, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 908, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 939, + "src": "217:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "217:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 910, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 939, + "src": "228:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "216:22:7" + }, + "payable": false, + "returnParameters": { + "id": 914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 913, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 939, + "src": "262:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:7" + }, + "scope": 1032, + "src": "204:381:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 962, + "nodeType": "Block", + "src": "762:203:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 949, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "776:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 948, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "768:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:14:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 953, + "nodeType": "ExpressionStatement", + "src": "768:14:7" + }, + { + "assignments": [ + 955 + ], + "declarations": [ + { + "constant": false, + "id": 955, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "846:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 954, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 959, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 956, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 941, + "src": "858:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 957, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 943, + "src": "862:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 960, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "959:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 947, + "id": 961, + "nodeType": "Return", + "src": "952:8:7" + } + ] + }, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 963, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 941, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "708:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 943, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "719:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:7" + }, + "payable": false, + "returnParameters": { + "id": 947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 946, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "753:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:7" + }, + "scope": 1032, + "src": "695:270:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 986, + "nodeType": "Block", + "src": "1145:64:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 973, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "1159:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 974, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1164:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 972, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "1151:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 977, + "nodeType": "ExpressionStatement", + "src": "1151:15:7" + }, + { + "assignments": [ + 979 + ], + "declarations": [ + { + "constant": false, + "id": 979, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "1172:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 978, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 983, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 980, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1184:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 981, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "1188:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 984, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "1203:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 971, + "id": 985, + "nodeType": "Return", + "src": "1196:8:7" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 987, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 965, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "1091:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 964, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 967, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "1102:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 966, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:7" + }, + "payable": false, + "returnParameters": { + "id": 971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 970, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 987, + "src": "1136:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 969, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:7" + }, + "scope": 1032, + "src": "1078:131:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1010, + "nodeType": "Block", + "src": "1339:64:7", + "statements": [ + { + "assignments": [ + 997 + ], + "declarations": [ + { + "constant": false, + "id": 997, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "1345:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 996, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1001, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 998, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "1357:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 999, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "1361:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1003, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "1376:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1004, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "1381:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "1368:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1007, + "nodeType": "ExpressionStatement", + "src": "1368:15:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1008, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "1397:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 995, + "id": 1009, + "nodeType": "Return", + "src": "1390:8:7" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 1011, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 992, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 989, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "1285:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 988, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 991, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "1296:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:7" + }, + "payable": false, + "returnParameters": { + "id": 995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 994, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1011, + "src": "1330:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:7" + }, + "scope": 1032, + "src": "1272:131:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1030, + "nodeType": "Block", + "src": "1602:44:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1021, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1015, + "src": "1616:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1020, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1263, + 1264 + ], + "referencedDeclaration": 1263, + "src": "1608:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1025, + "nodeType": "ExpressionStatement", + "src": "1608:15:7" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1026, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "1636:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 1027, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1015, + "src": "1640:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1019, + "id": 1029, + "nodeType": "Return", + "src": "1629:12:7" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 1031, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1013, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1031, + "src": "1548:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1012, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1015, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1031, + "src": "1559:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:7" + }, + "payable": false, + "returnParameters": { + "id": 1019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1018, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1031, + "src": "1593:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1017, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:7" + }, + "scope": 1032, + "src": "1535:111:7", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1033, + "src": "117:1531:7" + } + ], + "src": "0:1649:7" + }, + "id": 7 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 1101 + ] + }, + "id": 1102, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1034, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:8" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 1101, + "linearizedBaseContracts": [ + 1101 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 1039, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1035, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:8" + }, + "payable": false, + "returnParameters": { + "id": 1038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1037, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1039, + "src": "182:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:8" + }, + "scope": 1101, + "src": "136:55:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1046, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1041, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "214:11:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:8" + }, + "payable": false, + "returnParameters": { + "id": 1045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1044, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "250:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1043, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:8" + }, + "scope": 1101, + "src": "195:64:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1055, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1048, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1055, + "src": "282:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1047, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1050, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1055, + "src": "297:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:8" + }, + "payable": false, + "returnParameters": { + "id": 1054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1053, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1055, + "src": "341:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:8" + }, + "scope": 1101, + "src": "263:87:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1064, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1057, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1064, + "src": "372:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1059, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1064, + "src": "384:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:8" + }, + "payable": false, + "returnParameters": { + "id": 1063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1062, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1064, + "src": "417:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1061, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:8" + }, + "scope": 1101, + "src": "354:69:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1073, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1066, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "444:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1068, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "461:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:8" + }, + "payable": false, + "returnParameters": { + "id": 1072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1071, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "498:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1070, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:8" + }, + "scope": 1101, + "src": "427:77:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1084, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1075, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "530:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1077, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "544:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1079, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "556:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1078, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:8" + }, + "payable": false, + "returnParameters": { + "id": 1083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1082, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "593:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1081, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:8" + }, + "scope": 1101, + "src": "508:91:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 1092, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1086, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1092, + "src": "623:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1085, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1088, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1092, + "src": "649:18:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1090, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1092, + "src": "673:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1089, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:8" + }, + "src": "603:88:8" + }, + { + "anonymous": false, + "documentation": null, + "id": 1100, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1094, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "715:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1096, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "742:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1098, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "771:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1097, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:8" + }, + "src": "695:94:8" + } + ], + "scope": 1102, + "src": "115:676:8" + } + ], + "src": "0:792:8" + }, + "id": 8 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1245 + ] + }, + "id": 1246, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1103, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:9" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 990, + "id": 1104, "nodeType": "ImportDirective", - "scope": 1132, - "sourceUnit": 988, - "src": "26:22:7", + "scope": 1246, + "sourceUnit": 1102, + "src": "26:22:9", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 991, + "id": 1105, "nodeType": "ImportDirective", - "scope": 1132, - "sourceUnit": 919, - "src": "49:33:7", + "scope": 1246, + "sourceUnit": 1033, + "src": "49:33:9", "symbolAliases": [], "unitAlias": "" }, @@ -13507,34 +14918,34 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 1131, + "id": 1245, "linearizedBaseContracts": [ - 1131 + 1245 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 994, + "id": 1108, "libraryName": { "contractScope": null, - "id": 992, + "id": 1106, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 918, - "src": "382:8:7", + "referencedDeclaration": 1032, + "src": "382:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$918", + "typeIdentifier": "t_contract$_SafeMath_$1032", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "376:27:7", + "src": "376:27:9", "typeName": { - "id": 993, + "id": 1107, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "395:7:7", + "src": "395:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13543,9 +14954,9 @@ }, { "body": { - "id": 1011, + "id": 1125, "nodeType": "Block", - "src": "501:45:7", + "src": "501:45:9", "statements": [ { "expression": { @@ -13556,12 +14967,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1006, + "id": 1120, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 998, - "src": "530:2:7", + "referencedDeclaration": 1112, + "src": "530:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13569,12 +14980,12 @@ }, { "argumentTypes": null, - "id": 1007, + "id": 1121, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1000, - "src": "534:5:7", + "referencedDeclaration": 1114, + "src": "534:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13594,32 +15005,32 @@ ], "expression": { "argumentTypes": null, - "id": 1004, + "id": 1118, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 996, - "src": "515:5:7", + "referencedDeclaration": 1110, + "src": "515:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1005, + "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 950, - "src": "515:14:7", + "referencedDeclaration": 1064, + "src": "515:14:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1008, + "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, @@ -13627,7 +15038,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "515:25:7", + "src": "515:25:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13641,21 +15052,21 @@ "typeString": "bool" } ], - "id": 1003, + "id": 1117, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "507:7:7", + "referencedDeclaration": 1263, + "src": "507:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1009, + "id": 1123, "isConstant": false, "isLValue": false, "isPure": false, @@ -13663,20 +15074,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:7", + "src": "507:34:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1010, + "id": 1124, "nodeType": "ExpressionStatement", - "src": "507:34:7" + "src": "507:34:9" } ] }, "documentation": null, - "id": 1012, + "id": 1126, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13684,31 +15095,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1001, + "id": 1115, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 996, + "id": 1110, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "434:12:7", + "scope": 1126, + "src": "434:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 995, + "id": 1109, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "434:6:7", + "referencedDeclaration": 1101, + "src": "434:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -13717,11 +15128,11 @@ }, { "constant": false, - "id": 998, + "id": 1112, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "452:10:7", + "scope": 1126, + "src": "452:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13729,10 +15140,10 @@ "typeString": "address" }, "typeName": { - "id": 997, + "id": 1111, "name": "address", "nodeType": "ElementaryTypeName", - "src": "452:7:7", + "src": "452:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13743,11 +15154,11 @@ }, { "constant": false, - "id": 1000, + "id": 1114, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1012, - "src": "468:13:7", + "scope": 1126, + "src": "468:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13755,10 +15166,10 @@ "typeString": "uint256" }, "typeName": { - "id": 999, + "id": 1113, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:7", + "src": "468:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13768,26 +15179,26 @@ "visibility": "internal" } ], - "src": "428:57:7" + "src": "428:57:9" }, "payable": false, "returnParameters": { - "id": 1002, + "id": 1116, "nodeType": "ParameterList", "parameters": [], - "src": "501:0:7" + "src": "501:0:9" }, - "scope": 1131, - "src": "407:139:7", + "scope": 1245, + "src": "407:139:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1032, + "id": 1146, "nodeType": "Block", - "src": "666:55:7", + "src": "666:55:9", "statements": [ { "expression": { @@ -13798,12 +15209,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1026, + "id": 1140, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1016, - "src": "699:4:7", + "referencedDeclaration": 1130, + "src": "699:4:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13811,12 +15222,12 @@ }, { "argumentTypes": null, - "id": 1027, + "id": 1141, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1018, - "src": "705:2:7", + "referencedDeclaration": 1132, + "src": "705:2:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13824,12 +15235,12 @@ }, { "argumentTypes": null, - "id": 1028, + "id": 1142, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1020, - "src": "709:5:7", + "referencedDeclaration": 1134, + "src": "709:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13853,32 +15264,32 @@ ], "expression": { "argumentTypes": null, - "id": 1024, + "id": 1138, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1014, - "src": "680:5:7", + "referencedDeclaration": 1128, + "src": "680:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1025, + "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 970, - "src": "680:18:7", + "referencedDeclaration": 1084, + "src": "680:18:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 1029, + "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, @@ -13886,7 +15297,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:7", + "src": "680:35:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13900,21 +15311,21 @@ "typeString": "bool" } ], - "id": 1023, + "id": 1137, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "672:7:7", + "referencedDeclaration": 1263, + "src": "672:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1030, + "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, @@ -13922,20 +15333,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:7", + "src": "672:44:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1031, + "id": 1145, "nodeType": "ExpressionStatement", - "src": "672:44:7" + "src": "672:44:9" } ] }, "documentation": null, - "id": 1033, + "id": 1147, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -13943,31 +15354,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1021, + "id": 1135, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1014, + "id": 1128, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "581:12:7", + "scope": 1147, + "src": "581:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1013, + "id": 1127, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "581:6:7", + "referencedDeclaration": 1101, + "src": "581:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -13976,11 +15387,11 @@ }, { "constant": false, - "id": 1016, + "id": 1130, "name": "from", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "599:12:7", + "scope": 1147, + "src": "599:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13988,10 +15399,10 @@ "typeString": "address" }, "typeName": { - "id": 1015, + "id": 1129, "name": "address", "nodeType": "ElementaryTypeName", - "src": "599:7:7", + "src": "599:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14002,11 +15413,11 @@ }, { "constant": false, - "id": 1018, + "id": 1132, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "617:10:7", + "scope": 1147, + "src": "617:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14014,10 +15425,10 @@ "typeString": "address" }, "typeName": { - "id": 1017, + "id": 1131, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:7", + "src": "617:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14028,11 +15439,11 @@ }, { "constant": false, - "id": 1020, + "id": 1134, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1033, - "src": "633:13:7", + "scope": 1147, + "src": "633:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14040,10 +15451,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1019, + "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:7", + "src": "633:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14053,26 +15464,26 @@ "visibility": "internal" } ], - "src": "575:75:7" + "src": "575:75:9" }, "payable": false, "returnParameters": { - "id": 1022, + "id": 1136, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:7" + "src": "666:0:9" }, - "scope": 1131, - "src": "550:171:7", + "scope": 1245, + "src": "550:171:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1067, + "id": 1181, "nodeType": "Block", - "src": "823:330:7", + "src": "823:330:9", "statements": [ { "expression": { @@ -14084,7 +15495,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1056, + "id": 1170, "isConstant": false, "isLValue": false, "isPure": false, @@ -14098,19 +15509,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1045, + "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1043, + "id": 1157, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "1045:5:7", + "referencedDeclaration": 1153, + "src": "1045:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14121,14 +15532,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1044, + "id": 1158, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:7", + "src": "1054:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14136,21 +15547,21 @@ }, "value": "0" }, - "src": "1045:10:7", + "src": "1045:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1046, + "id": 1160, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:7", + "src": "1044:12:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14167,7 +15578,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1054, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, @@ -14179,18 +15590,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1049, + "id": 1163, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1077:3:7", + "referencedDeclaration": 1260, + "src": "1077:3:9", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1050, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, @@ -14198,7 +15609,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1077:10:7", + "src": "1077:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14206,12 +15617,12 @@ }, { "argumentTypes": null, - "id": 1051, + "id": 1165, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "1089:7:7", + "referencedDeclaration": 1151, + "src": "1089:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14231,32 +15642,32 @@ ], "expression": { "argumentTypes": null, - "id": 1047, + "id": 1161, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1035, - "src": "1061:5:7", + "referencedDeclaration": 1149, + "src": "1061:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1048, + "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 941, - "src": "1061:15:7", + "referencedDeclaration": 1055, + "src": "1061:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1052, + "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, @@ -14264,7 +15675,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:7", + "src": "1061:36:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14275,14 +15686,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1053, + "id": 1167, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:7", + "src": "1101:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14290,27 +15701,27 @@ }, "value": "0" }, - "src": "1061:41:7", + "src": "1061:41:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1055, + "id": 1169, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:7", + "src": "1060:43:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:7", + "src": "1044:59:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14324,21 +15735,21 @@ "typeString": "bool" } ], - "id": 1042, + "id": 1156, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1036:7:7", + "referencedDeclaration": 1263, + "src": "1036:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1057, + "id": 1171, "isConstant": false, "isLValue": false, "isPure": false, @@ -14346,15 +15757,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:7", + "src": "1036:68:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1058, + "id": 1172, "nodeType": "ExpressionStatement", - "src": "1036:68:7" + "src": "1036:68:9" }, { "expression": { @@ -14365,12 +15776,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1062, + "id": 1176, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "1132:7:7", + "referencedDeclaration": 1151, + "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14378,12 +15789,12 @@ }, { "argumentTypes": null, - "id": 1063, + "id": 1177, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "1141:5:7", + "referencedDeclaration": 1153, + "src": "1141:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14403,32 +15814,32 @@ ], "expression": { "argumentTypes": null, - "id": 1060, + "id": 1174, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1035, - "src": "1118:5:7", + "referencedDeclaration": 1149, + "src": "1118:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1061, + "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 959, - "src": "1118:13:7", + "referencedDeclaration": 1073, + "src": "1118:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1064, + "id": 1178, "isConstant": false, "isLValue": false, "isPure": false, @@ -14436,7 +15847,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:7", + "src": "1118:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14450,21 +15861,21 @@ "typeString": "bool" } ], - "id": 1059, + "id": 1173, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1110:7:7", + "referencedDeclaration": 1263, + "src": "1110:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1065, + "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, @@ -14472,20 +15883,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:7", + "src": "1110:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1066, + "id": 1180, "nodeType": "ExpressionStatement", - "src": "1110:38:7" + "src": "1110:38:9" } ] }, "documentation": null, - "id": 1068, + "id": 1182, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14493,31 +15904,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1040, + "id": 1154, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1035, + "id": 1149, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1068, - "src": "751:12:7", + "scope": 1182, + "src": "751:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1034, + "id": 1148, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "751:6:7", + "referencedDeclaration": 1101, + "src": "751:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -14526,11 +15937,11 @@ }, { "constant": false, - "id": 1037, + "id": 1151, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1068, - "src": "769:15:7", + "scope": 1182, + "src": "769:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14538,10 +15949,10 @@ "typeString": "address" }, "typeName": { - "id": 1036, + "id": 1150, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:7", + "src": "769:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14552,11 +15963,11 @@ }, { "constant": false, - "id": 1039, + "id": 1153, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1068, - "src": "790:13:7", + "scope": 1182, + "src": "790:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14564,10 +15975,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1038, + "id": 1152, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:7", + "src": "790:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14577,39 +15988,39 @@ "visibility": "internal" } ], - "src": "745:62:7" + "src": "745:62:9" }, "payable": false, "returnParameters": { - "id": 1041, + "id": 1155, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:7" + "src": "823:0:9" }, - "scope": 1131, - "src": "725:428:7", + "scope": 1245, + "src": "725:428:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1098, + "id": 1212, "nodeType": "Block", - "src": "1265:135:7", + "src": "1265:135:9", "statements": [ { "assignments": [ - 1078 + 1192 ], "declarations": [ { "constant": false, - "id": 1078, + "id": 1192, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "1271:20:7", + "scope": 1213, + "src": "1271:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14617,10 +16028,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1077, + "id": 1191, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:7", + "src": "1271:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14630,18 +16041,18 @@ "visibility": "internal" } ], - "id": 1089, + "id": 1203, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1087, + "id": 1201, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1074, - "src": "1338:5:7", + "referencedDeclaration": 1188, + "src": "1338:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14663,14 +16074,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1082, + "id": 1196, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1167, - "src": "1318:4:7", + "referencedDeclaration": 1281, + "src": "1318:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } } @@ -14678,24 +16089,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } ], - "id": 1081, + "id": 1195, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:7", + "src": "1310:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1083, + "id": 1197, "isConstant": false, "isLValue": false, "isPure": false, @@ -14703,7 +16114,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:7", + "src": "1310:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14711,12 +16122,12 @@ }, { "argumentTypes": null, - "id": 1084, + "id": 1198, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1072, - "src": "1325:7:7", + "referencedDeclaration": 1186, + "src": "1325:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14736,32 +16147,32 @@ ], "expression": { "argumentTypes": null, - "id": 1079, + "id": 1193, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "1294:5:7", + "referencedDeclaration": 1184, + "src": "1294:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1080, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 941, - "src": "1294:15:7", + "referencedDeclaration": 1055, + "src": "1294:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1085, + "id": 1199, "isConstant": false, "isLValue": false, "isPure": false, @@ -14769,27 +16180,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:7", + "src": "1294:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1086, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 897, - "src": "1294:43:7", + "referencedDeclaration": 1011, + "src": "1294:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1088, + "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, @@ -14797,14 +16208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:7", + "src": "1294:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:7" + "src": "1271:73:9" }, { "expression": { @@ -14815,12 +16226,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1093, + "id": 1207, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1072, - "src": "1372:7:7", + "referencedDeclaration": 1186, + "src": "1372:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14828,12 +16239,12 @@ }, { "argumentTypes": null, - "id": 1094, + "id": 1208, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1078, - "src": "1381:12:7", + "referencedDeclaration": 1192, + "src": "1381:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14853,32 +16264,32 @@ ], "expression": { "argumentTypes": null, - "id": 1091, + "id": 1205, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "1358:5:7", + "referencedDeclaration": 1184, + "src": "1358:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1092, + "id": 1206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 959, - "src": "1358:13:7", + "referencedDeclaration": 1073, + "src": "1358:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1095, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, @@ -14886,7 +16297,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:7", + "src": "1358:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14900,21 +16311,21 @@ "typeString": "bool" } ], - "id": 1090, + "id": 1204, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1350:7:7", + "referencedDeclaration": 1263, + "src": "1350:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1096, + "id": 1210, "isConstant": false, "isLValue": false, "isPure": false, @@ -14922,20 +16333,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:7", + "src": "1350:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1097, + "id": 1211, "nodeType": "ExpressionStatement", - "src": "1350:45:7" + "src": "1350:45:9" } ] }, "documentation": null, - "id": 1099, + "id": 1213, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14943,31 +16354,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1075, + "id": 1189, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1070, + "id": 1184, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "1193:12:7", + "scope": 1213, + "src": "1193:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1069, + "id": 1183, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "1193:6:7", + "referencedDeclaration": 1101, + "src": "1193:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -14976,11 +16387,11 @@ }, { "constant": false, - "id": 1072, + "id": 1186, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "1211:15:7", + "scope": 1213, + "src": "1211:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14988,10 +16399,10 @@ "typeString": "address" }, "typeName": { - "id": 1071, + "id": 1185, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:7", + "src": "1211:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15002,11 +16413,11 @@ }, { "constant": false, - "id": 1074, + "id": 1188, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "1232:13:7", + "scope": 1213, + "src": "1232:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15014,10 +16425,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1073, + "id": 1187, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:7", + "src": "1232:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15027,39 +16438,39 @@ "visibility": "internal" } ], - "src": "1187:62:7" + "src": "1187:62:9" }, "payable": false, "returnParameters": { - "id": 1076, + "id": 1190, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:7" + "src": "1265:0:9" }, - "scope": 1131, - "src": "1157:243:7", + "scope": 1245, + "src": "1157:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1129, + "id": 1243, "nodeType": "Block", - "src": "1512:135:7", + "src": "1512:135:9", "statements": [ { "assignments": [ - 1109 + 1223 ], "declarations": [ { "constant": false, - "id": 1109, + "id": 1223, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "1518:20:7", + "scope": 1244, + "src": "1518:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15067,10 +16478,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1108, + "id": 1222, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:7", + "src": "1518:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15080,18 +16491,18 @@ "visibility": "internal" } ], - "id": 1120, + "id": 1234, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1118, + "id": 1232, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1105, - "src": "1585:5:7", + "referencedDeclaration": 1219, + "src": "1585:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15113,14 +16524,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1113, + "id": 1227, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1167, - "src": "1565:4:7", + "referencedDeclaration": 1281, + "src": "1565:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } } @@ -15128,24 +16539,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1131", + "typeIdentifier": "t_contract$_SafeERC20_$1245", "typeString": "library SafeERC20" } ], - "id": 1112, + "id": 1226, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:7", + "src": "1557:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1114, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, @@ -15153,7 +16564,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:7", + "src": "1557:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15161,12 +16572,12 @@ }, { "argumentTypes": null, - "id": 1115, + "id": 1229, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1103, - "src": "1572:7:7", + "referencedDeclaration": 1217, + "src": "1572:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15186,32 +16597,32 @@ ], "expression": { "argumentTypes": null, - "id": 1110, + "id": 1224, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1101, - "src": "1541:5:7", + "referencedDeclaration": 1215, + "src": "1541:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1111, + "id": 1225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 941, - "src": "1541:15:7", + "referencedDeclaration": 1055, + "src": "1541:15:9", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1116, + "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, @@ -15219,27 +16630,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:7", + "src": "1541:39:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1117, + "id": 1231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 873, - "src": "1541:43:7", + "referencedDeclaration": 987, + "src": "1541:43:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1119, + "id": 1233, "isConstant": false, "isLValue": false, "isPure": false, @@ -15247,14 +16658,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:7", + "src": "1541:50:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:7" + "src": "1518:73:9" }, { "expression": { @@ -15265,12 +16676,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1124, + "id": 1238, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1103, - "src": "1619:7:7", + "referencedDeclaration": 1217, + "src": "1619:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15278,12 +16689,12 @@ }, { "argumentTypes": null, - "id": 1125, + "id": 1239, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1109, - "src": "1628:12:7", + "referencedDeclaration": 1223, + "src": "1628:12:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15303,32 +16714,32 @@ ], "expression": { "argumentTypes": null, - "id": 1122, + "id": 1236, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1101, - "src": "1605:5:7", + "referencedDeclaration": 1215, + "src": "1605:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, - "id": 1123, + "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 959, - "src": "1605:13:7", + "referencedDeclaration": 1073, + "src": "1605:13:9", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1126, + "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, @@ -15336,7 +16747,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:7", + "src": "1605:36:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15350,21 +16761,21 @@ "typeString": "bool" } ], - "id": 1121, + "id": 1235, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1149, - 1150 + 1263, + 1264 ], - "referencedDeclaration": 1149, - "src": "1597:7:7", + "referencedDeclaration": 1263, + "src": "1597:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1127, + "id": 1241, "isConstant": false, "isLValue": false, "isPure": false, @@ -15372,20 +16783,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:7", + "src": "1597:45:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1128, + "id": 1242, "nodeType": "ExpressionStatement", - "src": "1597:45:7" + "src": "1597:45:9" } ] }, "documentation": null, - "id": 1130, + "id": 1244, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15393,31 +16804,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1106, + "id": 1220, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1101, + "id": 1215, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "1440:12:7", + "scope": 1244, + "src": "1440:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1100, + "id": 1214, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 987, - "src": "1440:6:7", + "referencedDeclaration": 1101, + "src": "1440:6:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$987", + "typeIdentifier": "t_contract$_IERC20_$1101", "typeString": "contract IERC20" } }, @@ -15426,11 +16837,11 @@ }, { "constant": false, - "id": 1103, + "id": 1217, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "1458:15:7", + "scope": 1244, + "src": "1458:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15438,10 +16849,10 @@ "typeString": "address" }, "typeName": { - "id": 1102, + "id": 1216, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:7", + "src": "1458:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15452,11 +16863,11 @@ }, { "constant": false, - "id": 1105, + "id": 1219, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1130, - "src": "1479:13:7", + "scope": 1244, + "src": "1479:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15464,10 +16875,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1104, + "id": 1218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:7", + "src": "1479:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15477,29 +16888,29 @@ "visibility": "internal" } ], - "src": "1434:62:7" + "src": "1434:62:9" }, "payable": false, "returnParameters": { - "id": 1107, + "id": 1221, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:7" + "src": "1512:0:9" }, - "scope": 1131, - "src": "1404:243:7", + "scope": 1245, + "src": "1404:243:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1132, - "src": "353:1296:7" + "scope": 1246, + "src": "353:1296:9" } ], - "src": "0:1650:7" + "src": "0:1650:9" }, - "id": 7 + "id": 9 } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi index f5543d549..e289ecc82 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"registerMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getMinerByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"unregisterMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"registerMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getMinerByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"unregisterMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinerCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin index 97fcd2fb9..944a078a6 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029 \ No newline at end of file +60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json index 3ede830af..ca512a461 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoFees.json @@ -1,5 +1,14 @@ { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -166,7 +175,7 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b50604051602080610edc8339810160405251610034336401000000006100a2810204565b610046336401000000006100bd810204565b60028054600160a060020a03909216600160a060020a0319928316179055600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091169055610163565b6100ba600082640100000000610c436100d582021704565b50565b6100ba600182640100000000610c436100d582021704565b600160a060020a03811615156100ea57600080fd5b6100fd828264010000000061012c810204565b1561010757600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561014357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610d6a806101726000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632e6b6849811461009a578063341ccfcb146100bd57806334cdcf26146100de5780633d19ab1314610113578063608d3d3d1461014757806374be75921461016857806381f909f31461018957806399f4b251146101aa578063bb52c137146101bf578063d43acc79146101e6578063e9d61859146101fb575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a0360043516610210565b005b3480156100c957600080fd5b506100bb600160a060020a0360043516610230565b3480156100ea57600080fd5b506100ff600160a060020a03600435166103e1565b604080519115158252519081900360200190f35b34801561011f57600080fd5b5061012b6004356103f9565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b506100ff600160a060020a0360043516610428565b34801561017457600080fd5b506100bb600160a060020a036004351661043b565b34801561019557600080fd5b506100bb600160a060020a0360043516610458565b3480156101b657600080fd5b506100bb6105e7565b3480156101cb57600080fd5b506101d4610b0a565b60408051918252519081900360200190f35b3480156101f257600080fd5b506100bb610b15565b34801561020757600080fd5b506100bb610b20565b61021933610428565b151561022457600080fd5b61022d81610b29565b50565b60008061023c33610428565b151561024757600080fd5b600160a060020a0383166000908152600460205260409020541561026a57600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050506040513d60208110156102d557600080fd5b505115156102e257600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032057600080fd5b505af1158015610334573d6000803e3d6000fd5b505050506040513d602081101561034a57600080fd5b50519050600060ff821610801590610366575060058160ff1611155b151561037157600080fd5b505060038054600160a060020a039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60006103f3818363ffffffff610b3a16565b92915050565b600060038260010181548110151561040d57fe5b600091825260209091200154600160a060020a031692915050565b60006103f360018363ffffffff610b3a16565b610444336103e1565b151561044f57600080fd5b61022d81610b71565b61046133610428565b151561046c57600080fd5b60035460011061047b57600080fd5b600354600214156104e75760038054600190811061049557fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560016104c8600382610cdd565b50600160a060020a03811660009081526004602052604081205561022d565b600354600160a060020a038216600090815260046020526040902054146105815760038054600019810190811061051a57fe5b6000918252602080832090910154600160a060020a038481168452600490925260409092205460038054929093169291811061055257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60038054600019810190811061059357fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916905560038054906105cc906000198301610cdd565b50600160a060020a0316600090815260046020526040812055565b60006105f1610d01565b6000806000806105ff610d01565b610608336103e1565b151561061357600080fd5b60035460011061062257600080fd5b600254604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b50519650600087116106c357600080fd5b600194505b6003548510156108725760038054869081106106e057fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561073e57600080fd5b505af1158015610752573d6000803e3d6000fd5b505050506040513d602081101561076857600080fd5b5051151561077557610867565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107b357600080fd5b505af11580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b5051925060ff831615156107ff578560005b6020020180516001019052610867565b8260ff1660011415610813578560016107ef565b8260ff1660021415610827578560026107ef565b8260ff166003141561083b578560036107ef565b8260ff166004141561084f578560046107ef565b8260ff16600514156108675760a08601805160010190525b6001909401936106c8565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e90910201602890910201603290910201915081878115156108b857fe5b04815281600a88028115156108c957fe5b04602082015281601488028115156108dd57fe5b04604082015281601e88028115156108f157fe5b046060820152816028880281151561090557fe5b046080820152816032880281151561091957fe5b0460a0820152600194505b600354851015610b0157600380548690811061093c57fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d60208110156109c457600080fd5b505115156109d157610af6565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b505050506040513d6020811015610a3957600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610af691600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50518260ff861660068110610ad857fe5b6020020151600254600160a060020a0316919063ffffffff610b8216565b600190940193610924565b50505050505050565b600354600019015b90565b610b1e33610c21565b565b610b1e33610c32565b61022d60018263ffffffff610c4316565b6000600160a060020a0382161515610b5157600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61022d60008263ffffffff610c4316565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050506040513d6020811015610c0f57600080fd5b50511515610c1c57600080fd5b505050565b61022d60018263ffffffff610c9116565b61022d60008263ffffffff610c9116565b600160a060020a0381161515610c5857600080fd5b610c628282610b3a565b15610c6c57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610ca657600080fd5b610cb08282610b3a565b1515610cbb57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610c1c57600083815260209020610c1c918101908301610d20565b60c0604051908101604052806006906020820280388339509192915050565b610b1291905b80821115610d3a5760008155600101610d26565b50905600a165627a7a72305820a50e84e4f20df15b74a513c238b268f416d4f45f8632af54e0cb02d0aaff72790029", + "bytecode": "60806040523480156200001157600080fd5b50604051602080620010d083398101604052516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a0384161790556200006c90640100000000620000c7810204565b6200008033640100000000620000e5810204565b50600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054600160a060020a031916905562000193565b620000e260028264010000000062000e066200010082021704565b50565b620000e260038264010000000062000e066200010082021704565b600160a060020a03811615156200011657600080fd5b6200012b82826401000000006200015b810204565b156200013657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a03821615156200017357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610f2d80620001a36000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632e6b6849146100bc578063341ccfcb146100dd57806334cdcf26146100fe5780633d19ab1314610133578063608d3d3d1461016757806374be75921461018857806381f909f3146101a957806399f4b251146101ca578063bb52c137146101df578063d43acc7914610206578063e9d618591461021b575b600080fd5b3480156100b157600080fd5b506100ba610230565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661024e565b3480156100e957600080fd5b506100ba600160a060020a036004351661026e565b34801561010a57600080fd5b5061011f600160a060020a0360043516610457565b604080519115158252519081900360200190f35b34801561013f57600080fd5b5061014b600435610470565b60408051600160a060020a039092168252519081900360200190f35b34801561017357600080fd5b5061011f600160a060020a036004351661049f565b34801561019457600080fd5b506100ba600160a060020a03600435166104b2565b3480156101b557600080fd5b506100ba600160a060020a03600435166104cf565b3480156101d657600080fd5b506100ba610686565b3480156101eb57600080fd5b506101f4610bd1565b60408051918252519081900360200190f35b34801561021257600080fd5b506100ba610bdc565b34801561022757600080fd5b506100ba610be5565b6102393361049f565b151561024457600080fd5b61024c610bee565b565b6102573361049f565b151561026257600080fd5b61026b81610cb5565b50565b60008054819074010000000000000000000000000000000000000000900460ff161561029957600080fd5b6102a23361049f565b15156102ad57600080fd5b6004546103e8116102bd57600080fd5b600160a060020a038316600090815260056020526040902054156102e057600080fd5b82915081600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032157600080fd5b505af1158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b5051151561035857600080fd5b81600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039657600080fd5b505af11580156103aa573d6000803e3d6000fd5b505050506040513d60208110156103c057600080fd5b50519050600060ff8216108015906103dc575060058160ff1611155b15156103e757600080fd5b505060048054600160a060020a039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600061046a60028363ffffffff610cc616565b92915050565b600060048260010181548110151561048457fe5b600091825260209091200154600160a060020a031692915050565b600061046a60038363ffffffff610cc616565b6104bb33610457565b15156104c657600080fd5b61026b81610cfd565b60005474010000000000000000000000000000000000000000900460ff16156104f757600080fd5b6105003361049f565b151561050b57600080fd5b60045460011061051a57600080fd5b600454600214156105865760048054600190811061053457fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191690556001610567600482610ea0565b50600160a060020a03811660009081526005602052604081205561026b565b600454600160a060020a03821660009081526005602052604090205414610620576004805460001981019081106105b957fe5b6000918252602080832090910154600160a060020a03848116845260059092526040909220546004805492909316929181106105f157fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b60048054600019810190811061063257fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff19169055600480549061066b906000198301610ea0565b50600160a060020a0316600090815260056020526040812055565b6000610690610ec4565b60008060008061069e610ec4565b60005474010000000000000000000000000000000000000000900460ff16156106c657600080fd5b6106cf33610457565b15156106da57600080fd5b6004546001106106e957600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b505050506040513d602081101561077957600080fd5b505196506000871161078a57600080fd5b600194505b6004548510156109395760048054869081106107a757fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051151561083c5761092e565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b505050506040513d60208110156108a457600080fd5b5051925060ff831615156108c6578560005b602002018051600101905261092e565b8260ff16600114156108da578560016108b6565b8260ff16600214156108ee578560026108b6565b8260ff1660031415610902578560036108b6565b8260ff1660041415610916578560046108b6565b8260ff166005141561092e5760a08601805160010190525b60019094019361078f565b60a086015160808701516060880151604089015160208a01518a51600a90910201601490910201601e909102016028909102016032909102019150818781151561097f57fe5b04815281600a880281151561099057fe5b04602082015281601488028115156109a457fe5b04604082015281601e88028115156109b857fe5b04606082015281602888028115156109cc57fe5b04608082015281603288028115156109e057fe5b0460a0820152600194505b600454851015610bc8576004805486908110610a0357fe5b9060005260206000200160009054906101000a9004600160a060020a0316935083600160a060020a03166319a74ab36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b50511515610a9857610bbd565b83600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5051604080517f302c11ca0000000000000000000000000000000000000000000000000000000081529051919450610bbd91600160a060020a0387169163302c11ca9160048083019260209291908290030181600087803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b505050506040513d6020811015610b8e57600080fd5b50518260ff861660068110610b9f57fe5b6020020151600154600160a060020a0316919063ffffffff610d0e16565b6001909401936109eb565b50505050505050565b600454600019015b90565b61024c33610dad565b61024c33610dbe565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b505190506000811115610cad57600054600154610cad91600160a060020a0391821691168363ffffffff610d0e16565b61026b610dcf565b61026b60038263ffffffff610e0616565b6000600160a060020a0382161515610cdd57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61026b60028263ffffffff610e0616565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b505050506040513d6020811015610d9b57600080fd5b50511515610da857600080fd5b505050565b61026b60038263ffffffff610e5416565b61026b60028263ffffffff610e5416565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a0381161515610e1b57600080fd5b610e258282610cc6565b15610e2f57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610e6957600080fd5b610e738282610cc6565b1515610e7e57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19169055565b815481835581811115610da857600083815260209020610da8918101908301610ee3565b60c0604051908101604052806006906020820280388339509192915050565b610bd991905b80821115610efd5760008155600101610ee9565b50905600a165627a7a723058201033067a6ceafcfdd5906365e4a9ea37491edaca7ecea2eae390d605b7aa71c30029", "functionHashes": { "addCoreTeam(address)": "2e6b6849", "addSystem(address)": "74be7592", @@ -178,25 +187,27 @@ "registerMiner(address)": "341ccfcb", "renounceCoreTeam()": "d43acc79", "renounceSystem()": "e9d61859", + "terminate()": "0c08bf88", "unregisterMiner(address)": "81f909f3" }, "gasEstimates": { "creation": { - "codeDepositCost": "686800", + "codeDepositCost": "777000", "executionCost": "infinite", "totalCost": "infinite" }, "external": { "addCoreTeam(address)": "infinite", "addSystem(address)": "infinite", - "getMinerByIndex(uint256)": "980", - "getMinerCount()": "633", + "getMinerByIndex(uint256)": "1002", + "getMinerCount()": "655", "isCoreTeam(address)": "infinite", "isSystem(address)": "infinite", "mine()": "infinite", "registerMiner(address)": "infinite", "renounceCoreTeam()": "infinite", "renounceSystem()": "infinite", + "terminate()": "infinite", "unregisterMiner(address)": "infinite" } } diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json index 873957ff2..27cf6e665 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner-sol-output.json @@ -78,6 +78,15 @@ "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol": { "AlgoMiner": { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [], @@ -385,7 +394,7 @@ "type": "uint8" }, { - "name": "ownerAddress", + "name": "minerAccountAddress", "type": "address" }, { @@ -404,28 +413,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0x104F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD SWAP1 SWAP3 SWAP1 PUSH3 0x4D CALLER PUSH5 0x100000000 PUSH3 0x103 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x61 CALLER PUSH5 0x100000000 PUSH3 0x121 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x75 CALLER PUSH5 0x100000000 PUSH3 0x13C DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0x8E JUMPI POP PUSH1 0x5 DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 MUL SWAP3 SWAP1 SWAP3 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND MUL OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH3 0x1EA JUMP JUMPDEST PUSH3 0x11E PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x11E PUSH1 0x1 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x11E PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xD8F PUSH3 0x157 DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x182 DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1B2 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xE55 DUP1 PUSH3 0x1FA PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x13D JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x162F986D DUP2 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x319 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x32E JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x379 JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x3DF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x3F4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x45F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x496 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x516 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x61F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x224 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x652 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x66A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x297 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x776 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x789 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E2 PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x304 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x7C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0x999 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x9F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xA89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xB9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A3 PUSH2 0xBA7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xBAD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xBB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x157 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x3FD CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x408 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x422 JUMPI INVALID JUMPDEST EQ PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x47B JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x491 JUMPI POP PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4CE JUMPI INVALID JUMPDEST EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND PUSH1 0xA8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x51F CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x544 JUMPI INVALID JUMPDEST EQ PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x5FF SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xC3A AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x60B CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x628 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xD03 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x673 CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x67E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x698 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x30000000000000000000000000000000000000000 OR PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x71C CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x741 JUMPI INVALID JUMPDEST EQ PUSH2 0x74B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP DUP4 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 PUSH1 0x1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST PUSH2 0x792 CALLER PUSH2 0x652 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5FF DUP2 PUSH2 0xD4B JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x664 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xD14 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D3 CALLER PUSH2 0x652 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7F8 JUMPI INVALID JUMPDEST EQ PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x890 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH23 0x100000000000000000000000000000000000000000000 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x958 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xB8 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x958 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH23 0x100000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH23 0xFF00000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x5 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x0 DUP2 GT PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x4 SLOAD PUSH2 0x5FF SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xC3A AND JUMP JUMPDEST PUSH2 0x9A2 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x9C7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x9D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFFFF0000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x9FC CALLER PUSH2 0x7B5 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA21 JUMPI INVALID JUMPDEST EQ PUSH2 0xA2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA94 CALLER PUSH2 0x776 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAB9 JUMPI INVALID JUMPDEST EQ PUSH2 0xAC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD ISZERO ISZERO PUSH2 0xB75 JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xB6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x5 SSTORE JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD5C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xBD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x4 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xBEE JUMPI INVALID JUMPDEST EQ PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xA8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH22 0xFF000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBA5 CALLER PUSH2 0xD7E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD8F AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH2 0x5FF PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xDDD AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDAE DUP3 DUP3 PUSH2 0xD14 JUMP JUMPDEST ISZERO PUSH2 0xDB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDFC DUP3 DUP3 PUSH2 0xD14 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xE07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT SWAP5 0xb6 0xd2 EXTCODESIZE LOG0 0xb9 SWAP14 0xb0 XOR 0xd2 0xb9 PUSH20 0x943CF860EA9CEB1232EA85E77D5E6F5D5A2E8900 0x29 ", - "sourceMap": "558:3961:1:-;;;1139:396;8:9:-1;5:2;;;30:1;27;20:12;5:2;1139:396:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:22:3;375:10;364;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1370:1:1;1358:8;:13;;;;:30;;;;;1387:1;1375:8;:13;;;;1358:30;1350:39;;;;;;;;1402:10;:22;;-1:-1:-1;;1402:22:1;;;;;;;;;;-1:-1:-1;;1435:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1466:21:1;;-1:-1:-1;;;;;1466:21:1;;;;;;;;1498:6;:29;;-1:-1:-1;;;;;;1498:29:1;;;;;;;;558:3961;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;558:3961:1:-;;;;;;;" + "object": "60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP1 PUSH3 0x1220 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD PUSH1 0x60 SWAP1 SWAP4 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE SWAP2 SWAP4 SWAP2 PUSH3 0x81 SWAP1 PUSH5 0x100000000 PUSH3 0x126 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0x95 CALLER PUSH5 0x100000000 PUSH3 0x144 DUP2 MUL DIV JUMP JUMPDEST PUSH3 0xA9 CALLER PUSH5 0x100000000 PUSH3 0x15F DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH3 0xC2 JUMPI POP PUSH1 0x5 DUP4 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH3 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR PUSH3 0xFF0000 NOT AND PUSH3 0x10000 PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH4 0x1000000 PUSH1 0xB8 PUSH1 0x2 EXP SUB NOT AND PUSH4 0x1000000 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH3 0x20D JUMP JUMPDEST PUSH3 0x141 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x141 PUSH1 0x3 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST PUSH3 0x141 PUSH1 0x4 DUP3 PUSH5 0x100000000 PUSH3 0xF3D PUSH3 0x17A DUP3 MUL OR DIV JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH3 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1A5 DUP3 DUP3 PUSH5 0x100000000 PUSH3 0x1D5 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH3 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH3 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1003 DUP1 PUSH3 0x21D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x162F986D EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x1777FB4B EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x19A74AB3 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x21B79D98 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x231D4E2A EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x29D10B6E EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x302C11CA EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x34CDCF26 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x363AA6C7 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x427534A4 EQ PUSH2 0x296 JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x74BE7592 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x80258E47 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x81A24459 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x99F4B251 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x9E614CA0 EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xADA436E9 EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xB2A32CD5 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xBE952494 EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xC6846EF8 EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0xDA408679 EQ PUSH2 0x3EA JUMPI DUP1 PUSH4 0xE9D61859 EQ PUSH2 0x3FF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x414 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x432 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x4A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x4DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x577 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x663 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x680 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x244 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x6B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x6CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x764 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x822 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xA1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0xA92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xB2B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC45 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C3 PUSH2 0xC4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xC5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0xCF2 JUMP JUMPDEST PUSH2 0x41D CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x430 PUSH2 0xCFB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x452 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x477 JUMPI INVALID JUMPDEST EQ PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x2 SWAP2 SWAP1 PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP DUP4 JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C2 JUMPI INVALID JUMPDEST EQ DUP1 ISZERO PUSH2 0x4D8 JUMPI POP PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0x512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x52C JUMPI INVALID JUMPDEST EQ PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFF000000000000000000000000000000000000000000000000 NOT AND PUSH1 0xC0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x580 CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5A5 JUMPI INVALID JUMPDEST EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x660 SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x62F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x66C CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xE7A JUMP JUMPDEST PUSH2 0x689 CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xE8B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6EC CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x711 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x71C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH24 0x30000000000000000000000000000000000000000000000 OR PUSH25 0xFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x784 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0x78F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7A9 JUMPI INVALID JUMPDEST EQ PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 SWAP2 SWAP1 PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP DUP4 PUSH2 0x49A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x3 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST PUSH2 0x7EC CALLER PUSH2 0x6B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x660 DUP2 PUSH2 0xED3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C6 PUSH1 0x4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xE9C AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x843 CALLER PUSH2 0x6B3 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x868 JUMPI INVALID JUMPDEST EQ PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xD0 PUSH1 0x2 EXP SWAP1 DIV PUSH2 0xFFFF AND ISZERO ISZERO PUSH2 0x909 JUMPI PUSH1 0x5 DUP1 SLOAD PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT PUSH26 0xFF00000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP2 AND PUSH26 0x100000000000000000000000000000000000000000000000000 OR AND PUSH1 0xD0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH2 0xFFFF PUSH1 0xD0 PUSH1 0x2 EXP DUP1 DUP5 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD DUP2 AND DUP3 MUL PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE SWAP1 SWAP2 DIV AND PUSH2 0x16E EQ ISZERO PUSH2 0x9DD JUMPI PUSH1 0x5 DUP1 SLOAD PUSH28 0xFFFF0000000000000000000000000000000000000000000000000000 NOT PUSH1 0x1 PUSH1 0xFF PUSH26 0x100000000000000000000000000000000000000000000000000 DUP1 DUP6 DIV DUP3 AND SWAP3 SWAP1 SWAP3 ADD AND MUL PUSH26 0xFF00000000000000000000000000000000000000000000000000 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR AND PUSH1 0xD0 PUSH1 0x2 EXP OR SWAP1 SSTORE PUSH1 0x6 SLOAD PUSH1 0x2 SWAP1 DIV PUSH1 0x6 SSTORE JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x16D SWAP1 DIV PUSH1 0x0 DUP2 GT PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 SLOAD PUSH2 0x660 SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 PUSH4 0x1000000 SWAP1 SWAP2 DIV AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA3E CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA63 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xA6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFFFF0000000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB2 CALLER PUSH2 0x80F JUMP JUMPDEST ISZERO ISZERO PUSH2 0xABD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAD7 JUMPI INVALID JUMPDEST EQ PUSH2 0xAE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND PUSH4 0x1000000 MUL PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT SWAP1 SWAP3 AND PUSH1 0xB8 PUSH1 0x2 EXP OR PUSH23 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB4C CALLER PUSH2 0x7D0 JUMP JUMPDEST ISZERO ISZERO PUSH2 0xB57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xB71 JUMPI INVALID JUMPDEST EQ PUSH2 0xB7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD ISZERO ISZERO PUSH2 0xC2C JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0xC24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x6 SSTORE JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND PUSH1 0xB8 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xEE4 JUMP JUMPDEST PUSH2 0x16D DUP2 JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xA0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xC74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH4 0x1000000 SWAP1 DIV PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND CALLER EQ PUSH2 0xC92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x5 SLOAD PUSH1 0xB8 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xCAC JUMPI INVALID JUMPDEST EQ PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xC0 PUSH1 0x2 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0xCCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH25 0xFF000000000000000000000000000000000000000000000000 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x430 CALLER PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xDBA JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0xDBA SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0xDC2 AND JUMP JUMPDEST PUSH2 0x660 PUSH2 0xF17 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0xEB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x660 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF3D AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH2 0x660 PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF8B AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH1 0xA0 PUSH1 0x2 EXP OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF5C DUP3 DUP3 PUSH2 0xE9C JUMP JUMPDEST ISZERO PUSH2 0xF66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFAA DUP3 DUP3 PUSH2 0xE9C JUMP JUMPDEST ISZERO ISZERO PUSH2 0xFB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 EXP CODESIZE 0xca DUP16 PUSH10 0xEA6E0732674E2A58D5B9 CALLDATASIZE PUSH2 0xB5C2 0xaa DUP11 PUSH13 0x6B89CED63A3D5F318673002900 ", + "sourceMap": "592:4229:1:-;;;1163:410;8:9:-1;5:2;;;30:1;27;20:12;5:2;1163:410:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:8:6;:21;;167:10;-1:-1:-1;;;;;;156:21:6;;;;;-1:-1:-1;;;;;;188:19:6;;;;-1:-1:-1;636:29:4;;;;;-1:-1:-1;;;;;636:29:4;;;;;1163:410:1;;;364:22:3;;:10;;;;:22;:::i;:::-;368:24:0;381:10;368:12;;;;:24;:::i;:::-;366:26:2;381:10;366:14;;;;:26;:::i;:::-;1441:1:1;1429:8;:13;;;;:30;;;;;1458:1;1446:8;:13;;;;1429:30;1421:39;;;;;;;;-1:-1:-1;1473:10:1;:22;;-1:-1:-1;;1473:22:1;;;;;;;;;;-1:-1:-1;;1506:20:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1537:28:1;;-1:-1:-1;;;;;1537:28:1;;;;;;;;;;;592:4229;;800:92:3;857:27;:14;876:7;857:18;;;;;;:27;:::i;:::-;800:92;:::o;824:96:0:-;883:29;:16;904:7;883:20;;;;;;:29;:::i;836:94:2:-;897:25;:12;914:7;897:16;;;;;;:25;:::i;244:167:7:-;-1:-1:-1;;;;;316:21:7;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:7;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:7;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:7;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:7;:11;:20;;;;;;;;;;;;;;;725:166::o;592:4229:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "733800", + "codeDepositCost": "819800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "624", + "DAYS_PER_YEAR()": "646", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "696", - "getMiner()": "702", - "isAlgoMiner()": "212", + "getCategory()": "718", + "getMiner()": "724", + "isAlgoMiner()": "234", "isCoreTeam(address)": "infinite", - "isMining()": "859", + "isMining()": "881", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -436,9 +445,10 @@ "renounceSystem()": "infinite", "resetMiner(address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21420", + "startMining()": "21742", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "21772" + "stopMining()": "22094", + "terminate()": "infinite" } }, "methodIdentifiers": { @@ -465,10 +475,11 @@ "resumeMining()": "427534a4", "startMining()": "21b79d98", "stopAndRemoveOwnership()": "363aa6c7", - "stopMining()": "da408679" + "stopMining()": "da408679", + "terminate()": "0c08bf88" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"ownerAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0x3ac3214ab22215c557c0d9142bea5ee16bcedce1d06f4d36dded90b7c14e830a\",\"urls\":[\"bzzr://bf787e40723cedd9971737e335d4fe5d7cefef399c5de208ed362e7e336a624b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pauseMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAlgoMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMining\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"startMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinerAddress\",\"type\":\"address\"}],\"name\":\"migrateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMiner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSystem\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopAndRemoveOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"resumeMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCategory\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSupervisor\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mine\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deactivateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwnerAddress\",\"type\":\"address\"}],\"name\":\"resetMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"activateMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSupervisor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DAYS_PER_YEAR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stopMining\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSystem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"minerType\",\"type\":\"uint16\"},{\"name\":\"category\",\"type\":\"uint8\"},{\"name\":\"minerAccountAddress\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":\"AlgoMiner\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol\":{\"keccak256\":\"0xb98f40d28a99d50fe3a6c5b8411495818db9a438b3f765f73280ae03c6c6063b\",\"urls\":[\"bzzr://dba29214974be1b8b9698babc431c5784cae1dc4785c928e3a050f1ff8ed0434\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol\":{\"keccak256\":\"0x20955eaf60f79f885c941d97e208320c9e0bc1f05b8121342f8187f9a39fd46b\",\"urls\":[\"bzzr://8e30e53aa0322307873f8c0a4fc3c58b7562a0fde92a0921a52bdef4e129ec4b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol\":{\"keccak256\":\"0x6fffe504e6805d95ca42269cc995a3de9401a12bc037068b056c186ce8569d8d\",\"urls\":[\"bzzr://a0923a2d2b1e4992f552ce49638b19d6d8328950c1d5dc1395f0d625daf21c68\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", "userdoc": { "methods": {} } @@ -624,6 +635,40 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { + "ERC20TokenHolder": { + "abi": [ + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { "IAlgoMiner": { "abi": [ @@ -708,6 +753,35 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "Terminable": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "Roles": { "abi": [], @@ -720,7 +794,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "109:784:7:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -754,7 +828,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "117:1531:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -994,7 +1068,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "353:1296:10:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -1048,7 +1122,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 816, + "sourceUnit": 935, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -1073,10 +1147,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 815, + "referencedDeclaration": 934, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$815", + "typeIdentifier": "t_contract$_Roles_$934", "typeString": "library Roles" } }, @@ -1087,10 +1161,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } } @@ -1105,7 +1179,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -1113,10 +1187,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1141,7 +1215,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1249,7 +1323,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1315,10 +1389,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, + "referencedDeclaration": 1293, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1403,7 +1477,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1414,10 +1488,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 814, + "referencedDeclaration": 933, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1677,7 +1751,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1804,7 +1878,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1815,10 +1889,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 760, + "referencedDeclaration": 879, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1936,7 +2010,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1947,10 +2021,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 791, + "referencedDeclaration": 910, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -2042,10 +2116,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoMiner.sol", "exportedSymbols": { "AlgoMiner": [ - 524 + 549 ] }, - "id": 525, + "id": 550, "nodeType": "SourceUnit", "nodes": [ { @@ -2063,8 +2137,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 1013, + "scope": 550, + "sourceUnit": 1132, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -2074,8 +2148,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 1157, + "scope": 550, + "sourceUnit": 1276, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -2085,42 +2159,53 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 722, + "scope": 550, + "sourceUnit": 804, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", + "file": "./ERC20TokenHolder.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 550, + "sourceUnit": 781, + "src": "454:32:1", + "symbolAliases": [], + "unitAlias": "" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "file": "./AlgoSystemRole.sol", - "id": 92, + "id": 93, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 699, - "src": "454:30:1", + "scope": 550, + "sourceUnit": 724, + "src": "488:30:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", "file": "./AlgoCoreTeamRole.sol", - "id": 93, + "id": 94, "nodeType": "ImportDirective", - "scope": 525, + "scope": 550, "sourceUnit": 87, - "src": "486:32:1", + "src": "520:32:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "file": "./AlgoSupervisorRole.sol", - "id": 94, + "id": 95, "nodeType": "ImportDirective", - "scope": 525, - "sourceUnit": 612, - "src": "520:34:1", + "scope": 550, + "sourceUnit": 637, + "src": "554:34:1", "symbolAliases": [], "unitAlias": "" }, @@ -2130,131 +2215,153 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 95, - "name": "AlgoSystemRole", + "id": 96, + "name": "ERC20TokenHolder", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 698, - "src": "580:14:1", + "referencedDeclaration": 780, + "src": "614:16:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSystemRole_$698", - "typeString": "contract AlgoSystemRole" + "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeString": "contract ERC20TokenHolder" } }, - "id": 96, + "id": 97, "nodeType": "InheritanceSpecifier", - "src": "580:14:1" + "src": "614:16:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 97, + "id": 98, + "name": "AlgoSystemRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 723, + "src": "632:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AlgoSystemRole_$723", + "typeString": "contract AlgoSystemRole" + } + }, + "id": 99, + "nodeType": "InheritanceSpecifier", + "src": "632:14:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 100, "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 86, - "src": "596:16:1", + "src": "648:16:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", "typeString": "contract AlgoCoreTeamRole" } }, - "id": 98, + "id": 101, "nodeType": "InheritanceSpecifier", - "src": "596:16:1" + "src": "648:16:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 99, + "id": 102, "name": "AlgoSupervisorRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 611, - "src": "614:18:1", + "referencedDeclaration": 636, + "src": "666:18:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoSupervisorRole_$611", + "typeIdentifier": "t_contract$_AlgoSupervisorRole_$636", "typeString": "contract AlgoSupervisorRole" } }, - "id": 100, + "id": 103, "nodeType": "InheritanceSpecifier", - "src": "614:18:1" + "src": "666:18:1" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 101, + "id": 104, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 721, - "src": "634:10:1", + "referencedDeclaration": 803, + "src": "686:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$721", + "typeIdentifier": "t_contract$_IAlgoMiner_$803", "typeString": "contract IAlgoMiner" } }, - "id": 102, + "id": 105, "nodeType": "InheritanceSpecifier", - "src": "634:10:1" + "src": "686:10:1" } ], "contractDependencies": [ + 636, 86, - 611, - 698, - 721 + 780, + 723, + 803, + 840 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 524, + "id": 549, "linearizedBaseContracts": [ - 524, - 721, - 611, + 549, + 803, + 636, 86, - 698 + 723, + 780, + 840 ], "name": "AlgoMiner", "nodeType": "ContractDefinition", "nodes": [ { - "id": 105, + "id": 108, "libraryName": { "contractScope": null, - "id": 103, + "id": 106, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1156, - "src": "658:9:1", + "referencedDeclaration": 1275, + "src": "710:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "652:27:1", + "src": "704:27:1", "typeName": { "contractScope": null, - "id": 104, + "id": 107, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "672:6:1", + "referencedDeclaration": 1131, + "src": "724:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } } }, { "constant": true, - "id": 108, + "id": 111, "name": "DAYS_PER_YEAR", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "687:43:1", + "scope": 549, + "src": "739:43:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2262,10 +2369,10 @@ "typeString": "uint256" }, "typeName": { - "id": 106, + "id": 109, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "687:7:1", + "src": "739:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2274,14 +2381,14 @@ "value": { "argumentTypes": null, "hexValue": "333635", - "id": 107, + "id": 110, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "727:3:1", + "src": "779:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_365_by_1", @@ -2293,44 +2400,44 @@ }, { "canonicalName": "AlgoMiner.MinerState", - "id": 113, + "id": 116, "members": [ { - "id": 109, + "id": 112, "name": "Deactivated", "nodeType": "EnumValue", - "src": "766:11:1" + "src": "818:11:1" }, { - "id": 110, + "id": 113, "name": "Activated", "nodeType": "EnumValue", - "src": "788:9:1" + "src": "840:9:1" }, { - "id": 111, + "id": 114, "name": "Suspended", "nodeType": "EnumValue", - "src": "808:9:1" + "src": "860:9:1" }, { - "id": 112, + "id": 115, "name": "Stopped", "nodeType": "EnumValue", - "src": "828:7:1" + "src": "880:7:1" } ], "name": "MinerState", "nodeType": "EnumDefinition", - "src": "739:103:1" + "src": "791:103:1" }, { "constant": false, - "id": 115, + "id": 118, "name": "_minerType", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "850:25:1", + "scope": 549, + "src": "902:25:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2338,10 +2445,10 @@ "typeString": "uint16" }, "typeName": { - "id": 114, + "id": 117, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "850:6:1", + "src": "902:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2352,11 +2459,11 @@ }, { "constant": false, - "id": 117, + "id": 120, "name": "_category", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "882:23:1", + "scope": 549, + "src": "934:23:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2364,10 +2471,10 @@ "typeString": "uint8" }, "typeName": { - "id": 116, + "id": 119, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "882:5:1", + "src": "934:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2378,11 +2485,11 @@ }, { "constant": false, - "id": 119, + "id": 122, "name": "_miner", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "912:22:1", + "scope": 549, + "src": "964:22:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2390,10 +2497,10 @@ "typeString": "address" }, "typeName": { - "id": 118, + "id": 121, "name": "address", "nodeType": "ElementaryTypeName", - "src": "912:7:1", + "src": "964:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2404,54 +2511,26 @@ }, { "constant": false, - "id": 121, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 524, - "src": "941:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 120, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "941:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 123, + "id": 124, "name": "_state", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "971:25:1", + "scope": 549, + "src": "995:25:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, "typeName": { "contractScope": null, - "id": 122, + "id": 123, "name": "MinerState", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 113, - "src": "971:10:1", + "referencedDeclaration": 116, + "src": "995:10:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -2460,11 +2539,11 @@ }, { "constant": false, - "id": 125, + "id": 126, "name": "_mining", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "1003:20:1", + "scope": 549, + "src": "1027:20:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2472,10 +2551,10 @@ "typeString": "bool" }, "typeName": { - "id": 124, + "id": 125, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1003:4:1", + "src": "1027:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2486,11 +2565,11 @@ }, { "constant": false, - "id": 127, + "id": 128, "name": "_currentYear", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "1030:26:1", + "scope": 549, + "src": "1054:26:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2498,10 +2577,10 @@ "typeString": "uint8" }, "typeName": { - "id": 126, + "id": 127, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1030:5:1", + "src": "1054:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2512,11 +2591,11 @@ }, { "constant": false, - "id": 129, + "id": 130, "name": "_currentDay", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "1063:26:1", + "scope": 549, + "src": "1087:26:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2524,10 +2603,10 @@ "typeString": "uint16" }, "typeName": { - "id": 128, + "id": 129, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1063:6:1", + "src": "1087:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2538,11 +2617,11 @@ }, { "constant": false, - "id": 131, + "id": 132, "name": "_currentYearSupply", "nodeType": "VariableDeclaration", - "scope": 524, - "src": "1096:34:1", + "scope": 549, + "src": "1120:34:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2550,10 +2629,10 @@ "typeString": "uint256" }, "typeName": { - "id": 130, + "id": 131, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1096:7:1", + "src": "1120:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2564,9 +2643,9 @@ }, { "body": { - "id": 176, + "id": 174, "nodeType": "Block", - "src": "1329:206:1", + "src": "1400:173:1", "statements": [ { "expression": { @@ -2578,7 +2657,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 155, + "id": 159, "isConstant": false, "isLValue": false, "isPure": false, @@ -2589,19 +2668,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 151, + "id": 155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 149, + "id": 153, "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "1358:8:1", + "referencedDeclaration": 136, + "src": "1429:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2612,14 +2691,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 150, + "id": 154, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1370:1:1", + "src": "1441:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2627,7 +2706,7 @@ }, "value": "0" }, - "src": "1358:13:1", + "src": "1429:13:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2641,19 +2720,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 154, + "id": 158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 152, + "id": 156, "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "1375:8:1", + "referencedDeclaration": 136, + "src": "1446:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2664,14 +2743,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "35", - "id": 153, + "id": 157, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1387:1:1", + "src": "1458:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -2679,13 +2758,13 @@ }, "value": "5" }, - "src": "1375:13:1", + "src": "1446:13:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1358:30:1", + "src": "1429:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2699,21 +2778,21 @@ "typeString": "bool" } ], - "id": 148, + "id": 152, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1350:7:1", + "referencedDeclaration": 1293, + "src": "1421:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 156, + "id": 160, "isConstant": false, "isLValue": false, "isPure": false, @@ -2721,61 +2800,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:39:1", + "src": "1421:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 157, - "nodeType": "ExpressionStatement", - "src": "1350:39:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 158, - "name": "_minerType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "1402:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 159, - "name": "minerType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 133, - "src": "1415:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "1402:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, "id": 161, "nodeType": "ExpressionStatement", - "src": "1402:22:1" + "src": "1421:39:1" }, { "expression": { @@ -2788,14 +2821,14 @@ "leftHandSide": { "argumentTypes": null, "id": 162, - "name": "_category", + "name": "_minerType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "1435:9:1", + "referencedDeclaration": 118, + "src": "1473:10:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, "nodeType": "Assignment", @@ -2803,25 +2836,25 @@ "rightHandSide": { "argumentTypes": null, "id": 163, - "name": "category", + "name": "minerType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "1447:8:1", + "referencedDeclaration": 134, + "src": "1486:9:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, - "src": "1435:20:1", + "src": "1473:22:1", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, "id": 165, "nodeType": "ExpressionStatement", - "src": "1435:20:1" + "src": "1473:22:1" }, { "expression": { @@ -2834,14 +2867,14 @@ "leftHandSide": { "argumentTypes": null, "id": 166, - "name": "_miner", + "name": "_category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "1466:6:1", + "referencedDeclaration": 120, + "src": "1506:9:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "nodeType": "Assignment", @@ -2849,30 +2882,30 @@ "rightHandSide": { "argumentTypes": null, "id": 167, - "name": "ownerAddress", + "name": "category", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 137, - "src": "1475:12:1", + "referencedDeclaration": 136, + "src": "1518:8:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "src": "1466:21:1", + "src": "1506:20:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "id": 169, "nodeType": "ExpressionStatement", - "src": "1466:21:1" + "src": "1506:20:1" }, { "expression": { "argumentTypes": null, - "id": 174, + "id": 172, "isConstant": false, "isLValue": false, "isPure": false, @@ -2880,122 +2913,81 @@ "leftHandSide": { "argumentTypes": null, "id": 170, - "name": "_token", + "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "1498:6:1", + "referencedDeclaration": 122, + "src": "1537:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 172, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "1514:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 171, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1012, - "src": "1507:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$1012_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1507:20:1", + "id": 171, + "name": "minerAccountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "1546:19:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1498:29:1", + "src": "1537:28:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 175, + "id": 173, "nodeType": "ExpressionStatement", - "src": "1498:29:1" + "src": "1537:28:1" } ] }, "documentation": null, - "id": 177, + "id": 175, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 142, - "modifierName": { - "argumentTypes": null, - "id": 141, - "name": "AlgoSystemRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 698, - "src": "1238:14:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$698_$", - "typeString": "type(contract AlgoSystemRole)" + "arguments": [ + { + "argumentTypes": null, + "id": 143, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 140, + "src": "1286:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } - }, - "nodeType": "ModifierInvocation", - "src": "1238:16:1" - }, - { - "arguments": [], + ], "id": 144, "modifierName": { "argumentTypes": null, - "id": 143, - "name": "AlgoCoreTeamRole", + "id": 142, + "name": "ERC20TokenHolder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 86, - "src": "1264:16:1", + "referencedDeclaration": 780, + "src": "1269:16:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", - "typeString": "type(contract AlgoCoreTeamRole)" + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$780_$", + "typeString": "type(contract ERC20TokenHolder)" } }, "nodeType": "ModifierInvocation", - "src": "1264:18:1" + "src": "1269:30:1" }, { "arguments": [], @@ -3003,33 +2995,71 @@ "modifierName": { "argumentTypes": null, "id": 145, + "name": "AlgoSystemRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "1309:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoSystemRole_$723_$", + "typeString": "type(contract AlgoSystemRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1309:16:1" + }, + { + "arguments": [], + "id": 148, + "modifierName": { + "argumentTypes": null, + "id": 147, + "name": "AlgoCoreTeamRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "1335:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", + "typeString": "type(contract AlgoCoreTeamRole)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1335:18:1" + }, + { + "arguments": [], + "id": 150, + "modifierName": { + "argumentTypes": null, + "id": 149, "name": "AlgoSupervisorRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 611, - "src": "1292:18:1", + "referencedDeclaration": 636, + "src": "1363:18:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$611_$", + "typeIdentifier": "t_type$_t_contract$_AlgoSupervisorRole_$636_$", "typeString": "type(contract AlgoSupervisorRole)" } }, "nodeType": "ModifierInvocation", - "src": "1292:20:1" + "src": "1363:20:1" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 140, + "id": 141, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 133, + "id": 134, "name": "minerType", "nodeType": "VariableDeclaration", - "scope": 177, - "src": "1151:16:1", + "scope": 175, + "src": "1175:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3037,10 +3067,10 @@ "typeString": "uint16" }, "typeName": { - "id": 132, + "id": 133, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1151:6:1", + "src": "1175:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -3051,11 +3081,11 @@ }, { "constant": false, - "id": 135, + "id": 136, "name": "category", "nodeType": "VariableDeclaration", - "scope": 177, - "src": "1169:14:1", + "scope": 175, + "src": "1193:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3063,10 +3093,10 @@ "typeString": "uint8" }, "typeName": { - "id": 134, + "id": 135, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1169:5:1", + "src": "1193:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3077,11 +3107,11 @@ }, { "constant": false, - "id": 137, - "name": "ownerAddress", + "id": 138, + "name": "minerAccountAddress", "nodeType": "VariableDeclaration", - "scope": 177, - "src": "1185:20:1", + "scope": 175, + "src": "1209:27:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3089,10 +3119,10 @@ "typeString": "address" }, "typeName": { - "id": 136, + "id": 137, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1185:7:1", + "src": "1209:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3103,11 +3133,11 @@ }, { "constant": false, - "id": 139, + "id": 140, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 177, - "src": "1207:20:1", + "scope": 175, + "src": "1238:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3115,10 +3145,10 @@ "typeString": "address" }, "typeName": { - "id": 138, + "id": 139, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1207:7:1", + "src": "1238:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3128,26 +3158,26 @@ "visibility": "internal" } ], - "src": "1150:78:1" + "src": "1174:85:1" }, "payable": false, "returnParameters": { - "id": 147, + "id": 151, "nodeType": "ParameterList", "parameters": [], - "src": "1329:0:1" + "src": "1400:0:1" }, - "scope": 524, - "src": "1139:396:1", + "scope": 549, + "src": "1163:410:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 187, + "id": 185, "nodeType": "Block", - "src": "1564:60:1", + "src": "1602:60:1", "statements": [ { "expression": { @@ -3159,7 +3189,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 183, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, @@ -3168,18 +3198,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 180, + "id": 178, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, - "src": "1583:3:1", + "referencedDeclaration": 1290, + "src": "1621:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 181, + "id": 179, "isConstant": false, "isLValue": false, "isPure": false, @@ -3187,7 +3217,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1583:10:1", + "src": "1621:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3197,18 +3227,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 182, + "id": 180, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "1597:6:1", + "referencedDeclaration": 122, + "src": "1635:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1583:20:1", + "src": "1621:20:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3222,21 +3252,21 @@ "typeString": "bool" } ], - "id": 179, + "id": 177, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1575:7:1", + "referencedDeclaration": 1293, + "src": "1613:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 184, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, @@ -3244,41 +3274,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1575:29:1", + "src": "1613:29:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 185, + "id": 183, "nodeType": "ExpressionStatement", - "src": "1575:29:1" + "src": "1613:29:1" }, { - "id": 186, + "id": 184, "nodeType": "PlaceholderStatement", - "src": "1615:1:1" + "src": "1653:1:1" } ] }, "documentation": null, - "id": 188, + "id": 186, "name": "onlyMiner", "nodeType": "ModifierDefinition", "parameters": { - "id": 178, + "id": 176, "nodeType": "ParameterList", "parameters": [], - "src": "1561:2:1" + "src": "1599:2:1" }, - "src": "1543:81:1", + "src": "1581:81:1", "visibility": "internal" }, { "body": { "id": 231, "nodeType": "Block", - "src": "1681:326:1", + "src": "1733:326:1", "statements": [ { "expression": { @@ -3287,7 +3317,7 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, "id": 197, @@ -3301,10 +3331,10 @@ "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1700:6:1", + "referencedDeclaration": 124, + "src": "1752:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -3318,10 +3348,10 @@ "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "1710:10:1", + "referencedDeclaration": 116, + "src": "1762:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, @@ -3333,13 +3363,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1710:22:1", + "src": "1762:22:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1700:32:1", + "src": "1752:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3357,11 +3387,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1692:7:1", + "referencedDeclaration": 1293, + "src": "1744:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3375,7 +3405,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1692:41:1", + "src": "1744:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3383,7 +3413,7 @@ }, "id": 199, "nodeType": "ExpressionStatement", - "src": "1692:41:1" + "src": "1744:41:1" }, { "condition": { @@ -3403,8 +3433,8 @@ "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "1749:18:1", + "referencedDeclaration": 132, + "src": "1801:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3422,7 +3452,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1771:1:1", + "src": "1823:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3430,7 +3460,7 @@ }, "value": "0" }, - "src": "1749:23:1", + "src": "1801:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3439,11 +3469,11 @@ "falseBody": null, "id": 225, "nodeType": "IfStatement", - "src": "1746:212:1", + "src": "1798:212:1", "trueBody": { "id": 224, "nodeType": "Block", - "src": "1774:184:1", + "src": "1826:184:1", "statements": [ { "assignments": [ @@ -3456,7 +3486,7 @@ "name": "currentBalance", "nodeType": "VariableDeclaration", "scope": 232, - "src": "1789:22:1", + "src": "1841:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3467,7 +3497,7 @@ "id": 203, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1789:7:1", + "src": "1841:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3490,10 +3520,10 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "1839:4:1", + "referencedDeclaration": 1323, + "src": "1891:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$524", + "typeIdentifier": "t_contract$_AlgoMiner_$549", "typeString": "contract AlgoMiner" } } @@ -3501,7 +3531,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$524", + "typeIdentifier": "t_contract$_AlgoMiner_$549", "typeString": "contract AlgoMiner" } ], @@ -3511,7 +3541,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1831:7:1", + "src": "1883:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -3526,7 +3556,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1831:13:1", + "src": "1883:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3546,10 +3576,10 @@ "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "1814:6:1", + "referencedDeclaration": 735, + "src": "1866:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, @@ -3560,8 +3590,8 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 957, - "src": "1814:16:1", + "referencedDeclaration": 1076, + "src": "1866:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" @@ -3575,14 +3605,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1814:31:1", + "src": "1866:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1789:56:1" + "src": "1841:56:1" }, { "expression": { @@ -3606,7 +3636,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 204, - "src": "1870:14:1", + "src": "1922:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3624,7 +3654,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1888:1:1", + "src": "1940:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3632,7 +3662,7 @@ }, "value": "0" }, - "src": "1870:19:1", + "src": "1922:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3650,11 +3680,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1862:7:1", + "referencedDeclaration": 1293, + "src": "1914:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3668,7 +3698,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1862:28:1", + "src": "1914:28:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3676,7 +3706,7 @@ }, "id": 217, "nodeType": "ExpressionStatement", - "src": "1862:28:1" + "src": "1914:28:1" }, { "expression": { @@ -3692,8 +3722,8 @@ "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "1907:18:1", + "referencedDeclaration": 132, + "src": "1959:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3719,7 +3749,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 204, - "src": "1928:14:1", + "src": "1980:14:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3737,7 +3767,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1945:1:1", + "src": "1997:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3745,13 +3775,13 @@ }, "value": "2" }, - "src": "1928:18:1", + "src": "1980:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1907:39:1", + "src": "1959:39:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3759,7 +3789,7 @@ }, "id": 223, "nodeType": "ExpressionStatement", - "src": "1907:39:1" + "src": "1959:39:1" } ] } @@ -3778,10 +3808,10 @@ "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "1970:6:1", + "referencedDeclaration": 124, + "src": "2022:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -3795,10 +3825,10 @@ "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "1979:10:1", + "referencedDeclaration": 116, + "src": "2031:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, @@ -3810,21 +3840,21 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1979:20:1", + "src": "2031:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "1970:29:1", + "src": "2022:29:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, "id": 230, "nodeType": "ExpressionStatement", - "src": "1970:29:1" + "src": "2022:29:1" } ] }, @@ -3834,6 +3864,25 @@ "isConstructor": false, "isDeclaredConst": false, "modifiers": [ + { + "arguments": null, + "id": 189, + "modifierName": { + "argumentTypes": null, + "id": 188, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "1706:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1706:13:1" + }, { "arguments": null, "id": 191, @@ -3844,42 +3893,42 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1668:12:1", + "src": "1720:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1668:12:1" + "src": "1720:12:1" } ], "name": "activateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 189, + "id": 187, "nodeType": "ParameterList", "parameters": [], - "src": "1658:2:1" + "src": "1696:2:1" }, "payable": false, "returnParameters": { "id": 192, "nodeType": "ParameterList", "parameters": [], - "src": "1681:0:1" + "src": "1733:0:1" }, - "scope": 524, - "src": "1636:371:1", + "scope": 549, + "src": "1674:385:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 253, + "id": 255, "nodeType": "Block", - "src": "2062:138:1", + "src": "2128:138:1", "statements": [ { "expression": { @@ -3888,24 +3937,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 241, + "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 238, + "id": 240, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2081:6:1", + "referencedDeclaration": 124, + "src": "2147:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -3915,18 +3964,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 239, + "id": 241, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2091:10:1", + "referencedDeclaration": 116, + "src": "2157:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 240, + "id": 242, "isConstant": false, "isLValue": false, "isPure": true, @@ -3934,13 +3983,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2091:22:1", + "src": "2157:22:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2081:32:1", + "src": "2147:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3954,21 +4003,21 @@ "typeString": "bool" } ], - "id": 237, + "id": 239, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2073:7:1", + "referencedDeclaration": 1293, + "src": "2139:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 242, + "id": 244, "isConstant": false, "isLValue": false, "isPure": false, @@ -3976,34 +4025,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2073:41:1", + "src": "2139:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 243, + "id": 245, "nodeType": "ExpressionStatement", - "src": "2073:41:1" + "src": "2139:41:1" }, { "expression": { "argumentTypes": null, - "id": 247, + "id": 249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 244, + "id": 246, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2135:6:1", + "referencedDeclaration": 124, + "src": "2201:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4013,18 +4062,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 245, + "id": 247, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2144:10:1", + "referencedDeclaration": 116, + "src": "2210:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 246, + "id": 248, "isConstant": false, "isLValue": false, "isPure": true, @@ -4032,38 +4081,38 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2144:22:1", + "src": "2210:22:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2135:31:1", + "src": "2201:31:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 248, + "id": 250, "nodeType": "ExpressionStatement", - "src": "2135:31:1" + "src": "2201:31:1" }, { "expression": { "argumentTypes": null, - "id": 251, + "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 249, + "id": 251, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2177:7:1", + "referencedDeclaration": 126, + "src": "2243:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4074,14 +4123,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 250, + "id": 252, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2187:5:1", + "src": "2253:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4089,20 +4138,20 @@ }, "value": "false" }, - "src": "2177:15:1", + "src": "2243:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 252, + "id": 254, "nodeType": "ExpressionStatement", - "src": "2177:15:1" + "src": "2243:15:1" } ] }, "documentation": null, - "id": 254, + "id": 256, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4113,18 +4162,37 @@ "modifierName": { "argumentTypes": null, "id": 234, - "name": "onlyCoreTeam", + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 27, - "src": "2049:12:1", + "referencedDeclaration": 831, + "src": "2101:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2049:12:1" + "src": "2101:13:1" + }, + { + "arguments": null, + "id": 237, + "modifierName": { + "argumentTypes": null, + "id": 236, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "2115:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2115:12:1" } ], "name": "deactivateMiner", @@ -4133,26 +4201,26 @@ "id": 233, "nodeType": "ParameterList", "parameters": [], - "src": "2039:2:1" + "src": "2091:2:1" }, "payable": false, "returnParameters": { - "id": 236, + "id": 238, "nodeType": "ParameterList", "parameters": [], - "src": "2062:0:1" + "src": "2128:0:1" }, - "scope": 524, - "src": "2015:185:1", + "scope": 549, + "src": "2067:199:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 280, + "id": 282, "nodeType": "Block", - "src": "2275:142:1", + "src": "2399:142:1", "statements": [ { "expression": { @@ -4161,24 +4229,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 265, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 262, + "id": 264, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2294:6:1", + "referencedDeclaration": 124, + "src": "2418:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4188,18 +4256,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 263, + "id": 265, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2304:10:1", + "referencedDeclaration": 116, + "src": "2428:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 264, + "id": 266, "isConstant": false, "isLValue": false, "isPure": true, @@ -4207,13 +4275,13 @@ "memberName": "Deactivated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2304:22:1", + "src": "2428:22:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2294:32:1", + "src": "2418:32:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4227,21 +4295,21 @@ "typeString": "bool" } ], - "id": 261, + "id": 263, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2286:7:1", + "referencedDeclaration": 1293, + "src": "2410:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 266, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, @@ -4249,15 +4317,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2286:41:1", + "src": "2410:41:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 267, + "id": 269, "nodeType": "ExpressionStatement", - "src": "2286:41:1" + "src": "2410:41:1" }, { "expression": { @@ -4265,12 +4333,12 @@ "arguments": [ { "argumentTypes": null, - "id": 271, + "id": 273, "name": "newMinerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "2360:15:1", + "referencedDeclaration": 258, + "src": "2484:15:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4284,14 +4352,14 @@ "arguments": [ { "argumentTypes": null, - "id": 275, + "id": 277, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "2402:4:1", + "referencedDeclaration": 1323, + "src": "2526:4:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_AlgoMiner_$524", + "typeIdentifier": "t_contract$_AlgoMiner_$549", "typeString": "contract AlgoMiner" } } @@ -4299,24 +4367,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_AlgoMiner_$524", + "typeIdentifier": "t_contract$_AlgoMiner_$549", "typeString": "contract AlgoMiner" } ], - "id": 274, + "id": 276, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2394:7:1", + "src": "2518:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 276, + "id": 278, "isConstant": false, "isLValue": false, "isPure": false, @@ -4324,7 +4392,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2394:13:1", + "src": "2518:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4340,32 +4408,32 @@ ], "expression": { "argumentTypes": null, - "id": 272, + "id": 274, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "2377:6:1", + "referencedDeclaration": 735, + "src": "2501:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 273, + "id": 275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 957, - "src": "2377:16:1", + "referencedDeclaration": 1076, + "src": "2501:16:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 277, + "id": 279, "isConstant": false, "isLValue": false, "isPure": false, @@ -4373,7 +4441,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2377:31:1", + "src": "2501:31:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4393,32 +4461,32 @@ ], "expression": { "argumentTypes": null, - "id": 268, + "id": 270, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "2340:6:1", + "referencedDeclaration": 735, + "src": "2464:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 270, + "id": 272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1037, - "src": "2340:19:1", + "referencedDeclaration": 1156, + "src": "2464:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1012_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 278, + "id": 280, "isConstant": false, "isLValue": false, "isPure": false, @@ -4426,57 +4494,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2340:69:1", + "src": "2464:69:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 279, + "id": 281, "nodeType": "ExpressionStatement", - "src": "2340:69:1" + "src": "2464:69:1" } ] }, "documentation": null, - "id": 281, + "id": 283, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 259, + "id": 261, "modifierName": { "argumentTypes": null, - "id": 258, + "id": 260, "name": "onlyCoreTeam", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "2262:12:1", + "src": "2386:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2262:12:1" + "src": "2386:12:1" } ], "name": "migrateMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 257, + "id": 259, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 256, + "id": 258, "name": "newMinerAddress", "nodeType": "VariableDeclaration", - "scope": 281, - "src": "2230:23:1", + "scope": 283, + "src": "2354:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4484,10 +4552,10 @@ "typeString": "address" }, "typeName": { - "id": 255, + "id": 257, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2230:7:1", + "src": "2354:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4497,26 +4565,26 @@ "visibility": "internal" } ], - "src": "2229:25:1" + "src": "2353:25:1" }, "payable": false, "returnParameters": { - "id": 260, + "id": 262, "nodeType": "ParameterList", "parameters": [], - "src": "2275:0:1" + "src": "2399:0:1" }, - "scope": 524, - "src": "2208:209:1", + "scope": 549, + "src": "2332:209:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 298, + "id": 302, "nodeType": "Block", - "src": "2470:108:1", + "src": "2608:108:1", "statements": [ { "expression": { @@ -4525,24 +4593,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 290, + "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 287, + "id": 291, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2489:6:1", + "referencedDeclaration": 124, + "src": "2627:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4552,18 +4620,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 288, + "id": 292, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2499:10:1", + "referencedDeclaration": 116, + "src": "2637:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 289, + "id": 293, "isConstant": false, "isLValue": false, "isPure": true, @@ -4571,13 +4639,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2499:20:1", + "src": "2637:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2489:30:1", + "src": "2627:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4591,21 +4659,21 @@ "typeString": "bool" } ], - "id": 286, + "id": 290, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2481:7:1", + "referencedDeclaration": 1293, + "src": "2619:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 291, + "id": 295, "isConstant": false, "isLValue": false, "isPure": false, @@ -4613,34 +4681,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2481:39:1", + "src": "2619:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 292, + "id": 296, "nodeType": "ExpressionStatement", - "src": "2481:39:1" + "src": "2619:39:1" }, { "expression": { "argumentTypes": null, - "id": 296, + "id": 300, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 293, + "id": 297, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2541:6:1", + "referencedDeclaration": 124, + "src": "2679:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4650,18 +4718,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 294, + "id": 298, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2550:10:1", + "referencedDeclaration": 116, + "src": "2688:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 295, + "id": 299, "isConstant": false, "isLValue": false, "isPure": true, @@ -4669,76 +4737,95 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2550:20:1", + "src": "2688:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2541:29:1", + "src": "2679:29:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 297, + "id": 301, "nodeType": "ExpressionStatement", - "src": "2541:29:1" + "src": "2679:29:1" } ] }, "documentation": null, - "id": 299, + "id": 303, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 284, + "id": 286, "modifierName": { "argumentTypes": null, - "id": 283, - "name": "onlySupervisor", + "id": 285, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "2455:14:1", + "referencedDeclaration": 831, + "src": "2579:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2455:14:1" + "src": "2579:13:1" + }, + { + "arguments": null, + "id": 288, + "modifierName": { + "argumentTypes": null, + "id": 287, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "2593:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2593:14:1" } ], "name": "pauseMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 282, + "id": 284, "nodeType": "ParameterList", "parameters": [], - "src": "2445:2:1" + "src": "2569:2:1" }, "payable": false, "returnParameters": { - "id": 285, + "id": 289, "nodeType": "ParameterList", "parameters": [], - "src": "2470:0:1" + "src": "2608:0:1" }, - "scope": 524, - "src": "2425:153:1", + "scope": 549, + "src": "2549:167:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 316, + "id": 322, "nodeType": "Block", - "src": "2632:100:1", + "src": "2784:100:1", "statements": [ { "expression": { @@ -4747,24 +4834,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 308, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 305, + "id": 311, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2651:6:1", + "referencedDeclaration": 124, + "src": "2803:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4774,18 +4861,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 306, + "id": 312, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2661:10:1", + "referencedDeclaration": 116, + "src": "2813:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 307, + "id": 313, "isConstant": false, "isLValue": false, "isPure": true, @@ -4793,13 +4880,13 @@ "memberName": "Suspended", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2661:20:1", + "src": "2813:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2651:30:1", + "src": "2803:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4813,21 +4900,21 @@ "typeString": "bool" } ], - "id": 304, + "id": 310, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2643:7:1", + "referencedDeclaration": 1293, + "src": "2795:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 309, + "id": 315, "isConstant": false, "isLValue": false, "isPure": false, @@ -4835,34 +4922,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2643:39:1", + "src": "2795:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 310, + "id": 316, "nodeType": "ExpressionStatement", - "src": "2643:39:1" + "src": "2795:39:1" }, { "expression": { "argumentTypes": null, - "id": 314, + "id": 320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 311, + "id": 317, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2695:6:1", + "referencedDeclaration": 124, + "src": "2847:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4872,18 +4959,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 312, + "id": 318, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2704:10:1", + "referencedDeclaration": 116, + "src": "2856:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 313, + "id": 319, "isConstant": false, "isLValue": false, "isPure": true, @@ -4891,76 +4978,95 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2704:20:1", + "src": "2856:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2695:29:1", + "src": "2847:29:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 315, + "id": 321, "nodeType": "ExpressionStatement", - "src": "2695:29:1" + "src": "2847:29:1" } ] }, "documentation": null, - "id": 317, + "id": 323, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 302, + "id": 306, "modifierName": { "argumentTypes": null, - "id": 301, - "name": "onlySupervisor", + "id": 305, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "2617:14:1", + "referencedDeclaration": 831, + "src": "2755:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2617:14:1" + "src": "2755:13:1" + }, + { + "arguments": null, + "id": 308, + "modifierName": { + "argumentTypes": null, + "id": 307, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "2769:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2769:14:1" } ], "name": "resumeMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 300, + "id": 304, "nodeType": "ParameterList", "parameters": [], - "src": "2607:2:1" + "src": "2745:2:1" }, "payable": false, "returnParameters": { - "id": 303, + "id": 309, "nodeType": "ParameterList", "parameters": [], - "src": "2632:0:1" + "src": "2784:0:1" }, - "scope": 524, - "src": "2586:146:1", + "scope": 549, + "src": "2724:160:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 344, + "id": 352, "nodeType": "Block", - "src": "2796:160:1", + "src": "2962:160:1", "statements": [ { "expression": { @@ -4969,24 +5075,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 326, + "id": 334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 323, + "id": 331, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2815:6:1", + "referencedDeclaration": 124, + "src": "2981:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -4996,18 +5102,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 324, + "id": 332, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2825:10:1", + "referencedDeclaration": 116, + "src": "2991:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 325, + "id": 333, "isConstant": false, "isLValue": false, "isPure": true, @@ -5015,13 +5121,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2825:18:1", + "src": "2991:18:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2815:28:1", + "src": "2981:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5035,21 +5141,21 @@ "typeString": "bool" } ], - "id": 322, + "id": 330, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "2807:7:1", + "referencedDeclaration": 1293, + "src": "2973:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 327, + "id": 335, "isConstant": false, "isLValue": false, "isPure": false, @@ -5057,34 +5163,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2807:37:1", + "src": "2973:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 328, + "id": 336, "nodeType": "ExpressionStatement", - "src": "2807:37:1" + "src": "2973:37:1" }, { "expression": { "argumentTypes": null, - "id": 332, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 329, + "id": 337, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2865:6:1", + "referencedDeclaration": 124, + "src": "3031:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5094,18 +5200,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 330, + "id": 338, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "2874:10:1", + "referencedDeclaration": 116, + "src": "3040:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 331, + "id": 339, "isConstant": false, "isLValue": false, "isPure": true, @@ -5113,38 +5219,38 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2874:18:1", + "src": "3040:18:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "2865:27:1", + "src": "3031:27:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 333, + "id": 341, "nodeType": "ExpressionStatement", - "src": "2865:27:1" + "src": "3031:27:1" }, { "expression": { "argumentTypes": null, - "id": 336, + "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 334, + "id": 342, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2903:7:1", + "referencedDeclaration": 126, + "src": "3069:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5155,14 +5261,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 335, + "id": 343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2913:5:1", + "src": "3079:5:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5170,32 +5276,32 @@ }, "value": "false" }, - "src": "2903:15:1", + "src": "3069:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 337, + "id": 345, "nodeType": "ExpressionStatement", - "src": "2903:15:1" + "src": "3069:15:1" }, { "expression": { "argumentTypes": null, - "id": 342, + "id": 350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 338, + "id": 346, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2929:6:1", + "referencedDeclaration": 122, + "src": "3095:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5209,14 +5315,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 340, + "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2946:1:1", + "src": "3112:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5232,20 +5338,20 @@ "typeString": "int_const 0" } ], - "id": 339, + "id": 347, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2938:7:1", + "src": "3104:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 341, + "id": 349, "isConstant": false, "isLValue": false, "isPure": true, @@ -5253,76 +5359,95 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2938:10:1", + "src": "3104:10:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2929:19:1", + "src": "3095:19:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 343, + "id": 351, "nodeType": "ExpressionStatement", - "src": "2929:19:1" + "src": "3095:19:1" } ] }, "documentation": null, - "id": 345, + "id": 353, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 320, + "id": 326, "modifierName": { "argumentTypes": null, - "id": 319, - "name": "onlySupervisor", + "id": 325, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "2781:14:1", + "referencedDeclaration": 831, + "src": "2933:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2781:14:1" + "src": "2933:13:1" + }, + { + "arguments": null, + "id": 328, + "modifierName": { + "argumentTypes": null, + "id": 327, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "2947:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2947:14:1" } ], "name": "stopAndRemoveOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 318, + "id": 324, "nodeType": "ParameterList", "parameters": [], - "src": "2771:2:1" + "src": "2923:2:1" }, "payable": false, "returnParameters": { - "id": 321, + "id": 329, "nodeType": "ParameterList", "parameters": [], - "src": "2796:0:1" + "src": "2962:0:1" }, - "scope": 524, - "src": "2740:216:1", + "scope": 549, + "src": "2892:230:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 368, + "id": 378, "nodeType": "Block", - "src": "3031:133:1", + "src": "3211:133:1", "statements": [ { "expression": { @@ -5331,24 +5456,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 356, + "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 353, + "id": 363, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3050:6:1", + "referencedDeclaration": 124, + "src": "3230:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5358,18 +5483,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 354, + "id": 364, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3060:10:1", + "referencedDeclaration": 116, + "src": "3240:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 355, + "id": 365, "isConstant": false, "isLValue": false, "isPure": true, @@ -5377,13 +5502,13 @@ "memberName": "Stopped", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3060:18:1", + "src": "3240:18:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3050:28:1", + "src": "3230:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5397,21 +5522,21 @@ "typeString": "bool" } ], - "id": 352, + "id": 362, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3042:7:1", + "referencedDeclaration": 1293, + "src": "3222:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 357, + "id": 367, "isConstant": false, "isLValue": false, "isPure": false, @@ -5419,34 +5544,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3042:37:1", + "src": "3222:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 358, + "id": 368, "nodeType": "ExpressionStatement", - "src": "3042:37:1" + "src": "3222:37:1" }, { "expression": { "argumentTypes": null, - "id": 362, + "id": 372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 359, + "id": 369, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3092:6:1", + "referencedDeclaration": 124, + "src": "3272:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5456,18 +5581,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 360, + "id": 370, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3101:10:1", + "referencedDeclaration": 116, + "src": "3281:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 361, + "id": 371, "isConstant": false, "isLValue": false, "isPure": true, @@ -5475,38 +5600,38 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3101:20:1", + "src": "3281:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3092:29:1", + "src": "3272:29:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "id": 363, + "id": 373, "nodeType": "ExpressionStatement", - "src": "3092:29:1" + "src": "3272:29:1" }, { "expression": { "argumentTypes": null, - "id": 366, + "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 364, + "id": 374, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "3132:6:1", + "referencedDeclaration": 122, + "src": "3312:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5516,68 +5641,87 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 365, + "id": 375, "name": "newOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "3141:15:1", + "referencedDeclaration": 355, + "src": "3321:15:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3132:24:1", + "src": "3312:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 367, + "id": 377, "nodeType": "ExpressionStatement", - "src": "3132:24:1" + "src": "3312:24:1" } ] }, "documentation": null, - "id": 369, + "id": 379, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 350, + "id": 358, "modifierName": { "argumentTypes": null, - "id": 349, - "name": "onlySupervisor", + "id": 357, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "3016:14:1", + "referencedDeclaration": 831, + "src": "3182:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3016:14:1" + "src": "3182:13:1" + }, + { + "arguments": null, + "id": 360, + "modifierName": { + "argumentTypes": null, + "id": 359, + "name": "onlySupervisor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "3196:14:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3196:14:1" } ], "name": "resetMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 348, + "id": 356, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 347, + "id": 355, "name": "newOwnerAddress", "nodeType": "VariableDeclaration", - "scope": 369, - "src": "2984:23:1", + "scope": 379, + "src": "3150:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5585,10 +5729,10 @@ "typeString": "address" }, "typeName": { - "id": 346, + "id": 354, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2984:7:1", + "src": "3150:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5598,26 +5742,26 @@ "visibility": "internal" } ], - "src": "2983:25:1" + "src": "3149:25:1" }, "payable": false, "returnParameters": { - "id": 351, + "id": 361, "nodeType": "ParameterList", "parameters": [], - "src": "3031:0:1" + "src": "3211:0:1" }, - "scope": 524, - "src": "2964:200:1", + "scope": 549, + "src": "3130:214:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 390, + "id": 402, "nodeType": "Block", - "src": "3212:121:1", + "src": "3406:121:1", "statements": [ { "expression": { @@ -5626,24 +5770,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 378, + "id": 390, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 375, + "id": 387, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3231:6:1", + "referencedDeclaration": 124, + "src": "3425:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5653,18 +5797,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 376, + "id": 388, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3241:10:1", + "referencedDeclaration": 116, + "src": "3435:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 377, + "id": 389, "isConstant": false, "isLValue": false, "isPure": true, @@ -5672,13 +5816,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3241:20:1", + "src": "3435:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3231:30:1", + "src": "3425:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5692,21 +5836,21 @@ "typeString": "bool" } ], - "id": 374, + "id": 386, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3223:7:1", + "referencedDeclaration": 1293, + "src": "3417:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 379, + "id": 391, "isConstant": false, "isLValue": false, "isPure": false, @@ -5714,15 +5858,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3223:39:1", + "src": "3417:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 380, + "id": 392, "nodeType": "ExpressionStatement", - "src": "3223:39:1" + "src": "3417:39:1" }, { "expression": { @@ -5730,7 +5874,7 @@ "arguments": [ { "argumentTypes": null, - "id": 383, + "id": 395, "isConstant": false, "isLValue": false, "isPure": false, @@ -5738,15 +5882,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3281:8:1", + "src": "3475:8:1", "subExpression": { "argumentTypes": null, - "id": 382, + "id": 394, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3282:7:1", + "referencedDeclaration": 126, + "src": "3476:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5765,21 +5909,21 @@ "typeString": "bool" } ], - "id": 381, + "id": 393, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3273:7:1", + "referencedDeclaration": 1293, + "src": "3467:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 384, + "id": 396, "isConstant": false, "isLValue": false, "isPure": false, @@ -5787,32 +5931,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3273:17:1", + "src": "3467:17:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 385, + "id": 397, "nodeType": "ExpressionStatement", - "src": "3273:17:1" + "src": "3467:17:1" }, { "expression": { "argumentTypes": null, - "id": 388, + "id": 400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 386, + "id": 398, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3311:7:1", + "referencedDeclaration": 126, + "src": "3505:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5823,14 +5967,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 387, + "id": 399, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3321:4:1", + "src": "3515:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5838,70 +5982,89 @@ }, "value": "true" }, - "src": "3311:14:1", + "src": "3505:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 389, + "id": 401, "nodeType": "ExpressionStatement", - "src": "3311:14:1" + "src": "3505:14:1" } ] }, "documentation": null, - "id": 391, + "id": 403, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 372, + "id": 382, "modifierName": { "argumentTypes": null, - "id": 371, - "name": "onlyMiner", + "id": 381, + "name": "notTerminated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 188, - "src": "3202:9:1", + "referencedDeclaration": 831, + "src": "3382:13:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3202:9:1" + "src": "3382:13:1" + }, + { + "arguments": null, + "id": 384, + "modifierName": { + "argumentTypes": null, + "id": 383, + "name": "onlyMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "3396:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3396:9:1" } ], "name": "startMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 370, + "id": 380, "nodeType": "ParameterList", "parameters": [], - "src": "3192:2:1" + "src": "3372:2:1" }, "payable": false, "returnParameters": { - "id": 373, + "id": 385, "nodeType": "ParameterList", "parameters": [], - "src": "3212:0:1" + "src": "3406:0:1" }, - "scope": 524, - "src": "3172:161:1", + "scope": 549, + "src": "3352:175:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 411, + "id": 425, "nodeType": "Block", - "src": "3380:121:1", + "src": "3588:121:1", "statements": [ { "expression": { @@ -5910,24 +6073,24 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 400, + "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 397, + "id": 411, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3399:6:1", + "referencedDeclaration": 124, + "src": "3607:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -5937,18 +6100,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 398, + "id": 412, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3409:10:1", + "referencedDeclaration": 116, + "src": "3617:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 399, + "id": 413, "isConstant": false, "isLValue": false, "isPure": true, @@ -5956,13 +6119,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3409:20:1", + "src": "3617:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "3399:30:1", + "src": "3607:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5976,21 +6139,21 @@ "typeString": "bool" } ], - "id": 396, + "id": 410, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3391:7:1", + "referencedDeclaration": 1293, + "src": "3599:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 401, + "id": 415, "isConstant": false, "isLValue": false, "isPure": false, @@ -5998,15 +6161,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3391:39:1", + "src": "3599:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 402, + "id": 416, "nodeType": "ExpressionStatement", - "src": "3391:39:1" + "src": "3599:39:1" }, { "expression": { @@ -6014,223 +6177,12 @@ "arguments": [ { "argumentTypes": null, - "id": 404, + "id": 418, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3449:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 403, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "3441:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3441:16:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 406, - "nodeType": "ExpressionStatement", - "src": "3441:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 407, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3478:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3488:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3478:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 410, - "nodeType": "ExpressionStatement", - "src": "3478:15:1" - } - ] - }, - "documentation": null, - "id": 412, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 394, - "modifierName": { - "argumentTypes": null, - "id": 393, - "name": "onlyMiner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 188, - "src": "3370:9:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3370:9:1" - } - ], - "name": "stopMining", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 392, - "nodeType": "ParameterList", - "parameters": [], - "src": "3360:2:1" - }, - "payable": false, - "returnParameters": { - "id": 395, - "nodeType": "ParameterList", - "parameters": [], - "src": "3380:0:1" - }, - "scope": 524, - "src": "3341:160:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 485, - "nodeType": "Block", - "src": "3543:579:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - }, - "id": 421, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 418, - "name": "_state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3562:6:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 419, - "name": "MinerState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "3572:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", - "typeString": "type(enum AlgoMiner.MinerState)" - } - }, - "id": 420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Activated", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3572:20:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", - "typeString": "enum AlgoMiner.MinerState" - } - }, - "src": "3562:30:1", + "referencedDeclaration": 126, + "src": "3657:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6248,17 +6200,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3554:7:1", + "referencedDeclaration": 1293, + "src": "3649:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 422, + "id": 419, "isConstant": false, "isLValue": false, "isPure": false, @@ -6266,28 +6218,201 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3554:39:1", + "src": "3649:16:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 423, + "id": 420, "nodeType": "ExpressionStatement", - "src": "3554:39:1" + "src": "3649:16:1" }, + { + "expression": { + "argumentTypes": null, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 421, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3686:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3696:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3686:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 424, + "nodeType": "ExpressionStatement", + "src": "3686:15:1" + } + ] + }, + "documentation": null, + "id": 426, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 406, + "modifierName": { + "argumentTypes": null, + "id": 405, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "3564:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3564:13:1" + }, + { + "arguments": null, + "id": 408, + "modifierName": { + "argumentTypes": null, + "id": 407, + "name": "onlyMiner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "3578:9:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3578:9:1" + } + ], + "name": "stopMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 404, + "nodeType": "ParameterList", + "parameters": [], + "src": "3554:2:1" + }, + "payable": false, + "returnParameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [], + "src": "3588:0:1" + }, + "scope": 549, + "src": "3535:174:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 501, + "nodeType": "Block", + "src": "3765:579:1", + "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 425, - "name": "_mining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3612:7:1", + "commonType": { + "typeIdentifier": "t_enum$_MinerState_$116", + "typeString": "enum AlgoMiner.MinerState" + }, + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 434, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "3784:6:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$116", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 435, + "name": "MinerState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "3794:10:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", + "typeString": "type(enum AlgoMiner.MinerState)" + } + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Activated", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3794:20:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_MinerState_$116", + "typeString": "enum AlgoMiner.MinerState" + } + }, + "src": "3784:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6301,21 +6426,21 @@ "typeString": "bool" } ], - "id": 424, + "id": 433, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "3604:7:1", + "referencedDeclaration": 1293, + "src": "3776:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 426, + "id": 438, "isConstant": false, "isLValue": false, "isPure": false, @@ -6323,15 +6448,72 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3604:16:1", + "src": "3776:39:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 427, + "id": 439, "nodeType": "ExpressionStatement", - "src": "3604:16:1" + "src": "3776:39:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 441, + "name": "_mining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "3834:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 440, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "3826:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3826:16:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 443, + "nodeType": "ExpressionStatement", + "src": "3826:16:1" }, { "condition": { @@ -6340,19 +6522,19 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 430, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 428, + "id": 444, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3636:11:1", + "referencedDeclaration": 130, + "src": "3858:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6363,14 +6545,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 429, + "id": 445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3651:1:1", + "src": "3873:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6378,21 +6560,21 @@ }, "value": "0" }, - "src": "3636:16:1", + "src": "3858:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 464, + "id": 480, "nodeType": "Block", - "src": "3733:238:1", + "src": "3955:238:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 441, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, @@ -6400,15 +6582,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3748:13:1", + "src": "3970:13:1", "subExpression": { "argumentTypes": null, - "id": 440, + "id": 456, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3748:11:1", + "referencedDeclaration": 130, + "src": "3970:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6419,9 +6601,9 @@ "typeString": "uint16" } }, - "id": 442, + "id": 458, "nodeType": "ExpressionStatement", - "src": "3748:13:1" + "src": "3970:13:1" }, { "condition": { @@ -6430,19 +6612,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 448, + "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 443, + "id": 459, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3779:11:1", + "referencedDeclaration": 130, + "src": "4001:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6459,19 +6641,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 446, + "id": 462, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 444, + "id": 460, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 108, - "src": "3795:13:1", + "referencedDeclaration": 111, + "src": "4017:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6482,14 +6664,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 445, + "id": 461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3811:1:1", + "src": "4033:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6497,45 +6679,45 @@ }, "value": "1" }, - "src": "3795:17:1", + "src": "4017:17:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 447, + "id": 463, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3794:19:1", + "src": "4016:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3779:34:1", + "src": "4001:34:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 463, + "id": 479, "nodeType": "IfStatement", - "src": "3776:184:1", + "src": "3998:184:1", "trueBody": { - "id": 462, + "id": 478, "nodeType": "Block", - "src": "3815:145:1", + "src": "4037:145:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 450, + "id": 466, "isConstant": false, "isLValue": false, "isPure": false, @@ -6543,15 +6725,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3834:14:1", + "src": "4056:14:1", "subExpression": { "argumentTypes": null, - "id": 449, + "id": 465, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "3834:12:1", + "referencedDeclaration": 128, + "src": "4056:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6562,26 +6744,26 @@ "typeString": "uint8" } }, - "id": 451, + "id": 467, "nodeType": "ExpressionStatement", - "src": "3834:14:1" + "src": "4056:14:1" }, { "expression": { "argumentTypes": null, - "id": 454, + "id": 470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 452, + "id": 468, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3867:11:1", + "referencedDeclaration": 130, + "src": "4089:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6592,14 +6774,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 453, + "id": 469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3881:1:1", + "src": "4103:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6607,32 +6789,32 @@ }, "value": "1" }, - "src": "3867:15:1", + "src": "4089:15:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 455, + "id": 471, "nodeType": "ExpressionStatement", - "src": "3867:15:1" + "src": "4089:15:1" }, { "expression": { "argumentTypes": null, - "id": 460, + "id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 456, + "id": 472, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "3901:18:1", + "referencedDeclaration": 132, + "src": "4123:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6646,19 +6828,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 459, + "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 457, + "id": 473, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "3922:18:1", + "referencedDeclaration": 132, + "src": "4144:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6669,14 +6851,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 458, + "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3943:1:1", + "src": "4165:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6684,51 +6866,51 @@ }, "value": "2" }, - "src": "3922:22:1", + "src": "4144:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3901:43:1", + "src": "4123:43:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 461, + "id": 477, "nodeType": "ExpressionStatement", - "src": "3901:43:1" + "src": "4123:43:1" } ] } } ] }, - "id": 465, + "id": 481, "nodeType": "IfStatement", - "src": "3633:338:1", + "src": "3855:338:1", "trueBody": { - "id": 439, + "id": 455, "nodeType": "Block", - "src": "3654:73:1", + "src": "3876:73:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 433, + "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 431, + "id": 447, "name": "_currentYear", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "3669:12:1", + "referencedDeclaration": 128, + "src": "3891:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6739,14 +6921,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 432, + "id": 448, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3684:1:1", + "src": "3906:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6754,32 +6936,32 @@ }, "value": "1" }, - "src": "3669:16:1", + "src": "3891:16:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 434, + "id": 450, "nodeType": "ExpressionStatement", - "src": "3669:16:1" + "src": "3891:16:1" }, { "expression": { "argumentTypes": null, - "id": 437, + "id": 453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 435, + "id": 451, "name": "_currentDay", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3700:11:1", + "referencedDeclaration": 130, + "src": "3922:11:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6790,14 +6972,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 436, + "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3714:1:1", + "src": "3936:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6805,31 +6987,31 @@ }, "value": "1" }, - "src": "3700:15:1", + "src": "3922:15:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 438, + "id": 454, "nodeType": "ExpressionStatement", - "src": "3700:15:1" + "src": "3922:15:1" } ] } }, { "assignments": [ - 467 + 483 ], "declarations": [ { "constant": false, - "id": 467, + "id": 483, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 486, - "src": "3983:14:1", + "scope": 502, + "src": "4205:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6837,10 +7019,10 @@ "typeString": "uint256" }, "typeName": { - "id": 466, + "id": 482, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3983:7:1", + "src": "4205:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6850,26 +7032,26 @@ "visibility": "internal" } ], - "id": 471, + "id": 487, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 470, + "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 468, + "id": 484, "name": "_currentYearSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "4000:18:1", + "referencedDeclaration": 132, + "src": "4222:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6879,25 +7061,25 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 469, + "id": 485, "name": "DAYS_PER_YEAR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 108, - "src": "4021:13:1", + "referencedDeclaration": 111, + "src": "4243:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4000:34:1", + "src": "4222:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3983:51:1" + "src": "4205:51:1" }, { "expression": { @@ -6909,19 +7091,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 475, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 473, + "id": 489, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "4055:6:1", + "referencedDeclaration": 483, + "src": "4277:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6932,14 +7114,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 474, + "id": 490, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4064:1:1", + "src": "4286:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6947,7 +7129,7 @@ }, "value": "0" }, - "src": "4055:10:1", + "src": "4277:10:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6961,21 +7143,21 @@ "typeString": "bool" } ], - "id": 472, + "id": 488, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "4047:7:1", + "referencedDeclaration": 1293, + "src": "4269:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 476, + "id": 492, "isConstant": false, "isLValue": false, "isPure": false, @@ -6983,15 +7165,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4047:19:1", + "src": "4269:19:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 477, + "id": 493, "nodeType": "ExpressionStatement", - "src": "4047:19:1" + "src": "4269:19:1" }, { "expression": { @@ -6999,12 +7181,12 @@ "arguments": [ { "argumentTypes": null, - "id": 481, + "id": 497, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "4099:6:1", + "referencedDeclaration": 122, + "src": "4321:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7012,12 +7194,12 @@ }, { "argumentTypes": null, - "id": 482, + "id": 498, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "4107:6:1", + "referencedDeclaration": 483, + "src": "4329:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7037,32 +7219,32 @@ ], "expression": { "argumentTypes": null, - "id": 478, + "id": 494, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "4079:6:1", + "referencedDeclaration": 735, + "src": "4301:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 480, + "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1037, - "src": "4079:19:1", + "referencedDeclaration": 1156, + "src": "4301:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1012_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 483, + "id": 499, "isConstant": false, "isLValue": false, "isPure": false, @@ -7070,175 +7252,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4079:35:1", + "src": "4301:35:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 484, - "nodeType": "ExpressionStatement", - "src": "4079:35:1" - } - ] - }, - "documentation": null, - "id": 486, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 415, - "modifierName": { - "argumentTypes": null, - "id": 414, - "name": "onlySystem", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 639, - "src": "3532:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3532:10:1" - } - ], - "name": "mine", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 413, - "nodeType": "ParameterList", - "parameters": [], - "src": "3522:2:1" - }, - "payable": false, - "returnParameters": { - "id": 416, - "nodeType": "ParameterList", - "parameters": [], - "src": "3543:0:1" - }, - "scope": 524, - "src": "3509:613:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 493, - "nodeType": "Block", - "src": "4180:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 491, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4198:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 490, - "id": 492, - "nodeType": "Return", - "src": "4191:11:1" - } - ] - }, - "documentation": null, - "id": 494, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isAlgoMiner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 487, - "nodeType": "ParameterList", - "parameters": [], - "src": "4150:2:1" - }, - "payable": false, - "returnParameters": { - "id": 490, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 489, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 494, - "src": "4174:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 488, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4174:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4173:6:1" - }, - "scope": 524, - "src": "4130:80:1", - "stateMutability": "pure", - "superFunction": 705, - "visibility": "public" - }, - { - "body": { - "id": 501, - "nodeType": "Block", - "src": "4269:35:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 499, - "name": "_category", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "4287:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "functionReturnParameters": 498, "id": 500, - "nodeType": "Return", - "src": "4280:16:1" + "nodeType": "ExpressionStatement", + "src": "4301:35:1" } ] }, @@ -7246,28 +7268,299 @@ "id": 502, "implemented": true, "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 429, + "modifierName": { + "argumentTypes": null, + "id": 428, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 831, + "src": "3740:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3740:13:1" + }, + { + "arguments": null, + "id": 431, + "modifierName": { + "argumentTypes": null, + "id": 430, + "name": "onlySystem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 664, + "src": "3754:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3754:10:1" + } + ], + "name": "mine", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [], + "src": "3730:2:1" + }, + "payable": false, + "returnParameters": { + "id": 432, + "nodeType": "ParameterList", + "parameters": [], + "src": "3765:0:1" + }, + "scope": 549, + "src": "3717:627:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 510, + "nodeType": "Block", + "src": "4393:31:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 507, + "name": "_terminate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 779 + ], + "referencedDeclaration": 779, + "src": "4404:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4404:12:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 509, + "nodeType": "ExpressionStatement", + "src": "4404:12:1" + } + ] + }, + "documentation": null, + "id": 511, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 505, + "modifierName": { + "argumentTypes": null, + "id": 504, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "4380:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4380:12:1" + } + ], + "name": "terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 503, + "nodeType": "ParameterList", + "parameters": [], + "src": "4370:2:1" + }, + "payable": false, + "returnParameters": { + "id": 506, + "nodeType": "ParameterList", + "parameters": [], + "src": "4393:0:1" + }, + "scope": 549, + "src": "4352:72:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 518, + "nodeType": "Block", + "src": "4482:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4500:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 515, + "id": 517, + "nodeType": "Return", + "src": "4493:11:1" + } + ] + }, + "documentation": null, + "id": 519, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isAlgoMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [], + "src": "4452:2:1" + }, + "payable": false, + "returnParameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 514, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "4476:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 513, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4476:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4475:6:1" + }, + "scope": 549, + "src": "4432:80:1", + "stateMutability": "pure", + "superFunction": 787, + "visibility": "public" + }, + { + "body": { + "id": 526, + "nodeType": "Block", + "src": "4571:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 524, + "name": "_category", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "4589:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 523, + "id": 525, + "nodeType": "Return", + "src": "4582:16:1" + } + ] + }, + "documentation": null, + "id": 527, + "implemented": true, + "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 495, + "id": 520, "nodeType": "ParameterList", "parameters": [], - "src": "4238:2:1" + "src": "4540:2:1" }, "payable": false, "returnParameters": { - "id": 498, + "id": 523, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 497, + "id": 522, "name": "", "nodeType": "VariableDeclaration", - "scope": 502, - "src": "4262:5:1", + "scope": 527, + "src": "4564:5:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7275,10 +7568,10 @@ "typeString": "uint8" }, "typeName": { - "id": 496, + "id": 521, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4262:5:1", + "src": "4564:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7288,19 +7581,19 @@ "visibility": "internal" } ], - "src": "4261:7:1" + "src": "4563:7:1" }, - "scope": 524, - "src": "4218:86:1", + "scope": 549, + "src": "4520:86:1", "stateMutability": "view", - "superFunction": 710, + "superFunction": 792, "visibility": "public" }, { "body": { - "id": 514, + "id": 539, "nodeType": "Block", - "src": "4359:67:1", + "src": "4661:67:1", "statements": [ { "expression": { @@ -7309,7 +7602,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 512, + "id": 537, "isConstant": false, "isLValue": false, "isPure": false, @@ -7317,24 +7610,24 @@ "leftExpression": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" }, - "id": 510, + "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 507, + "id": 532, "name": "_state", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "4377:6:1", + "referencedDeclaration": 124, + "src": "4679:6:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, @@ -7344,18 +7637,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 508, + "id": 533, "name": "MinerState", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "4387:10:1", + "referencedDeclaration": 116, + "src": "4689:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_MinerState_$113_$", + "typeIdentifier": "t_type$_t_enum$_MinerState_$116_$", "typeString": "type(enum AlgoMiner.MinerState)" } }, - "id": 509, + "id": 534, "isConstant": false, "isLValue": false, "isPure": true, @@ -7363,13 +7656,13 @@ "memberName": "Activated", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4387:20:1", + "src": "4689:20:1", "typeDescriptions": { - "typeIdentifier": "t_enum$_MinerState_$113", + "typeIdentifier": "t_enum$_MinerState_$116", "typeString": "enum AlgoMiner.MinerState" } }, - "src": "4377:30:1", + "src": "4679:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7379,32 +7672,32 @@ "operator": "&&", "rightExpression": { "argumentTypes": null, - "id": 511, + "id": 536, "name": "_mining", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "4411:7:1", + "referencedDeclaration": 126, + "src": "4713:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4377:41:1", + "src": "4679:41:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 506, - "id": 513, + "functionReturnParameters": 531, + "id": 538, "nodeType": "Return", - "src": "4370:48:1" + "src": "4672:48:1" } ] }, "documentation": null, - "id": 515, + "id": 540, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7412,23 +7705,23 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 503, + "id": 528, "nodeType": "ParameterList", "parameters": [], - "src": "4329:2:1" + "src": "4631:2:1" }, "payable": false, "returnParameters": { - "id": 506, + "id": 531, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 505, + "id": 530, "name": "", "nodeType": "VariableDeclaration", - "scope": 515, - "src": "4353:4:1", + "scope": 540, + "src": "4655:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7436,10 +7729,10 @@ "typeString": "bool" }, "typeName": { - "id": 504, + "id": 529, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4353:4:1", + "src": "4655:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7449,43 +7742,43 @@ "visibility": "internal" } ], - "src": "4352:6:1" + "src": "4654:6:1" }, - "scope": 524, - "src": "4312:114:1", + "scope": 549, + "src": "4614:114:1", "stateMutability": "view", - "superFunction": 715, + "superFunction": 797, "visibility": "public" }, { "body": { - "id": 522, + "id": 547, "nodeType": "Block", - "src": "4484:32:1", + "src": "4786:32:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 520, + "id": 545, "name": "_miner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "4502:6:1", + "referencedDeclaration": 122, + "src": "4804:6:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 519, - "id": 521, + "functionReturnParameters": 544, + "id": 546, "nodeType": "Return", - "src": "4495:13:1" + "src": "4797:13:1" } ] }, "documentation": null, - "id": 523, + "id": 548, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7493,23 +7786,23 @@ "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 516, + "id": 541, "nodeType": "ParameterList", "parameters": [], - "src": "4451:2:1" + "src": "4753:2:1" }, "payable": false, "returnParameters": { - "id": 519, + "id": 544, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 518, + "id": 543, "name": "", "nodeType": "VariableDeclaration", - "scope": 523, - "src": "4475:7:1", + "scope": 548, + "src": "4777:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7517,10 +7810,10 @@ "typeString": "address" }, "typeName": { - "id": 517, + "id": 542, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4475:7:1", + "src": "4777:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7530,20 +7823,20 @@ "visibility": "internal" } ], - "src": "4474:9:1" + "src": "4776:9:1" }, - "scope": 524, - "src": "4434:82:1", + "scope": 549, + "src": "4736:82:1", "stateMutability": "view", - "superFunction": 720, + "superFunction": 802, "visibility": "public" } ], - "scope": 525, - "src": "558:3961:1" + "scope": 550, + "src": "592:4229:1" } ], - "src": "0:4521:1" + "src": "0:4823:1" }, "id": 1 }, @@ -7552,14 +7845,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSupervisorRole.sol", "exportedSymbols": { "AlgoSupervisorRole": [ - 611 + 636 ] }, - "id": 612, + "id": 637, "nodeType": "SourceUnit", "nodes": [ { - "id": 526, + "id": 551, "literals": [ "solidity", "^", @@ -7572,10 +7865,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 527, + "id": 552, "nodeType": "ImportDirective", - "scope": 612, - "sourceUnit": 816, + "scope": 637, + "sourceUnit": 935, "src": "28:189:2", "symbolAliases": [], "unitAlias": "" @@ -7586,24 +7879,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 611, + "id": 636, "linearizedBaseContracts": [ - 611 + 636 ], "name": "AlgoSupervisorRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 530, + "id": 555, "libraryName": { "contractScope": null, - "id": 528, + "id": 553, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 815, + "referencedDeclaration": 934, "src": "262:5:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$815", + "typeIdentifier": "t_contract$_Roles_$934", "typeString": "library Roles" } }, @@ -7611,39 +7904,39 @@ "src": "256:27:2", "typeName": { "contractScope": null, - "id": 529, + "id": 554, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "272:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 532, + "id": 557, "name": "_supervisors", "nodeType": "VariableDeclaration", - "scope": 611, + "scope": 636, "src": "291:31:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 531, + "id": 556, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "291:10:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -7652,7 +7945,7 @@ }, { "body": { - "id": 540, + "id": 565, "nodeType": "Block", "src": "355:45:2", "statements": [ @@ -7664,18 +7957,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 536, + "id": 561, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "381:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 537, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -7697,18 +7990,18 @@ "typeString": "address" } ], - "id": 535, + "id": 560, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 598, + "referencedDeclaration": 623, "src": "366:14:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 538, + "id": 563, "isConstant": false, "isLValue": false, "isPure": false, @@ -7722,14 +8015,14 @@ "typeString": "tuple()" } }, - "id": 539, + "id": 564, "nodeType": "ExpressionStatement", "src": "366:26:2" } ] }, "documentation": null, - "id": 541, + "id": 566, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -7737,19 +8030,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 533, + "id": 558, "nodeType": "ParameterList", "parameters": [], "src": "343:2:2" }, "payable": false, "returnParameters": { - "id": 534, + "id": 559, "nodeType": "ParameterList", "parameters": [], "src": "355:0:2" }, - "scope": 611, + "scope": 636, "src": "331:69:2", "stateMutability": "nonpayable", "superFunction": null, @@ -7757,7 +8050,7 @@ }, { "body": { - "id": 551, + "id": 576, "nodeType": "Block", "src": "434:64:2", "statements": [ @@ -7772,18 +8065,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 545, + "id": 570, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "466:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 546, + "id": 571, "isConstant": false, "isLValue": false, "isPure": false, @@ -7805,18 +8098,18 @@ "typeString": "address" } ], - "id": 544, + "id": 569, "name": "isSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 565, + "referencedDeclaration": 590, "src": "453:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 547, + "id": 572, "isConstant": false, "isLValue": false, "isPure": false, @@ -7838,21 +8131,21 @@ "typeString": "bool" } ], - "id": 543, + "id": 568, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, + "referencedDeclaration": 1293, "src": "445:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 548, + "id": 573, "isConstant": false, "isLValue": false, "isPure": false, @@ -7866,23 +8159,23 @@ "typeString": "tuple()" } }, - "id": 549, + "id": 574, "nodeType": "ExpressionStatement", "src": "445:33:2" }, { - "id": 550, + "id": 575, "nodeType": "PlaceholderStatement", "src": "489:1:2" } ] }, "documentation": null, - "id": 552, + "id": 577, "name": "onlySupervisor", "nodeType": "ModifierDefinition", "parameters": { - "id": 542, + "id": 567, "nodeType": "ParameterList", "parameters": [], "src": "431:2:2" @@ -7892,7 +8185,7 @@ }, { "body": { - "id": 564, + "id": 589, "nodeType": "Block", "src": "572:51:2", "statements": [ @@ -7902,11 +8195,11 @@ "arguments": [ { "argumentTypes": null, - "id": 561, + "id": 586, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 554, + "referencedDeclaration": 579, "src": "607:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7923,32 +8216,32 @@ ], "expression": { "argumentTypes": null, - "id": 559, + "id": 584, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 532, + "referencedDeclaration": 557, "src": "590:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 560, + "id": 585, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 814, + "referencedDeclaration": 933, "src": "590:16:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 562, + "id": 587, "isConstant": false, "isLValue": false, "isPure": false, @@ -7962,15 +8255,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 558, - "id": 563, + "functionReturnParameters": 583, + "id": 588, "nodeType": "Return", "src": "583:32:2" } ] }, "documentation": null, - "id": 565, + "id": 590, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7978,15 +8271,15 @@ "name": "isSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 555, + "id": 580, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 554, + "id": 579, "name": "account", "nodeType": "VariableDeclaration", - "scope": 565, + "scope": 590, "src": "528:15:2", "stateVariable": false, "storageLocation": "default", @@ -7995,7 +8288,7 @@ "typeString": "address" }, "typeName": { - "id": 553, + "id": 578, "name": "address", "nodeType": "ElementaryTypeName", "src": "528:7:2", @@ -8012,15 +8305,15 @@ }, "payable": false, "returnParameters": { - "id": 558, + "id": 583, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 557, + "id": 582, "name": "", "nodeType": "VariableDeclaration", - "scope": 565, + "scope": 590, "src": "566:4:2", "stateVariable": false, "storageLocation": "default", @@ -8029,7 +8322,7 @@ "typeString": "bool" }, "typeName": { - "id": 556, + "id": 581, "name": "bool", "nodeType": "ElementaryTypeName", "src": "566:4:2", @@ -8044,7 +8337,7 @@ ], "src": "565:6:2" }, - "scope": 611, + "scope": 636, "src": "506:117:2", "stateMutability": "view", "superFunction": null, @@ -8052,7 +8345,7 @@ }, { "body": { - "id": 576, + "id": 601, "nodeType": "Block", "src": "693:42:2", "statements": [ @@ -8062,11 +8355,11 @@ "arguments": [ { "argumentTypes": null, - "id": 573, + "id": 598, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 567, + "referencedDeclaration": 592, "src": "719:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8081,18 +8374,18 @@ "typeString": "address" } ], - "id": 572, + "id": 597, "name": "_addSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 598, + "referencedDeclaration": 623, "src": "704:14:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 574, + "id": 599, "isConstant": false, "isLValue": false, "isPure": false, @@ -8106,28 +8399,28 @@ "typeString": "tuple()" } }, - "id": 575, + "id": 600, "nodeType": "ExpressionStatement", "src": "704:23:2" } ] }, "documentation": null, - "id": 577, + "id": 602, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 570, + "id": 595, "modifierName": { "argumentTypes": null, - "id": 569, + "id": 594, "name": "onlySupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 552, + "referencedDeclaration": 577, "src": "678:14:2", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -8141,15 +8434,15 @@ "name": "addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 568, + "id": 593, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 567, + "id": 592, "name": "account", "nodeType": "VariableDeclaration", - "scope": 577, + "scope": 602, "src": "654:15:2", "stateVariable": false, "storageLocation": "default", @@ -8158,7 +8451,7 @@ "typeString": "address" }, "typeName": { - "id": 566, + "id": 591, "name": "address", "nodeType": "ElementaryTypeName", "src": "654:7:2", @@ -8175,12 +8468,12 @@ }, "payable": false, "returnParameters": { - "id": 571, + "id": 596, "nodeType": "ParameterList", "parameters": [], "src": "693:0:2" }, - "scope": 611, + "scope": 636, "src": "631:104:2", "stateMutability": "nonpayable", "superFunction": null, @@ -8188,7 +8481,7 @@ }, { "body": { - "id": 585, + "id": 610, "nodeType": "Block", "src": "780:48:2", "statements": [ @@ -8200,18 +8493,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 581, + "id": 606, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "809:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 582, + "id": 607, "isConstant": false, "isLValue": false, "isPure": false, @@ -8233,18 +8526,18 @@ "typeString": "address" } ], - "id": 580, + "id": 605, "name": "_removeSupervisor", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 610, + "referencedDeclaration": 635, "src": "791:17:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 583, + "id": 608, "isConstant": false, "isLValue": false, "isPure": false, @@ -8258,14 +8551,14 @@ "typeString": "tuple()" } }, - "id": 584, + "id": 609, "nodeType": "ExpressionStatement", "src": "791:29:2" } ] }, "documentation": null, - "id": 586, + "id": 611, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8273,19 +8566,19 @@ "name": "renounceSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 578, + "id": 603, "nodeType": "ParameterList", "parameters": [], "src": "770:2:2" }, "payable": false, "returnParameters": { - "id": 579, + "id": 604, "nodeType": "ParameterList", "parameters": [], "src": "780:0:2" }, - "scope": 611, + "scope": 636, "src": "743:85:2", "stateMutability": "nonpayable", "superFunction": null, @@ -8293,7 +8586,7 @@ }, { "body": { - "id": 597, + "id": 622, "nodeType": "Block", "src": "886:44:2", "statements": [ @@ -8303,11 +8596,11 @@ "arguments": [ { "argumentTypes": null, - "id": 594, + "id": 619, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, + "referencedDeclaration": 613, "src": "914:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8324,32 +8617,32 @@ ], "expression": { "argumentTypes": null, - "id": 591, + "id": 616, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 532, + "referencedDeclaration": 557, "src": "897:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 593, + "id": 618, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 760, + "referencedDeclaration": 879, "src": "897:16:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 595, + "id": 620, "isConstant": false, "isLValue": false, "isPure": false, @@ -8363,14 +8656,14 @@ "typeString": "tuple()" } }, - "id": 596, + "id": 621, "nodeType": "ExpressionStatement", "src": "897:25:2" } ] }, "documentation": null, - "id": 598, + "id": 623, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8378,15 +8671,15 @@ "name": "_addSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 589, + "id": 614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 588, + "id": 613, "name": "account", "nodeType": "VariableDeclaration", - "scope": 598, + "scope": 623, "src": "860:15:2", "stateVariable": false, "storageLocation": "default", @@ -8395,7 +8688,7 @@ "typeString": "address" }, "typeName": { - "id": 587, + "id": 612, "name": "address", "nodeType": "ElementaryTypeName", "src": "860:7:2", @@ -8412,12 +8705,12 @@ }, "payable": false, "returnParameters": { - "id": 590, + "id": 615, "nodeType": "ParameterList", "parameters": [], "src": "886:0:2" }, - "scope": 611, + "scope": 636, "src": "836:94:2", "stateMutability": "nonpayable", "superFunction": null, @@ -8425,7 +8718,7 @@ }, { "body": { - "id": 609, + "id": 634, "nodeType": "Block", "src": "991:47:2", "statements": [ @@ -8435,11 +8728,11 @@ "arguments": [ { "argumentTypes": null, - "id": 606, + "id": 631, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 600, + "referencedDeclaration": 625, "src": "1022:7:2", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8456,32 +8749,32 @@ ], "expression": { "argumentTypes": null, - "id": 603, + "id": 628, "name": "_supervisors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 532, + "referencedDeclaration": 557, "src": "1002:12:2", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 605, + "id": 630, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 791, + "referencedDeclaration": 910, "src": "1002:19:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 607, + "id": 632, "isConstant": false, "isLValue": false, "isPure": false, @@ -8495,14 +8788,14 @@ "typeString": "tuple()" } }, - "id": 608, + "id": 633, "nodeType": "ExpressionStatement", "src": "1002:28:2" } ] }, "documentation": null, - "id": 610, + "id": 635, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8510,15 +8803,15 @@ "name": "_removeSupervisor", "nodeType": "FunctionDefinition", "parameters": { - "id": 601, + "id": 626, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 600, + "id": 625, "name": "account", "nodeType": "VariableDeclaration", - "scope": 610, + "scope": 635, "src": "965:15:2", "stateVariable": false, "storageLocation": "default", @@ -8527,7 +8820,7 @@ "typeString": "address" }, "typeName": { - "id": 599, + "id": 624, "name": "address", "nodeType": "ElementaryTypeName", "src": "965:7:2", @@ -8544,19 +8837,19 @@ }, "payable": false, "returnParameters": { - "id": 602, + "id": 627, "nodeType": "ParameterList", "parameters": [], "src": "991:0:2" }, - "scope": 611, + "scope": 636, "src": "938:100:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 612, + "scope": 637, "src": "221:820:2" } ], @@ -8569,14 +8862,14 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoSystemRole.sol", "exportedSymbols": { "AlgoSystemRole": [ - 698 + 723 ] }, - "id": 699, + "id": 724, "nodeType": "SourceUnit", "nodes": [ { - "id": 613, + "id": 638, "literals": [ "solidity", "^", @@ -8589,10 +8882,10 @@ { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "id": 614, + "id": 639, "nodeType": "ImportDirective", - "scope": 699, - "sourceUnit": 816, + "scope": 724, + "sourceUnit": 935, "src": "28:189:3", "symbolAliases": [], "unitAlias": "" @@ -8603,24 +8896,24 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 698, + "id": 723, "linearizedBaseContracts": [ - 698 + 723 ], "name": "AlgoSystemRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 617, + "id": 642, "libraryName": { "contractScope": null, - "id": 615, + "id": 640, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 815, + "referencedDeclaration": 934, "src": "258:5:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$815", + "typeIdentifier": "t_contract$_Roles_$934", "typeString": "library Roles" } }, @@ -8628,39 +8921,39 @@ "src": "252:27:3", "typeName": { "contractScope": null, - "id": 616, + "id": 641, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "268:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } } }, { "constant": false, - "id": 619, + "id": 644, "name": "_systemMembers", "nodeType": "VariableDeclaration", - "scope": 698, + "scope": 723, "src": "287:33:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 618, + "id": 643, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, + "referencedDeclaration": 847, "src": "287:10:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -8669,7 +8962,7 @@ }, { "body": { - "id": 627, + "id": 652, "nodeType": "Block", "src": "353:41:3", "statements": [ @@ -8681,18 +8974,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 623, + "id": 648, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "375:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 624, + "id": 649, "isConstant": false, "isLValue": false, "isPure": false, @@ -8714,18 +9007,18 @@ "typeString": "address" } ], - "id": 622, + "id": 647, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 710, "src": "364:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 625, + "id": 650, "isConstant": false, "isLValue": false, "isPure": false, @@ -8739,14 +9032,14 @@ "typeString": "tuple()" } }, - "id": 626, + "id": 651, "nodeType": "ExpressionStatement", "src": "364:22:3" } ] }, "documentation": null, - "id": 628, + "id": 653, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -8754,19 +9047,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 620, + "id": 645, "nodeType": "ParameterList", "parameters": [], "src": "341:2:3" }, "payable": false, "returnParameters": { - "id": 621, + "id": 646, "nodeType": "ParameterList", "parameters": [], "src": "353:0:3" }, - "scope": 698, + "scope": 723, "src": "329:65:3", "stateMutability": "nonpayable", "superFunction": null, @@ -8774,7 +9067,7 @@ }, { "body": { - "id": 638, + "id": 663, "nodeType": "Block", "src": "424:60:3", "statements": [ @@ -8789,18 +9082,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 632, + "id": 657, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "452:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 633, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, @@ -8822,18 +9115,18 @@ "typeString": "address" } ], - "id": 631, + "id": 656, "name": "isSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 652, + "referencedDeclaration": 677, "src": "443:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 634, + "id": 659, "isConstant": false, "isLValue": false, "isPure": false, @@ -8855,21 +9148,21 @@ "typeString": "bool" } ], - "id": 630, + "id": 655, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, + "referencedDeclaration": 1293, "src": "435:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 635, + "id": 660, "isConstant": false, "isLValue": false, "isPure": false, @@ -8883,23 +9176,23 @@ "typeString": "tuple()" } }, - "id": 636, + "id": 661, "nodeType": "ExpressionStatement", "src": "435:29:3" }, { - "id": 637, + "id": 662, "nodeType": "PlaceholderStatement", "src": "475:1:3" } ] }, "documentation": null, - "id": 639, + "id": 664, "name": "onlySystem", "nodeType": "ModifierDefinition", "parameters": { - "id": 629, + "id": 654, "nodeType": "ParameterList", "parameters": [], "src": "421:2:3" @@ -8909,7 +9202,7 @@ }, { "body": { - "id": 651, + "id": 676, "nodeType": "Block", "src": "554:53:3", "statements": [ @@ -8919,11 +9212,11 @@ "arguments": [ { "argumentTypes": null, - "id": 648, + "id": 673, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 641, + "referencedDeclaration": 666, "src": "591:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8940,32 +9233,32 @@ ], "expression": { "argumentTypes": null, - "id": 646, + "id": 671, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 619, + "referencedDeclaration": 644, "src": "572:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 647, + "id": 672, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 814, + "referencedDeclaration": 933, "src": "572:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 649, + "id": 674, "isConstant": false, "isLValue": false, "isPure": false, @@ -8979,15 +9272,15 @@ "typeString": "bool" } }, - "functionReturnParameters": 645, - "id": 650, + "functionReturnParameters": 670, + "id": 675, "nodeType": "Return", "src": "565:34:3" } ] }, "documentation": null, - "id": 652, + "id": 677, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8995,15 +9288,15 @@ "name": "isSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 642, + "id": 667, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 641, + "id": 666, "name": "account", "nodeType": "VariableDeclaration", - "scope": 652, + "scope": 677, "src": "510:15:3", "stateVariable": false, "storageLocation": "default", @@ -9012,7 +9305,7 @@ "typeString": "address" }, "typeName": { - "id": 640, + "id": 665, "name": "address", "nodeType": "ElementaryTypeName", "src": "510:7:3", @@ -9029,15 +9322,15 @@ }, "payable": false, "returnParameters": { - "id": 645, + "id": 670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 644, + "id": 669, "name": "", "nodeType": "VariableDeclaration", - "scope": 652, + "scope": 677, "src": "548:4:3", "stateVariable": false, "storageLocation": "default", @@ -9046,7 +9339,7 @@ "typeString": "bool" }, "typeName": { - "id": 643, + "id": 668, "name": "bool", "nodeType": "ElementaryTypeName", "src": "548:4:3", @@ -9061,7 +9354,7 @@ ], "src": "547:6:3" }, - "scope": 698, + "scope": 723, "src": "492:115:3", "stateMutability": "view", "superFunction": null, @@ -9069,7 +9362,7 @@ }, { "body": { - "id": 663, + "id": 688, "nodeType": "Block", "src": "669:38:3", "statements": [ @@ -9079,11 +9372,11 @@ "arguments": [ { "argumentTypes": null, - "id": 660, + "id": 685, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 654, + "referencedDeclaration": 679, "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9098,18 +9391,18 @@ "typeString": "address" } ], - "id": 659, + "id": 684, "name": "_addSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 685, + "referencedDeclaration": 710, "src": "680:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 661, + "id": 686, "isConstant": false, "isLValue": false, "isPure": false, @@ -9123,28 +9416,28 @@ "typeString": "tuple()" } }, - "id": 662, + "id": 687, "nodeType": "ExpressionStatement", "src": "680:19:3" } ] }, "documentation": null, - "id": 664, + "id": 689, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 657, + "id": 682, "modifierName": { "argumentTypes": null, - "id": 656, + "id": 681, "name": "onlySystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 639, + "referencedDeclaration": 664, "src": "658:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -9158,15 +9451,15 @@ "name": "addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 655, + "id": 680, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 654, + "id": 679, "name": "account", "nodeType": "VariableDeclaration", - "scope": 664, + "scope": 689, "src": "634:15:3", "stateVariable": false, "storageLocation": "default", @@ -9175,7 +9468,7 @@ "typeString": "address" }, "typeName": { - "id": 653, + "id": 678, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:3", @@ -9192,12 +9485,12 @@ }, "payable": false, "returnParameters": { - "id": 658, + "id": 683, "nodeType": "ParameterList", "parameters": [], "src": "669:0:3" }, - "scope": 698, + "scope": 723, "src": "615:92:3", "stateMutability": "nonpayable", "superFunction": null, @@ -9205,7 +9498,7 @@ }, { "body": { - "id": 672, + "id": 697, "nodeType": "Block", "src": "748:44:3", "statements": [ @@ -9217,18 +9510,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 668, + "id": 693, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, + "referencedDeclaration": 1290, "src": "773:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 669, + "id": 694, "isConstant": false, "isLValue": false, "isPure": false, @@ -9250,18 +9543,18 @@ "typeString": "address" } ], - "id": 667, + "id": 692, "name": "_removeSystem", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 697, + "referencedDeclaration": 722, "src": "759:13:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 670, + "id": 695, "isConstant": false, "isLValue": false, "isPure": false, @@ -9275,14 +9568,14 @@ "typeString": "tuple()" } }, - "id": 671, + "id": 696, "nodeType": "ExpressionStatement", "src": "759:25:3" } ] }, "documentation": null, - "id": 673, + "id": 698, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9290,19 +9583,19 @@ "name": "renounceSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 665, + "id": 690, "nodeType": "ParameterList", "parameters": [], "src": "738:2:3" }, "payable": false, "returnParameters": { - "id": 666, + "id": 691, "nodeType": "ParameterList", "parameters": [], "src": "748:0:3" }, - "scope": 698, + "scope": 723, "src": "715:77:3", "stateMutability": "nonpayable", "superFunction": null, @@ -9310,7 +9603,7 @@ }, { "body": { - "id": 684, + "id": 709, "nodeType": "Block", "src": "846:46:3", "statements": [ @@ -9320,11 +9613,11 @@ "arguments": [ { "argumentTypes": null, - "id": 681, + "id": 706, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 675, + "referencedDeclaration": 700, "src": "876:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9341,32 +9634,32 @@ ], "expression": { "argumentTypes": null, - "id": 678, + "id": 703, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 619, + "referencedDeclaration": 644, "src": "857:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 680, + "id": 705, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 760, + "referencedDeclaration": 879, "src": "857:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 682, + "id": 707, "isConstant": false, "isLValue": false, "isPure": false, @@ -9380,14 +9673,14 @@ "typeString": "tuple()" } }, - "id": 683, + "id": 708, "nodeType": "ExpressionStatement", "src": "857:27:3" } ] }, "documentation": null, - "id": 685, + "id": 710, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9395,15 +9688,15 @@ "name": "_addSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 676, + "id": 701, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 675, + "id": 700, "name": "account", "nodeType": "VariableDeclaration", - "scope": 685, + "scope": 710, "src": "820:15:3", "stateVariable": false, "storageLocation": "default", @@ -9412,7 +9705,7 @@ "typeString": "address" }, "typeName": { - "id": 674, + "id": 699, "name": "address", "nodeType": "ElementaryTypeName", "src": "820:7:3", @@ -9429,12 +9722,12 @@ }, "payable": false, "returnParameters": { - "id": 677, + "id": 702, "nodeType": "ParameterList", "parameters": [], "src": "846:0:3" }, - "scope": 698, + "scope": 723, "src": "800:92:3", "stateMutability": "nonpayable", "superFunction": null, @@ -9442,7 +9735,7 @@ }, { "body": { - "id": 696, + "id": 721, "nodeType": "Block", "src": "949:49:3", "statements": [ @@ -9452,11 +9745,11 @@ "arguments": [ { "argumentTypes": null, - "id": 693, + "id": 718, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 687, + "referencedDeclaration": 712, "src": "982:7:3", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9473,32 +9766,32 @@ ], "expression": { "argumentTypes": null, - "id": 690, + "id": 715, "name": "_systemMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 619, + "referencedDeclaration": 644, "src": "960:14:3", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage", + "typeIdentifier": "t_struct$_Role_$847_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 692, + "id": 717, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 791, + "referencedDeclaration": 910, "src": "960:21:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$728_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$847_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 694, + "id": 719, "isConstant": false, "isLValue": false, "isPure": false, @@ -9512,14 +9805,14 @@ "typeString": "tuple()" } }, - "id": 695, + "id": 720, "nodeType": "ExpressionStatement", "src": "960:30:3" } ] }, "documentation": null, - "id": 697, + "id": 722, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9527,15 +9820,15 @@ "name": "_removeSystem", "nodeType": "FunctionDefinition", "parameters": { - "id": 688, + "id": 713, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 687, + "id": 712, "name": "account", "nodeType": "VariableDeclaration", - "scope": 697, + "scope": 722, "src": "923:15:3", "stateVariable": false, "storageLocation": "default", @@ -9544,7 +9837,7 @@ "typeString": "address" }, "typeName": { - "id": 686, + "id": 711, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:3", @@ -9561,19 +9854,19 @@ }, "payable": false, "returnParameters": { - "id": 689, + "id": 714, "nodeType": "ParameterList", "parameters": [], "src": "949:0:3" }, - "scope": 698, + "scope": 723, "src": "900:98:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 699, + "scope": 724, "src": "221:780:3" } ], @@ -9581,19 +9874,19 @@ }, "id": 3 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { - "IAlgoMiner": [ - 721 + "ERC20TokenHolder": [ + 780 ] }, - "id": 722, + "id": 781, "nodeType": "SourceUnit", "nodes": [ { - "id": 700, + "id": 725, "literals": [ "solidity", "0.4", @@ -9602,15 +9895,709 @@ "nodeType": "PragmaDirective", "src": "0:23:4" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 726, + "nodeType": "ImportDirective", + "scope": 781, + "sourceUnit": 1132, + "src": "27:195:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 727, + "nodeType": "ImportDirective", + "scope": 781, + "sourceUnit": 1276, + "src": "224:198:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "file": "./Terminable.sol", + "id": 728, + "nodeType": "ImportDirective", + "scope": 781, + "sourceUnit": 841, + "src": "426:26:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 729, + "name": "Terminable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 840, + "src": "485:10:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Terminable_$840", + "typeString": "contract Terminable" + } + }, + "id": 730, + "nodeType": "InheritanceSpecifier", + "src": "485:10:4" + } + ], + "contractDependencies": [ + 840 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 780, + "linearizedBaseContracts": [ + 780, + 840 + ], + "name": "ERC20TokenHolder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 733, + "libraryName": { + "contractScope": null, + "id": 731, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1275, + "src": "509:9:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1275", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "503:27:4", + "typeName": { + "contractScope": null, + "id": 732, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "523:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 735, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 780, + "src": "538:22:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 734, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "538:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 748, + "nodeType": "Block", + "src": "625:48:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 742, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "636:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 744, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "652:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 743, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1131, + "src": "645:6:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1131_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "645:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "src": "636:29:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 747, + "nodeType": "ExpressionStatement", + "src": "636:29:4" + } + ] + }, + "documentation": null, + "id": 749, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 740, + "modifierName": { + "argumentTypes": null, + "id": 739, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "603:10:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$840_$", + "typeString": "type(contract Terminable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "603:12:4" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 737, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "581:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "580:22:4" + }, + "payable": false, + "returnParameters": { + "id": 741, + "nodeType": "ParameterList", + "parameters": [], + "src": "625:0:4" + }, + "scope": 780, + "src": "569:104:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 778, + "nodeType": "Block", + "src": "712:214:4", + "statements": [ + { + "assignments": [ + 753 + ], + "declarations": [ + { + "constant": false, + "id": 753, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 779, + "src": "723:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "723:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 760, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 757, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1317, + "src": "773:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeString": "contract ERC20TokenHolder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$780", + "typeString": "contract ERC20TokenHolder" + } + ], + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "765:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "765:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 754, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "748:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1076, + "src": "748:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "723:56:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 761, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "793:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "810:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "793:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 772, + "nodeType": "IfStatement", + "src": "790:95:4", + "trueBody": { + "id": 771, + "nodeType": "Block", + "src": "813:72:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 767, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "848:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 768, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "858:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 764, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "828:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1156, + "src": "828:19:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1131_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1131_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "828:45:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 770, + "nodeType": "ExpressionStatement", + "src": "828:45:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 773, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "895:10:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$840_$", + "typeString": "type(contract Terminable)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_terminate", + "nodeType": "MemberAccess", + "referencedDeclaration": 839, + "src": "895:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "895:23:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 777, + "nodeType": "ExpressionStatement", + "src": "895:23:4" + } + ] + }, + "documentation": null, + "id": 779, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 750, + "nodeType": "ParameterList", + "parameters": [], + "src": "700:2:4" + }, + "payable": false, + "returnParameters": { + "id": 751, + "nodeType": "ParameterList", + "parameters": [], + "src": "712:0:4" + }, + "scope": 780, + "src": "681:245:4", + "stateMutability": "nonpayable", + "superFunction": 839, + "visibility": "internal" + } + ], + "scope": 781, + "src": "456:473:4" + } + ], + "src": "0:929:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 803 + ] + }, + "id": 804, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 782, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 721, + "id": 803, "linearizedBaseContracts": [ - 721 + 803 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -9618,7 +10605,7 @@ { "body": null, "documentation": null, - "id": 705, + "id": 787, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9626,23 +10613,23 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 701, + "id": 783, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:4" + "src": "74:2:5" }, "payable": false, "returnParameters": { - "id": 704, + "id": 786, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 703, + "id": 785, "name": "", "nodeType": "VariableDeclaration", - "scope": 705, - "src": "98:4:4", + "scope": 787, + "src": "98:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9650,10 +10637,10 @@ "typeString": "bool" }, "typeName": { - "id": 702, + "id": 784, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "98:4:4", + "src": "98:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9663,10 +10650,10 @@ "visibility": "internal" } ], - "src": "97:6:4" + "src": "97:6:5" }, - "scope": 721, - "src": "54:50:4", + "scope": 803, + "src": "54:50:5", "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -9674,7 +10661,7 @@ { "body": null, "documentation": null, - "id": 710, + "id": 792, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9682,23 +10669,23 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 706, + "id": 788, "nodeType": "ParameterList", "parameters": [], - "src": "130:2:4" + "src": "130:2:5" }, "payable": false, "returnParameters": { - "id": 709, + "id": 791, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 708, + "id": 790, "name": "", "nodeType": "VariableDeclaration", - "scope": 710, - "src": "154:5:4", + "scope": 792, + "src": "154:5:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9706,10 +10693,10 @@ "typeString": "uint8" }, "typeName": { - "id": 707, + "id": 789, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "154:5:4", + "src": "154:5:5", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9719,10 +10706,10 @@ "visibility": "internal" } ], - "src": "153:7:4" + "src": "153:7:5" }, - "scope": 721, - "src": "110:51:4", + "scope": 803, + "src": "110:51:5", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9730,7 +10717,7 @@ { "body": null, "documentation": null, - "id": 715, + "id": 797, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9738,23 +10725,23 @@ "name": "isMining", "nodeType": "FunctionDefinition", "parameters": { - "id": 711, + "id": 793, "nodeType": "ParameterList", "parameters": [], - "src": "184:2:4" + "src": "184:2:5" }, "payable": false, "returnParameters": { - "id": 714, + "id": 796, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 713, + "id": 795, "name": "", "nodeType": "VariableDeclaration", - "scope": 715, - "src": "208:4:4", + "scope": 797, + "src": "208:4:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9762,10 +10749,10 @@ "typeString": "bool" }, "typeName": { - "id": 712, + "id": 794, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "208:4:4", + "src": "208:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9775,10 +10762,10 @@ "visibility": "internal" } ], - "src": "207:6:4" + "src": "207:6:5" }, - "scope": 721, - "src": "167:47:4", + "scope": 803, + "src": "167:47:5", "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -9786,7 +10773,7 @@ { "body": null, "documentation": null, - "id": 720, + "id": 802, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -9794,23 +10781,23 @@ "name": "getMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 716, + "id": 798, "nodeType": "ParameterList", "parameters": [], - "src": "237:2:4" + "src": "237:2:5" }, "payable": false, "returnParameters": { - "id": 719, + "id": 801, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 718, + "id": 800, "name": "", "nodeType": "VariableDeclaration", - "scope": 720, - "src": "261:7:4", + "scope": 802, + "src": "261:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9818,10 +10805,10 @@ "typeString": "address" }, "typeName": { - "id": 717, + "id": 799, "name": "address", "nodeType": "ElementaryTypeName", - "src": "261:7:4", + "src": "261:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9831,119 +10818,262 @@ "visibility": "internal" } ], - "src": "260:9:4" + "src": "260:9:5" }, - "scope": 721, - "src": "220:50:4", + "scope": 803, + "src": "220:50:5", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 722, - "src": "27:246:4" + "scope": 804, + "src": "27:246:5" } ], - "src": "0:273:4" + "src": "0:273:5" }, - "id": 4 + "id": 5 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", "exportedSymbols": { - "Roles": [ - 815 + "Terminable": [ + 840 ] }, - "id": 816, + "id": 841, "nodeType": "SourceUnit", "nodes": [ { - "id": 723, + "id": 805, "literals": [ "solidity", - "^", "0.4", ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:5" + "src": "0:23:6" }, { "baseContracts": [], "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "contractKind": "contract", + "documentation": null, "fullyImplemented": true, - "id": 815, + "id": 840, "linearizedBaseContracts": [ - 815 + 840 ], - "name": "Roles", + "name": "Terminable", "nodeType": "ContractDefinition", "nodes": [ { - "canonicalName": "Roles.Role", - "id": 728, - "members": [ - { - "constant": false, - "id": 727, - "name": "bearer", - "nodeType": "VariableDeclaration", - "scope": 728, - "src": "145:32:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 726, - "keyType": { - "id": 724, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "154:7:5", + "constant": false, + "id": 807, + "name": "_creator", + "nodeType": "VariableDeclaration", + "scope": 840, + "src": "56:25:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 809, + "name": "_terminated", + "nodeType": "VariableDeclaration", + "scope": 840, + "src": "88:25:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 808, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "88:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 821, + "nodeType": "Block", + "src": "145:70:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 812, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "156:8:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 813, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1290, + "src": "167:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "167:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:21:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "Mapping", - "src": "145:25:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 725, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "165:4:5", + "id": 816, + "nodeType": "ExpressionStatement", + "src": "156:21:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 817, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "188:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "202:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "188:19:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Role", - "nodeType": "StructDefinition", - "scope": 815, - "src": "127:55:5", - "visibility": "public" + }, + "id": 820, + "nodeType": "ExpressionStatement", + "src": "188:19:6" + } + ] + }, + "documentation": null, + "id": 822, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 810, + "nodeType": "ParameterList", + "parameters": [], + "src": "133:2:6" + }, + "payable": false, + "returnParameters": { + "id": 811, + "nodeType": "ParameterList", + "parameters": [], + "src": "145:0:6" + }, + "scope": 840, + "src": "122:93:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { "body": { - "id": 759, + "id": 830, "nodeType": "Block", - "src": "302:109:5", + "src": "248:52:6", "statements": [ { "expression": { @@ -9951,139 +11081,7 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 736, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "316:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "335:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 737, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 739, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "327:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "316:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 735, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "308:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "308:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 742, - "nodeType": "ExpressionStatement", - "src": "308:30:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 748, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, @@ -10091,68 +11089,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:5", + "src": "267:12:6", "subExpression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 745, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "357:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 746, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "363:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 744, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "353:3:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "353:18:5", + "id": 825, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "268:11:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10171,21 +11116,21 @@ "typeString": "bool" } ], - "id": 743, + "id": 824, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "344:7:5", + "referencedDeclaration": 1293, + "src": "259:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 749, + "id": 827, "isConstant": false, "isLValue": false, "isPure": false, @@ -10193,75 +11138,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:5", + "src": "259:21:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 750, + "id": 828, "nodeType": "ExpressionStatement", - "src": "344:28:5" + "src": "259:21:6" }, + { + "id": 829, + "nodeType": "PlaceholderStatement", + "src": "291:1:6" + } + ] + }, + "documentation": null, + "id": 831, + "name": "notTerminated", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 823, + "nodeType": "ParameterList", + "parameters": [], + "src": "245:2:6" + }, + "src": "223:77:6", + "visibility": "internal" + }, + { + "body": { + "id": 838, + "nodeType": "Block", + "src": "339:37:6", + "statements": [ { "expression": { "argumentTypes": null, - "id": 757, + "id": 836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 751, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "379:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 754, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 727, - "src": "379:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 755, - "indexExpression": { - "argumentTypes": null, - "id": 753, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "391:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "379:20:5", + "id": 834, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "350:11:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10272,14 +11200,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 756, + "id": 835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:5", + "src": "364:4:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -10287,2503 +11215,67 @@ }, "value": "true" }, - "src": "379:27:5", + "src": "350:18:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 758, + "id": 837, "nodeType": "ExpressionStatement", - "src": "379:27:5" + "src": "350:18:6" } ] }, - "documentation": "@dev give an account access to this role", - "id": 760, + "documentation": null, + "id": 839, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "add", + "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 733, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 730, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 760, - "src": "257:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 729, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, - "src": "257:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 732, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 760, - "src": "276:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 731, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "276:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "256:36:5" - }, - "payable": false, - "returnParameters": { - "id": 734, + "id": 832, "nodeType": "ParameterList", "parameters": [], - "src": "302:0:5" - }, - "scope": 815, - "src": "244:167:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 790, - "nodeType": "Block", - "src": "538:109:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 772, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 768, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 764, - "src": "552:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 770, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "571:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 769, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 771, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "563:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "552:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 767, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "544:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "544:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 774, - "nodeType": "ExpressionStatement", - "src": "544:30:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 777, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "592:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 778, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 764, - "src": "598:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 776, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 814, - "src": "588:3:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$728_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "588:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 775, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "580:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "580:27:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 781, - "nodeType": "ExpressionStatement", - "src": "580:27:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 782, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 762, - "src": "614:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 785, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 727, - "src": "614:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 786, - "indexExpression": { - "argumentTypes": null, - "id": 784, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 764, - "src": "626:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "614:20:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 787, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "637:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "614:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 789, - "nodeType": "ExpressionStatement", - "src": "614:28:5" - } - ] - }, - "documentation": "@dev remove an account's access to this role", - "id": 791, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "remove", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 765, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 762, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "493:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 761, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, - "src": "493:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 764, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "512:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 763, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "512:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "492:36:5" + "src": "327:2:6" }, "payable": false, "returnParameters": { - "id": 766, + "id": 833, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:5" + "src": "339:0:6" }, - "scope": 815, - "src": "477:170:5", + "scope": 840, + "src": "308:68:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" - }, - { - "body": { - "id": 813, - "nodeType": "Block", - "src": "817:74:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 805, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 801, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "831:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 803, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "850:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 802, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 804, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "842:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "831:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 800, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "823:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "823:30:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 807, - "nodeType": "ExpressionStatement", - "src": "823:30:5" - }, - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 808, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "866:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 809, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 727, - "src": "866:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 811, - "indexExpression": { - "argumentTypes": null, - "id": 810, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "878:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "866:20:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 799, - "id": 812, - "nodeType": "Return", - "src": "859:27:5" - } - ] - }, - "documentation": "@dev check if an account has this role\n@return bool", - "id": 814, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "has", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 796, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 793, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 814, - "src": "738:17:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 792, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 728, - "src": "738:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$728_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 795, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 814, - "src": "757:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 794, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "757:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "737:36:5" - }, - "payable": false, - "returnParameters": { - "id": 799, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 798, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 814, - "src": "809:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 797, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "809:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "808:6:5" - }, - "scope": 815, - "src": "725:166:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" } ], - "scope": 816, - "src": "109:784:5" + "scope": 841, + "src": "27:352:6" } ], - "src": "0:894:5" - }, - "id": 5 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", - "exportedSymbols": { - "SafeMath": [ - 943 - ] - }, - "id": 944, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 817, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:6" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", - "fullyImplemented": true, - "id": 943, - "linearizedBaseContracts": [ - 943 - ], - "name": "SafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 849, - "nodeType": "Block", - "src": "271:314:6", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 826, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 819, - "src": "486:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 827, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "491:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "486:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 832, - "nodeType": "IfStatement", - "src": "482:35:6", - "trueBody": { - "id": 831, - "nodeType": "Block", - "src": "494:23:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 829, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "509:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 825, - "id": 830, - "nodeType": "Return", - "src": "502:8:6" - } - ] - } - }, - { - "assignments": [ - 834 - ], - "declarations": [ - { - "constant": false, - "id": 834, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 850, - "src": "523:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 833, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "523:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 838, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 835, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 819, - "src": "535:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 836, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "539:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "535:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "523:17:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 844, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 842, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 840, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "554:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 841, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 819, - "src": "558:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 843, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 821, - "src": "563:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:10:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 839, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "546:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 845, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "546:19:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 846, - "nodeType": "ExpressionStatement", - "src": "546:19:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 847, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "579:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 825, - "id": 848, - "nodeType": "Return", - "src": "572:8:6" - } - ] - }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 850, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 822, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 819, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 850, - "src": "217:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 818, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "217:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 821, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 850, - "src": "228:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 820, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "228:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "216:22:6" - }, - "payable": false, - "returnParameters": { - "id": 825, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 824, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 850, - "src": "262:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 823, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "262:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "261:9:6" - }, - "scope": 943, - "src": "204:381:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 873, - "nodeType": "Block", - "src": "762:203:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 860, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 854, - "src": "776:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 861, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "776:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 859, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "768:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "768:14:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 864, - "nodeType": "ExpressionStatement", - "src": "768:14:6" - }, - { - "assignments": [ - 866 - ], - "declarations": [ - { - "constant": false, - "id": 866, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 874, - "src": "846:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 865, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "846:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 870, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 869, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 867, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "858:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 868, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 854, - "src": "862:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "858:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "846:17:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 871, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 866, - "src": "959:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 858, - "id": 872, - "nodeType": "Return", - "src": "952:8:6" - } - ] - }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 874, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 855, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 852, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 874, - "src": "708:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 851, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "708:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 854, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 874, - "src": "719:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 853, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "719:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "707:22:6" - }, - "payable": false, - "returnParameters": { - "id": 858, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 857, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 874, - "src": "753:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 856, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "753:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "752:9:6" - }, - "scope": 943, - "src": "695:270:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 897, - "nodeType": "Block", - "src": "1145:64:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 884, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "1159:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 885, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "1164:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1159:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 883, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "1151:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 887, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1151:15:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 888, - "nodeType": "ExpressionStatement", - "src": "1151:15:6" - }, - { - "assignments": [ - 890 - ], - "declarations": [ - { - "constant": false, - "id": 890, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 898, - "src": "1172:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 889, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1172:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 894, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 891, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "1184:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 892, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "1188:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1184:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1172:17:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 895, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 890, - "src": "1203:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 882, - "id": 896, - "nodeType": "Return", - "src": "1196:8:6" - } - ] - }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 898, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 879, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 876, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 898, - "src": "1091:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 875, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1091:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 878, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 898, - "src": "1102:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 877, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1102:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1090:22:6" - }, - "payable": false, - "returnParameters": { - "id": 882, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 881, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 898, - "src": "1136:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 880, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1135:9:6" - }, - "scope": 943, - "src": "1078:131:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 921, - "nodeType": "Block", - "src": "1339:64:6", - "statements": [ - { - "assignments": [ - 908 - ], - "declarations": [ - { - "constant": false, - "id": 908, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 922, - "src": "1345:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 907, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1345:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 912, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 909, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "1357:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 910, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "1361:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1357:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1345:17:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 916, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 914, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "1376:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 915, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "1381:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1376:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 913, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "1368:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 917, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1368:15:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 918, - "nodeType": "ExpressionStatement", - "src": "1368:15:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 919, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "1397:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 906, - "id": 920, - "nodeType": "Return", - "src": "1390:8:6" - } - ] - }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 922, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 903, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 900, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 922, - "src": "1285:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 899, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1285:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 902, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 922, - "src": "1296:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 901, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1296:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1284:22:6" - }, - "payable": false, - "returnParameters": { - "id": 906, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 905, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 922, - "src": "1330:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 904, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1330:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1329:9:6" - }, - "scope": 943, - "src": "1272:131:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 941, - "nodeType": "Block", - "src": "1602:44:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 934, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 932, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 926, - "src": "1616:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 933, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1621:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1616:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 931, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1174, - 1175 - ], - "referencedDeclaration": 1174, - "src": "1608:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1608:15:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 936, - "nodeType": "ExpressionStatement", - "src": "1608:15:6" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 939, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 937, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 924, - "src": "1636:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "id": 938, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 926, - "src": "1640:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1636:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 930, - "id": 940, - "nodeType": "Return", - "src": "1629:12:6" - } - ] - }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 942, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mod", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 927, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 924, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 942, - "src": "1548:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 923, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1548:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 926, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 942, - "src": "1559:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 925, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1559:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1547:22:6" - }, - "payable": false, - "returnParameters": { - "id": 930, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 929, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 942, - "src": "1593:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 928, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1593:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1592:9:6" - }, - "scope": 943, - "src": "1535:111:6", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 944, - "src": "117:1531:6" - } - ], - "src": "0:1649:6" + "src": "0:379:6" }, "id": 6 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { - "IERC20": [ - 1012 + "Roles": [ + 934 ] }, - "id": 1013, + "id": 935, "nodeType": "SourceUnit", "nodes": [ { - "id": 945, + "id": 842, "literals": [ "solidity", "^", @@ -12796,93 +11288,1189 @@ { "baseContracts": [], "contractDependencies": [], - "contractKind": "interface", - "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", - "fullyImplemented": false, - "id": 1012, + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 934, "linearizedBaseContracts": [ - 1012 + 934 ], - "name": "IERC20", + "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { - "body": null, - "documentation": null, - "id": 950, - "implemented": false, + "canonicalName": "Roles.Role", + "id": 847, + "members": [ + { + "constant": false, + "id": 846, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 847, + "src": "145:32:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 845, + "keyType": { + "id": 843, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "154:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "145:25:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 844, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 934, + "src": "127:55:7", + "visibility": "public" + }, + { + "body": { + "id": 878, + "nodeType": "Block", + "src": "302:109:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 855, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "316:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 856, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 854, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "308:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "308:30:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 861, + "nodeType": "ExpressionStatement", + "src": "308:30:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:7", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 864, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "357:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 865, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "363:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 863, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 933, + "src": "353:3:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 862, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "344:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "344:28:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 869, + "nodeType": "ExpressionStatement", + "src": "344:28:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 870, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 849, + "src": "379:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 846, + "src": "379:11:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 874, + "indexExpression": { + "argumentTypes": null, + "id": 872, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "391:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "379:20:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "402:4:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "379:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 877, + "nodeType": "ExpressionStatement", + "src": "379:27:7" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 879, + "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "totalSupply", + "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 946, + "id": 852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 849, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 879, + "src": "257:17:7", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 848, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 847, + "src": "257:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 851, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 879, + "src": "276:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 850, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "276:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:36:7" + }, + "payable": false, + "returnParameters": { + "id": 853, "nodeType": "ParameterList", "parameters": [], - "src": "156:2:7" + "src": "302:0:7" }, - "payable": false, - "returnParameters": { - "id": 949, + "scope": 934, + "src": "244:167:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 909, + "nodeType": "Block", + "src": "538:109:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 887, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "552:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "571:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "563:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "563:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "552:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 886, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "544:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "544:30:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 893, + "nodeType": "ExpressionStatement", + "src": "544:30:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 896, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 881, + "src": "592:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 897, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "598:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 895, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 933, + "src": "588:3:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$847_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 894, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "580:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 900, + "nodeType": "ExpressionStatement", + "src": "580:27:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 901, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 881, + "src": "614:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 904, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 846, + "src": "614:11:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 905, + "indexExpression": { + "argumentTypes": null, + "id": 903, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 883, + "src": "626:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "614:28:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 908, + "nodeType": "ExpressionStatement", + "src": "614:28:7" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 910, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 884, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 948, - "name": "", + "id": 881, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 950, - "src": "182:7:7", + "scope": 910, + "src": "493:17:7", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 880, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 847, + "src": "493:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 883, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "512:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 947, - "name": "uint256", + "id": 882, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "182:7:7", + "src": "512:7:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "181:9:7" + "src": "492:36:7" }, - "scope": 1012, - "src": "136:55:7", - "stateMutability": "view", + "payable": false, + "returnParameters": { + "id": 885, + "nodeType": "ParameterList", + "parameters": [], + "src": "538:0:7" + }, + "scope": 934, + "src": "477:170:7", + "stateMutability": "nonpayable", "superFunction": null, - "visibility": "external" + "visibility": "internal" }, { - "body": null, - "documentation": null, - "id": 957, - "implemented": false, + "body": { + "id": 932, + "nodeType": "Block", + "src": "817:74:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 920, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "831:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "831:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 919, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "823:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "823:30:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 926, + "nodeType": "ExpressionStatement", + "src": "823:30:7" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 927, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 912, + "src": "866:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 928, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 846, + "src": "866:11:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 930, + "indexExpression": { + "argumentTypes": null, + "id": 929, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "878:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 918, + "id": 931, + "nodeType": "Return", + "src": "859:27:7" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 933, + "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "balanceOf", + "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 953, + "id": 915, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 952, - "name": "who", + "id": 912, + "name": "role", "nodeType": "VariableDeclaration", - "scope": 957, - "src": "214:11:7", + "scope": 933, + "src": "738:17:7", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 911, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 847, + "src": "738:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$847_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 914, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 933, + "src": "757:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12890,10 +12478,10 @@ "typeString": "address" }, "typeName": { - "id": 951, + "id": 913, "name": "address", "nodeType": "ElementaryTypeName", - "src": "214:7:7", + "src": "757:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12903,724 +12491,70 @@ "visibility": "internal" } ], - "src": "213:13:7" + "src": "737:36:7" }, "payable": false, "returnParameters": { - "id": 956, + "id": 918, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 955, + "id": 917, "name": "", "nodeType": "VariableDeclaration", - "scope": 957, - "src": "250:7:7", + "scope": 933, + "src": "809:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 954, - "name": "uint256", + "id": 916, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "250:7:7", + "src": "809:4:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "value": null, "visibility": "internal" } ], - "src": "249:9:7" + "src": "808:6:7" }, - "scope": 1012, - "src": "195:64:7", + "scope": 934, + "src": "725:166:7", "stateMutability": "view", "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 966, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 962, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 959, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 966, - "src": "282:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 958, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 961, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 966, - "src": "297:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 960, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:7" - }, - "payable": false, - "returnParameters": { - "id": 965, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 964, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 966, - "src": "341:7:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 963, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:7" - }, - "scope": 1012, - "src": "263:87:7", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 975, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 971, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 968, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 975, - "src": "372:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 967, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 970, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 975, - "src": "384:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 969, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "384:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:27:7" - }, - "payable": false, - "returnParameters": { - "id": 974, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 973, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 975, - "src": "417:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 972, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "416:6:7" - }, - "scope": 1012, - "src": "354:69:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 984, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 980, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 977, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 984, - "src": "444:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 976, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "444:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 979, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 984, - "src": "461:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 978, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "461:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "443:32:7" - }, - "payable": false, - "returnParameters": { - "id": 983, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 982, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 984, - "src": "498:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 981, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:7" - }, - "scope": 1012, - "src": "427:77:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 995, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 991, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 986, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 995, - "src": "530:12:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 985, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 988, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 995, - "src": "544:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 987, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 990, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 995, - "src": "556:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 989, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "556:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "529:41:7" - }, - "payable": false, - "returnParameters": { - "id": 994, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 993, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 995, - "src": "593:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 992, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:7" - }, - "scope": 1012, - "src": "508:91:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": null, - "id": 1003, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 1002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 997, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 1003, - "src": "623:20:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 996, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 999, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1003, - "src": "649:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 998, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1001, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1003, - "src": "673:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1000, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "673:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "617:73:7" - }, - "src": "603:88:7" - }, - { - "anonymous": false, - "documentation": null, - "id": 1011, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 1010, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1005, - "indexed": true, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1011, - "src": "715:21:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1004, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "715:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1007, - "indexed": true, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 1011, - "src": "742:23:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1006, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "742:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1009, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1011, - "src": "771:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1008, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "771:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "709:79:7" - }, - "src": "695:94:7" + "visibility": "internal" } ], - "scope": 1013, - "src": "115:676:7" + "scope": 935, + "src": "109:784:7" } ], - "src": "0:792:7" + "src": "0:894:7" }, "id": 7 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { - "SafeERC20": [ - 1156 + "SafeMath": [ + 1062 ] }, - "id": 1157, + "id": 1063, "nodeType": "SourceUnit", "nodes": [ { - "id": 1014, + "id": 936, "literals": [ "solidity", "^", @@ -13630,155 +12564,269 @@ "nodeType": "PragmaDirective", "src": "0:24:8" }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "./IERC20.sol", - "id": 1015, - "nodeType": "ImportDirective", - "scope": 1157, - "sourceUnit": 1013, - "src": "26:22:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "../../math/SafeMath.sol", - "id": 1016, - "nodeType": "ImportDirective", - "scope": 1157, - "sourceUnit": 944, - "src": "49:33:8", - "symbolAliases": [], - "unitAlias": "" - }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", - "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", "fullyImplemented": true, - "id": 1156, + "id": 1062, "linearizedBaseContracts": [ - 1156 + 1062 ], - "name": "SafeERC20", + "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ - { - "id": 1019, - "libraryName": { - "contractScope": null, - "id": 1017, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 943, - "src": "382:8:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$943", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "376:27:8", - "typeName": { - "id": 1018, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "395:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, { "body": { - "id": 1036, + "id": 968, "nodeType": "Block", - "src": "501:45:8", + "src": "271:314:8", "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 945, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "486:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 951, + "nodeType": "IfStatement", + "src": "482:35:8", + "trueBody": { + "id": 950, + "nodeType": "Block", + "src": "494:23:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 944, + "id": 949, + "nodeType": "Return", + "src": "502:8:8" + } + ] + } + }, + { + "assignments": [ + 953 + ], + "declarations": [ + { + "constant": false, + "id": 953, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 969, + "src": "523:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 957, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 954, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "535:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 955, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 940, + "src": "539:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:8" + }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1031, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1023, - "src": "530:2:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "argumentTypes": null, - "id": 1032, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1025, - "src": "534:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1029, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "515:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "id": 1030, + "id": 961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 975, - "src": "515:14:8", + "leftExpression": { + "argumentTypes": null, + "id": 959, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "554:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 960, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "558:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:8", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "515:25:8", + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 962, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 940, + "src": "563:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13792,21 +12840,21 @@ "typeString": "bool" } ], - "id": 1028, + "id": 958, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "507:7:8", + "referencedDeclaration": 1293, + "src": "546:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1034, + "id": 964, "isConstant": false, "isLValue": false, "isPure": false, @@ -13814,91 +12862,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:8", + "src": "546:19:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1035, + "id": 965, "nodeType": "ExpressionStatement", - "src": "507:34:8" + "src": "546:19:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 966, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 953, + "src": "579:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 944, + "id": 967, + "nodeType": "Return", + "src": "572:8:8" } ] }, - "documentation": null, - "id": 1037, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 969, "implemented": true, "isConstructor": false, - "isDeclaredConst": false, + "isDeclaredConst": true, "modifiers": [], - "name": "safeTransfer", + "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 1026, + "id": 941, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1021, - "name": "token", + "id": 938, + "name": "a", "nodeType": "VariableDeclaration", - "scope": 1037, - "src": "434:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 1020, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "434:6:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1023, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1037, - "src": "452:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1022, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "452:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1025, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1037, - "src": "468:13:8", + "scope": 969, + "src": "217:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13906,10 +12919,36 @@ "typeString": "uint256" }, "typeName": { - "id": 1024, + "id": 937, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:8", + "src": "217:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 940, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 969, + "src": "228:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13919,26 +12958,53 @@ "visibility": "internal" } ], - "src": "428:57:8" + "src": "216:22:8" }, "payable": false, "returnParameters": { - "id": 1027, + "id": 944, "nodeType": "ParameterList", - "parameters": [], - "src": "501:0:8" + "parameters": [ + { + "constant": false, + "id": 943, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 969, + "src": "262:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "262:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "261:9:8" }, - "scope": 1156, - "src": "407:139:8", - "stateMutability": "nonpayable", + "scope": 1062, + "src": "204:381:8", + "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1057, + "id": 992, "nodeType": "Block", - "src": "666:55:8", + "src": "762:203:8", "statements": [ { "expression": { @@ -13946,98 +13012,49 @@ "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1051, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1041, - "src": "699:4:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1052, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1043, - "src": "705:2:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1053, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1045, - "src": "709:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1049, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1039, - "src": "680:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "id": 1050, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 995, - "src": "680:18:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1054, + "id": 981, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "680:35:8", + "leftExpression": { + "argumentTypes": null, + "id": 979, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "776:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:5:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14051,21 +13068,21 @@ "typeString": "bool" } ], - "id": 1048, + "id": 978, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "672:7:8", + "referencedDeclaration": 1293, + "src": "768:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1055, + "id": 982, "isConstant": false, "isLValue": false, "isPure": false, @@ -14073,105 +13090,1019 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:8", + "src": "768:14:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1056, + "id": 983, "nodeType": "ExpressionStatement", - "src": "672:44:8" + "src": "768:14:8" + }, + { + "assignments": [ + 985 + ], + "declarations": [ + { + "constant": false, + "id": 985, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "846:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 989, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 986, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 971, + "src": "858:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 987, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "862:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "858:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 990, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "959:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 977, + "id": 991, + "nodeType": "Return", + "src": "952:8:8" } ] }, - "documentation": null, - "id": 1058, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 993, "implemented": true, "isConstructor": false, - "isDeclaredConst": false, + "isDeclaredConst": true, "modifiers": [], - "name": "safeTransferFrom", + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 971, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "708:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 970, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "708:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 973, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "719:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 972, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "719:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "707:22:8" + }, + "payable": false, + "returnParameters": { + "id": 977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 976, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "753:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "752:9:8" + }, + "scope": 1062, + "src": "695:270:8", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1016, + "nodeType": "Block", + "src": "1145:64:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1003, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "1159:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1004, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "1164:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "1151:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1007, + "nodeType": "ExpressionStatement", + "src": "1151:15:8" + }, + { + "assignments": [ + 1009 + ], + "declarations": [ + { + "constant": false, + "id": 1009, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1017, + "src": "1172:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1008, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1013, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1010, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "1184:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 1011, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "1188:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1014, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "1203:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1001, + "id": 1015, + "nodeType": "Return", + "src": "1196:8:8" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 1017, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 998, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 995, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1017, + "src": "1091:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 997, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1017, + "src": "1102:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 996, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1090:22:8" + }, + "payable": false, + "returnParameters": { + "id": 1001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1000, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1017, + "src": "1136:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:8" + }, + "scope": 1062, + "src": "1078:131:8", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1040, + "nodeType": "Block", + "src": "1339:64:8", + "statements": [ + { + "assignments": [ + 1027 + ], + "declarations": [ + { + "constant": false, + "id": 1027, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 1041, + "src": "1345:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1031, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1028, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "1357:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1029, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1021, + "src": "1361:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1033, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "1376:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1034, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "1381:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1032, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "1368:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1037, + "nodeType": "ExpressionStatement", + "src": "1368:15:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1038, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "1397:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1025, + "id": 1039, + "nodeType": "Return", + "src": "1390:8:8" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 1041, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1019, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1041, + "src": "1285:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1018, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1021, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1041, + "src": "1296:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1020, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:8" + }, + "payable": false, + "returnParameters": { + "id": 1025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1024, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1041, + "src": "1330:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:8" + }, + "scope": 1062, + "src": "1272:131:8", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1060, + "nodeType": "Block", + "src": "1602:44:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1051, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "1616:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1050, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "1608:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1055, + "nodeType": "ExpressionStatement", + "src": "1608:15:8" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1056, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "1636:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 1057, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "1640:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1049, + "id": 1059, + "nodeType": "Return", + "src": "1629:12:8" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 1061, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", "nodeType": "FunctionDefinition", "parameters": { "id": 1046, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 1039, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1058, - "src": "581:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 1038, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "581:6:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1041, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 1058, - "src": "599:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1040, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "599:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 1043, - "name": "to", + "name": "a", "nodeType": "VariableDeclaration", - "scope": 1058, - "src": "617:10:8", + "scope": 1061, + "src": "1548:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { "id": 1042, - "name": "address", + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "617:7:8", + "src": "1548:7:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -14180,10 +14111,10 @@ { "constant": false, "id": 1045, - "name": "value", + "name": "b", "nodeType": "VariableDeclaration", - "scope": 1058, - "src": "633:13:8", + "scope": 1061, + "src": "1559:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14194,7 +14125,7 @@ "id": 1044, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:8", + "src": "1559:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14204,26 +14135,1510 @@ "visibility": "internal" } ], - "src": "575:75:8" + "src": "1547:22:8" }, "payable": false, "returnParameters": { - "id": 1047, + "id": 1049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1048, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1061, + "src": "1593:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:8" + }, + "scope": 1062, + "src": "1535:111:8", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1063, + "src": "117:1531:8" + } + ], + "src": "0:1649:8" + }, + "id": 8 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 1131 + ] + }, + "id": 1132, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1064, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:9" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 1131, + "linearizedBaseContracts": [ + 1131 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 1069, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1065, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:8" + "src": "156:2:9" }, - "scope": 1156, - "src": "550:171:8", + "payable": false, + "returnParameters": { + "id": 1068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1067, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1069, + "src": "182:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:9" + }, + "scope": 1131, + "src": "136:55:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1076, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1071, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 1076, + "src": "214:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:9" + }, + "payable": false, + "returnParameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1074, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1076, + "src": "250:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:9" + }, + "scope": 1131, + "src": "195:64:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1085, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1078, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "282:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1080, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "297:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1079, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:9" + }, + "payable": false, + "returnParameters": { + "id": 1084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1083, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1085, + "src": "341:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1082, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:9" + }, + "scope": 1131, + "src": "263:87:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1094, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1087, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1094, + "src": "372:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1086, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1089, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1094, + "src": "384:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:9" + }, + "payable": false, + "returnParameters": { + "id": 1093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1092, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1094, + "src": "417:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1091, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:9" + }, + "scope": 1131, + "src": "354:69:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1103, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1096, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1103, + "src": "444:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1098, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1103, + "src": "461:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1097, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:9" + }, + "payable": false, + "returnParameters": { + "id": 1102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1101, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1103, + "src": "498:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1100, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:9" + }, + "scope": 1131, + "src": "427:77:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 1114, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1105, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "530:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1107, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "544:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1109, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "556:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:9" + }, + "payable": false, + "returnParameters": { + "id": 1113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1112, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1114, + "src": "593:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1111, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:9" + }, + "scope": 1131, + "src": "508:91:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 1122, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1116, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "623:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1118, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "649:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1120, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1122, + "src": "673:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:9" + }, + "src": "603:88:9" + }, + { + "anonymous": false, + "documentation": null, + "id": 1130, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1124, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "715:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1126, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "742:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1128, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1130, + "src": "771:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:9" + }, + "src": "695:94:9" + } + ], + "scope": 1132, + "src": "115:676:9" + } + ], + "src": "0:792:9" + }, + "id": 9 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 1275 + ] + }, + "id": 1276, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1133, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:10" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 1134, + "nodeType": "ImportDirective", + "scope": 1276, + "sourceUnit": 1132, + "src": "26:22:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1135, + "nodeType": "ImportDirective", + "scope": 1276, + "sourceUnit": 1063, + "src": "49:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "fullyImplemented": true, + "id": 1275, + "linearizedBaseContracts": [ + 1275 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1138, + "libraryName": { + "contractScope": null, + "id": 1136, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1062, + "src": "382:8:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$1062", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:10", + "typeName": { + "id": 1137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 1155, + "nodeType": "Block", + "src": "501:45:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1150, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "530:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1151, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1144, + "src": "534:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1148, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "515:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1094, + "src": "515:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "515:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1147, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "507:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:34:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1154, + "nodeType": "ExpressionStatement", + "src": "507:34:10" + } + ] + }, + "documentation": null, + "id": 1156, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1140, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1156, + "src": "434:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1139, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "434:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1142, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1156, + "src": "452:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1144, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1156, + "src": "468:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:57:10" + }, + "payable": false, + "returnParameters": { + "id": 1146, + "nodeType": "ParameterList", + "parameters": [], + "src": "501:0:10" + }, + "scope": 1275, + "src": "407:139:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1092, + "id": 1176, "nodeType": "Block", - "src": "823:330:8", + "src": "666:55:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1170, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1160, + "src": "699:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1171, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1162, + "src": "705:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1172, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "709:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1168, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1158, + "src": "680:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1114, + "src": "680:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:35:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1167, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1293, + 1294 + ], + "referencedDeclaration": 1293, + "src": "672:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:44:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1175, + "nodeType": "ExpressionStatement", + "src": "672:44:10" + } + ] + }, + "documentation": null, + "id": 1177, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1158, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1177, + "src": "581:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1157, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1131, + "src": "581:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1131", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1160, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 1177, + "src": "599:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1159, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1162, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1177, + "src": "617:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1164, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1177, + "src": "633:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "633:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:75:10" + }, + "payable": false, + "returnParameters": { + "id": 1166, + "nodeType": "ParameterList", + "parameters": [], + "src": "666:0:10" + }, + "scope": 1275, + "src": "550:171:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1211, + "nodeType": "Block", + "src": "823:330:10", "statements": [ { "expression": { @@ -14235,7 +15650,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1081, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, @@ -14249,19 +15664,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1070, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1068, + "id": 1187, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "1045:5:8", + "referencedDeclaration": 1183, + "src": "1045:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14272,14 +15687,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1069, + "id": 1188, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:8", + "src": "1054:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14287,21 +15702,21 @@ }, "value": "0" }, - "src": "1045:10:8", + "src": "1045:10:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1071, + "id": 1190, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:8", + "src": "1044:12:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14318,7 +15733,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1079, + "id": 1198, "isConstant": false, "isLValue": false, "isPure": false, @@ -14330,18 +15745,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1074, + "id": 1193, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1171, - "src": "1077:3:8", + "referencedDeclaration": 1290, + "src": "1077:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1075, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, @@ -14349,7 +15764,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1077:10:8", + "src": "1077:10:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14357,12 +15772,12 @@ }, { "argumentTypes": null, - "id": 1076, + "id": 1195, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1062, - "src": "1089:7:8", + "referencedDeclaration": 1181, + "src": "1089:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14382,32 +15797,32 @@ ], "expression": { "argumentTypes": null, - "id": 1072, + "id": 1191, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "1061:5:8", + "referencedDeclaration": 1179, + "src": "1061:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1073, + "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 966, - "src": "1061:15:8", + "referencedDeclaration": 1085, + "src": "1061:15:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1077, + "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, @@ -14415,7 +15830,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:8", + "src": "1061:36:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14426,14 +15841,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1078, + "id": 1197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:8", + "src": "1101:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -14441,27 +15856,27 @@ }, "value": "0" }, - "src": "1061:41:8", + "src": "1061:41:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 1080, + "id": 1199, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:8", + "src": "1060:43:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:8", + "src": "1044:59:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14475,21 +15890,21 @@ "typeString": "bool" } ], - "id": 1067, + "id": 1186, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1036:7:8", + "referencedDeclaration": 1293, + "src": "1036:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1082, + "id": 1201, "isConstant": false, "isLValue": false, "isPure": false, @@ -14497,15 +15912,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:8", + "src": "1036:68:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1083, + "id": 1202, "nodeType": "ExpressionStatement", - "src": "1036:68:8" + "src": "1036:68:10" }, { "expression": { @@ -14516,12 +15931,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1087, + "id": 1206, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1062, - "src": "1132:7:8", + "referencedDeclaration": 1181, + "src": "1132:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14529,12 +15944,12 @@ }, { "argumentTypes": null, - "id": 1088, + "id": 1207, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "1141:5:8", + "referencedDeclaration": 1183, + "src": "1141:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14554,32 +15969,32 @@ ], "expression": { "argumentTypes": null, - "id": 1085, + "id": 1204, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "1118:5:8", + "referencedDeclaration": 1179, + "src": "1118:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1086, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 984, - "src": "1118:13:8", + "referencedDeclaration": 1103, + "src": "1118:13:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1089, + "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, @@ -14587,7 +16002,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:8", + "src": "1118:29:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14601,21 +16016,21 @@ "typeString": "bool" } ], - "id": 1084, + "id": 1203, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1110:7:8", + "referencedDeclaration": 1293, + "src": "1110:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1090, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, @@ -14623,20 +16038,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:8", + "src": "1110:38:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1091, + "id": 1210, "nodeType": "ExpressionStatement", - "src": "1110:38:8" + "src": "1110:38:10" } ] }, "documentation": null, - "id": 1093, + "id": 1212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -14644,31 +16059,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 1065, + "id": 1184, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1060, + "id": 1179, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1093, - "src": "751:12:8", + "scope": 1212, + "src": "751:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1059, + "id": 1178, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "751:6:8", + "referencedDeclaration": 1131, + "src": "751:6:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, @@ -14677,11 +16092,11 @@ }, { "constant": false, - "id": 1062, + "id": 1181, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1093, - "src": "769:15:8", + "scope": 1212, + "src": "769:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14689,10 +16104,10 @@ "typeString": "address" }, "typeName": { - "id": 1061, + "id": 1180, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:8", + "src": "769:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14703,11 +16118,11 @@ }, { "constant": false, - "id": 1064, + "id": 1183, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1093, - "src": "790:13:8", + "scope": 1212, + "src": "790:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14715,10 +16130,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1063, + "id": 1182, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:8", + "src": "790:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14728,39 +16143,39 @@ "visibility": "internal" } ], - "src": "745:62:8" + "src": "745:62:10" }, "payable": false, "returnParameters": { - "id": 1066, + "id": 1185, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:8" + "src": "823:0:10" }, - "scope": 1156, - "src": "725:428:8", + "scope": 1275, + "src": "725:428:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1123, + "id": 1242, "nodeType": "Block", - "src": "1265:135:8", + "src": "1265:135:10", "statements": [ { "assignments": [ - 1103 + 1222 ], "declarations": [ { "constant": false, - "id": 1103, + "id": 1222, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "1271:20:8", + "scope": 1243, + "src": "1271:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14768,10 +16183,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1102, + "id": 1221, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:8", + "src": "1271:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14781,18 +16196,18 @@ "visibility": "internal" } ], - "id": 1114, + "id": 1233, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1112, + "id": 1231, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1099, - "src": "1338:5:8", + "referencedDeclaration": 1218, + "src": "1338:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14814,14 +16229,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1107, + "id": 1226, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "1318:4:8", + "referencedDeclaration": 1311, + "src": "1318:4:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } } @@ -14829,24 +16244,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } ], - "id": 1106, + "id": 1225, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:8", + "src": "1310:7:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1108, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, @@ -14854,7 +16269,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:8", + "src": "1310:13:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14862,12 +16277,12 @@ }, { "argumentTypes": null, - "id": 1109, + "id": 1228, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1097, - "src": "1325:7:8", + "referencedDeclaration": 1216, + "src": "1325:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14887,32 +16302,32 @@ ], "expression": { "argumentTypes": null, - "id": 1104, + "id": 1223, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "1294:5:8", + "referencedDeclaration": 1214, + "src": "1294:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1105, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 966, - "src": "1294:15:8", + "referencedDeclaration": 1085, + "src": "1294:15:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1110, + "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, @@ -14920,27 +16335,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:8", + "src": "1294:39:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1111, + "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 922, - "src": "1294:43:8", + "referencedDeclaration": 1041, + "src": "1294:43:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1113, + "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, @@ -14948,14 +16363,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:8", + "src": "1294:50:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:8" + "src": "1271:73:10" }, { "expression": { @@ -14966,12 +16381,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1118, + "id": 1237, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1097, - "src": "1372:7:8", + "referencedDeclaration": 1216, + "src": "1372:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14979,12 +16394,12 @@ }, { "argumentTypes": null, - "id": 1119, + "id": 1238, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1103, - "src": "1381:12:8", + "referencedDeclaration": 1222, + "src": "1381:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15004,32 +16419,32 @@ ], "expression": { "argumentTypes": null, - "id": 1116, + "id": 1235, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "1358:5:8", + "referencedDeclaration": 1214, + "src": "1358:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1117, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 984, - "src": "1358:13:8", + "referencedDeclaration": 1103, + "src": "1358:13:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1120, + "id": 1239, "isConstant": false, "isLValue": false, "isPure": false, @@ -15037,7 +16452,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:8", + "src": "1358:36:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15051,21 +16466,21 @@ "typeString": "bool" } ], - "id": 1115, + "id": 1234, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1350:7:8", + "referencedDeclaration": 1293, + "src": "1350:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1121, + "id": 1240, "isConstant": false, "isLValue": false, "isPure": false, @@ -15073,20 +16488,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:8", + "src": "1350:45:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1122, + "id": 1241, "nodeType": "ExpressionStatement", - "src": "1350:45:8" + "src": "1350:45:10" } ] }, "documentation": null, - "id": 1124, + "id": 1243, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15094,31 +16509,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1100, + "id": 1219, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1095, + "id": 1214, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "1193:12:8", + "scope": 1243, + "src": "1193:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1094, + "id": 1213, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "1193:6:8", + "referencedDeclaration": 1131, + "src": "1193:6:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, @@ -15127,11 +16542,11 @@ }, { "constant": false, - "id": 1097, + "id": 1216, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "1211:15:8", + "scope": 1243, + "src": "1211:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15139,10 +16554,10 @@ "typeString": "address" }, "typeName": { - "id": 1096, + "id": 1215, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:8", + "src": "1211:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15153,11 +16568,11 @@ }, { "constant": false, - "id": 1099, + "id": 1218, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "1232:13:8", + "scope": 1243, + "src": "1232:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15165,10 +16580,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1098, + "id": 1217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:8", + "src": "1232:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15178,39 +16593,39 @@ "visibility": "internal" } ], - "src": "1187:62:8" + "src": "1187:62:10" }, "payable": false, "returnParameters": { - "id": 1101, + "id": 1220, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:8" + "src": "1265:0:10" }, - "scope": 1156, - "src": "1157:243:8", + "scope": 1275, + "src": "1157:243:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1154, + "id": 1273, "nodeType": "Block", - "src": "1512:135:8", + "src": "1512:135:10", "statements": [ { "assignments": [ - 1134 + 1253 ], "declarations": [ { "constant": false, - "id": 1134, + "id": 1253, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 1155, - "src": "1518:20:8", + "scope": 1274, + "src": "1518:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15218,10 +16633,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1133, + "id": 1252, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:8", + "src": "1518:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15231,18 +16646,18 @@ "visibility": "internal" } ], - "id": 1145, + "id": 1264, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1143, + "id": 1262, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "1585:5:8", + "referencedDeclaration": 1249, + "src": "1585:5:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15264,14 +16679,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1138, + "id": 1257, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "1565:4:8", + "referencedDeclaration": 1311, + "src": "1565:4:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } } @@ -15279,24 +16694,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$1156", + "typeIdentifier": "t_contract$_SafeERC20_$1275", "typeString": "library SafeERC20" } ], - "id": 1137, + "id": 1256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:8", + "src": "1557:7:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1139, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, @@ -15304,7 +16719,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:8", + "src": "1557:13:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15312,12 +16727,12 @@ }, { "argumentTypes": null, - "id": 1140, + "id": 1259, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1128, - "src": "1572:7:8", + "referencedDeclaration": 1247, + "src": "1572:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15337,32 +16752,32 @@ ], "expression": { "argumentTypes": null, - "id": 1135, + "id": 1254, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1126, - "src": "1541:5:8", + "referencedDeclaration": 1245, + "src": "1541:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1136, + "id": 1255, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 966, - "src": "1541:15:8", + "referencedDeclaration": 1085, + "src": "1541:15:10", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1141, + "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, @@ -15370,27 +16785,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:8", + "src": "1541:39:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1142, + "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 898, - "src": "1541:43:8", + "referencedDeclaration": 1017, + "src": "1541:43:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 1144, + "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, @@ -15398,14 +16813,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:8", + "src": "1541:50:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:8" + "src": "1518:73:10" }, { "expression": { @@ -15416,12 +16831,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1149, + "id": 1268, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1128, - "src": "1619:7:8", + "referencedDeclaration": 1247, + "src": "1619:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15429,12 +16844,12 @@ }, { "argumentTypes": null, - "id": 1150, + "id": 1269, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1134, - "src": "1628:12:8", + "referencedDeclaration": 1253, + "src": "1628:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15454,32 +16869,32 @@ ], "expression": { "argumentTypes": null, - "id": 1147, + "id": 1266, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1126, - "src": "1605:5:8", + "referencedDeclaration": 1245, + "src": "1605:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, - "id": 1148, + "id": 1267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 984, - "src": "1605:13:8", + "referencedDeclaration": 1103, + "src": "1605:13:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1151, + "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, @@ -15487,7 +16902,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:8", + "src": "1605:36:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15501,21 +16916,21 @@ "typeString": "bool" } ], - "id": 1146, + "id": 1265, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1174, - 1175 + 1293, + 1294 ], - "referencedDeclaration": 1174, - "src": "1597:7:8", + "referencedDeclaration": 1293, + "src": "1597:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1152, + "id": 1271, "isConstant": false, "isLValue": false, "isPure": false, @@ -15523,20 +16938,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:8", + "src": "1597:45:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1153, + "id": 1272, "nodeType": "ExpressionStatement", - "src": "1597:45:8" + "src": "1597:45:10" } ] }, "documentation": null, - "id": 1155, + "id": 1274, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -15544,31 +16959,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1131, + "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1126, + "id": 1245, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1155, - "src": "1440:12:8", + "scope": 1274, + "src": "1440:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 1125, + "id": 1244, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1012, - "src": "1440:6:8", + "referencedDeclaration": 1131, + "src": "1440:6:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$1012", + "typeIdentifier": "t_contract$_IERC20_$1131", "typeString": "contract IERC20" } }, @@ -15577,11 +16992,11 @@ }, { "constant": false, - "id": 1128, + "id": 1247, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 1155, - "src": "1458:15:8", + "scope": 1274, + "src": "1458:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15589,10 +17004,10 @@ "typeString": "address" }, "typeName": { - "id": 1127, + "id": 1246, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:8", + "src": "1458:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15603,11 +17018,11 @@ }, { "constant": false, - "id": 1130, + "id": 1249, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1155, - "src": "1479:13:8", + "scope": 1274, + "src": "1479:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15615,10 +17030,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1129, + "id": 1248, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:8", + "src": "1479:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15628,29 +17043,29 @@ "visibility": "internal" } ], - "src": "1434:62:8" + "src": "1434:62:10" }, "payable": false, "returnParameters": { - "id": 1132, + "id": 1251, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:8" + "src": "1512:0:10" }, - "scope": 1156, - "src": "1404:243:8", + "scope": 1275, + "src": "1404:243:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 1157, - "src": "353:1296:8" + "scope": 1276, + "src": "353:1296:10" } ], - "src": "0:1650:8" + "src": "0:1650:10" }, - "id": 8 + "id": 10 } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi index 88576e784..7673494cb 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"ownerAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isAlgoMiner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isMining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinerAddress","type":"address"}],"name":"migrateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSystem","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopAndRemoveOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCategory","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isSupervisor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mine","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deactivateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwnerAddress","type":"address"}],"name":"resetMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"activateMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSupervisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DAYS_PER_YEAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopMining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minerType","type":"uint16"},{"name":"category","type":"uint8"},{"name":"minerAccountAddress","type":"address"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin index 481853b90..5d1e3dc47 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029 \ No newline at end of file +60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json index 1533a78f8..55de43ce4 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoMiner.json @@ -1,5 +1,14 @@ { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [], @@ -307,7 +316,7 @@ "type": "uint8" }, { - "name": "ownerAddress", + "name": "minerAccountAddress", "type": "address" }, { @@ -320,7 +329,7 @@ "type": "constructor" } ], - "bytecode": "60806040523480156200001157600080fd5b506040516080806200104f83398101604090815281516020830151918301516060909301519092906200004d3364010000000062000103810204565b620000613364010000000062000121810204565b62000075336401000000006200013c810204565b60008360ff16101580156200008e575060058360ff1611155b15156200009a57600080fd5b6003805461ffff191661ffff959095169490941762ff000019166201000060ff949094169390930292909217630100000060b860020a0319166301000000600160a060020a03928316021790925560048054600160a060020a03191691909216179055620001ea565b6200011e60008264010000000062000d8f6200015782021704565b50565b6200011e60018264010000000062000d8f6200015782021704565b6200011e60028264010000000062000d8f6200015782021704565b600160a060020a03811615156200016d57600080fd5b620001828282640100000000620001b2810204565b156200018d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ca57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b610e5580620001fa6000396000f30060806040526004361061013d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663162f986d81146101425780631777fb4b1461015957806319a74ab31461018257806321b79d9814610197578063231d4e2a146101ac57806329d10b6e146101cd5780632e6b6849146101ee578063302c11ca1461020f57806334cdcf2614610240578063363aa6c714610261578063427534a414610276578063608d3d3d1461028b57806374be7592146102ac57806380258e47146102cd57806381a24459146102f857806399f4b251146103195780639e614ca01461032e578063ada436e914610343578063b2a32cd514610364578063be95249414610379578063c6846ef81461038e578063d43acc79146103b5578063da408679146103ca578063e9d61859146103df575b600080fd5b34801561014e57600080fd5b506101576103f4565b005b34801561016557600080fd5b5061016e61045a565b604080519115158252519081900360200190f35b34801561018e57600080fd5b5061016e61045f565b3480156101a357600080fd5b50610157610496565b3480156101b857600080fd5b50610157600160a060020a0360043516610516565b3480156101d957600080fd5b50610157600160a060020a0360043516610602565b3480156101fa57600080fd5b50610157600160a060020a036004351661061f565b34801561021b57600080fd5b5061022461063c565b60408051600160a060020a039092168252519081900360200190f35b34801561024c57600080fd5b5061016e600160a060020a0360043516610652565b34801561026d57600080fd5b5061015761066a565b34801561028257600080fd5b50610157610713565b34801561029757600080fd5b5061016e600160a060020a0360043516610776565b3480156102b857600080fd5b50610157600160a060020a0360043516610789565b3480156102d957600080fd5b506102e26107a6565b6040805160ff9092168252519081900360200190f35b34801561030457600080fd5b5061016e600160a060020a03600435166107b5565b34801561032557600080fd5b506101576107c8565b34801561033a57600080fd5b50610157610999565b34801561034f57600080fd5b50610157600160a060020a03600435166109f3565b34801561037057600080fd5b50610157610a89565b34801561038557600080fd5b50610157610b9c565b34801561039a57600080fd5b506103a3610ba7565b60408051918252519081900360200190f35b3480156103c157600080fd5b50610157610bad565b3480156103d657600080fd5b50610157610bb6565b3480156103eb57600080fd5b50610157610c31565b6103fd336107b5565b151561040857600080fd5b600160045460a060020a900460ff16600381111561042257fe5b1461042c57600080fd5b600480546002919074ff0000000000000000000000000000000000000000191660a060020a835b0217905550565b600190565b6000600160045460a060020a900460ff16600381111561047b57fe5b148015610491575060045460a860020a900460ff165b905090565b60035463010000009004600160a060020a031633146104b457600080fd5b600160045460a060020a900460ff1660038111156104ce57fe5b146104d857600080fd5b60045460a860020a900460ff16156104ef57600080fd5b6004805475ff000000000000000000000000000000000000000000191660a860020a179055565b61051f33610776565b151561052a57600080fd5b600060045460a060020a900460ff16600381111561054457fe5b1461054e57600080fd5b60048054604080517f70a082310000000000000000000000000000000000000000000000000000000081523093810193909352516105ff928492600160a060020a0316916370a08231916024808201926020929091908290030181600087803b1580156105ba57600080fd5b505af11580156105ce573d6000803e3d6000fd5b505050506040513d60208110156105e457600080fd5b5051600454600160a060020a0316919063ffffffff610c3a16565b50565b61060b336107b5565b151561061657600080fd5b6105ff81610cf2565b61062833610776565b151561063357600080fd5b6105ff81610d03565b60035463010000009004600160a060020a031690565b6000610664818363ffffffff610d1416565b92915050565b610673336107b5565b151561067e57600080fd5b600360045460a060020a900460ff16600381111561069857fe5b14156106a357600080fd5b6004805474ff00000000000000000000000000000000000000001916740300000000000000000000000000000000000000001775ff000000000000000000000000000000000000000000191690556003805476ffffffffffffffffffffffffffffffffffffffff00000019169055565b61071c336107b5565b151561072757600080fd5b600260045460a060020a900460ff16600381111561074157fe5b1461074b57600080fd5b600480546001919074ff0000000000000000000000000000000000000000191660a060020a83610453565b600061066460018363ffffffff610d1416565b61079233610652565b151561079d57600080fd5b6105ff81610d4b565b60035462010000900460ff1690565b600061066460028363ffffffff610d1416565b60006107d333610652565b15156107de57600080fd5b600160045460a060020a900460ff1660038111156107f857fe5b1461080257600080fd5b60045460a860020a900460ff16151561081a57600080fd5b60045460b860020a900461ffff161515610890576004805478ffff00000000000000000000000000000000000000000000001976ff0000000000000000000000000000000000000000000019909116760100000000000000000000000000000000000000000000171660b860020a179055610958565b60048054600161ffff60b860020a8084048216929092018116820278ffff00000000000000000000000000000000000000000000001990931692909217928390559091041661016e1415610958576004805478ffff000000000000000000000000000000000000000000000019600160ff760100000000000000000000000000000000000000000000808504821692909201160276ff0000000000000000000000000000000000000000000019909216919091171660b860020a179055600554600290046005555b5060055461016d90046000811161096e57600080fd5b6003546004546105ff91600160a060020a03918216916301000000909104168363ffffffff610c3a16565b6109a233610776565b15156109ad57600080fd5b600060045460a060020a900460ff1660038111156109c757fe5b14156109d257600080fd5b6004805475ffff000000000000000000000000000000000000000019169055565b6109fc336107b5565b1515610a0757600080fd5b600360045460a060020a900460ff166003811115610a2157fe5b14610a2b57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a17905560038054600160a060020a039290921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b6000610a9433610776565b1515610a9f57600080fd5b600060045460a060020a900460ff166003811115610ab957fe5b14610ac357600080fd5b6005541515610b755760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a03909116916370a082319160248083019260209291908290030181600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50519050801515610b6d57600080fd5b600281046005555b506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b610ba533610d5c565b565b61016d81565b610ba533610d6d565b60035463010000009004600160a060020a03163314610bd457600080fd5b600160045460a060020a900460ff166003811115610bee57fe5b14610bf857600080fd5b60045460a860020a900460ff161515610c1057600080fd5b6004805475ff00000000000000000000000000000000000000000019169055565b610ba533610d7e565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050506040513d6020811015610ce057600080fd5b50511515610ced57600080fd5b505050565b6105ff60028263ffffffff610d8f16565b6105ff60018263ffffffff610d8f16565b6000600160a060020a0382161515610d2b57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6105ff60008263ffffffff610d8f16565b6105ff60028263ffffffff610ddd16565b6105ff60018263ffffffff610ddd16565b6105ff60008263ffffffff610ddd16565b600160a060020a0381161515610da457600080fd5b610dae8282610d14565b15610db857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610df257600080fd5b610dfc8282610d14565b1515610e0757600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058201294b6d23ba0b99db018d2b973943cf860ea9ceb1232ea85e77d5e6f5d5a2e890029", + "bytecode": "60806040523480156200001157600080fd5b506040516080806200122083398101604090815281516020830151918301516060909301516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a038416179055919391620000819064010000000062000126810204565b620000953364010000000062000144810204565b620000a9336401000000006200015f810204565b60008360ff1610158015620000c2575060058360ff1611155b1515620000ce57600080fd5b506005805461ffff191661ffff949094169390931762ff000019166201000060ff939093169290920291909117630100000060b860020a0319166301000000600160a060020a0392909216919091021790556200020d565b6200014160028264010000000062000f3d6200017a82021704565b50565b6200014160038264010000000062000f3d6200017a82021704565b6200014160048264010000000062000f3d6200017a82021704565b600160a060020a03811615156200019057600080fd5b620001a58282640100000000620001d5810204565b15620001b057600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515620001ed57600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b611003806200021d6000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630c08bf88811461014d578063162f986d146101645780631777fb4b1461017957806319a74ab3146101a257806321b79d98146101b7578063231d4e2a146101cc57806329d10b6e146101ed5780632e6b68491461020e578063302c11ca1461022f57806334cdcf2614610260578063363aa6c714610281578063427534a414610296578063608d3d3d146102ab57806374be7592146102cc57806380258e47146102ed57806381a244591461031857806399f4b251146103395780639e614ca01461034e578063ada436e914610363578063b2a32cd514610384578063be95249414610399578063c6846ef8146103ae578063d43acc79146103d5578063da408679146103ea578063e9d61859146103ff575b600080fd5b34801561015957600080fd5b50610162610414565b005b34801561017057600080fd5b50610162610432565b34801561018557600080fd5b5061018e6104a1565b604080519115158252519081900360200190f35b3480156101ae57600080fd5b5061018e6104a6565b3480156101c357600080fd5b506101626104dd565b3480156101d857600080fd5b50610162600160a060020a0360043516610577565b3480156101f957600080fd5b50610162600160a060020a0360043516610663565b34801561021a57600080fd5b50610162600160a060020a0360043516610680565b34801561023b57600080fd5b5061024461069d565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b5061018e600160a060020a03600435166106b3565b34801561028d57600080fd5b506101626106cc565b3480156102a257600080fd5b50610162610764565b3480156102b757600080fd5b5061018e600160a060020a03600435166107d0565b3480156102d857600080fd5b50610162600160a060020a03600435166107e3565b3480156102f957600080fd5b50610302610800565b6040805160ff9092168252519081900360200190f35b34801561032457600080fd5b5061018e600160a060020a036004351661080f565b34801561034557600080fd5b50610162610822565b34801561035a57600080fd5b50610162610a1e565b34801561036f57600080fd5b50610162600160a060020a0360043516610a92565b34801561039057600080fd5b50610162610b2b565b3480156103a557600080fd5b50610162610c45565b3480156103ba57600080fd5b506103c3610c4e565b60408051918252519081900360200190f35b3480156103e157600080fd5b50610162610c54565b3480156103f657600080fd5b50610162610c5d565b34801561040b57600080fd5b50610162610cf2565b61041d336107d0565b151561042857600080fd5b610430610cfb565b565b60005460a060020a900460ff161561044957600080fd5b6104523361080f565b151561045d57600080fd5b600160055460b860020a900460ff16600381111561047757fe5b1461048157600080fd5b600580546002919060b860020a60ff02191660b860020a835b0217905550565b600190565b6000600160055460b860020a900460ff1660038111156104c257fe5b1480156104d8575060055460c060020a900460ff165b905090565b60005460a060020a900460ff16156104f457600080fd5b60055463010000009004600160a060020a0316331461051257600080fd5b600160055460b860020a900460ff16600381111561052c57fe5b1461053657600080fd5b60055460c060020a900460ff161561054d57600080fd5b6005805478ff000000000000000000000000000000000000000000000000191660c060020a179055565b610580336107d0565b151561058b57600080fd5b600060055460b860020a900460ff1660038111156105a557fe5b146105af57600080fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610660928492600160a060020a03909116916370a08231916024808201926020929091908290030181600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b5051600154600160a060020a0316919063ffffffff610dc216565b50565b61066c3361080f565b151561067757600080fd5b61066081610e7a565b610689336107d0565b151561069457600080fd5b61066081610e8b565b60055463010000009004600160a060020a031690565b60006106c660028363ffffffff610e9c16565b92915050565b60005460a060020a900460ff16156106e357600080fd5b6106ec3361080f565b15156106f757600080fd5b600360055460b860020a900460ff16600381111561071157fe5b141561071c57600080fd5b6005805460b860020a60ff021916770300000000000000000000000000000000000000000000001778ff00ffffffffffffffffffffffffffffffffffffffff00000019169055565b60005460a060020a900460ff161561077b57600080fd5b6107843361080f565b151561078f57600080fd5b600260055460b860020a900460ff1660038111156107a957fe5b146107b357600080fd5b600580546001919060b860020a60ff02191660b860020a8361049a565b60006106c660038363ffffffff610e9c16565b6107ec336106b3565b15156107f757600080fd5b61066081610ed3565b60055462010000900460ff1690565b60006106c660048363ffffffff610e9c16565b6000805460a060020a900460ff161561083a57600080fd5b610843336106b3565b151561084e57600080fd5b600160055460b860020a900460ff16600381111561086857fe5b1461087257600080fd5b60055460c060020a900460ff16151561088a57600080fd5b60055460d060020a900461ffff16151561090957600580547bffff00000000000000000000000000000000000000000000000000001979ff0000000000000000000000000000000000000000000000000019909116790100000000000000000000000000000000000000000000000000171660d060020a1790556109dd565b60058054600161ffff60d060020a808404821692909201811682027bffff00000000000000000000000000000000000000000000000000001990931692909217928390559091041661016e14156109dd57600580547bffff000000000000000000000000000000000000000000000000000019600160ff790100000000000000000000000000000000000000000000000000808504821692909201160279ff0000000000000000000000000000000000000000000000000019909216919091171660d060020a179055600654600290046006555b5060065461016d9004600081116109f357600080fd5b60055460015461066091600160a060020a03918216916301000000909104168363ffffffff610dc216565b60005460a060020a900460ff1615610a3557600080fd5b610a3e336107d0565b1515610a4957600080fd5b600060055460b860020a900460ff166003811115610a6357fe5b1415610a6e57600080fd5b6005805478ffff000000000000000000000000000000000000000000000019169055565b60005460a060020a900460ff1615610aa957600080fd5b610ab23361080f565b1515610abd57600080fd5b600360055460b860020a900460ff166003811115610ad757fe5b14610ae157600080fd5b60058054600160a060020a039290921663010000000260b860020a60ff021990921660b860020a1776ffffffffffffffffffffffffffffffffffffffff0000001916919091179055565b6000805460a060020a900460ff1615610b4357600080fd5b610b4c336107d0565b1515610b5757600080fd5b600060055460b860020a900460ff166003811115610b7157fe5b14610b7b57600080fd5b6006541515610c2c57600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506040513d6020811015610c1457600080fd5b50519050801515610c2457600080fd5b600281046006555b506005805460b860020a60ff02191660b860020a179055565b61043033610ee4565b61016d81565b61043033610ef5565b60005460a060020a900460ff1615610c7457600080fd5b60055463010000009004600160a060020a03163314610c9257600080fd5b600160055460b860020a900460ff166003811115610cac57fe5b14610cb657600080fd5b60055460c060020a900460ff161515610cce57600080fd5b6005805478ff00000000000000000000000000000000000000000000000019169055565b61043033610f06565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b158015610d6057600080fd5b505af1158015610d74573d6000803e3d6000fd5b505050506040513d6020811015610d8a57600080fd5b505190506000811115610dba57600054600154610dba91600160a060020a0391821691168363ffffffff610dc216565b610660610f17565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50511515610e7557600080fd5b505050565b61066060048263ffffffff610f3d16565b61066060038263ffffffff610f3d16565b6000600160a060020a0382161515610eb357600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61066060028263ffffffff610f3d16565b61066060048263ffffffff610f8b16565b61066060038263ffffffff610f8b16565b61066060028263ffffffff610f8b16565b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b600160a060020a0381161515610f5257600080fd5b610f5c8282610e9c565b15610f6657600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a0381161515610fa057600080fd5b610faa8282610e9c565b1515610fb557600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200a38ca8f69ea6e0732674e2a58d5b93661b5c2aa8a6c6b89ced63a3d5f3186730029", "functionHashes": { "DAYS_PER_YEAR()": "c6846ef8", "activateMiner()": "b2a32cd5", @@ -345,26 +354,27 @@ "resumeMining()": "427534a4", "startMining()": "21b79d98", "stopAndRemoveOwnership()": "363aa6c7", - "stopMining()": "da408679" + "stopMining()": "da408679", + "terminate()": "0c08bf88" }, "gasEstimates": { "creation": { - "codeDepositCost": "733800", + "codeDepositCost": "819800", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DAYS_PER_YEAR()": "624", + "DAYS_PER_YEAR()": "646", "activateMiner()": "infinite", "addCoreTeam(address)": "infinite", "addSupervisor(address)": "infinite", "addSystem(address)": "infinite", "deactivateMiner()": "infinite", - "getCategory()": "696", - "getMiner()": "702", - "isAlgoMiner()": "212", + "getCategory()": "718", + "getMiner()": "724", + "isAlgoMiner()": "234", "isCoreTeam(address)": "infinite", - "isMining()": "859", + "isMining()": "881", "isSupervisor(address)": "infinite", "isSystem(address)": "infinite", "migrateMiner(address)": "infinite", @@ -375,9 +385,10 @@ "renounceSystem()": "infinite", "resetMiner(address)": "infinite", "resumeMining()": "infinite", - "startMining()": "21420", + "startMining()": "21742", "stopAndRemoveOwnership()": "infinite", - "stopMining()": "21772" + "stopMining()": "22094", + "terminate()": "infinite" } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json index b4bb44849..996c88e64 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool-sol-output.json @@ -78,6 +78,15 @@ "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol": { "AlgoPool": { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -254,27 +263,28 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x7AA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH2 0x3B CALLER PUSH5 0x100000000 PUSH2 0x77 DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH3 0x10000 PUSH1 0xB0 PUSH1 0x2 EXP SUB NOT PUSH2 0xFFFF SWAP1 SWAP5 AND PUSH2 0xFFFF NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x120 JUMP JUMPDEST PUSH2 0x8F PUSH1 0x0 DUP3 PUSH5 0x100000000 PUSH2 0x5B5 PUSH2 0x92 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xE9 DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x67B DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x95 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x2296F4C7 DUP2 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x18E JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1B8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x1CD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x416 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x422 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x442 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x451 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x45F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x165 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x46E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x486 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x494 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD2 PUSH2 0x4A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0x4B2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DB CALLER PUSH2 0x46E JUMP JUMPDEST ISZERO ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x261 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x308 JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x331 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x34E JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x36C JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x38A JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x3A8 JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x3C2 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x3C2 JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x3CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x410 SWAP2 PUSH3 0x10000 SWAP1 SWAP2 DIV AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x4BD AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x42B CALLER PUSH2 0x46E JUMP JUMPDEST ISZERO ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43F DUP2 PUSH2 0x55C JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x480 DUP2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x56D AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x4BB CALLER PUSH2 0x5A4 JUMP JUMPDEST JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5B5 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x603 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x5CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D4 DUP3 DUP3 PUSH2 0x56D JUMP JUMPDEST ISZERO PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x622 DUP3 DUP3 PUSH2 0x56D JUMP JUMPDEST ISZERO ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 MOD 0x48 KECCAK256 0x4d PUSH27 0xAC13AA2E9AB7514200C49DD33AE54F0178FD146385AD3444F20EE STOP 0x29 ", - "sourceMap": "490:1831:1:-;;;1158:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1158:174:1;;;;;;;;;;;;;;;;;;;368:24:0;381:10;368:12;;;;:24;:::i;:::-;1264:9:1;:20;;-1:-1:-1;;;;;1295:29:1;;;;;-1:-1:-1;;;;;;1264:20:1;;;;-1:-1:-1;;1264:20:1;;;;;;;1295:29;;;;;;;490:1831;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:3:-;-1:-1:-1;;;;;316:21:3;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:3;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:3;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:3;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:3;:11;:20;;;;;;;;;;;;;;;725:166::o;490:1831:1:-;;;;;;;" + "object": "608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH2 0x91A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP2 DUP3 AND DUP2 OR PUSH1 0xA0 PUSH1 0x2 EXP PUSH1 0xFF MUL NOT AND SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND OR SWAP1 SSTORE PUSH2 0x6F SWAP1 PUSH5 0x100000000 PUSH2 0x8B DUP2 MUL DIV JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0xFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x134 JUMP JUMPDEST PUSH2 0xA3 PUSH1 0x2 DUP3 PUSH5 0x100000000 PUSH2 0x711 PUSH2 0xA6 DUP3 MUL OR DIV JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE DUP3 DUP3 PUSH5 0x100000000 PUSH2 0xFD DUP2 MUL DIV JUMP JUMPDEST ISZERO PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x7D7 DUP1 PUSH2 0x143 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH4 0xFFFFFFFF PUSH1 0xE0 PUSH1 0x2 EXP PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0xC08BF88 DUP2 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0x2296F4C7 EQ PUSH2 0xBC JUMPI DUP1 PUSH4 0x25109E8B EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0x2E6B6849 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x455ACBCD EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x492FBA84 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x49DC9ED0 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x608D3D3D EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x9FC3C983 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xA89FEBB2 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0xAED6183F EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xD43ACC79 EQ PUSH2 0x1D8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x1ED JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x20B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x475 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x185 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x4CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x4F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2 PUSH2 0x503 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA PUSH2 0x512 JUMP JUMPDEST PUSH2 0x1F6 CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x209 PUSH2 0x51B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x241 CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 SWAP3 POP DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x1777FB4B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x80258E47 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH1 0x0 PUSH1 0xFF DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x36E JUMPI POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0xFF DUP3 AND ISZERO ISZERO PUSH2 0x397 JUMPI POP PUSH10 0x152D02C7E14AF6800000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 EQ ISZERO PUSH2 0x3B4 JUMPI POP PUSH10 0xD3C21BCECCEDA1000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x2 EQ ISZERO PUSH2 0x3D2 JUMPI POP PUSH11 0x1A784379D99DB42000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x3 EQ ISZERO PUSH2 0x3F0 JUMPI POP PUSH11 0x27B46536C66C8E3000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x4 EQ ISZERO PUSH2 0x40E JUMPI POP PUSH11 0x34F086F3B33B684000000 PUSH2 0x428 JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x5 EQ ISZERO PUSH2 0x428 JUMPI POP PUSH11 0x422CA8B0A00A425000000 JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x46F SWAP2 AND DUP6 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x5E2 AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH2 0x48A CALLER PUSH2 0x4CD JUMP JUMPDEST ISZERO ISZERO PUSH2 0x495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x49E DUP2 PUSH2 0x681 JUMP JUMPDEST POP JUMP JUMPDEST PUSH11 0x34F086F3B33B684000000 DUP2 JUMP JUMPDEST PUSH10 0xD3C21BCECCEDA1000000 DUP2 JUMP JUMPDEST PUSH11 0x27B46536C66C8E3000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E0 PUSH1 0x2 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x692 AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH10 0x152D02C7E14AF6800000 DUP2 JUMP JUMPDEST PUSH11 0x422CA8B0A00A425000000 DUP2 JUMP JUMPDEST PUSH11 0x1A784379D99DB42000000 DUP2 JUMP JUMPDEST PUSH2 0x209 CALLER PUSH2 0x6C9 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x594 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH2 0x5DA SWAP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH4 0xFFFFFFFF PUSH2 0x5E2 AND JUMP JUMPDEST PUSH2 0x49E PUSH2 0x6DA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 PUSH1 0x2 EXP MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO ISZERO PUSH2 0x67C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x49E PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x711 AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x49E PUSH1 0x2 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x75F AND JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFF0000000000000000000000000000000000000000 NOT AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x730 DUP3 DUP3 PUSH2 0x692 JUMP JUMPDEST ISZERO PUSH2 0x73A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 AND ISZERO ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77E DUP3 DUP3 PUSH2 0x692 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SUB 0xc6 INVALID PUSH26 0x7E016B5DA34D582D5503B392DFDB98114C82ABCB7165886533DC SWAP4 0xb8 STOP 0x29 ", + "sourceMap": "524:1915:1:-;;;1182:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;1182:174:1;;;;;;;;;;;;;;;;;;;156:8:4;:21;;167:10;-1:-1:-1;;;;;;156:21:4;;;;;-1:-1:-1;;;;;;188:19:4;;;;-1:-1:-1;636:29:2;;;;;-1:-1:-1;;;;;636:29:2;;;;;368:24:0;;:12;;;;:24;:::i;:::-;-1:-1:-1;1328:9:1;:20;;-1:-1:-1;;1328:20:1;;;;;;;;;;;;524:1915;;824:96:0;883:29;:16;904:7;883:20;;;;;;:29;:::i;:::-;824:96;:::o;244:167:5:-;-1:-1:-1;;;;;316:21:5;;;;308:30;;;;;;353:18;357:4;363:7;353:3;;;;:18;:::i;:::-;352:19;344:28;;;;;;-1:-1:-1;;;;;379:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;379:27:5;402:4;379:27;;;244:167::o;725:166::-;809:4;-1:-1:-1;;;;;831:21:5;;;;823:30;;;;;;-1:-1:-1;;;;;;866:20:5;:11;:20;;;;;;;;;;;;;;;725:166::o;524:1915:1:-;;;;;;;" }, "gasEstimates": { "creation": { - "codeDepositCost": "331800", + "codeDepositCost": "401400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "CAT_0_VALUE()": "401", - "CAT_1_VALUE()": "335", - "CAT_2_VALUE()": "445", - "CAT_3_VALUE()": "357", - "CAT_4_VALUE()": "313", - "CAT_5_VALUE()": "423", - "TOKEN_FACTOR()": "269", + "CAT_0_VALUE()": "423", + "CAT_1_VALUE()": "357", + "CAT_2_VALUE()": "467", + "CAT_3_VALUE()": "379", + "CAT_4_VALUE()": "335", + "CAT_5_VALUE()": "445", + "TOKEN_FACTOR()": "291", "addCoreTeam(address)": "infinite", "isCoreTeam(address)": "infinite", "renounceCoreTeam()": "infinite", + "terminate()": "infinite", "trasferToMiner(address)": "infinite" } }, @@ -289,10 +299,45 @@ "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", "renounceCoreTeam()": "d43acc79", + "terminate()": "0c08bf88", "trasferToMiner(address)": "2296f4c7" } }, - "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0x36684faaffdccd3408380faed00c3c73ed986c568a88e0cb9e8d12761b4d49cc\",\"urls\":[\"bzzr://9eb7271afec474b033f225a395d76b8dff2afd730dc21f9f10ec6c059714de6b\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0xb457e39e512b5475c3e70193ab0a751f6626a50417954247f0cf47c7ca15eff7\",\"urls\":[\"bzzr://3b585a4055121fee393f2b691538036c87f56556f43f0b6e851a88de7b8275e6\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"minerAddress\",\"type\":\"address\"}],\"name\":\"trasferToMiner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"TOKEN_FACTOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_4_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_1_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_3_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCoreTeam\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_0_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_5_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CAT_2_VALUE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceCoreTeam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"poolType\",\"type\":\"uint16\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":\"AlgoPool\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol\":{\"keccak256\":\"0xe6fc9b275c7a4c4f00337d2a388cc97a64ad82e5a23c24c59a4593e85a05b08a\",\"urls\":[\"bzzr://40c7674b2a3543a2b2606c70df215a876bd1a064d249e658d2bbd6fe25969c2e\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol\":{\"keccak256\":\"0xbb72ddedfb108359e22306e75ce9d1e16ce7fa9e743dfec3a25402df643f3b43\",\"urls\":[\"bzzr://ac95c8dff53cdf9caa690eb44d9f5545d941fdaa6131c412440c503c912db991\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol\":{\"keccak256\":\"0x71adbf7f060599239b7a981594e43dc8fbe8597fd2853b6fe9e70ff39883d73a\",\"urls\":[\"bzzr://70691c1638cdc0f744f8c5b5a94e4f857ba40ad053816cfbd15e13ed41a3bc66\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol\":{\"keccak256\":\"0x94c226040dfda257ee61c1455bbb920db28b6ad0f5cba33ecc76319c003630b7\",\"urls\":[\"bzzr://bdd0568ed74054f0f91933dab7fbba6789cceb60ab2f5200d719347161e8feed\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol\":{\"keccak256\":\"0x29a8fa3204dbd204355714601ce21d7d717a586a4de21009d8f2a3ca7981963f\",\"urls\":[\"bzzr://55d9b762620cef1e6f7b11a26d6cc123f5b608a59e0d36f9bc0a1e8ff0ff5c42\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xa6e47d62e68903c8fff23500d80e7cc8085b9127995803478d9982cd8a6d49e4\",\"urls\":[\"bzzr://7c87eb3c145fe7592c97baa287501faff7e81c1965333c9b042ffb6b387e94a1\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xdd18f05c74536a06166c90a17ec3c6932853764f292bed314ceb23e730ff83af\",\"urls\":[\"bzzr://1d8a608339978ac18782f7051816cf23b4072d8814979e3ef74788cc6025cca0\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc8a7f15fa44eb10057f8bcb58418d3aed6f5267d211d18f93f3d4e0293e3da44\",\"urls\":[\"bzzr://8825e2508348b01a091ff47b8525e583b6e5604f6679684f805d67a9a6a2a7e9\"]},\"d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x0a172a0ef8681d4a7d8034d003670a9b1968d914b0bfa64e13ddca289a85d24a\",\"urls\":[\"bzzr://733b6203c967b44d6de90b5c6b144e58a380a3f29befb2dc70e765dae2f1ca18\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + } + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { + "ERC20TokenHolder": { + "abi": [ + { + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", "userdoc": { "methods": {} } @@ -315,6 +360,34 @@ "stateMutability": "pure", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "isMining", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMiner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -343,7 +416,9 @@ "gasEstimates": null, "methodIdentifiers": { "getCategory()": "80258e47", - "isAlgoMiner()": "1777fb4b" + "getMiner()": "302c11ca", + "isAlgoMiner()": "1777fb4b", + "isMining()": "19a74ab3" } }, "metadata": "", @@ -352,6 +427,35 @@ } } }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "Terminable": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "methodIdentifiers": {} + }, + "metadata": "", + "userdoc": { + "methods": {} + } + } + }, "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { "Roles": { "abi": [], @@ -364,7 +468,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820ba9d82b11504517181f938ed511f09c0a22046ef39e2e32460a2175b508e16a80029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xba SWAP14 DUP3 0xb1 ISZERO DIV MLOAD PUSH18 0x81F938ED511F09C0A22046EF39E2E32460A2 OR JUMPDEST POP DUP15 AND 0xa8 STOP 0x29 ", - "sourceMap": "109:784:3:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "109:784:5:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -398,7 +502,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820da2bd0dd3588878574232c2d13f92e16f4b0e8ad94ede9adb0d087f862d4f8cf0029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda 0x2b 0xd0 0xdd CALLDATALOAD DUP9 DUP8 DUP6 PUSH21 0x232C2D13F92E16F4B0E8AD94EDE9ADB0D087F862D4 0xf8 0xcf STOP 0x29 ", - "sourceMap": "117:1531:4:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "117:1531:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -638,7 +742,7 @@ "linkReferences": {}, "object": "604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c0f55d8db2bd761049fa5ba6b6c207a4d595b758946aba3715580373517606710029", "opcodes": "PUSH1 0x4C PUSH1 0x2C PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH1 0x1C JUMPI PUSH1 0x1E JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN STOP PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xc0 0xf5 0x5d DUP14 0xb2 0xbd PUSH23 0x1049FA5BA6B6C207A4D595B758946ABA37155803735176 MOD PUSH18 0x2900000000000000000000000000000000 ", - "sourceMap": "353:1296:6:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" + "sourceMap": "353:1296:8:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24" }, "gasEstimates": { "creation": { @@ -692,7 +796,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 87, - "sourceUnit": 399, + "sourceUnit": 512, "src": "28:189:0", "symbolAliases": [], "unitAlias": "" @@ -717,10 +821,10 @@ "id": 3, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 398, + "referencedDeclaration": 511, "src": "260:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$398", + "typeIdentifier": "t_contract$_Roles_$511", "typeString": "library Roles" } }, @@ -731,10 +835,10 @@ "id": 4, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, + "referencedDeclaration": 424, "src": "270:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" } } @@ -749,7 +853,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage", + "typeIdentifier": "t_struct$_Role_$424_storage", "typeString": "struct Roles.Role" }, "typeName": { @@ -757,10 +861,10 @@ "id": 6, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, + "referencedDeclaration": 424, "src": "289:10:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -785,7 +889,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, + "referencedDeclaration": 867, "src": "381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -893,7 +997,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, + "referencedDeclaration": 867, "src": "462:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -959,10 +1063,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, + "referencedDeclaration": 870, "src": "443:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", @@ -1047,7 +1151,7 @@ "referencedDeclaration": 7, "src": "584:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage", + "typeIdentifier": "t_struct$_Role_$424_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1058,10 +1162,10 @@ "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 397, + "referencedDeclaration": 510, "src": "584:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$311_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$424_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, @@ -1321,7 +1425,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, + "referencedDeclaration": 867, "src": "797:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1448,7 +1552,7 @@ "referencedDeclaration": 7, "src": "883:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage", + "typeIdentifier": "t_struct$_Role_$424_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1459,10 +1563,10 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 343, + "referencedDeclaration": 456, "src": "883:20:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$311_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$424_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1580,7 +1684,7 @@ "referencedDeclaration": 7, "src": "990:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage", + "typeIdentifier": "t_struct$_Role_$424_storage", "typeString": "struct Roles.Role storage ref" } }, @@ -1591,10 +1695,10 @@ "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 374, + "referencedDeclaration": 487, "src": "990:23:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$311_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$424_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, @@ -1686,10 +1790,10 @@ "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoPool.sol", "exportedSymbols": { "AlgoPool": [ - 291 + 300 ] }, - "id": 292, + "id": 301, "nodeType": "SourceUnit", "nodes": [ { @@ -1707,8 +1811,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "id": 89, "nodeType": "ImportDirective", - "scope": 292, - "sourceUnit": 596, + "scope": 301, + "sourceUnit": 709, "src": "27:195:1", "symbolAliases": [], "unitAlias": "" @@ -1718,8 +1822,8 @@ "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", "id": 90, "nodeType": "ImportDirective", - "scope": 292, - "sourceUnit": 740, + "scope": 301, + "sourceUnit": 853, "src": "224:198:1", "symbolAliases": [], "unitAlias": "" @@ -1729,20 +1833,31 @@ "file": "./IAlgoMiner.sol", "id": 91, "nodeType": "ImportDirective", - "scope": 292, - "sourceUnit": 305, + "scope": 301, + "sourceUnit": 381, "src": "426:26:1", "symbolAliases": [], "unitAlias": "" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", + "file": "./ERC20TokenHolder.sol", + "id": 92, + "nodeType": "ImportDirective", + "scope": 301, + "sourceUnit": 358, + "src": "454:32:1", + "symbolAliases": [], + "unitAlias": "" + }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/AlgoCoreTeamRole.sol", "file": "./AlgoCoreTeamRole.sol", - "id": 92, + "id": 93, "nodeType": "ImportDirective", - "scope": 292, + "scope": 301, "sourceUnit": 87, - "src": "454:32:1", + "src": "488:32:1", "symbolAliases": [], "unitAlias": "" }, @@ -1752,71 +1867,93 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 93, + "id": 94, + "name": "ERC20TokenHolder", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 357, + "src": "545:16:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", + "typeString": "contract ERC20TokenHolder" + } + }, + "id": 95, + "nodeType": "InheritanceSpecifier", + "src": "545:16:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 96, "name": "AlgoCoreTeamRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 86, - "src": "511:16:1", + "src": "563:16:1", "typeDescriptions": { "typeIdentifier": "t_contract$_AlgoCoreTeamRole_$86", "typeString": "contract AlgoCoreTeamRole" } }, - "id": 94, + "id": 97, "nodeType": "InheritanceSpecifier", - "src": "511:16:1" + "src": "563:16:1" } ], "contractDependencies": [ - 86 + 357, + 86, + 417 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 291, + "id": 300, "linearizedBaseContracts": [ - 291, - 86 + 300, + 86, + 357, + 417 ], "name": "AlgoPool", "nodeType": "ContractDefinition", "nodes": [ { - "id": 97, + "id": 100, "libraryName": { "contractScope": null, - "id": 95, + "id": 98, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 739, - "src": "541:9:1", + "referencedDeclaration": 852, + "src": "593:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", - "src": "535:27:1", + "src": "587:27:1", "typeName": { "contractScope": null, - "id": 96, + "id": 99, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "555:6:1", + "referencedDeclaration": 708, + "src": "607:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } } }, { "constant": true, - "id": 104, + "id": 107, "name": "TOKEN_FACTOR", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "570:56:1", + "scope": 300, + "src": "622:56:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1824,10 +1961,10 @@ "typeString": "uint256" }, "typeName": { - "id": 98, + "id": 101, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "570:7:1", + "src": "622:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1839,7 +1976,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 103, + "id": 106, "isConstant": false, "isLValue": false, "isPure": true, @@ -1847,14 +1984,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 99, + "id": 102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "609:2:1", + "src": "661:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", @@ -1870,14 +2007,14 @@ { "argumentTypes": null, "hexValue": "3138", - "id": 101, + "id": 104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "623:2:1", + "src": "675:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", @@ -1893,20 +2030,20 @@ "typeString": "int_const 18" } ], - "id": 100, + "id": 103, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "615:7:1", + "src": "667:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 102, + "id": 105, "isConstant": false, "isLValue": false, "isPure": true, @@ -1914,13 +2051,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "615:11:1", + "src": "667:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "609:17:1", + "src": "661:17:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1930,11 +2067,11 @@ }, { "constant": true, - "id": 109, + "id": 112, "name": "CAT_0_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "633:59:1", + "scope": 300, + "src": "685:59:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1942,10 +2079,10 @@ "typeString": "uint256" }, "typeName": { - "id": 105, + "id": 108, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:1", + "src": "685:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1957,7 +2094,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 108, + "id": 111, "isConstant": false, "isLValue": false, "isPure": true, @@ -1965,14 +2102,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "313030303030", - "id": 106, + "id": 109, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "671:6:1", + "src": "723:6:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100000_by_1", @@ -1984,18 +2121,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 107, + "id": 110, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "680:12:1", + "referencedDeclaration": 107, + "src": "732:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "671:21:1", + "src": "723:21:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2005,11 +2142,11 @@ }, { "constant": true, - "id": 114, + "id": 117, "name": "CAT_1_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "699:60:1", + "scope": 300, + "src": "751:60:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2017,10 +2154,10 @@ "typeString": "uint256" }, "typeName": { - "id": 110, + "id": 113, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "699:7:1", + "src": "751:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2032,7 +2169,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 113, + "id": 116, "isConstant": false, "isLValue": false, "isPure": true, @@ -2040,14 +2177,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 111, + "id": 114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "737:7:1", + "src": "789:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2059,18 +2196,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 112, + "id": 115, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "747:12:1", + "referencedDeclaration": 107, + "src": "799:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "737:22:1", + "src": "789:22:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2080,11 +2217,11 @@ }, { "constant": true, - "id": 121, + "id": 124, "name": "CAT_2_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "766:64:1", + "scope": 300, + "src": "818:64:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2092,10 +2229,10 @@ "typeString": "uint256" }, "typeName": { - "id": 115, + "id": 118, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "766:7:1", + "src": "818:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2107,7 +2244,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 120, + "id": 123, "isConstant": false, "isLValue": false, "isPure": true, @@ -2118,7 +2255,7 @@ "typeIdentifier": "t_rational_2000000_by_1", "typeString": "int_const 2000000" }, - "id": 118, + "id": 121, "isConstant": false, "isLValue": false, "isPure": true, @@ -2126,14 +2263,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "32", - "id": 116, + "id": 119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "804:1:1", + "src": "856:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -2146,14 +2283,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 117, + "id": 120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "808:7:1", + "src": "860:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2161,7 +2298,7 @@ }, "value": "1000000" }, - "src": "804:11:1", + "src": "856:11:1", "typeDescriptions": { "typeIdentifier": "t_rational_2000000_by_1", "typeString": "int_const 2000000" @@ -2171,18 +2308,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 119, + "id": 122, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "818:12:1", + "referencedDeclaration": 107, + "src": "870:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "804:26:1", + "src": "856:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2192,11 +2329,11 @@ }, { "constant": true, - "id": 128, + "id": 131, "name": "CAT_3_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "837:64:1", + "scope": 300, + "src": "889:64:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2204,10 +2341,10 @@ "typeString": "uint256" }, "typeName": { - "id": 122, + "id": 125, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "837:7:1", + "src": "889:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2219,7 +2356,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 127, + "id": 130, "isConstant": false, "isLValue": false, "isPure": true, @@ -2230,7 +2367,7 @@ "typeIdentifier": "t_rational_3000000_by_1", "typeString": "int_const 3000000" }, - "id": 125, + "id": 128, "isConstant": false, "isLValue": false, "isPure": true, @@ -2238,14 +2375,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "33", - "id": 123, + "id": 126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:1", + "src": "927:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -2258,14 +2395,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 124, + "id": 127, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "879:7:1", + "src": "931:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2273,7 +2410,7 @@ }, "value": "1000000" }, - "src": "875:11:1", + "src": "927:11:1", "typeDescriptions": { "typeIdentifier": "t_rational_3000000_by_1", "typeString": "int_const 3000000" @@ -2283,18 +2420,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 126, + "id": 129, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "889:12:1", + "referencedDeclaration": 107, + "src": "941:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "875:26:1", + "src": "927:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2304,11 +2441,11 @@ }, { "constant": true, - "id": 135, + "id": 138, "name": "CAT_4_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "908:64:1", + "scope": 300, + "src": "960:64:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2316,10 +2453,10 @@ "typeString": "uint256" }, "typeName": { - "id": 129, + "id": 132, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "908:7:1", + "src": "960:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2331,7 +2468,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 134, + "id": 137, "isConstant": false, "isLValue": false, "isPure": true, @@ -2342,7 +2479,7 @@ "typeIdentifier": "t_rational_4000000_by_1", "typeString": "int_const 4000000" }, - "id": 132, + "id": 135, "isConstant": false, "isLValue": false, "isPure": true, @@ -2350,14 +2487,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "34", - "id": 130, + "id": 133, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "946:1:1", + "src": "998:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -2370,14 +2507,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 131, + "id": 134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "950:7:1", + "src": "1002:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2385,7 +2522,7 @@ }, "value": "1000000" }, - "src": "946:11:1", + "src": "998:11:1", "typeDescriptions": { "typeIdentifier": "t_rational_4000000_by_1", "typeString": "int_const 4000000" @@ -2395,18 +2532,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 133, + "id": 136, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "960:12:1", + "referencedDeclaration": 107, + "src": "1012:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "946:26:1", + "src": "998:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2416,11 +2553,11 @@ }, { "constant": true, - "id": 142, + "id": 145, "name": "CAT_5_VALUE", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "979:64:1", + "scope": 300, + "src": "1031:64:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2428,10 +2565,10 @@ "typeString": "uint256" }, "typeName": { - "id": 136, + "id": 139, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "979:7:1", + "src": "1031:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2443,7 +2580,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 141, + "id": 144, "isConstant": false, "isLValue": false, "isPure": true, @@ -2454,7 +2591,7 @@ "typeIdentifier": "t_rational_5000000_by_1", "typeString": "int_const 5000000" }, - "id": 139, + "id": 142, "isConstant": false, "isLValue": false, "isPure": true, @@ -2462,14 +2599,14 @@ "leftExpression": { "argumentTypes": null, "hexValue": "35", - "id": 137, + "id": 140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1017:1:1", + "src": "1069:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -2482,14 +2619,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 138, + "id": 141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1021:7:1", + "src": "1073:7:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -2497,7 +2634,7 @@ }, "value": "1000000" }, - "src": "1017:11:1", + "src": "1069:11:1", "typeDescriptions": { "typeIdentifier": "t_rational_5000000_by_1", "typeString": "int_const 5000000" @@ -2507,18 +2644,18 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 140, + "id": 143, "name": "TOKEN_FACTOR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 104, - "src": "1031:12:1", + "referencedDeclaration": 107, + "src": "1083:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1017:26:1", + "src": "1069:26:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2528,11 +2665,11 @@ }, { "constant": false, - "id": 144, + "id": 147, "name": "_poolType", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "1052:24:1", + "scope": 300, + "src": "1104:24:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2540,10 +2677,10 @@ "typeString": "uint16" }, "typeName": { - "id": 143, + "id": 146, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1052:6:1", + "src": "1104:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2554,39 +2691,11 @@ }, { "constant": false, - "id": 146, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 291, - "src": "1083:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" - }, - "typeName": { - "contractScope": null, - "id": 145, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "1083:6:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 150, + "id": 151, "name": "_fundedMiners", "nodeType": "VariableDeclaration", - "scope": 291, - "src": "1111:38:1", + "scope": 300, + "src": "1135:38:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2594,28 +2703,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 149, + "id": 150, "keyType": { - "id": 147, + "id": 148, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1119:7:1", + "src": "1143:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1111:24:1", + "src": "1135:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 148, + "id": 149, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1130:4:1", + "src": "1154:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2627,60 +2736,14 @@ }, { "body": { - "id": 169, + "id": 167, "nodeType": "Block", - "src": "1253:79:1", + "src": "1317:39:1", "statements": [ { "expression": { "argumentTypes": null, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 159, - "name": "_poolType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 144, - "src": "1264:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 160, - "name": "poolType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 152, - "src": "1276:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "1264:20:1", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "1264:20:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 167, + "id": 165, "isConstant": false, "isLValue": false, "isPure": false, @@ -2688,118 +2751,115 @@ "leftHandSide": { "argumentTypes": null, "id": 163, - "name": "_token", + "name": "_poolType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "1295:6:1", + "referencedDeclaration": 147, + "src": "1328:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 165, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 154, - "src": "1311:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 164, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 595, - "src": "1304:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$595_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1304:20:1", + "id": 164, + "name": "poolType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "1340:8:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, - "src": "1295:29:1", + "src": "1328:20:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", - "typeString": "contract IERC20" + "typeIdentifier": "t_uint16", + "typeString": "uint16" } }, - "id": 168, + "id": 166, "nodeType": "ExpressionStatement", - "src": "1295:29:1" + "src": "1328:20:1" } ] }, "documentation": null, - "id": 170, + "id": 168, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 157, + "arguments": [ + { + "argumentTypes": null, + "id": 158, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 155, + "src": "1259:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 159, "modifierName": { "argumentTypes": null, - "id": 156, + "id": 157, + "name": "ERC20TokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "1242:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20TokenHolder_$357_$", + "typeString": "type(contract ERC20TokenHolder)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1242:30:1" + }, + { + "arguments": [], + "id": 161, + "modifierName": { + "argumentTypes": null, + "id": 160, "name": "AlgoCoreTeamRole", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "1218:16:1", + "src": "1282:16:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AlgoCoreTeamRole_$86_$", "typeString": "type(contract AlgoCoreTeamRole)" } }, "nodeType": "ModifierInvocation", - "src": "1218:18:1" + "src": "1282:18:1" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 155, + "id": 156, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 152, + "id": 153, "name": "poolType", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1170:15:1", + "scope": 168, + "src": "1194:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2807,10 +2867,10 @@ "typeString": "uint16" }, "typeName": { - "id": 151, + "id": 152, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1170:6:1", + "src": "1194:6:1", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -2821,11 +2881,11 @@ }, { "constant": false, - "id": 154, + "id": 155, "name": "tokenAddress", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1187:20:1", + "scope": 168, + "src": "1211:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2833,10 +2893,10 @@ "typeString": "address" }, "typeName": { - "id": 153, + "id": 154, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1187:7:1", + "src": "1211:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2846,17 +2906,17 @@ "visibility": "internal" } ], - "src": "1169:39:1" + "src": "1193:39:1" }, "payable": false, "returnParameters": { - "id": 158, + "id": 162, "nodeType": "ParameterList", "parameters": [], - "src": "1253:0:1" + "src": "1317:0:1" }, - "scope": 291, - "src": "1158:174:1", + "scope": 300, + "src": "1182:174:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2865,7 +2925,7 @@ "body": { "id": 289, "nodeType": "Block", - "src": "1406:912:1", + "src": "1444:912:1", "statements": [ { "expression": { @@ -2881,7 +2941,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1425:28:1", + "src": "1463:28:1", "subExpression": { "argumentTypes": null, "baseExpression": { @@ -2890,8 +2950,8 @@ "name": "_fundedMiners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 150, - "src": "1426:13:1", + "referencedDeclaration": 151, + "src": "1464:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -2904,8 +2964,8 @@ "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "1440:12:1", + "referencedDeclaration": 170, + "src": "1478:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2916,7 +2976,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1426:27:1", + "src": "1464:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2939,11 +2999,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1417:7:1", + "referencedDeclaration": 870, + "src": "1455:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -2957,7 +3017,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1417:37:1", + "src": "1455:37:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -2965,7 +3025,7 @@ }, "id": 183, "nodeType": "ExpressionStatement", - "src": "1417:37:1" + "src": "1455:37:1" }, { "assignments": [ @@ -2978,11 +3038,11 @@ "name": "algoMiner", "nodeType": "VariableDeclaration", "scope": 290, - "src": "1467:20:1", + "src": "1505:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" }, "typeName": { @@ -2990,10 +3050,10 @@ "id": 184, "name": "IAlgoMiner", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 304, - "src": "1467:10:1", + "referencedDeclaration": 380, + "src": "1505:10:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" } }, @@ -3011,8 +3071,8 @@ "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "1501:12:1", + "referencedDeclaration": 170, + "src": "1539:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3030,10 +3090,10 @@ "name": "IAlgoMiner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 304, - "src": "1490:10:1", + "referencedDeclaration": 380, + "src": "1528:10:1", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$304_$", + "typeIdentifier": "t_type$_t_contract$_IAlgoMiner_$380_$", "typeString": "type(contract IAlgoMiner)" } }, @@ -3045,14 +3105,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1490:24:1", + "src": "1528:24:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" } }, "nodeType": "VariableDeclarationStatement", - "src": "1467:47:1" + "src": "1505:47:1" }, { "expression": { @@ -3070,9 +3130,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 185, - "src": "1543:9:1", + "src": "1581:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" } }, @@ -3083,8 +3143,8 @@ "lValueRequested": false, "memberName": "isAlgoMiner", "nodeType": "MemberAccess", - "referencedDeclaration": 298, - "src": "1543:21:1", + "referencedDeclaration": 364, + "src": "1581:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$", "typeString": "function () pure external returns (bool)" @@ -3098,7 +3158,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1543:23:1", + "src": "1581:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3116,11 +3176,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1535:7:1", + "referencedDeclaration": 870, + "src": "1573:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3134,7 +3194,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1535:32:1", + "src": "1573:32:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3142,7 +3202,7 @@ }, "id": 195, "nodeType": "ExpressionStatement", - "src": "1535:32:1" + "src": "1573:32:1" }, { "assignments": [ @@ -3155,7 +3215,7 @@ "name": "minerCategory", "nodeType": "VariableDeclaration", "scope": 290, - "src": "1588:19:1", + "src": "1626:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3166,7 +3226,7 @@ "id": 196, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1588:5:1", + "src": "1626:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3189,9 +3249,9 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 185, - "src": "1610:9:1", + "src": "1648:9:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAlgoMiner_$304", + "typeIdentifier": "t_contract$_IAlgoMiner_$380", "typeString": "contract IAlgoMiner" } }, @@ -3202,8 +3262,8 @@ "lValueRequested": false, "memberName": "getCategory", "nodeType": "MemberAccess", - "referencedDeclaration": 303, - "src": "1610:21:1", + "referencedDeclaration": 369, + "src": "1648:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" @@ -3217,14 +3277,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1610:23:1", + "src": "1648:23:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "1588:45:1" + "src": "1626:45:1" }, { "expression": { @@ -3259,7 +3319,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1654:13:1", + "src": "1692:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3277,7 +3337,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1671:1:1", + "src": "1709:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3285,7 +3345,7 @@ }, "value": "0" }, - "src": "1654:18:1", + "src": "1692:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3311,7 +3371,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1676:13:1", + "src": "1714:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3329,7 +3389,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1693:1:1", + "src": "1731:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3337,13 +3397,13 @@ }, "value": "5" }, - "src": "1676:18:1", + "src": "1714:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1654:40:1", + "src": "1692:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3361,11 +3421,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1646:7:1", + "referencedDeclaration": 870, + "src": "1684:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3379,7 +3439,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1646:49:1", + "src": "1684:49:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3387,7 +3447,7 @@ }, "id": 211, "nodeType": "ExpressionStatement", - "src": "1646:49:1" + "src": "1684:49:1" }, { "assignments": [ @@ -3400,7 +3460,7 @@ "name": "value", "nodeType": "VariableDeclaration", "scope": 290, - "src": "1708:13:1", + "src": "1746:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3411,7 +3471,7 @@ "id": 212, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1708:7:1", + "src": "1746:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3432,7 +3492,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1724:1:1", + "src": "1762:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3441,7 +3501,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1708:17:1" + "src": "1746:17:1" }, { "condition": { @@ -3462,7 +3522,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1741:13:1", + "src": "1779:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3480,7 +3540,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1758:1:1", + "src": "1796:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3488,7 +3548,7 @@ }, "value": "0" }, - "src": "1741:18:1", + "src": "1779:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3513,7 +3573,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1816:13:1", + "src": "1854:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3531,7 +3591,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1833:1:1", + "src": "1871:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3539,7 +3599,7 @@ }, "value": "1" }, - "src": "1816:18:1", + "src": "1854:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3564,7 +3624,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1891:13:1", + "src": "1929:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3582,7 +3642,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1908:1:1", + "src": "1946:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -3590,7 +3650,7 @@ }, "value": "2" }, - "src": "1891:18:1", + "src": "1929:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3615,7 +3675,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "1966:13:1", + "src": "2004:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3633,7 +3693,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1983:1:1", + "src": "2021:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", @@ -3641,7 +3701,7 @@ }, "value": "3" }, - "src": "1966:18:1", + "src": "2004:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3666,7 +3726,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "2041:13:1", + "src": "2079:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3684,7 +3744,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2058:1:1", + "src": "2096:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -3692,7 +3752,7 @@ }, "value": "4" }, - "src": "2041:18:1", + "src": "2079:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3717,7 +3777,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 197, - "src": "2116:13:1", + "src": "2154:13:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3735,7 +3795,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2133:1:1", + "src": "2171:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", @@ -3743,7 +3803,7 @@ }, "value": "5" }, - "src": "2116:18:1", + "src": "2154:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3752,11 +3812,11 @@ "falseBody": null, "id": 264, "nodeType": "IfStatement", - "src": "2113:69:1", + "src": "2151:69:1", "trueBody": { "id": 263, "nodeType": "Block", - "src": "2136:46:1", + "src": "2174:46:1", "statements": [ { "expression": { @@ -3773,7 +3833,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2151:5:1", + "src": "2189:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3787,14 +3847,14 @@ "name": "CAT_5_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 142, - "src": "2159:11:1", + "referencedDeclaration": 145, + "src": "2197:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2151:19:1", + "src": "2189:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3802,18 +3862,18 @@ }, "id": 262, "nodeType": "ExpressionStatement", - "src": "2151:19:1" + "src": "2189:19:1" } ] } }, "id": 265, "nodeType": "IfStatement", - "src": "2038:144:1", + "src": "2076:144:1", "trueBody": { "id": 255, "nodeType": "Block", - "src": "2061:46:1", + "src": "2099:46:1", "statements": [ { "expression": { @@ -3830,7 +3890,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2076:5:1", + "src": "2114:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3844,14 +3904,14 @@ "name": "CAT_4_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "2084:11:1", + "referencedDeclaration": 138, + "src": "2122:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2076:19:1", + "src": "2114:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3859,18 +3919,18 @@ }, "id": 254, "nodeType": "ExpressionStatement", - "src": "2076:19:1" + "src": "2114:19:1" } ] } }, "id": 266, "nodeType": "IfStatement", - "src": "1963:219:1", + "src": "2001:219:1", "trueBody": { "id": 247, "nodeType": "Block", - "src": "1986:46:1", + "src": "2024:46:1", "statements": [ { "expression": { @@ -3887,7 +3947,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2001:5:1", + "src": "2039:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3901,14 +3961,14 @@ "name": "CAT_3_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 128, - "src": "2009:11:1", + "referencedDeclaration": 131, + "src": "2047:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2001:19:1", + "src": "2039:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3916,18 +3976,18 @@ }, "id": 246, "nodeType": "ExpressionStatement", - "src": "2001:19:1" + "src": "2039:19:1" } ] } }, "id": 267, "nodeType": "IfStatement", - "src": "1888:294:1", + "src": "1926:294:1", "trueBody": { "id": 239, "nodeType": "Block", - "src": "1911:46:1", + "src": "1949:46:1", "statements": [ { "expression": { @@ -3944,7 +4004,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "1926:5:1", + "src": "1964:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3958,14 +4018,14 @@ "name": "CAT_2_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "1934:11:1", + "referencedDeclaration": 124, + "src": "1972:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1926:19:1", + "src": "1964:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3973,18 +4033,18 @@ }, "id": 238, "nodeType": "ExpressionStatement", - "src": "1926:19:1" + "src": "1964:19:1" } ] } }, "id": 268, "nodeType": "IfStatement", - "src": "1813:369:1", + "src": "1851:369:1", "trueBody": { "id": 231, "nodeType": "Block", - "src": "1836:46:1", + "src": "1874:46:1", "statements": [ { "expression": { @@ -4001,7 +4061,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "1851:5:1", + "src": "1889:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4015,14 +4075,14 @@ "name": "CAT_1_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 114, - "src": "1859:11:1", + "referencedDeclaration": 117, + "src": "1897:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1851:19:1", + "src": "1889:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4030,18 +4090,18 @@ }, "id": 230, "nodeType": "ExpressionStatement", - "src": "1851:19:1" + "src": "1889:19:1" } ] } }, "id": 269, "nodeType": "IfStatement", - "src": "1738:444:1", + "src": "1776:444:1", "trueBody": { "id": 223, "nodeType": "Block", - "src": "1761:46:1", + "src": "1799:46:1", "statements": [ { "expression": { @@ -4058,7 +4118,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "1776:5:1", + "src": "1814:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4072,14 +4132,14 @@ "name": "CAT_0_VALUE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "1784:11:1", + "referencedDeclaration": 112, + "src": "1822:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1776:19:1", + "src": "1814:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4087,7 +4147,7 @@ }, "id": 222, "nodeType": "ExpressionStatement", - "src": "1776:19:1" + "src": "1814:19:1" } ] } @@ -4114,7 +4174,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2202:5:1", + "src": "2240:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4132,7 +4192,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2210:1:1", + "src": "2248:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4140,7 +4200,7 @@ }, "value": "0" }, - "src": "2202:9:1", + "src": "2240:9:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4158,11 +4218,11 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "2194:7:1", + "referencedDeclaration": 870, + "src": "2232:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -4176,7 +4236,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2194:18:1", + "src": "2232:18:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4184,7 +4244,7 @@ }, "id": 275, "nodeType": "ExpressionStatement", - "src": "2194:18:1" + "src": "2232:18:1" }, { "expression": { @@ -4202,8 +4262,8 @@ "name": "_fundedMiners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 150, - "src": "2225:13:1", + "referencedDeclaration": 151, + "src": "2263:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -4216,8 +4276,8 @@ "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "2239:12:1", + "referencedDeclaration": 170, + "src": "2277:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4228,7 +4288,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2225:27:1", + "src": "2263:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4246,7 +4306,7 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2255:4:1", + "src": "2293:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4254,7 +4314,7 @@ }, "value": "true" }, - "src": "2225:34:1", + "src": "2263:34:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4262,7 +4322,7 @@ }, "id": 281, "nodeType": "ExpressionStatement", - "src": "2225:34:1" + "src": "2263:34:1" }, { "expression": { @@ -4274,8 +4334,8 @@ "name": "minerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "2290:12:1", + "referencedDeclaration": 170, + "src": "2328:12:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4288,7 +4348,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 213, - "src": "2304:5:1", + "src": "2342:5:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4312,10 +4372,10 @@ "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "2270:6:1", + "referencedDeclaration": 312, + "src": "2308:6:1", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -4326,10 +4386,10 @@ "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", - "referencedDeclaration": 620, - "src": "2270:19:1", + "referencedDeclaration": 733, + "src": "2308:19:1", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$595_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$595_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$708_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$708_$", "typeString": "function (contract IERC20,address,uint256)" } }, @@ -4341,7 +4401,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2270:40:1", + "src": "2308:40:1", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -4349,7 +4409,7 @@ }, "id": 288, "nodeType": "ExpressionStatement", - "src": "2270:40:1" + "src": "2308:40:1" } ] }, @@ -4359,6 +4419,25 @@ "isConstructor": false, "isDeclaredConst": false, "modifiers": [ + { + "arguments": null, + "id": 173, + "modifierName": { + "argumentTypes": null, + "id": 172, + "name": "notTerminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 408, + "src": "1417:13:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1417:13:1" + }, { "arguments": null, "id": 175, @@ -4369,29 +4448,29 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1393:12:1", + "src": "1431:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1393:12:1" + "src": "1431:12:1" } ], "name": "trasferToMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 173, + "id": 171, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 172, + "id": 170, "name": "minerAddress", "nodeType": "VariableDeclaration", "scope": 290, - "src": "1364:20:1", + "src": "1388:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4399,10 +4478,10 @@ "typeString": "address" }, "typeName": { - "id": 171, + "id": 169, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1364:7:1", + "src": "1388:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4412,43 +4491,135 @@ "visibility": "internal" } ], - "src": "1363:22:1" + "src": "1387:22:1" }, "payable": false, "returnParameters": { "id": 176, "nodeType": "ParameterList", "parameters": [], - "src": "1406:0:1" + "src": "1444:0:1" }, - "scope": 291, - "src": "1340:978:1", + "scope": 300, + "src": "1364:992:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 298, + "nodeType": "Block", + "src": "2405:31:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 295, + "name": "_terminate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 356 + ], + "referencedDeclaration": 356, + "src": "2416:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2416:12:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 297, + "nodeType": "ExpressionStatement", + "src": "2416:12:1" + } + ] + }, + "documentation": null, + "id": 299, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 293, + "modifierName": { + "argumentTypes": null, + "id": 292, + "name": "onlyCoreTeam", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "2392:12:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2392:12:1" + } + ], + "name": "terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 291, + "nodeType": "ParameterList", + "parameters": [], + "src": "2382:2:1" + }, + "payable": false, + "returnParameters": { + "id": 294, + "nodeType": "ParameterList", + "parameters": [], + "src": "2405:0:1" + }, + "scope": 300, + "src": "2364:72:1", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 292, - "src": "490:1831:1" + "scope": 301, + "src": "524:1915:1" } ], - "src": "0:2323:1" + "src": "0:2441:1" }, "id": 1 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/ERC20TokenHolder.sol", "exportedSymbols": { - "IAlgoMiner": [ - 304 + "ERC20TokenHolder": [ + 357 ] }, - "id": 305, + "id": 358, "nodeType": "SourceUnit", "nodes": [ { - "id": 293, + "id": 302, "literals": [ "solidity", "0.4", @@ -4457,15 +4628,709 @@ "nodeType": "PragmaDirective", "src": "0:23:2" }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "id": 303, + "nodeType": "ImportDirective", + "scope": 358, + "sourceUnit": 709, + "src": "27:195:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "id": 304, + "nodeType": "ImportDirective", + "scope": 358, + "sourceUnit": 853, + "src": "224:198:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "file": "./Terminable.sol", + "id": 305, + "nodeType": "ImportDirective", + "scope": 358, + "sourceUnit": 418, + "src": "426:26:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 306, + "name": "Terminable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 417, + "src": "485:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Terminable_$417", + "typeString": "contract Terminable" + } + }, + "id": 307, + "nodeType": "InheritanceSpecifier", + "src": "485:10:2" + } + ], + "contractDependencies": [ + 417 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 357, + "linearizedBaseContracts": [ + 357, + 417 + ], + "name": "ERC20TokenHolder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 310, + "libraryName": { + "contractScope": null, + "id": 308, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 852, + "src": "509:9:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$852", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "503:27:2", + "typeName": { + "contractScope": null, + "id": 309, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 708, + "src": "523:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 312, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "538:22:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 311, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 708, + "src": "538:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 325, + "nodeType": "Block", + "src": "625:48:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 319, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "636:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 321, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 314, + "src": "652:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 320, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "645:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$708_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "645:20:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "src": "636:29:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "id": 324, + "nodeType": "ExpressionStatement", + "src": "636:29:2" + } + ] + }, + "documentation": null, + "id": 326, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 317, + "modifierName": { + "argumentTypes": null, + "id": 316, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 417, + "src": "603:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$417_$", + "typeString": "type(contract Terminable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "603:12:2" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 314, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "581:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "580:22:2" + }, + "payable": false, + "returnParameters": { + "id": 318, + "nodeType": "ParameterList", + "parameters": [], + "src": "625:0:2" + }, + "scope": 357, + "src": "569:104:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 355, + "nodeType": "Block", + "src": "712:214:2", + "statements": [ + { + "assignments": [ + 330 + ], + "declarations": [ + { + "constant": false, + "id": 330, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 356, + "src": "723:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "723:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 337, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 334, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "773:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", + "typeString": "contract ERC20TokenHolder" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20TokenHolder_$357", + "typeString": "contract ERC20TokenHolder" + } + ], + "id": 333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "765:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "765:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 331, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "748:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 653, + "src": "748:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "748:31:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "723:56:2" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 338, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "793:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "810:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "793:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 349, + "nodeType": "IfStatement", + "src": "790:95:2", + "trueBody": { + "id": 348, + "nodeType": "Block", + "src": "813:72:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 344, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "848:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 345, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "858:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 341, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "828:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$708", + "typeString": "contract IERC20" + } + }, + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 733, + "src": "828:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$708_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$708_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "828:45:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 347, + "nodeType": "ExpressionStatement", + "src": "828:45:2" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 350, + "name": "Terminable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 417, + "src": "895:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Terminable_$417_$", + "typeString": "type(contract Terminable)" + } + }, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_terminate", + "nodeType": "MemberAccess", + "referencedDeclaration": 416, + "src": "895:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "895:23:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 354, + "nodeType": "ExpressionStatement", + "src": "895:23:2" + } + ] + }, + "documentation": null, + "id": 356, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "_terminate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 327, + "nodeType": "ParameterList", + "parameters": [], + "src": "700:2:2" + }, + "payable": false, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [], + "src": "712:0:2" + }, + "scope": 357, + "src": "681:245:2", + "stateMutability": "nonpayable", + "superFunction": 416, + "visibility": "internal" + } + ], + "scope": 358, + "src": "456:473:2" + } + ], + "src": "0:929:2" + }, + "id": 2 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/IAlgoMiner.sol", + "exportedSymbols": { + "IAlgoMiner": [ + 380 + ] + }, + "id": 381, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 359, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 304, + "id": 380, "linearizedBaseContracts": [ - 304 + 380 ], "name": "IAlgoMiner", "nodeType": "ContractDefinition", @@ -4473,7 +5338,7 @@ { "body": null, "documentation": null, - "id": 298, + "id": 364, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -4481,23 +5346,23 @@ "name": "isAlgoMiner", "nodeType": "FunctionDefinition", "parameters": { - "id": 294, + "id": 360, "nodeType": "ParameterList", "parameters": [], - "src": "74:2:2" + "src": "74:2:3" }, "payable": false, "returnParameters": { - "id": 297, + "id": 363, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 296, + "id": 362, "name": "", "nodeType": "VariableDeclaration", - "scope": 298, - "src": "98:4:2", + "scope": 364, + "src": "98:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4505,10 +5370,10 @@ "typeString": "bool" }, "typeName": { - "id": 295, + "id": 361, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "98:4:2", + "src": "98:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4518,10 +5383,10 @@ "visibility": "internal" } ], - "src": "97:6:2" + "src": "97:6:3" }, - "scope": 304, - "src": "54:50:2", + "scope": 380, + "src": "54:50:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -4529,7 +5394,7 @@ { "body": null, "documentation": null, - "id": 303, + "id": 369, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -4537,23 +5402,23 @@ "name": "getCategory", "nodeType": "FunctionDefinition", "parameters": { - "id": 299, + "id": 365, "nodeType": "ParameterList", "parameters": [], - "src": "130:2:2" + "src": "130:2:3" }, "payable": false, "returnParameters": { - "id": 302, + "id": 368, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 301, + "id": 367, "name": "", "nodeType": "VariableDeclaration", - "scope": 303, - "src": "154:5:2", + "scope": 369, + "src": "154:5:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4561,10 +5426,10 @@ "typeString": "uint8" }, "typeName": { - "id": 300, + "id": 366, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "154:5:2", + "src": "154:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4574,119 +5439,374 @@ "visibility": "internal" } ], - "src": "153:7:2" + "src": "153:7:3" }, - "scope": 304, - "src": "110:51:2", + "scope": 380, + "src": "110:51:3", "stateMutability": "view", "superFunction": null, "visibility": "public" - } - ], - "scope": 305, - "src": "27:137:2" - } - ], - "src": "0:164:2" - }, - "id": 2 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", - "exportedSymbols": { - "Roles": [ - 398 - ] - }, - "id": 399, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 306, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:3" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", - "fullyImplemented": true, - "id": 398, - "linearizedBaseContracts": [ - 398 - ], - "name": "Roles", - "nodeType": "ContractDefinition", - "nodes": [ + }, { - "canonicalName": "Roles.Role", - "id": 311, - "members": [ - { - "constant": false, - "id": 310, - "name": "bearer", - "nodeType": "VariableDeclaration", - "scope": 311, - "src": "145:32:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 309, - "keyType": { - "id": 307, + "body": null, + "documentation": null, + "id": 374, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isMining", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 370, + "nodeType": "ParameterList", + "parameters": [], + "src": "184:2:3" + }, + "payable": false, + "returnParameters": { + "id": 373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 372, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "208:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 371, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "208:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "207:6:3" + }, + "scope": 380, + "src": "167:47:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 379, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getMiner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 375, + "nodeType": "ParameterList", + "parameters": [], + "src": "237:2:3" + }, + "payable": false, + "returnParameters": { + "id": 378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 377, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 379, + "src": "261:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 376, "name": "address", "nodeType": "ElementaryTypeName", - "src": "154:7:3", + "src": "261:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "Mapping", - "src": "145:25:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "value": null, + "visibility": "internal" + } + ], + "src": "260:9:3" + }, + "scope": 380, + "src": "220:50:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 381, + "src": "27:246:3" + } + ], + "src": "0:273:3" + }, + "id": 3 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/Terminable.sol", + "exportedSymbols": { + "Terminable": [ + 417 + ] + }, + "id": 418, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 382, + "literals": [ + "solidity", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 417, + "linearizedBaseContracts": [ + 417 + ], + "name": "Terminable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 384, + "name": "_creator", + "nodeType": "VariableDeclaration", + "scope": 417, + "src": "56:25:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 386, + "name": "_terminated", + "nodeType": "VariableDeclaration", + "scope": 417, + "src": "88:25:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 385, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "88:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 398, + "nodeType": "Block", + "src": "145:70:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 389, + "name": "_creator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 384, + "src": "156:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 390, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 867, + "src": "167:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "167:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "valueType": { - "id": 308, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "165:4:3", + "id": 393, + "nodeType": "ExpressionStatement", + "src": "156:21:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 394, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "188:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "202:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "188:19:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Role", - "nodeType": "StructDefinition", - "scope": 398, - "src": "127:55:3", - "visibility": "public" + }, + "id": 397, + "nodeType": "ExpressionStatement", + "src": "188:19:4" + } + ] + }, + "documentation": null, + "id": 399, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 387, + "nodeType": "ParameterList", + "parameters": [], + "src": "133:2:4" + }, + "payable": false, + "returnParameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [], + "src": "145:0:4" + }, + "scope": 417, + "src": "122:93:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { "body": { - "id": 342, + "id": 407, "nodeType": "Block", - "src": "302:109:3", + "src": "248:52:4", "statements": [ { "expression": { @@ -4694,139 +5814,7 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 319, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "316:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 321, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "335:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 320, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "327:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "327:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "316:21:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 318, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 757, - 758 - ], - "referencedDeclaration": 757, - "src": "308:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "308:30:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 325, - "nodeType": "ExpressionStatement", - "src": "308:30:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 331, + "id": 403, "isConstant": false, "isLValue": false, "isPure": false, @@ -4834,68 +5822,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "352:19:3", + "src": "267:12:4", "subExpression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 328, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "357:4:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 329, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "363:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 327, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 397, - "src": "353:3:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "353:18:3", + "id": 402, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "268:11:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4914,21 +5849,21 @@ "typeString": "bool" } ], - "id": 326, + "id": 401, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "344:7:3", + "referencedDeclaration": 870, + "src": "259:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 332, + "id": 404, "isConstant": false, "isLValue": false, "isPure": false, @@ -4936,75 +5871,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "344:28:3", + "src": "259:21:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 333, + "id": 405, "nodeType": "ExpressionStatement", - "src": "344:28:3" + "src": "259:21:4" }, + { + "id": 406, + "nodeType": "PlaceholderStatement", + "src": "291:1:4" + } + ] + }, + "documentation": null, + "id": 408, + "name": "notTerminated", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 400, + "nodeType": "ParameterList", + "parameters": [], + "src": "245:2:4" + }, + "src": "223:77:4", + "visibility": "internal" + }, + { + "body": { + "id": 415, + "nodeType": "Block", + "src": "339:37:4", + "statements": [ { "expression": { "argumentTypes": null, - "id": 340, + "id": 413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 334, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "379:4:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - "id": 337, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "379:11:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 338, - "indexExpression": { - "argumentTypes": null, - "id": 336, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "391:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "379:20:3", + "id": 411, + "name": "_terminated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "350:11:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5015,14 +5933,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 339, + "id": 412, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "402:4:3", + "src": "364:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5030,105 +5948,150 @@ }, "value": "true" }, - "src": "379:27:3", + "src": "350:18:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 341, + "id": 414, "nodeType": "ExpressionStatement", - "src": "379:27:3" + "src": "350:18:4" } ] }, - "documentation": "@dev give an account access to this role", - "id": 343, + "documentation": null, + "id": 416, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "add", + "name": "_terminate", "nodeType": "FunctionDefinition", "parameters": { - "id": 316, + "id": 409, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 313, - "name": "role", - "nodeType": "VariableDeclaration", - "scope": 343, - "src": "257:17:3", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role" - }, - "typeName": { - "contractScope": null, - "id": 312, - "name": "Role", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, - "src": "257:4:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role" - } - }, - "value": null, - "visibility": "internal" + "parameters": [], + "src": "327:2:4" + }, + "payable": false, + "returnParameters": { + "id": 410, + "nodeType": "ParameterList", + "parameters": [], + "src": "339:0:4" + }, + "scope": 417, + "src": "308:68:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 418, + "src": "27:352:4" + } + ], + "src": "0:379:4" + }, + "id": 4 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 511 + ] + }, + "id": 512, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 419, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 511, + "linearizedBaseContracts": [ + 511 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 424, + "members": [ + { + "constant": false, + "id": 423, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 424, + "src": "145:32:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" }, - { - "constant": false, - "id": 315, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 343, - "src": "276:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, + "typeName": { + "id": 422, + "keyType": { + "id": 420, "name": "address", "nodeType": "ElementaryTypeName", - "src": "276:7:3", + "src": "154:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "value": null, - "visibility": "internal" - } - ], - "src": "256:36:3" - }, - "payable": false, - "returnParameters": { - "id": 317, - "nodeType": "ParameterList", - "parameters": [], - "src": "302:0:3" - }, - "scope": 398, - "src": "244:167:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" + "nodeType": "Mapping", + "src": "145:25:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 421, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "165:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 511, + "src": "127:55:5", + "visibility": "public" }, { "body": { - "id": 373, + "id": 455, "nodeType": "Block", - "src": "538:109:3", + "src": "302:109:5", "statements": [ { "expression": { @@ -5140,19 +6103,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 355, + "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 351, + "id": 432, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "552:7:3", + "referencedDeclaration": 428, + "src": "316:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5166,14 +6129,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 353, + "id": 434, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "571:1:3", + "src": "335:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5189,20 +6152,20 @@ "typeString": "int_const 0" } ], - "id": 352, + "id": 433, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "563:7:3", + "src": "327:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 354, + "id": 435, "isConstant": false, "isLValue": false, "isPure": true, @@ -5210,13 +6173,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "563:10:3", + "src": "327:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "552:21:3", + "src": "316:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5230,21 +6193,21 @@ "typeString": "bool" } ], - "id": 350, + "id": 431, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "544:7:3", + "referencedDeclaration": 870, + "src": "308:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 356, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, @@ -5252,15 +6215,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "544:30:3", + "src": "308:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 357, + "id": 438, "nodeType": "ExpressionStatement", - "src": "544:30:3" + "src": "308:30:5" }, { "expression": { @@ -5268,65 +6231,81 @@ "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 360, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 345, - "src": "592:4:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - } - }, - { - "argumentTypes": null, - "id": 361, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "598:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 359, - "name": "has", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 397, - "src": "588:3:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$311_storage_ptr_$_t_address_$returns$_t_bool_$", - "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" - } - }, - "id": 362, + "id": 444, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "588:18:3", + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "352:19:5", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 441, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "357:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 442, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "363:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 440, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "353:3:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "353:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5340,21 +6319,21 @@ "typeString": "bool" } ], - "id": 358, + "id": 439, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "580:7:3", + "referencedDeclaration": 870, + "src": "344:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 363, + "id": 445, "isConstant": false, "isLValue": false, "isPure": false, @@ -5362,20 +6341,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "580:27:3", + "src": "344:28:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 364, + "id": 446, "nodeType": "ExpressionStatement", - "src": "580:27:3" + "src": "344:28:5" }, { "expression": { "argumentTypes": null, - "id": 371, + "id": 453, "isConstant": false, "isLValue": false, "isPure": false, @@ -5386,40 +6365,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 365, + "id": 447, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 345, - "src": "614:4:3", + "referencedDeclaration": 426, + "src": "379:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 368, + "id": 450, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "614:11:3", + "referencedDeclaration": 423, + "src": "379:11:5", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 369, + "id": 451, "indexExpression": { "argumentTypes": null, - "id": 367, + "id": 449, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "626:7:3", + "referencedDeclaration": 428, + "src": "391:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5430,7 +6409,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "614:20:3", + "src": "379:20:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5440,68 +6419,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "66616c7365", - "id": 370, + "hexValue": "74727565", + "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "637:5:3", + "src": "402:4:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, - "value": "false" + "value": "true" }, - "src": "614:28:3", + "src": "379:27:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 372, + "id": 454, "nodeType": "ExpressionStatement", - "src": "614:28:3" + "src": "379:27:5" } ] }, - "documentation": "@dev remove an account's access to this role", - "id": 374, + "documentation": "@dev give an account access to this role", + "id": 456, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "remove", + "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 348, + "id": 429, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 345, + "id": 426, "name": "role", "nodeType": "VariableDeclaration", - "scope": 374, - "src": "493:17:3", + "scope": 456, + "src": "257:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 344, + "id": 425, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, - "src": "493:4:3", + "referencedDeclaration": 424, + "src": "257:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -5510,11 +6489,11 @@ }, { "constant": false, - "id": 347, + "id": 428, "name": "account", "nodeType": "VariableDeclaration", - "scope": 374, - "src": "512:15:3", + "scope": 456, + "src": "276:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5522,10 +6501,10 @@ "typeString": "address" }, "typeName": { - "id": 346, + "id": 427, "name": "address", "nodeType": "ElementaryTypeName", - "src": "512:7:3", + "src": "276:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5535,26 +6514,26 @@ "visibility": "internal" } ], - "src": "492:36:3" + "src": "256:36:5" }, "payable": false, "returnParameters": { - "id": 349, + "id": 430, "nodeType": "ParameterList", "parameters": [], - "src": "538:0:3" + "src": "302:0:5" }, - "scope": 398, - "src": "477:170:3", + "scope": 511, + "src": "244:167:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 396, + "id": 486, "nodeType": "Block", - "src": "817:74:3", + "src": "538:109:5", "statements": [ { "expression": { @@ -5566,19 +6545,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 388, + "id": 468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 384, + "id": 464, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 378, - "src": "831:7:3", + "referencedDeclaration": 460, + "src": "552:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5592,14 +6571,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 386, + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "850:1:3", + "src": "571:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5615,20 +6594,20 @@ "typeString": "int_const 0" } ], - "id": 385, + "id": 465, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "842:7:3", + "src": "563:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 387, + "id": 467, "isConstant": false, "isLValue": false, "isPure": true, @@ -5636,13 +6615,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:10:3", + "src": "563:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "831:21:3", + "src": "552:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5656,21 +6635,21 @@ "typeString": "bool" } ], - "id": 383, + "id": 463, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "823:7:3", + "referencedDeclaration": 870, + "src": "544:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 389, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, @@ -5678,114 +6657,256 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "823:30:3", + "src": "544:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 390, + "id": 470, "nodeType": "ExpressionStatement", - "src": "823:30:3" + "src": "544:30:5" }, { "expression": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { + "arguments": [ + { "argumentTypes": null, - "id": 391, - "name": "role", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 376, - "src": "866:4:3", + "arguments": [ + { + "argumentTypes": null, + "id": 473, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "592:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 474, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 460, + "src": "598:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 472, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "588:3:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$424_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:18:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", - "typeString": "struct Roles.Role storage pointer" + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 471, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "580:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:27:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "580:27:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 478, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "614:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 481, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 423, + "src": "614:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 482, + "indexExpression": { + "argumentTypes": null, + "id": 480, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 460, + "src": "626:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 392, "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": false, - "memberName": "bearer", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "866:11:3", + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "614:20:5", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 394, - "indexExpression": { + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "argumentTypes": null, - "id": 393, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 378, - "src": "878:7:3", + "hexValue": "66616c7365", + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:5:5", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "866:20:3", + "src": "614:28:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 382, - "id": 395, - "nodeType": "Return", - "src": "859:27:3" + "id": 485, + "nodeType": "ExpressionStatement", + "src": "614:28:5" } ] }, - "documentation": "@dev check if an account has this role\n@return bool", - "id": 397, + "documentation": "@dev remove an account's access to this role", + "id": 487, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "has", + "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 379, + "id": 461, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 376, + "id": 458, "name": "role", "nodeType": "VariableDeclaration", - "scope": 397, - "src": "738:17:3", + "scope": 487, + "src": "493:17:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 375, + "id": 457, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 311, - "src": "738:4:3", + "referencedDeclaration": 424, + "src": "493:4:5", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$311_storage_ptr", + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -5794,11 +6915,11 @@ }, { "constant": false, - "id": 378, + "id": 460, "name": "account", "nodeType": "VariableDeclaration", - "scope": 397, - "src": "757:15:3", + "scope": 487, + "src": "512:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5806,10 +6927,10 @@ "typeString": "address" }, "typeName": { - "id": 377, + "id": 459, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:3", + "src": "512:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5819,1215 +6940,27 @@ "visibility": "internal" } ], - "src": "737:36:3" + "src": "492:36:5" }, "payable": false, "returnParameters": { - "id": 382, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 381, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 397, - "src": "809:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 380, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "809:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "808:6:3" - }, - "scope": 398, - "src": "725:166:3", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 399, - "src": "109:784:3" - } - ], - "src": "0:894:3" - }, - "id": 3 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", - "exportedSymbols": { - "SafeMath": [ - 526 - ] - }, - "id": 527, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 400, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:4" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", - "fullyImplemented": true, - "id": 526, - "linearizedBaseContracts": [ - 526 - ], - "name": "SafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 432, - "nodeType": "Block", - "src": "271:314:4", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 409, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "486:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 410, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "491:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "486:6:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 415, - "nodeType": "IfStatement", - "src": "482:35:4", - "trueBody": { - "id": 414, - "nodeType": "Block", - "src": "494:23:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 412, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "509:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 408, - "id": 413, - "nodeType": "Return", - "src": "502:8:4" - } - ] - } - }, - { - "assignments": [ - 417 - ], - "declarations": [ - { - "constant": false, - "id": 417, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 433, - "src": "523:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 416, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "523:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 421, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 418, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "535:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 419, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 404, - "src": "539:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "535:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "523:17:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 423, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "554:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 424, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "558:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 426, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 404, - "src": "563:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "554:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 422, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 757, - 758 - ], - "referencedDeclaration": 757, - "src": "546:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "546:19:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 429, - "nodeType": "ExpressionStatement", - "src": "546:19:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 430, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "579:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 408, - "id": 431, - "nodeType": "Return", - "src": "572:8:4" - } - ] - }, - "documentation": "@dev Multiplies two numbers, reverts on overflow.", - "id": 433, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 405, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 402, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 433, - "src": "217:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 401, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "217:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 404, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 433, - "src": "228:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 403, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "228:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "216:22:4" - }, - "payable": false, - "returnParameters": { - "id": 408, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 407, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 433, - "src": "262:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 406, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "262:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "261:9:4" - }, - "scope": 526, - "src": "204:381:4", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 456, - "nodeType": "Block", - "src": "762:203:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 443, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 437, - "src": "776:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "776:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 442, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 757, - 758 - ], - "referencedDeclaration": 757, - "src": "768:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "768:14:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 447, - "nodeType": "ExpressionStatement", - "src": "768:14:4" - }, - { - "assignments": [ - 449 - ], - "declarations": [ - { - "constant": false, - "id": 449, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "846:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 448, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "846:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 453, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 450, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 435, - "src": "858:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 451, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 437, - "src": "862:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "858:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "846:17:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 454, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "959:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 441, - "id": 455, - "nodeType": "Return", - "src": "952:8:4" - } - ] - }, - "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", - "id": 457, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 438, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 435, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "708:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 434, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "708:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 437, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "719:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 436, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "719:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "707:22:4" - }, - "payable": false, - "returnParameters": { - "id": 441, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 440, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "753:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 439, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "753:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "752:9:4" - }, - "scope": 526, - "src": "695:270:4", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 480, - "nodeType": "Block", - "src": "1145:64:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 467, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "1159:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 468, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 459, - "src": "1164:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1159:6:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 466, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 757, - 758 - ], - "referencedDeclaration": 757, - "src": "1151:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 470, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1151:15:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 471, - "nodeType": "ExpressionStatement", - "src": "1151:15:4" - }, - { - "assignments": [ - 473 - ], - "declarations": [ - { - "constant": false, - "id": 473, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "1172:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 472, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1172:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 477, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 474, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 459, - "src": "1184:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 475, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "1188:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1184:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1172:17:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 478, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 473, - "src": "1203:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 465, - "id": 479, - "nodeType": "Return", - "src": "1196:8:4" - } - ] - }, - "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", - "id": 481, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { "id": 462, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 459, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "1091:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 458, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1091:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 461, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "1102:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 460, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1102:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1090:22:4" + "parameters": [], + "src": "538:0:5" }, - "payable": false, - "returnParameters": { - "id": 465, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 464, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "1136:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1135:9:4" - }, - "scope": 526, - "src": "1078:131:4", - "stateMutability": "pure", + "scope": 511, + "src": "477:170:5", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 504, + "id": 509, "nodeType": "Block", - "src": "1339:64:4", + "src": "817:74:5", "statements": [ - { - "assignments": [ - 491 - ], - "declarations": [ - { - "constant": false, - "id": 491, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 505, - "src": "1345:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 490, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1345:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 495, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 494, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 492, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 483, - "src": "1357:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 493, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 485, - "src": "1361:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1357:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1345:17:4" - }, { "expression": { "argumentTypes": null, @@ -7035,10 +6968,10 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 499, + "id": 501, "isConstant": false, "isLValue": false, "isPure": false, @@ -7046,32 +6979,75 @@ "leftExpression": { "argumentTypes": null, "id": 497, - "name": "c", + "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, - "src": "1376:1:4", + "src": "831:7:5", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": ">=", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 498, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 483, - "src": "1381:1:4", + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "842:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:10:5", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1376:6:4", + "src": "831:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7089,17 +7065,17 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1368:7:4", + "referencedDeclaration": 870, + "src": "823:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 500, + "id": 502, "isConstant": false, "isLValue": false, "isPure": false, @@ -7107,56 +7083,568 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1368:15:4", + "src": "823:30:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 501, + "id": 503, "nodeType": "ExpressionStatement", - "src": "1368:15:4" + "src": "823:30:5" }, { "expression": { "argumentTypes": null, - "id": 502, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "1397:1:4", + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 504, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "866:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 505, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 423, + "src": "866:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 507, + "indexExpression": { + "argumentTypes": null, + "id": 506, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "878:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "866:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 495, + "id": 508, + "nodeType": "Return", + "src": "859:27:5" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 510, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "738:17:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 488, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 424, + "src": "738:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$424_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "757:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:36:5" + }, + "payable": false, + "returnParameters": { + "id": 495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 494, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "809:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 493, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "809:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "808:6:5" + }, + "scope": 511, + "src": "725:166:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 512, + "src": "109:784:5" + } + ], + "src": "0:894:5" + }, + "id": 5 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 639 + ] + }, + "id": 640, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 513, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 639, + "linearizedBaseContracts": [ + 639 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 545, + "nodeType": "Block", + "src": "271:314:6", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 522, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "486:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "486:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 528, + "nodeType": "IfStatement", + "src": "482:35:6", + "trueBody": { + "id": 527, + "nodeType": "Block", + "src": "494:23:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "509:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 521, + "id": 526, + "nodeType": "Return", + "src": "502:8:6" + } + ] + } + }, + { + "assignments": [ + 530 + ], + "declarations": [ + { + "constant": false, + "id": 530, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 546, + "src": "523:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 534, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 531, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "535:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 532, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "539:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "535:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 489, - "id": 503, + "nodeType": "VariableDeclarationStatement", + "src": "523:17:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 536, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "554:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 537, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "558:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 539, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "563:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "554:10:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 535, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "546:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "546:19:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 542, + "nodeType": "ExpressionStatement", + "src": "546:19:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 543, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "579:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 521, + "id": 544, "nodeType": "Return", - "src": "1390:8:4" + "src": "572:8:6" } ] }, - "documentation": "@dev Adds two numbers, reverts on overflow.", - "id": 505, + "documentation": "@dev Multiplies two numbers, reverts on overflow.", + "id": 546, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "add", + "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 486, + "id": 518, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 483, + "id": 515, "name": "a", "nodeType": "VariableDeclaration", - "scope": 505, - "src": "1285:9:4", + "scope": 546, + "src": "217:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7164,10 +7652,10 @@ "typeString": "uint256" }, "typeName": { - "id": 482, + "id": 514, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1285:7:4", + "src": "217:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7178,11 +7666,11 @@ }, { "constant": false, - "id": 485, + "id": 517, "name": "b", "nodeType": "VariableDeclaration", - "scope": 505, - "src": "1296:9:4", + "scope": 546, + "src": "228:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7190,10 +7678,10 @@ "typeString": "uint256" }, "typeName": { - "id": 484, + "id": 516, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1296:7:4", + "src": "228:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7203,20 +7691,20 @@ "visibility": "internal" } ], - "src": "1284:22:4" + "src": "216:22:6" }, "payable": false, "returnParameters": { - "id": 489, + "id": 521, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 488, + "id": 520, "name": "", "nodeType": "VariableDeclaration", - "scope": 505, - "src": "1330:7:4", + "scope": 546, + "src": "262:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7224,10 +7712,10 @@ "typeString": "uint256" }, "typeName": { - "id": 487, + "id": 519, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1330:7:4", + "src": "262:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7237,19 +7725,19 @@ "visibility": "internal" } ], - "src": "1329:9:4" + "src": "261:9:6" }, - "scope": 526, - "src": "1272:131:4", + "scope": 639, + "src": "204:381:6", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 524, + "id": 569, "nodeType": "Block", - "src": "1602:44:4", + "src": "762:203:6", "statements": [ { "expression": { @@ -7261,37 +7749,37 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 517, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 515, + "id": 556, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 509, - "src": "1616:1:4", + "referencedDeclaration": 550, + "src": "776:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 516, + "id": 557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1621:1:4", + "src": "780:1:6", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7299,7 +7787,7 @@ }, "value": "0" }, - "src": "1616:6:4", + "src": "776:5:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7313,21 +7801,21 @@ "typeString": "bool" } ], - "id": 514, + "id": 555, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1608:7:4", + "referencedDeclaration": 870, + "src": "768:7:6", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 518, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, @@ -7335,88 +7823,137 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1608:15:4", + "src": "768:14:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 519, + "id": 560, "nodeType": "ExpressionStatement", - "src": "1608:15:4" + "src": "768:14:6" }, { - "expression": { + "assignments": [ + 562 + ], + "declarations": [ + { + "constant": false, + "id": 562, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "846:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 561, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "846:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 566, + "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 522, + "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 520, + "id": 563, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 507, - "src": "1636:1:4", + "referencedDeclaration": 548, + "src": "858:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 521, + "id": 564, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 509, - "src": "1640:1:4", + "referencedDeclaration": 550, + "src": "862:1:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1636:5:4", + "src": "858:5:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 513, - "id": 523, + "nodeType": "VariableDeclarationStatement", + "src": "846:17:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 567, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "959:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 554, + "id": 568, "nodeType": "Return", - "src": "1629:12:4" + "src": "952:8:6" } ] }, - "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", - "id": 525, + "documentation": "@dev Integer division of two numbers truncating the quotient, reverts on division by zero.", + "id": 570, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], - "name": "mod", + "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 510, + "id": 551, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 507, + "id": 548, "name": "a", "nodeType": "VariableDeclaration", - "scope": 525, - "src": "1548:9:4", + "scope": 570, + "src": "708:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7424,10 +7961,10 @@ "typeString": "uint256" }, "typeName": { - "id": 506, + "id": 547, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1548:7:4", + "src": "708:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7438,11 +7975,11 @@ }, { "constant": false, - "id": 509, + "id": 550, "name": "b", "nodeType": "VariableDeclaration", - "scope": 525, - "src": "1559:9:4", + "scope": 570, + "src": "719:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7450,10 +7987,10 @@ "typeString": "uint256" }, "typeName": { - "id": 508, + "id": 549, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1559:7:4", + "src": "719:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7463,387 +8000,20 @@ "visibility": "internal" } ], - "src": "1547:22:4" + "src": "707:22:6" }, "payable": false, "returnParameters": { - "id": 513, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 512, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 525, - "src": "1593:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 511, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1593:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1592:9:4" - }, - "scope": 526, - "src": "1535:111:4", - "stateMutability": "pure", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 527, - "src": "117:1531:4" - } - ], - "src": "0:1649:4" - }, - "id": 4 - }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { - "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "exportedSymbols": { - "IERC20": [ - 595 - ] - }, - "id": 596, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 528, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:5" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", - "fullyImplemented": false, - "id": 595, - "linearizedBaseContracts": [ - 595 - ], - "name": "IERC20", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": null, - "id": 533, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "totalSupply", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 529, - "nodeType": "ParameterList", - "parameters": [], - "src": "156:2:5" - }, - "payable": false, - "returnParameters": { - "id": 532, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 531, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "182:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "182:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "181:9:5" - }, - "scope": 595, - "src": "136:55:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 540, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 536, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 535, - "name": "who", - "nodeType": "VariableDeclaration", - "scope": 540, - "src": "214:11:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 534, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "214:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "213:13:5" - }, - "payable": false, - "returnParameters": { - "id": 539, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 538, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 540, - "src": "250:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 537, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "250:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "249:9:5" - }, - "scope": 595, - "src": "195:64:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 549, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 545, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 542, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 549, - "src": "282:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 541, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 544, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 549, - "src": "297:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 543, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "297:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "281:32:5" - }, - "payable": false, - "returnParameters": { - "id": 548, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 547, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 549, - "src": "341:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 546, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "341:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "340:9:5" - }, - "scope": 595, - "src": "263:87:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 558, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { "id": 554, "nodeType": "ParameterList", "parameters": [ - { - "constant": false, - "id": 551, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 558, - "src": "372:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 550, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 553, - "name": "value", + "name": "", "nodeType": "VariableDeclaration", - "scope": 558, - "src": "384:13:5", + "scope": 570, + "src": "753:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7854,7 +8024,7 @@ "id": 552, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "384:7:5", + "src": "753:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7864,460 +8034,230 @@ "visibility": "internal" } ], - "src": "371:27:5" + "src": "752:9:6" }, - "payable": false, - "returnParameters": { - "id": 557, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 556, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 558, - "src": "417:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 555, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "417:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "416:6:5" - }, - "scope": 595, - "src": "354:69:5", - "stateMutability": "nonpayable", + "scope": 639, + "src": "695:270:6", + "stateMutability": "pure", "superFunction": null, - "visibility": "external" + "visibility": "internal" }, { - "body": null, - "documentation": null, - "id": 567, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 563, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 560, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 567, - "src": "444:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 559, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "444:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 562, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 567, - "src": "461:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 561, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "461:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "443:32:5" - }, - "payable": false, - "returnParameters": { - "id": 566, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 565, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 567, - "src": "498:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 564, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "498:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "497:6:5" - }, - "scope": 595, - "src": "427:77:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": null, - "documentation": null, - "id": 578, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 574, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 569, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "530:12:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 568, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "530:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 571, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "544:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 570, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "544:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 573, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "556:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 572, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "556:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "529:41:5" - }, - "payable": false, - "returnParameters": { - "id": 577, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 576, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "593:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 575, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "593:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "592:6:5" - }, - "scope": 595, - "src": "508:91:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": null, - "id": 586, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 585, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 580, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 586, - "src": "623:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 579, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "623:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 582, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 586, - "src": "649:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 581, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "649:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 584, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 586, - "src": "673:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 583, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "673:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "617:73:5" - }, - "src": "603:88:5" - }, - { - "anonymous": false, - "documentation": null, - "id": 594, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { + "body": { "id": 593, + "nodeType": "Block", + "src": "1145:64:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 580, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1159:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 581, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 572, + "src": "1164:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1159:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 579, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "1151:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1151:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 584, + "nodeType": "ExpressionStatement", + "src": "1151:15:6" + }, + { + "assignments": [ + 586 + ], + "declarations": [ + { + "constant": false, + "id": 586, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "1172:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 590, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 587, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 572, + "src": "1184:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 588, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "1188:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1184:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1172:17:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 591, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 586, + "src": "1203:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 578, + "id": 592, + "nodeType": "Return", + "src": "1196:8:6" + } + ] + }, + "documentation": "@dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 594, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 575, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 588, - "indexed": true, - "name": "owner", + "id": 572, + "name": "a", "nodeType": "VariableDeclaration", "scope": 594, - "src": "715:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 587, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "715:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 590, - "indexed": true, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 594, - "src": "742:23:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 589, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "742:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 592, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 594, - "src": "771:13:5", + "src": "1091:9:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8325,10 +8265,36 @@ "typeString": "uint256" }, "typeName": { - "id": 591, + "id": 571, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "771:7:5", + "src": "1091:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 574, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "1102:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8338,32 +8304,634 @@ "visibility": "internal" } ], - "src": "709:79:5" + "src": "1090:22:6" }, - "src": "695:94:5" + "payable": false, + "returnParameters": { + "id": 578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 577, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 594, + "src": "1136:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1135:9:6" + }, + "scope": 639, + "src": "1078:131:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 617, + "nodeType": "Block", + "src": "1339:64:6", + "statements": [ + { + "assignments": [ + 604 + ], + "declarations": [ + { + "constant": false, + "id": 604, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 618, + "src": "1345:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 608, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 605, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "1357:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 606, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 598, + "src": "1361:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1345:17:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 610, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "1376:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 611, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 596, + "src": "1381:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1376:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 609, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "1368:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 614, + "nodeType": "ExpressionStatement", + "src": "1368:15:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 615, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 604, + "src": "1397:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 602, + "id": 616, + "nodeType": "Return", + "src": "1390:8:6" + } + ] + }, + "documentation": "@dev Adds two numbers, reverts on overflow.", + "id": 618, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 596, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 618, + "src": "1285:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1285:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 598, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 618, + "src": "1296:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 597, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1284:22:6" + }, + "payable": false, + "returnParameters": { + "id": 602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 601, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 618, + "src": "1330:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1330:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:9:6" + }, + "scope": 639, + "src": "1272:131:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 637, + "nodeType": "Block", + "src": "1602:44:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 628, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "1616:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1621:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1616:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 627, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 870, + 871 + ], + "referencedDeclaration": 870, + "src": "1608:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:15:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 632, + "nodeType": "ExpressionStatement", + "src": "1608:15:6" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 633, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "1636:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 634, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "1640:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1636:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 626, + "id": 636, + "nodeType": "Return", + "src": "1629:12:6" + } + ] + }, + "documentation": "@dev Divides two numbers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 638, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 620, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "1548:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 619, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1548:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 622, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "1559:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 621, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1559:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1547:22:6" + }, + "payable": false, + "returnParameters": { + "id": 626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 625, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 638, + "src": "1593:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 624, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1592:9:6" + }, + "scope": 639, + "src": "1535:111:6", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" } ], - "scope": 596, - "src": "115:676:5" + "scope": 640, + "src": "117:1531:6" } ], - "src": "0:792:5" + "src": "0:1649:6" }, - "id": 5 + "id": 6 }, - "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol": { "ast": { - "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { - "SafeERC20": [ - 739 + "IERC20": [ + 708 ] }, - "id": 740, + "id": 709, "nodeType": "SourceUnit", "nodes": [ { - "id": 597, + "id": 641, "literals": [ "solidity", "^", @@ -8371,27 +8939,864 @@ ".24" ], "nodeType": "PragmaDirective", - "src": "0:24:6" + "src": "0:24:7" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 708, + "linearizedBaseContracts": [ + 708 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 646, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 642, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:2:7" + }, + "payable": false, + "returnParameters": { + "id": 645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 644, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 646, + "src": "182:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "182:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:9:7" + }, + "scope": 708, + "src": "136:55:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 653, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 648, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 653, + "src": "214:11:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 647, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "213:13:7" + }, + "payable": false, + "returnParameters": { + "id": 652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 651, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 653, + "src": "250:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "249:9:7" + }, + "scope": 708, + "src": "195:64:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 662, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 655, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 662, + "src": "282:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "282:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 657, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 662, + "src": "297:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "297:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "281:32:7" + }, + "payable": false, + "returnParameters": { + "id": 661, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 660, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 662, + "src": "341:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 659, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "341:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "340:9:7" + }, + "scope": 708, + "src": "263:87:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 671, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 664, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "372:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 666, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "384:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "384:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:27:7" + }, + "payable": false, + "returnParameters": { + "id": 670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 669, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "417:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 668, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "417:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:6:7" + }, + "scope": 708, + "src": "354:69:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 680, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 673, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "444:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 675, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "461:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:32:7" + }, + "payable": false, + "returnParameters": { + "id": 679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 678, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 680, + "src": "498:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 677, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "498:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:6:7" + }, + "scope": 708, + "src": "427:77:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 691, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 687, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 682, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "530:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 681, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 684, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "544:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "544:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 686, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "556:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 685, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:41:7" + }, + "payable": false, + "returnParameters": { + "id": 690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 689, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 691, + "src": "593:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 688, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "593:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "592:6:7" + }, + "scope": 708, + "src": "508:91:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 699, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 693, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "623:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "623:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 695, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "649:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "649:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 697, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 699, + "src": "673:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "673:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "617:73:7" + }, + "src": "603:88:7" + }, + { + "anonymous": false, + "documentation": null, + "id": 707, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 701, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "715:21:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 703, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "742:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "742:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 705, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 707, + "src": "771:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 704, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "771:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:79:7" + }, + "src": "695:94:7" + } + ], + "scope": 709, + "src": "115:676:7" + } + ], + "src": "0:792:7" + }, + "id": 7 + }, + "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol": { + "ast": { + "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 852 + ] + }, + "id": 853, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 710, + "literals": [ + "solidity", + "^", + "0.4", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "0:24:8" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 598, + "id": 711, "nodeType": "ImportDirective", - "scope": 740, - "sourceUnit": 596, - "src": "26:22:6", + "scope": 853, + "sourceUnit": 709, + "src": "26:22:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "d:/GitHub/ALGOToken/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 599, + "id": 712, "nodeType": "ImportDirective", - "scope": 740, - "sourceUnit": 527, - "src": "49:33:6", + "scope": 853, + "sourceUnit": 640, + "src": "49:33:8", "symbolAliases": [], "unitAlias": "" }, @@ -8401,34 +9806,34 @@ "contractKind": "library", "documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "fullyImplemented": true, - "id": 739, + "id": 852, "linearizedBaseContracts": [ - 739 + 852 ], "name": "SafeERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 602, + "id": 715, "libraryName": { "contractScope": null, - "id": 600, + "id": 713, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 526, - "src": "382:8:6", + "referencedDeclaration": 639, + "src": "382:8:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$526", + "typeIdentifier": "t_contract$_SafeMath_$639", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "376:27:6", + "src": "376:27:8", "typeName": { - "id": 601, + "id": 714, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "395:7:6", + "src": "395:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8437,9 +9842,9 @@ }, { "body": { - "id": 619, + "id": 732, "nodeType": "Block", - "src": "501:45:6", + "src": "501:45:8", "statements": [ { "expression": { @@ -8450,12 +9855,12 @@ "arguments": [ { "argumentTypes": null, - "id": 614, + "id": 727, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "530:2:6", + "referencedDeclaration": 719, + "src": "530:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8463,12 +9868,12 @@ }, { "argumentTypes": null, - "id": 615, + "id": 728, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "534:5:6", + "referencedDeclaration": 721, + "src": "534:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8488,32 +9893,32 @@ ], "expression": { "argumentTypes": null, - "id": 612, + "id": 725, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 604, - "src": "515:5:6", + "referencedDeclaration": 717, + "src": "515:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 613, + "id": 726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 558, - "src": "515:14:6", + "referencedDeclaration": 671, + "src": "515:14:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 616, + "id": 729, "isConstant": false, "isLValue": false, "isPure": false, @@ -8521,7 +9926,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "515:25:6", + "src": "515:25:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8535,21 +9940,21 @@ "typeString": "bool" } ], - "id": 611, + "id": 724, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "507:7:6", + "referencedDeclaration": 870, + "src": "507:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 617, + "id": 730, "isConstant": false, "isLValue": false, "isPure": false, @@ -8557,20 +9962,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "507:34:6", + "src": "507:34:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 618, + "id": 731, "nodeType": "ExpressionStatement", - "src": "507:34:6" + "src": "507:34:8" } ] }, "documentation": null, - "id": 620, + "id": 733, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8578,31 +9983,31 @@ "name": "safeTransfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 609, + "id": 722, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 604, + "id": 717, "name": "token", "nodeType": "VariableDeclaration", - "scope": 620, - "src": "434:12:6", + "scope": 733, + "src": "434:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 603, + "id": 716, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "434:6:6", + "referencedDeclaration": 708, + "src": "434:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -8611,11 +10016,11 @@ }, { "constant": false, - "id": 606, + "id": 719, "name": "to", "nodeType": "VariableDeclaration", - "scope": 620, - "src": "452:10:6", + "scope": 733, + "src": "452:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8623,10 +10028,10 @@ "typeString": "address" }, "typeName": { - "id": 605, + "id": 718, "name": "address", "nodeType": "ElementaryTypeName", - "src": "452:7:6", + "src": "452:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8637,11 +10042,11 @@ }, { "constant": false, - "id": 608, + "id": 721, "name": "value", "nodeType": "VariableDeclaration", - "scope": 620, - "src": "468:13:6", + "scope": 733, + "src": "468:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8649,10 +10054,10 @@ "typeString": "uint256" }, "typeName": { - "id": 607, + "id": 720, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "468:7:6", + "src": "468:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8662,26 +10067,26 @@ "visibility": "internal" } ], - "src": "428:57:6" + "src": "428:57:8" }, "payable": false, "returnParameters": { - "id": 610, + "id": 723, "nodeType": "ParameterList", "parameters": [], - "src": "501:0:6" + "src": "501:0:8" }, - "scope": 739, - "src": "407:139:6", + "scope": 852, + "src": "407:139:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 640, + "id": 753, "nodeType": "Block", - "src": "666:55:6", + "src": "666:55:8", "statements": [ { "expression": { @@ -8692,12 +10097,12 @@ "arguments": [ { "argumentTypes": null, - "id": 634, + "id": 747, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 624, - "src": "699:4:6", + "referencedDeclaration": 737, + "src": "699:4:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8705,12 +10110,12 @@ }, { "argumentTypes": null, - "id": 635, + "id": 748, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 626, - "src": "705:2:6", + "referencedDeclaration": 739, + "src": "705:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8718,12 +10123,12 @@ }, { "argumentTypes": null, - "id": 636, + "id": 749, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 628, - "src": "709:5:6", + "referencedDeclaration": 741, + "src": "709:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8747,32 +10152,32 @@ ], "expression": { "argumentTypes": null, - "id": 632, + "id": 745, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 622, - "src": "680:5:6", + "referencedDeclaration": 735, + "src": "680:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 633, + "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 578, - "src": "680:18:6", + "referencedDeclaration": 691, + "src": "680:18:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 637, + "id": 750, "isConstant": false, "isLValue": false, "isPure": false, @@ -8780,7 +10185,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "680:35:6", + "src": "680:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8794,21 +10199,21 @@ "typeString": "bool" } ], - "id": 631, + "id": 744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "672:7:6", + "referencedDeclaration": 870, + "src": "672:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 638, + "id": 751, "isConstant": false, "isLValue": false, "isPure": false, @@ -8816,20 +10221,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "672:44:6", + "src": "672:44:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 639, + "id": 752, "nodeType": "ExpressionStatement", - "src": "672:44:6" + "src": "672:44:8" } ] }, "documentation": null, - "id": 641, + "id": 754, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8837,31 +10242,31 @@ "name": "safeTransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 629, + "id": 742, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 622, + "id": 735, "name": "token", "nodeType": "VariableDeclaration", - "scope": 641, - "src": "581:12:6", + "scope": 754, + "src": "581:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 621, + "id": 734, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "581:6:6", + "referencedDeclaration": 708, + "src": "581:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -8870,11 +10275,11 @@ }, { "constant": false, - "id": 624, + "id": 737, "name": "from", "nodeType": "VariableDeclaration", - "scope": 641, - "src": "599:12:6", + "scope": 754, + "src": "599:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8882,10 +10287,10 @@ "typeString": "address" }, "typeName": { - "id": 623, + "id": 736, "name": "address", "nodeType": "ElementaryTypeName", - "src": "599:7:6", + "src": "599:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8896,11 +10301,11 @@ }, { "constant": false, - "id": 626, + "id": 739, "name": "to", "nodeType": "VariableDeclaration", - "scope": 641, - "src": "617:10:6", + "scope": 754, + "src": "617:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8908,10 +10313,10 @@ "typeString": "address" }, "typeName": { - "id": 625, + "id": 738, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:6", + "src": "617:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8922,11 +10327,11 @@ }, { "constant": false, - "id": 628, + "id": 741, "name": "value", "nodeType": "VariableDeclaration", - "scope": 641, - "src": "633:13:6", + "scope": 754, + "src": "633:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8934,10 +10339,10 @@ "typeString": "uint256" }, "typeName": { - "id": 627, + "id": 740, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "633:7:6", + "src": "633:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8947,26 +10352,26 @@ "visibility": "internal" } ], - "src": "575:75:6" + "src": "575:75:8" }, "payable": false, "returnParameters": { - "id": 630, + "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:6" + "src": "666:0:8" }, - "scope": 739, - "src": "550:171:6", + "scope": 852, + "src": "550:171:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 675, + "id": 788, "nodeType": "Block", - "src": "823:330:6", + "src": "823:330:8", "statements": [ { "expression": { @@ -8978,7 +10383,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 664, + "id": 777, "isConstant": false, "isLValue": false, "isPure": false, @@ -8992,19 +10397,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 653, + "id": 766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 651, + "id": 764, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1045:5:6", + "referencedDeclaration": 760, + "src": "1045:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9015,14 +10420,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 652, + "id": 765, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:6", + "src": "1054:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9030,21 +10435,21 @@ }, "value": "0" }, - "src": "1045:10:6", + "src": "1045:10:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 654, + "id": 767, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1044:12:6", + "src": "1044:12:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9061,7 +10466,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 662, + "id": 775, "isConstant": false, "isLValue": false, "isPure": false, @@ -9073,18 +10478,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 657, + "id": 770, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 754, - "src": "1077:3:6", + "referencedDeclaration": 867, + "src": "1077:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 658, + "id": 771, "isConstant": false, "isLValue": false, "isPure": false, @@ -9092,7 +10497,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1077:10:6", + "src": "1077:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9100,12 +10505,12 @@ }, { "argumentTypes": null, - "id": 659, + "id": 772, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 645, - "src": "1089:7:6", + "referencedDeclaration": 758, + "src": "1089:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9125,32 +10530,32 @@ ], "expression": { "argumentTypes": null, - "id": 655, + "id": 768, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1061:5:6", + "referencedDeclaration": 756, + "src": "1061:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 656, + "id": 769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 549, - "src": "1061:15:6", + "referencedDeclaration": 662, + "src": "1061:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 660, + "id": 773, "isConstant": false, "isLValue": false, "isPure": false, @@ -9158,7 +10563,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:36:6", + "src": "1061:36:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9169,14 +10574,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 661, + "id": 774, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1101:1:6", + "src": "1101:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9184,27 +10589,27 @@ }, "value": "0" }, - "src": "1061:41:6", + "src": "1061:41:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 663, + "id": 776, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1060:43:6", + "src": "1060:43:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1044:59:6", + "src": "1044:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9218,21 +10623,21 @@ "typeString": "bool" } ], - "id": 650, + "id": 763, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1036:7:6", + "referencedDeclaration": 870, + "src": "1036:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 665, + "id": 778, "isConstant": false, "isLValue": false, "isPure": false, @@ -9240,15 +10645,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1036:68:6", + "src": "1036:68:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 666, + "id": 779, "nodeType": "ExpressionStatement", - "src": "1036:68:6" + "src": "1036:68:8" }, { "expression": { @@ -9259,12 +10664,12 @@ "arguments": [ { "argumentTypes": null, - "id": 670, + "id": 783, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 645, - "src": "1132:7:6", + "referencedDeclaration": 758, + "src": "1132:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9272,12 +10677,12 @@ }, { "argumentTypes": null, - "id": 671, + "id": 784, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1141:5:6", + "referencedDeclaration": 760, + "src": "1141:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9297,32 +10702,32 @@ ], "expression": { "argumentTypes": null, - "id": 668, + "id": 781, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1118:5:6", + "referencedDeclaration": 756, + "src": "1118:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 669, + "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 567, - "src": "1118:13:6", + "referencedDeclaration": 680, + "src": "1118:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 672, + "id": 785, "isConstant": false, "isLValue": false, "isPure": false, @@ -9330,7 +10735,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1118:29:6", + "src": "1118:29:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9344,21 +10749,21 @@ "typeString": "bool" } ], - "id": 667, + "id": 780, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1110:7:6", + "referencedDeclaration": 870, + "src": "1110:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 673, + "id": 786, "isConstant": false, "isLValue": false, "isPure": false, @@ -9366,20 +10771,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1110:38:6", + "src": "1110:38:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 674, + "id": 787, "nodeType": "ExpressionStatement", - "src": "1110:38:6" + "src": "1110:38:8" } ] }, "documentation": null, - "id": 676, + "id": 789, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9387,31 +10792,31 @@ "name": "safeApprove", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 761, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 643, + "id": 756, "name": "token", "nodeType": "VariableDeclaration", - "scope": 676, - "src": "751:12:6", + "scope": 789, + "src": "751:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 642, + "id": 755, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "751:6:6", + "referencedDeclaration": 708, + "src": "751:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -9420,11 +10825,11 @@ }, { "constant": false, - "id": 645, + "id": 758, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 676, - "src": "769:15:6", + "scope": 789, + "src": "769:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9432,10 +10837,10 @@ "typeString": "address" }, "typeName": { - "id": 644, + "id": 757, "name": "address", "nodeType": "ElementaryTypeName", - "src": "769:7:6", + "src": "769:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9446,11 +10851,11 @@ }, { "constant": false, - "id": 647, + "id": 760, "name": "value", "nodeType": "VariableDeclaration", - "scope": 676, - "src": "790:13:6", + "scope": 789, + "src": "790:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9458,10 +10863,10 @@ "typeString": "uint256" }, "typeName": { - "id": 646, + "id": 759, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "790:7:6", + "src": "790:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9471,39 +10876,39 @@ "visibility": "internal" } ], - "src": "745:62:6" + "src": "745:62:8" }, "payable": false, "returnParameters": { - "id": 649, + "id": 762, "nodeType": "ParameterList", "parameters": [], - "src": "823:0:6" + "src": "823:0:8" }, - "scope": 739, - "src": "725:428:6", + "scope": 852, + "src": "725:428:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 706, + "id": 819, "nodeType": "Block", - "src": "1265:135:6", + "src": "1265:135:8", "statements": [ { "assignments": [ - 686 + 799 ], "declarations": [ { "constant": false, - "id": 686, + "id": 799, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "1271:20:6", + "scope": 820, + "src": "1271:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9511,10 +10916,10 @@ "typeString": "uint256" }, "typeName": { - "id": 685, + "id": 798, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1271:7:6", + "src": "1271:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9524,18 +10929,18 @@ "visibility": "internal" } ], - "id": 697, + "id": 810, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 695, + "id": 808, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 682, - "src": "1338:5:6", + "referencedDeclaration": 795, + "src": "1338:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9557,14 +10962,14 @@ "arguments": [ { "argumentTypes": null, - "id": 690, + "id": 803, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 775, - "src": "1318:4:6", + "referencedDeclaration": 888, + "src": "1318:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } } @@ -9572,24 +10977,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } ], - "id": 689, + "id": 802, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1310:7:6", + "src": "1310:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 691, + "id": 804, "isConstant": false, "isLValue": false, "isPure": false, @@ -9597,7 +11002,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1310:13:6", + "src": "1310:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9605,12 +11010,12 @@ }, { "argumentTypes": null, - "id": 692, + "id": 805, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 680, - "src": "1325:7:6", + "referencedDeclaration": 793, + "src": "1325:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9630,32 +11035,32 @@ ], "expression": { "argumentTypes": null, - "id": 687, + "id": 800, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 678, - "src": "1294:5:6", + "referencedDeclaration": 791, + "src": "1294:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 688, + "id": 801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 549, - "src": "1294:15:6", + "referencedDeclaration": 662, + "src": "1294:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 693, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -9663,27 +11068,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:39:6", + "src": "1294:39:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 694, + "id": 807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 505, - "src": "1294:43:6", + "referencedDeclaration": 618, + "src": "1294:43:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 696, + "id": 809, "isConstant": false, "isLValue": false, "isPure": false, @@ -9691,14 +11096,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1294:50:6", + "src": "1294:50:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1271:73:6" + "src": "1271:73:8" }, { "expression": { @@ -9709,12 +11114,12 @@ "arguments": [ { "argumentTypes": null, - "id": 701, + "id": 814, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 680, - "src": "1372:7:6", + "referencedDeclaration": 793, + "src": "1372:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9722,12 +11127,12 @@ }, { "argumentTypes": null, - "id": 702, + "id": 815, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "1381:12:6", + "referencedDeclaration": 799, + "src": "1381:12:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9747,32 +11152,32 @@ ], "expression": { "argumentTypes": null, - "id": 699, + "id": 812, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 678, - "src": "1358:5:6", + "referencedDeclaration": 791, + "src": "1358:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 700, + "id": 813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 567, - "src": "1358:13:6", + "referencedDeclaration": 680, + "src": "1358:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 703, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, @@ -9780,7 +11185,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:36:6", + "src": "1358:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9794,21 +11199,21 @@ "typeString": "bool" } ], - "id": 698, + "id": 811, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1350:7:6", + "referencedDeclaration": 870, + "src": "1350:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 704, + "id": 817, "isConstant": false, "isLValue": false, "isPure": false, @@ -9816,20 +11221,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1350:45:6", + "src": "1350:45:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 705, + "id": 818, "nodeType": "ExpressionStatement", - "src": "1350:45:6" + "src": "1350:45:8" } ] }, "documentation": null, - "id": 707, + "id": 820, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -9837,31 +11242,31 @@ "name": "safeIncreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 683, + "id": 796, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 678, + "id": 791, "name": "token", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "1193:12:6", + "scope": 820, + "src": "1193:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 677, + "id": 790, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "1193:6:6", + "referencedDeclaration": 708, + "src": "1193:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -9870,11 +11275,11 @@ }, { "constant": false, - "id": 680, + "id": 793, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "1211:15:6", + "scope": 820, + "src": "1211:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9882,10 +11287,10 @@ "typeString": "address" }, "typeName": { - "id": 679, + "id": 792, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1211:7:6", + "src": "1211:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9896,11 +11301,11 @@ }, { "constant": false, - "id": 682, + "id": 795, "name": "value", "nodeType": "VariableDeclaration", - "scope": 707, - "src": "1232:13:6", + "scope": 820, + "src": "1232:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9908,10 +11313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 681, + "id": 794, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1232:7:6", + "src": "1232:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9921,39 +11326,39 @@ "visibility": "internal" } ], - "src": "1187:62:6" + "src": "1187:62:8" }, "payable": false, "returnParameters": { - "id": 684, + "id": 797, "nodeType": "ParameterList", "parameters": [], - "src": "1265:0:6" + "src": "1265:0:8" }, - "scope": 739, - "src": "1157:243:6", + "scope": 852, + "src": "1157:243:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 737, + "id": 850, "nodeType": "Block", - "src": "1512:135:6", + "src": "1512:135:8", "statements": [ { "assignments": [ - 717 + 830 ], "declarations": [ { "constant": false, - "id": 717, + "id": 830, "name": "newAllowance", "nodeType": "VariableDeclaration", - "scope": 738, - "src": "1518:20:6", + "scope": 851, + "src": "1518:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9961,10 +11366,10 @@ "typeString": "uint256" }, "typeName": { - "id": 716, + "id": 829, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1518:7:6", + "src": "1518:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9974,18 +11379,18 @@ "visibility": "internal" } ], - "id": 728, + "id": 841, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 726, + "id": 839, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 713, - "src": "1585:5:6", + "referencedDeclaration": 826, + "src": "1585:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10007,14 +11412,14 @@ "arguments": [ { "argumentTypes": null, - "id": 721, + "id": 834, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 775, - "src": "1565:4:6", + "referencedDeclaration": 888, + "src": "1565:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } } @@ -10022,24 +11427,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SafeERC20_$739", + "typeIdentifier": "t_contract$_SafeERC20_$852", "typeString": "library SafeERC20" } ], - "id": 720, + "id": 833, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:7:6", + "src": "1557:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 722, + "id": 835, "isConstant": false, "isLValue": false, "isPure": false, @@ -10047,7 +11452,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1557:13:6", + "src": "1557:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10055,12 +11460,12 @@ }, { "argumentTypes": null, - "id": 723, + "id": 836, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1572:7:6", + "referencedDeclaration": 824, + "src": "1572:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10080,32 +11485,32 @@ ], "expression": { "argumentTypes": null, - "id": 718, + "id": 831, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, - "src": "1541:5:6", + "referencedDeclaration": 822, + "src": "1541:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 719, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "allowance", "nodeType": "MemberAccess", - "referencedDeclaration": 549, - "src": "1541:15:6", + "referencedDeclaration": 662, + "src": "1541:15:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 724, + "id": 837, "isConstant": false, "isLValue": false, "isPure": false, @@ -10113,27 +11518,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:39:6", + "src": "1541:39:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 725, + "id": 838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 481, - "src": "1541:43:6", + "referencedDeclaration": 594, + "src": "1541:43:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 727, + "id": 840, "isConstant": false, "isLValue": false, "isPure": false, @@ -10141,14 +11546,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1541:50:6", + "src": "1541:50:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1518:73:6" + "src": "1518:73:8" }, { "expression": { @@ -10159,12 +11564,12 @@ "arguments": [ { "argumentTypes": null, - "id": 732, + "id": 845, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1619:7:6", + "referencedDeclaration": 824, + "src": "1619:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10172,12 +11577,12 @@ }, { "argumentTypes": null, - "id": 733, + "id": 846, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "1628:12:6", + "referencedDeclaration": 830, + "src": "1628:12:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10197,32 +11602,32 @@ ], "expression": { "argumentTypes": null, - "id": 730, + "id": 843, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, - "src": "1605:5:6", + "referencedDeclaration": 822, + "src": "1605:5:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, - "id": 731, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", - "referencedDeclaration": 567, - "src": "1605:13:6", + "referencedDeclaration": 680, + "src": "1605:13:8", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 734, + "id": 847, "isConstant": false, "isLValue": false, "isPure": false, @@ -10230,7 +11635,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1605:36:6", + "src": "1605:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10244,21 +11649,21 @@ "typeString": "bool" } ], - "id": 729, + "id": 842, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 757, - 758 + 870, + 871 ], - "referencedDeclaration": 757, - "src": "1597:7:6", + "referencedDeclaration": 870, + "src": "1597:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 735, + "id": 848, "isConstant": false, "isLValue": false, "isPure": false, @@ -10266,20 +11671,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1597:45:6", + "src": "1597:45:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 736, + "id": 849, "nodeType": "ExpressionStatement", - "src": "1597:45:6" + "src": "1597:45:8" } ] }, "documentation": null, - "id": 738, + "id": 851, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -10287,31 +11692,31 @@ "name": "safeDecreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 714, + "id": 827, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 709, + "id": 822, "name": "token", "nodeType": "VariableDeclaration", - "scope": 738, - "src": "1440:12:6", + "scope": 851, + "src": "1440:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, - "id": 708, + "id": 821, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 595, - "src": "1440:6:6", + "referencedDeclaration": 708, + "src": "1440:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$595", + "typeIdentifier": "t_contract$_IERC20_$708", "typeString": "contract IERC20" } }, @@ -10320,11 +11725,11 @@ }, { "constant": false, - "id": 711, + "id": 824, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 738, - "src": "1458:15:6", + "scope": 851, + "src": "1458:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10332,10 +11737,10 @@ "typeString": "address" }, "typeName": { - "id": 710, + "id": 823, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1458:7:6", + "src": "1458:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10346,11 +11751,11 @@ }, { "constant": false, - "id": 713, + "id": 826, "name": "value", "nodeType": "VariableDeclaration", - "scope": 738, - "src": "1479:13:6", + "scope": 851, + "src": "1479:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10358,10 +11763,10 @@ "typeString": "uint256" }, "typeName": { - "id": 712, + "id": 825, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1479:7:6", + "src": "1479:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10371,29 +11776,29 @@ "visibility": "internal" } ], - "src": "1434:62:6" + "src": "1434:62:8" }, "payable": false, "returnParameters": { - "id": 715, + "id": 828, "nodeType": "ParameterList", "parameters": [], - "src": "1512:0:6" + "src": "1512:0:8" }, - "scope": 739, - "src": "1404:243:6", + "scope": 852, + "src": "1404:243:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 740, - "src": "353:1296:6" + "scope": 853, + "src": "353:1296:8" } ], - "src": "0:1650:6" + "src": "0:1650:8" }, - "id": 6 + "id": 8 } } } \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi index 38dd233d4..cd7eb1f10 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_FACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CAT_4_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_1_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_3_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_0_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_5_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_2_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint16"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file +[{"constant":false,"inputs":[],"name":"terminate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minerAddress","type":"address"}],"name":"trasferToMiner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_FACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CAT_4_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_1_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_3_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isCoreTeam","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_0_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_5_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CAT_2_VALUE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceCoreTeam","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poolType","type":"uint16"},{"name":"tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin index 3e0d92f3c..987528f83 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029 \ No newline at end of file +608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029 \ No newline at end of file diff --git a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json index f0c9e5f58..3a44ddf38 100644 --- a/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json +++ b/labs/algo-token-distribution/src/AdvancedAlgos.AlgoToken.AlgoTokenDistribution/SmartContracts/src/bin/AlgoPool.json @@ -1,5 +1,14 @@ { "abi": [ + { + "constant": false, + "inputs": [], + "name": "terminate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -170,7 +179,7 @@ "type": "constructor" } ], - "bytecode": "608060405234801561001057600080fd5b506040516040806107aa83398101604052805160209091015161003b33640100000000610077810204565b60018054600160a060020a0390921662010000026201000060b060020a031961ffff90941661ffff199093169290921792909216179055610120565b61008f6000826401000000006105b561009282021704565b50565b600160a060020a03811615156100a757600080fd5b6100ba82826401000000006100e9810204565b156100c457600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561010057600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61067b8061012f6000396000f3006080604052600436106100955763ffffffff60e060020a6000350416632296f4c7811461009a57806325109e8b146100bd5780632e6b6849146100e4578063455acbcd14610105578063492fba841461011a57806349dc9ed01461012f578063608d3d3d146101445780639fc3c98314610179578063a89febb21461018e578063aed6183f146101a3578063d43acc79146101b8575b600080fd5b3480156100a657600080fd5b506100bb600160a060020a03600435166101cd565b005b3480156100c957600080fd5b506100d2610416565b60408051918252519081900360200190f35b3480156100f057600080fd5b506100bb600160a060020a0360043516610422565b34801561011157600080fd5b506100d2610442565b34801561012657600080fd5b506100d2610451565b34801561013b57600080fd5b506100d261045f565b34801561015057600080fd5b50610165600160a060020a036004351661046e565b604080519115158252519081900360200190f35b34801561018557600080fd5b506100d2610486565b34801561019a57600080fd5b506100d2610494565b3480156101af57600080fd5b506100d26104a3565b3480156101c457600080fd5b506100bb6104b2565b60008060006101db3361046e565b15156101e657600080fd5b600160a060020a03841660009081526002602052604090205460ff161561020c57600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561024d57600080fd5b505af1158015610261573d6000803e3d6000fd5b505050506040513d602081101561027757600080fd5b5051151561028457600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506040513d60208110156102ec57600080fd5b50519150600060ff831610801590610308575060058260ff1611155b151561031357600080fd5b50600060ff82161515610331575069152d02c7e14af68000006103c2565b8160ff166001141561034e575069d3c21bcecceda10000006103c2565b8160ff166002141561036c57506a01a784379d99db420000006103c2565b8160ff166003141561038a57506a027b46536c66c8e30000006103c2565b8160ff16600414156103a857506a034f086f3b33b6840000006103c2565b8160ff16600514156103c257506a0422ca8b0a00a4250000005b600081116103cf57600080fd5b600160a060020a038085166000908152600260205260409020805460ff1916600190811790915554610410916201000090910416858363ffffffff6104bd16565b50505050565b670de0b6b3a764000081565b61042b3361046e565b151561043657600080fd5b61043f8161055c565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b6000610480818363ffffffff61056d16565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b6104bb336105a4565b565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d602081101561054a57600080fd5b5051151561055757600080fd5b505050565b61043f60008263ffffffff6105b516565b6000600160a060020a038216151561058457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61043f60008263ffffffff61060316565b600160a060020a03811615156105ca57600080fd5b6105d4828261056d565b156105de57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561061857600080fd5b610622828261056d565b151561062d57600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a723058200648204d7a0ac13aa2e9ab7514200c49dd33ae54f0178fd146385ad3444f20ee0029", + "bytecode": "608060405234801561001057600080fd5b5060405160408061091a8339810160405280516020909101516000805433600160a060020a0319918216811760a060020a60ff02191690925560018054909116600160a060020a03841617905561006f9064010000000061008b810204565b506003805461ffff191661ffff92909216919091179055610134565b6100a36002826401000000006107116100a682021704565b50565b600160a060020a03811615156100bb57600080fd5b6100ce82826401000000006100fd810204565b156100d857600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a038216151561011457600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b6107d7806101436000396000f3006080604052600436106100a05763ffffffff60e060020a6000350416630c08bf8881146100a55780632296f4c7146100bc57806325109e8b146100dd5780632e6b684914610104578063455acbcd14610125578063492fba841461013a57806349dc9ed01461014f578063608d3d3d146101645780639fc3c98314610199578063a89febb2146101ae578063aed6183f146101c3578063d43acc79146101d8575b600080fd5b3480156100b157600080fd5b506100ba6101ed565b005b3480156100c857600080fd5b506100ba600160a060020a036004351661020b565b3480156100e957600080fd5b506100f2610475565b60408051918252519081900360200190f35b34801561011057600080fd5b506100ba600160a060020a0360043516610481565b34801561013157600080fd5b506100f26104a1565b34801561014657600080fd5b506100f26104b0565b34801561015b57600080fd5b506100f26104be565b34801561017057600080fd5b50610185600160a060020a03600435166104cd565b604080519115158252519081900360200190f35b3480156101a557600080fd5b506100f26104e6565b3480156101ba57600080fd5b506100f26104f4565b3480156101cf57600080fd5b506100f2610503565b3480156101e457600080fd5b506100ba610512565b6101f6336104cd565b151561020157600080fd5b61020961051b565b565b600080548190819074010000000000000000000000000000000000000000900460ff161561023857600080fd5b610241336104cd565b151561024c57600080fd5b600160a060020a03841660009081526004602052604090205460ff161561027257600080fd5b83925082600160a060020a0316631777fb4b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b505115156102ea57600080fd5b82600160a060020a03166380258e476040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b50519150600060ff83161080159061036e575060058260ff1611155b151561037957600080fd5b50600060ff82161515610397575069152d02c7e14af6800000610428565b8160ff16600114156103b4575069d3c21bcecceda1000000610428565b8160ff16600214156103d257506a01a784379d99db42000000610428565b8160ff16600314156103f057506a027b46536c66c8e3000000610428565b8160ff166004141561040e57506a034f086f3b33b684000000610428565b8160ff166005141561042857506a0422ca8b0a00a4250000005b6000811161043557600080fd5b600160a060020a038085166000908152600460205260409020805460ff191660019081179091555461046f9116858363ffffffff6105e216565b50505050565b670de0b6b3a764000081565b61048a336104cd565b151561049557600080fd5b61049e81610681565b50565b6a034f086f3b33b68400000081565b69d3c21bcecceda100000081565b6a027b46536c66c8e300000081565b60006104e060028363ffffffff61069216565b92915050565b69152d02c7e14af680000081565b6a0422ca8b0a00a42500000081565b6a01a784379d99db4200000081565b610209336106c9565b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600092600160a060020a0316916370a0823191602480830192602092919082900301818787803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b505050506040513d60208110156105aa57600080fd5b5051905060008111156105da576000546001546105da91600160a060020a0391821691168363ffffffff6105e216565b61049e6106da565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561064557600080fd5b505af1158015610659573d6000803e3d6000fd5b505050506040513d602081101561066f57600080fd5b5051151561067c57600080fd5b505050565b61049e60028263ffffffff61071116565b6000600160a060020a03821615156106a957600080fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61049e60028263ffffffff61075f16565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600160a060020a038116151561072657600080fd5b6107308282610692565b1561073a57600080fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b600160a060020a038116151561077457600080fd5b61077e8282610692565b151561078957600080fd5b600160a060020a0316600090815260209190915260409020805460ff191690555600a165627a7a7230582003c6fe797e016b5da34d582d5503b392dfdb98114c82abcb7165886533dc93b80029", "functionHashes": { "CAT_0_VALUE()": "9fc3c983", "CAT_1_VALUE()": "492fba84", @@ -182,25 +191,27 @@ "addCoreTeam(address)": "2e6b6849", "isCoreTeam(address)": "608d3d3d", "renounceCoreTeam()": "d43acc79", + "terminate()": "0c08bf88", "trasferToMiner(address)": "2296f4c7" }, "gasEstimates": { "creation": { - "codeDepositCost": "331800", + "codeDepositCost": "401400", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "CAT_0_VALUE()": "401", - "CAT_1_VALUE()": "335", - "CAT_2_VALUE()": "445", - "CAT_3_VALUE()": "357", - "CAT_4_VALUE()": "313", - "CAT_5_VALUE()": "423", - "TOKEN_FACTOR()": "269", + "CAT_0_VALUE()": "423", + "CAT_1_VALUE()": "357", + "CAT_2_VALUE()": "467", + "CAT_3_VALUE()": "379", + "CAT_4_VALUE()": "335", + "CAT_5_VALUE()": "445", + "TOKEN_FACTOR()": "291", "addCoreTeam(address)": "infinite", "isCoreTeam(address)": "infinite", "renounceCoreTeam()": "infinite", + "terminate()": "infinite", "trasferToMiner(address)": "infinite" } } diff --git a/labs/algo-token-playground/README.md b/labs/algo-token-playground/README.md index 6fbe74eb1..bf9aa722a 100644 --- a/labs/algo-token-playground/README.md +++ b/labs/algo-token-playground/README.md @@ -220,12 +220,12 @@ The following commands are supported for the `AlgoMiner` contract: #### deploy-algominer -`deploy-algominer [-n ]` +`deploy-algominer [-n ]` Creates a new instance of the `AlgoPool` contract. * `minerType`: the type of miner (uint16) * `category`: the category of miner (uint8: valid from 0 to 5) -* `ownerAddress`: the address of the miner's owner +* `minerAccountAddress`: the address of the miner's owner * `tokenAddress`: the address of the AlgoToken contract >Example: `deploy-algominer 1 2 miner_1_account token -n miner_1` diff --git a/labs/algo-token-playground/build/build-osx-x64.cmd b/labs/algo-token-playground/build/build-osx-x64.cmd index cefa1d982..61a0aadc3 100644 --- a/labs/algo-token-playground/build/build-osx-x64.cmd +++ b/labs/algo-token-playground/build/build-osx-x64.cmd @@ -1 +1 @@ -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 --no-restore +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 diff --git a/labs/algo-token-playground/build/build-osx-x64.sh b/labs/algo-token-playground/build/build-osx-x64.sh index 026a7234f..6740e82b0 100644 --- a/labs/algo-token-playground/build/build-osx-x64.sh +++ b/labs/algo-token-playground/build/build-osx-x64.sh @@ -1,2 +1,2 @@ #!/bin/bash -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 --no-restore +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/osx-x64 --self-contained -r osx-x64 diff --git a/labs/algo-token-playground/build/build-win-x64.cmd b/labs/algo-token-playground/build/build-win-x64.cmd index 145d0900f..ea75e2ad0 100644 --- a/labs/algo-token-playground/build/build-win-x64.cmd +++ b/labs/algo-token-playground/build/build-win-x64.cmd @@ -1 +1 @@ -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 --no-restore +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 diff --git a/labs/algo-token-playground/build/build-win-x64.sh b/labs/algo-token-playground/build/build-win-x64.sh index 360c2d46b..1df886e0d 100644 --- a/labs/algo-token-playground/build/build-win-x64.sh +++ b/labs/algo-token-playground/build/build-win-x64.sh @@ -1,2 +1,2 @@ #!/bin/bash -dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 --no-restore +dotnet publish ../src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/AdvancedAlgos.AlgoToken.AlgoTokenPlayground.csproj -c Release -o ../../build/release/win-x64 --self-contained -r win-x64 diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs index e4b29288b..e335c7432 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Commands/AlgoMinerContract/AlgoMinerDeployCommand.cs @@ -16,7 +16,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract public ushort MinerType { get; set; } public byte Category { get; set; } - public string OwnerAddress { get; set; } + public string MinerAccountAddress { get; set; } public string TokenAddress { get; set; } protected override async Task DeployContractAsync(RuntimeContext context, Web3 web3) @@ -25,7 +25,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Commands.AlgoMinerContract return await algoMiner.DeployAsync( MinerType, Category, - context.ResolveAccountReference(OwnerAddress), + context.ResolveAccountReference(MinerAccountAddress), context.ResolveContractReference(TokenAddress)); } } diff --git a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs index b0988f086..3e10cfd1a 100644 --- a/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs +++ b/labs/algo-token-playground/src/AdvancedAlgos.AlgoToken.AlgoTokenPlayground/Parsers/AlgoMinerParsers.cs @@ -13,7 +13,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers (from command in CommonParsers.Token("deploy-algominer") from minerType in CommonParsers.IntegerValue from category in CommonParsers.IntegerValue - from ownerAddress in CommonParsers.StringValue + from minerAccountAddress in CommonParsers.StringValue from tokenAddress in CommonParsers.StringValue from name in CommonParsers.Switch('n', "name", CommonParsers.Identifier).Optional() select new AlgoMinerDeployCommand @@ -21,7 +21,7 @@ namespace AdvancedAlgos.AlgoToken.AlgoTokenPlayground.Parsers Name = name.GetOrDefault(), MinerType = (ushort)minerType, Category = (byte)category, - OwnerAddress = ownerAddress, + MinerAccountAddress = minerAccountAddress, TokenAddress = tokenAddress }).Register();