More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 24,608 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 10891535 | 1583 days ago | IN | 0 ETH | 0.00640718 | ||||
Transfer | 10595373 | 1629 days ago | IN | 0 ETH | 0.00155736 | ||||
Transfer | 10159883 | 1696 days ago | IN | 0 ETH | 0.00147692 | ||||
Give Dividend | 10053970 | 1713 days ago | IN | 0 ETH | 0.00050724 | ||||
Give Dividend | 10053970 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053970 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050724 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050724 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050661 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050724 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050724 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00041093 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050712 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050724 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00041034 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050787 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.00050661 | ||||
Give Dividend | 10053965 | 1713 days ago | IN | 0 ETH | 0.0005085 |
Loading...
Loading
Contract Name:
Token
Compiler Version
v0.5.13+commit.5b0b510c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-12-11 */ // File: openzeppelin-solidity/contracts/GSN/Context.sol pragma solidity ^0.5.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: openzeppelin-solidity/contracts/access/Roles.sol pragma solidity ^0.5.0; /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev Give an account access to this role. */ function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } /** * @dev Remove an account's access to this role. */ function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } /** * @dev Check if an account has this role. * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } } // File: openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol pragma solidity ^0.5.0; /** * @title WhitelistAdminRole * @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts. */ contract WhitelistAdminRole is Context { using Roles for Roles.Role; event WhitelistAdminAdded(address indexed account); event WhitelistAdminRemoved(address indexed account); Roles.Role private _whitelistAdmins; constructor () internal { _addWhitelistAdmin(_msgSender()); } modifier onlyWhitelistAdmin() { require(isWhitelistAdmin(_msgSender()), "WhitelistAdminRole: caller does not have the WhitelistAdmin role"); _; } function isWhitelistAdmin(address account) public view returns (bool) { return _whitelistAdmins.has(account); } function addWhitelistAdmin(address account) public onlyWhitelistAdmin { _addWhitelistAdmin(account); } function renounceWhitelistAdmin() public { _removeWhitelistAdmin(_msgSender()); } function _addWhitelistAdmin(address account) internal { _whitelistAdmins.add(account); emit WhitelistAdminAdded(account); } function _removeWhitelistAdmin(address account) internal { _whitelistAdmins.remove(account); emit WhitelistAdminRemoved(account); } } // File: openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol pragma solidity ^0.5.0; /** * @title WhitelistedRole * @dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a * crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove * it), and not Whitelisteds themselves. */ contract WhitelistedRole is Context, WhitelistAdminRole { using Roles for Roles.Role; event WhitelistedAdded(address indexed account); event WhitelistedRemoved(address indexed account); Roles.Role private _whitelisteds; modifier onlyWhitelisted() { require(isWhitelisted(_msgSender()), "WhitelistedRole: caller does not have the Whitelisted role"); _; } function isWhitelisted(address account) public view returns (bool) { return _whitelisteds.has(account); } function addWhitelisted(address account) public onlyWhitelistAdmin { _addWhitelisted(account); } function removeWhitelisted(address account) public onlyWhitelistAdmin { _removeWhitelisted(account); } function renounceWhitelisted() public { _removeWhitelisted(_msgSender()); } function _addWhitelisted(address account) internal { _whitelisteds.add(account); emit WhitelistedAdded(account); } function _removeWhitelisted(address account) internal { _whitelisteds.remove(account); emit WhitelistedRemoved(account); } } // File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: openzeppelin-solidity/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol pragma solidity ^0.5.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20Mintable}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Destroys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See {_burn} and {_approve}. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); } } // File: openzeppelin-solidity/contracts/access/roles/MinterRole.sol pragma solidity ^0.5.0; contract MinterRole is Context { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor () internal { _addMinter(_msgSender()); } modifier onlyMinter() { require(isMinter(_msgSender()), "MinterRole: caller does not have the Minter role"); _; } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function addMinter(address account) public onlyMinter { _addMinter(account); } function renounceMinter() public { _removeMinter(_msgSender()); } function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol pragma solidity ^0.5.0; /** * @dev Extension of {ERC20} that adds a set of accounts with the {MinterRole}, * which have permission to mint (create) new tokens as they see fit. * * At construction, the deployer of the contract is the only minter. */ contract ERC20Mintable is ERC20, MinterRole { /** * @dev See {ERC20-_mint}. * * Requirements: * * - the caller must have the {MinterRole}. */ function mint(address account, uint256 amount) public onlyMinter returns (bool) { _mint(account, amount); return true; } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol pragma solidity ^0.5.0; /** * @dev Extension of {ERC20Mintable} that adds a cap to the supply of tokens. */ contract ERC20Capped is ERC20Mintable { uint256 private _cap; /** * @dev Sets the value of the `cap`. This value is immutable, it can only be * set once during construction. */ constructor (uint256 cap) public { require(cap > 0, "ERC20Capped: cap is 0"); _cap = cap; } /** * @dev Returns the cap on the token's total supply. */ function cap() public view returns (uint256) { return _cap; } /** * @dev See {ERC20Mintable-mint}. * * Requirements: * * - `value` must not cause the total supply to go over the cap. */ function _mint(address account, uint256 value) internal { require(totalSupply().add(value) <= _cap, "ERC20Capped: cap exceeded"); super._mint(account, value); } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol pragma solidity ^0.5.0; /** * @dev Optional functions from the ERC20 standard. */ contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } } // File: openzeppelin-solidity/contracts/access/roles/PauserRole.sol pragma solidity ^0.5.0; contract PauserRole is Context { using Roles for Roles.Role; event PauserAdded(address indexed account); event PauserRemoved(address indexed account); Roles.Role private _pausers; constructor () internal { _addPauser(_msgSender()); } modifier onlyPauser() { require(isPauser(_msgSender()), "PauserRole: caller does not have the Pauser role"); _; } function isPauser(address account) public view returns (bool) { return _pausers.has(account); } function addPauser(address account) public onlyPauser { _addPauser(account); } function renouncePauser() public { _removePauser(_msgSender()); } function _addPauser(address account) internal { _pausers.add(account); emit PauserAdded(account); } function _removePauser(address account) internal { _pausers.remove(account); emit PauserRemoved(account); } } // File: openzeppelin-solidity/contracts/lifecycle/Pausable.sol pragma solidity ^0.5.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ contract Pausable is Context, PauserRole { /** * @dev Emitted when the pause is triggered by a pauser (`account`). */ event Paused(address account); /** * @dev Emitted when the pause is lifted by a pauser (`account`). */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. Assigns the Pauser role * to the deployer. */ constructor () internal { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Called by a pauser to pause, triggers stopped state. */ function pause() public onlyPauser whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Called by a pauser to unpause, returns to normal state. */ function unpause() public onlyPauser whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol pragma solidity ^0.5.0; /** * @title Pausable token * @dev ERC20 with pausable transfers and allowances. * * Useful if you want to stop trades until the end of a crowdsale, or have * an emergency switch for freezing all token transfers in the event of a large * bug. */ contract ERC20Pausable is ERC20, Pausable { function transfer(address to, uint256 value) public whenNotPaused returns (bool) { return super.transfer(to, value); } function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) { return super.transferFrom(from, to, value); } function approve(address spender, uint256 value) public whenNotPaused returns (bool) { return super.approve(spender, value); } function increaseAllowance(address spender, uint256 addedValue) public whenNotPaused returns (bool) { return super.increaseAllowance(spender, addedValue); } function decreaseAllowance(address spender, uint256 subtractedValue) public whenNotPaused returns (bool) { return super.decreaseAllowance(spender, subtractedValue); } } // File: contracts/Token.sol pragma solidity >=0.4.21 <0.6.0; /** * @title Token * @dev A token that enables paying timely dividends to whitelisted token holder accounts */ contract Token is WhitelistedRole, ERC20Capped, ERC20Detailed, ERC20Pausable { using SafeMath for uint256; uint8 private _decimals = 18; uint256 private _initialSupply = 300_000_000e18; uint256 private _maxSupply = 100_000_000_000e18; /** * @dev Last time tick for an address (for time-dependent ROI calculation). */ mapping (address=>uint256) private _lastTicked; /** * @dev Constructor that gives msg.sender the initial token supply. * @param name The deployed token name. * @param symbol The deployed token symbol. */ constructor (string memory name, string memory symbol) ERC20Detailed(name, symbol, _decimals) ERC20Capped(_maxSupply) public { mint(msg.sender, _initialSupply); } /** * @dev A method to add a token holder account to the whitelist. * @param account The address to add. */ function addWhitelisted(address account) public onlyWhitelistAdmin { super.addWhitelisted(account); _lastTicked[account] = now; } /** * @dev A method to remove a token holder account from the whitelist. * @notice It gives the dividend amount due for the holder before * removing it from the whitelist. * @param account The address to remove. */ function removeWhitelisted(address account) public onlyWhitelistAdmin { giveDividend(account); super.removeWhitelisted(account); delete _lastTicked[account]; } /** * @dev A method to calculate time-dependent ROI due for an account. * @return uint256 The time-dependent ROI due (Monthly_ROI% x 100_000 x timeScale). */ function _calculateROI(address account) private view returns(uint256) { uint256 balance = balanceOf(account); if(balance >=1e18 && balance <= 1_000e18) { return uint256(10_000).mul(now - _lastTicked[account]).div(30 days); } else if(balance >=1_001e18 && balance <= 10_000e18) { return uint256(12_000).mul(now - _lastTicked[account]).div(30 days); } else if(balance >=10_001e18 && balance <= 100_000e18) { return uint256(14_000).mul(now - _lastTicked[account]).div(30 days); } else if(balance >=100_001e18 && balance <= 1_000_000e18) { return uint256(16_000).mul(now - _lastTicked[account]).div(30 days); } else if(balance >=1_000_001e18 && balance <= 10_000_000e18) { return uint256(18_000).mul(now - _lastTicked[account]).div(30 days); } else if(balance >=10_000_001e18) { return uint256(20_000).mul(now - _lastTicked[account]).div(30 days); } } /** * @dev A method to calculate dividend for an account. * @return uint256 The token dividend amount. */ function _calculateDividend(address account) private view returns(uint256) { uint256 roi_100_000 = _calculateROI(account); uint256 dividend = balanceOf(account).mul(roi_100_000).div(100_000); return dividend; } /** * @dev A method to give dividend due to a whitelisted account. * @return uint256 The token dividend amount. */ function giveDividend(address account) onlyMinter whenNotPaused public { require(isWhitelisted(account), "Token: account does not have the Whitelisted role"); uint256 dividend = _calculateDividend(account); mint(account, dividend); _lastTicked[account] = now; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistedRemoved","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"giveDividend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526012600b60016101000a81548160ff021916908360ff1602179055506af8277896582678ac000000600c556c01431e0fae6d7217caa0000000600d553480156200004d57600080fd5b5060405162003ce538038062003ce5833981810160405260408110156200007357600080fd5b81019080805160405193929190846401000000008211156200009457600080fd5b83820191506020820185811115620000ab57600080fd5b8251866001820283011164010000000082111715620000c957600080fd5b8083526020830192505050908051906020019080838360005b83811015620000ff578082015181840152602081019050620000e2565b50505050905090810190601f1680156200012d5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200015157600080fd5b838201915060208201858111156200016857600080fd5b82518660018202830111640100000000821117156200018657600080fd5b8083526020830192505050908051906020019080838360005b83811015620001bc5780820151818401526020810190506200019f565b50505050905090810190601f168015620001ea5780820380516001836020036101000a031916815260200191505b506040525050508181600b60019054906101000a900460ff16600d546200023862000223620003ac640100000000026401000000009004565b620003b4640100000000026401000000009004565b6200026a62000255620003ac640100000000026401000000009004565b6200041e640100000000026401000000009004565b60008111620002e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f45524332304361707065643a206361702069732030000000000000000000000081525060200191505060405180910390fd5b806006819055505082600790805190602001906200030192919062000ae4565b5081600890805190602001906200031a92919062000ae4565b5080600960006101000a81548160ff021916908360ff1602179055505050506200036b62000356620003ac640100000000026401000000009004565b62000488640100000000026401000000009004565b6000600b60006101000a81548160ff021916908315150217905550620003a333600c54620004f2640100000000026401000000009004565b50505062000b93565b600033905090565b620003d8816000620005a26401000000000262002871179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b62000442816005620005a26401000000000262002871179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620004ac81600a620005a26401000000000262002871179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60006200052662000511620003ac640100000000026401000000009004565b6200068f640100000000026401000000009004565b6200057d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062003c936030913960400191505060405180910390fd5b620005988383620006bc640100000000026401000000009004565b6001905092915050565b620005bd828262000793640100000000026401000000009004565b1562000631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000620006b5826005620007936401000000000262001a7a179091906401000000009004565b9050919050565b600654620006fa82620006dd62000873640100000000026401000000009004565b6200087d640100000000026200256f179091906401000000009004565b11156200076f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b6200078f82826200090664010000000002620025f7176401000000009004565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200081c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062003cc36022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600454905090565b600080828401905083811015620008fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620009cf816004546200087d640100000000026200256f179091906401000000009004565b60048190555062000a3781600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200087d640100000000026200256f179091906401000000009004565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000b2757805160ff191683800117855562000b58565b8280016001018555821562000b58579182015b8281111562000b5757825182559160200191906001019062000b3a565b5b50905062000b67919062000b6b565b5090565b62000b9091905b8082111562000b8c57600081600090555060010162000b72565b5090565b90565b6130f08062000ba36000396000f3fe608060405234801561001057600080fd5b50600436106101f7576000357c0100000000000000000000000000000000000000000000000000000000900480636ef8d66d1161012157806398650275116100bf578063aa271e1a1161008e578063aa271e1a146108e2578063bb5f747b1461093e578063d6cd94731461099a578063dd62ed3e146109a4576101f7565b806398650275146107c85780639c6a5d54146107d2578063a457c2d714610816578063a9059cbb1461087c576101f7565b806382dc1ec4116100fb57806382dc1ec4146106b35780638456cb59146106f757806395d89b4114610701578063983b2d5614610784576101f7565b80636ef8d66d1461060d57806370a08231146106175780637362d9c81461066f576101f7565b8063355274ea1161019957806340c10f191161016857806340c10f191461051f57806346fbf68e146105855780634c5a628c146105e15780635c975abb146105eb576101f7565b8063355274ea1461043557806339509351146104535780633af32abf146104b95780633f4ba83a14610515576101f7565b806318160ddd116101d557806318160ddd1461032957806323b872dd14610347578063291d9549146103cd578063313ce56714610411576101f7565b806306fdde03146101fc578063095ea7b31461027f57806310154bad146102e5575b600080fd5b610204610a1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610244578082015181840152602081019050610229565b50505050905090810190601f1680156102715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102cb6004803603604081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610abe565b604051808215151515815260200191505060405180910390f35b610327600480360360208110156102fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b55565b005b610331610c0a565b6040518082815260200191505060405180910390f35b6103b36004803603606081101561035d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c14565b604051808215151515815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cad565b005b610419610d6a565b604051808260ff1660ff16815260200191505060405180910390f35b61043d610d81565b6040518082815260200191505060405180910390f35b61049f6004803603604081101561046957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d8b565b604051808215151515815260200191505060405180910390f35b6104fb600480360360208110156104cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e22565b604051808215151515815260200191505060405180910390f35b61051d610e3f565b005b61056b6004803603604081101561053557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fad565b604051808215151515815260200191505060405180910390f35b6105c76004803603602081101561059b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611028565b604051808215151515815260200191505060405180910390f35b6105e9611045565b005b6105f3611057565b604051808215151515815260200191505060405180910390f35b61061561106e565b005b6106596004803603602081101561062d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611080565b6040518082815260200191505060405180910390f35b6106b16004803603602081101561068557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c9565b005b6106f5600480360360208110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061113a565b005b6106ff6111ab565b005b61070961131a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561074957808201518184015260208101905061072e565b50505050905090810190601f1680156107765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107c66004803603602081101561079a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113bc565b005b6107d061142d565b005b610814600480360360208110156107e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061143f565b005b6108626004803603604081101561082c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e5565b604051808215151515815260200191505060405180910390f35b6108c86004803603604081101561089257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061167c565b604051808215151515815260200191505060405180910390f35b610924600480360360208110156108f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611713565b604051808215151515815260200191505060405180910390f35b6109806004803603602081101561095457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611730565b604051808215151515815260200191505060405180910390f35b6109a261174d565b005b610a06600480360360408110156109ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175f565b6040518082815260200191505060405180910390f35b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ab45780601f10610a8957610100808354040283529160200191610ab4565b820191906000526020600020905b815481529060010190602001808311610a9757829003601f168201915b5050505050905090565b6000600b60009054906101000a900460ff1615610b43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610b4d83836117e6565b905092915050565b610b65610b60611804565b611730565b610bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b610bc38161180c565b42600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600454905090565b6000600b60009054906101000a900460ff1615610c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610ca484848461187d565b90509392505050565b610cbd610cb8611804565b611730565b610d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b610d1b8161143f565b610d2481611956565b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905550565b6000600960009054906101000a900460ff16905090565b6000600654905090565b6000600b60009054906101000a900460ff1615610e10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610e1a83836119c7565b905092915050565b6000610e38826001611a7a90919063ffffffff16565b9050919050565b610e4f610e4a611804565b611028565b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612ea96030913960400191505060405180910390fd5b600b60009054906101000a900460ff16610f26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610f6a611804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000610fbf610fba611804565b611713565b611014576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612f216030913960400191505060405180910390fd5b61101e8383611b58565b6001905092915050565b600061103e82600a611a7a90919063ffffffff16565b9050919050565b611055611050611804565b611bf7565b565b6000600b60009054906101000a900460ff16905090565b61107e611079611804565b611c51565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110d96110d4611804565b611730565b61112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b61113781611cab565b50565b61114a611145611804565b611028565b61119f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612ea96030913960400191505060405180910390fd5b6111a881611d05565b50565b6111bb6111b6611804565b611028565b611210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612ea96030913960400191505060405180910390fd5b600b60009054906101000a900460ff1615611293576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112d7611804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113b25780601f10611387576101008083540402835291602001916113b2565b820191906000526020600020905b81548152906001019060200180831161139557829003601f168201915b5050505050905090565b6113cc6113c7611804565b611713565b611421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612f216030913960400191505060405180910390fd5b61142a81611d5f565b50565b61143d611438611804565b611db9565b565b61144f61144a611804565b611713565b6114a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612f216030913960400191505060405180910390fd5b600b60009054906101000a900460ff1615611527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61153081610e22565b611585576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612f726031913960400191505060405180910390fd5b600061159082611e13565b905061159c8282610fad565b5042600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600b60009054906101000a900460ff161561166a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6116748383611e5f565b905092915050565b6000600b60009054906101000a900460ff1615611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61170b8383611f2c565b905092915050565b6000611729826005611a7a90919063ffffffff16565b9050919050565b6000611746826000611a7a90919063ffffffff16565b9050919050565b61175d611758611804565b611f4a565b565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006117fa6117f3611804565b8484611fa4565b6001905092915050565b600033905090565b61181c611817611804565b611730565b611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b61187a8161219b565b50565b600061188a8484846121f5565b61194b84611896611804565b61194685604051806060016040528060288152602001612fc460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006118fc611804565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124af9092919063ffffffff16565b611fa4565b600190509392505050565b611966611961611804565b611730565b6119bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b6119c481611f4a565b50565b6000611a706119d4611804565b84611a6b85600360006119e5611804565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256f90919063ffffffff16565b611fa4565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612fec6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600654611b7582611b67610c0a565b61256f90919063ffffffff16565b1115611be9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b611bf382826125f7565b5050565b611c0b8160006127b490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b611c6581600a6127b490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b611cbf81600061287190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b611d1981600a61287190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b611d7381600561287190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611dcd8160056127b490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600080611e1f8361294c565b90506000611e53620186a0611e4584611e3788611080565b612cef90919063ffffffff16565b612d7590919063ffffffff16565b90508092505050919050565b6000611f22611e6c611804565b84611f1d856040518060600160405280602581526020016130976025913960036000611e96611804565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124af9092919063ffffffff16565b611fa4565b6001905092915050565b6000611f40611f39611804565b84846121f5565b6001905092915050565b611f5e8160016127b490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561202a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806130736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612ed96022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6121af81600161287190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061304e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612301576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612e866023913960400191505060405180910390fd5b61236d81604051806060016040528060268152602001612efb60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124af9092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061240281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256f90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061255c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612521578082015181840152602081019050612506565b50505050905090810190601f16801561254e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156125ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561269a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6126af8160045461256f90919063ffffffff16565b60048190555061270781600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256f90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6127be8282611a7a565b612813576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f516021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61287b8282611a7a565b156128ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008061295883611080565b9050670de0b6b3a7640000811015801561297b5750683635c9adc5dea000008111155b156129f3576129eb62278d006129dd600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203612710612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b683643aa6479860400008110158015612a16575069021e19e0c9bab24000008111155b15612a8e57612a8662278d00612a78600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203612ee0612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b69021e27c1806e59a400008110158015612ab2575069152d02c7e14af68000008111155b15612b2a57612b2262278d00612b14600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442036136b0612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b69152d10a897fe9de400008110158015612b4e575069d3c21bcecceda10000008111155b15612bc657612bbe62278d00612bb0600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203613e80612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b69d3c229af83a1486400008110158015612beb57506a084595161401484a0000008111155b15612c6357612c5b62278d00612c4d600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203614650612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b6a08459523f4b7fbf16400008110612ce857612ce062278d00612cd2600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203614e20612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b505b919050565b600080831415612d025760009050612d6f565b6000828402905082848281612d1357fe5b0414612d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612fa36021913960400191505060405180910390fd5b809150505b92915050565b6000612db783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612dbf565b905092915050565b60008083118290612e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e30578082015181840152602081019050612e15565b50505050905090810190601f168015612e5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612e7757fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c6545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65546f6b656e3a206163636f756e7420646f6573206e6f742068617665207468652057686974656c697374656420726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158209849be32816e2d8664c0e460de5cfcf1909bdbfa0b1fd3960cb8a95c7ca426c664736f6c634300050d00324d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a3158325420546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043158325400000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f7576000357c0100000000000000000000000000000000000000000000000000000000900480636ef8d66d1161012157806398650275116100bf578063aa271e1a1161008e578063aa271e1a146108e2578063bb5f747b1461093e578063d6cd94731461099a578063dd62ed3e146109a4576101f7565b806398650275146107c85780639c6a5d54146107d2578063a457c2d714610816578063a9059cbb1461087c576101f7565b806382dc1ec4116100fb57806382dc1ec4146106b35780638456cb59146106f757806395d89b4114610701578063983b2d5614610784576101f7565b80636ef8d66d1461060d57806370a08231146106175780637362d9c81461066f576101f7565b8063355274ea1161019957806340c10f191161016857806340c10f191461051f57806346fbf68e146105855780634c5a628c146105e15780635c975abb146105eb576101f7565b8063355274ea1461043557806339509351146104535780633af32abf146104b95780633f4ba83a14610515576101f7565b806318160ddd116101d557806318160ddd1461032957806323b872dd14610347578063291d9549146103cd578063313ce56714610411576101f7565b806306fdde03146101fc578063095ea7b31461027f57806310154bad146102e5575b600080fd5b610204610a1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610244578082015181840152602081019050610229565b50505050905090810190601f1680156102715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102cb6004803603604081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610abe565b604051808215151515815260200191505060405180910390f35b610327600480360360208110156102fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b55565b005b610331610c0a565b6040518082815260200191505060405180910390f35b6103b36004803603606081101561035d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c14565b604051808215151515815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cad565b005b610419610d6a565b604051808260ff1660ff16815260200191505060405180910390f35b61043d610d81565b6040518082815260200191505060405180910390f35b61049f6004803603604081101561046957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d8b565b604051808215151515815260200191505060405180910390f35b6104fb600480360360208110156104cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e22565b604051808215151515815260200191505060405180910390f35b61051d610e3f565b005b61056b6004803603604081101561053557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fad565b604051808215151515815260200191505060405180910390f35b6105c76004803603602081101561059b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611028565b604051808215151515815260200191505060405180910390f35b6105e9611045565b005b6105f3611057565b604051808215151515815260200191505060405180910390f35b61061561106e565b005b6106596004803603602081101561062d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611080565b6040518082815260200191505060405180910390f35b6106b16004803603602081101561068557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c9565b005b6106f5600480360360208110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061113a565b005b6106ff6111ab565b005b61070961131a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561074957808201518184015260208101905061072e565b50505050905090810190601f1680156107765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107c66004803603602081101561079a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113bc565b005b6107d061142d565b005b610814600480360360208110156107e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061143f565b005b6108626004803603604081101561082c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e5565b604051808215151515815260200191505060405180910390f35b6108c86004803603604081101561089257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061167c565b604051808215151515815260200191505060405180910390f35b610924600480360360208110156108f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611713565b604051808215151515815260200191505060405180910390f35b6109806004803603602081101561095457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611730565b604051808215151515815260200191505060405180910390f35b6109a261174d565b005b610a06600480360360408110156109ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175f565b6040518082815260200191505060405180910390f35b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ab45780601f10610a8957610100808354040283529160200191610ab4565b820191906000526020600020905b815481529060010190602001808311610a9757829003601f168201915b5050505050905090565b6000600b60009054906101000a900460ff1615610b43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610b4d83836117e6565b905092915050565b610b65610b60611804565b611730565b610bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b610bc38161180c565b42600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600454905090565b6000600b60009054906101000a900460ff1615610c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610ca484848461187d565b90509392505050565b610cbd610cb8611804565b611730565b610d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b610d1b8161143f565b610d2481611956565b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905550565b6000600960009054906101000a900460ff16905090565b6000600654905090565b6000600b60009054906101000a900460ff1615610e10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610e1a83836119c7565b905092915050565b6000610e38826001611a7a90919063ffffffff16565b9050919050565b610e4f610e4a611804565b611028565b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612ea96030913960400191505060405180910390fd5b600b60009054906101000a900460ff16610f26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610f6a611804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000610fbf610fba611804565b611713565b611014576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612f216030913960400191505060405180910390fd5b61101e8383611b58565b6001905092915050565b600061103e82600a611a7a90919063ffffffff16565b9050919050565b611055611050611804565b611bf7565b565b6000600b60009054906101000a900460ff16905090565b61107e611079611804565b611c51565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110d96110d4611804565b611730565b61112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b61113781611cab565b50565b61114a611145611804565b611028565b61119f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612ea96030913960400191505060405180910390fd5b6111a881611d05565b50565b6111bb6111b6611804565b611028565b611210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612ea96030913960400191505060405180910390fd5b600b60009054906101000a900460ff1615611293576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112d7611804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113b25780601f10611387576101008083540402835291602001916113b2565b820191906000526020600020905b81548152906001019060200180831161139557829003601f168201915b5050505050905090565b6113cc6113c7611804565b611713565b611421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612f216030913960400191505060405180910390fd5b61142a81611d5f565b50565b61143d611438611804565b611db9565b565b61144f61144a611804565b611713565b6114a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612f216030913960400191505060405180910390fd5b600b60009054906101000a900460ff1615611527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61153081610e22565b611585576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612f726031913960400191505060405180910390fd5b600061159082611e13565b905061159c8282610fad565b5042600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600b60009054906101000a900460ff161561166a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6116748383611e5f565b905092915050565b6000600b60009054906101000a900460ff1615611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61170b8383611f2c565b905092915050565b6000611729826005611a7a90919063ffffffff16565b9050919050565b6000611746826000611a7a90919063ffffffff16565b9050919050565b61175d611758611804565b611f4a565b565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006117fa6117f3611804565b8484611fa4565b6001905092915050565b600033905090565b61181c611817611804565b611730565b611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b61187a8161219b565b50565b600061188a8484846121f5565b61194b84611896611804565b61194685604051806060016040528060288152602001612fc460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006118fc611804565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124af9092919063ffffffff16565b611fa4565b600190509392505050565b611966611961611804565b611730565b6119bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061300e6040913960400191505060405180910390fd5b6119c481611f4a565b50565b6000611a706119d4611804565b84611a6b85600360006119e5611804565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256f90919063ffffffff16565b611fa4565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612fec6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600654611b7582611b67610c0a565b61256f90919063ffffffff16565b1115611be9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b611bf382826125f7565b5050565b611c0b8160006127b490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b611c6581600a6127b490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b611cbf81600061287190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b611d1981600a61287190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b611d7381600561287190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611dcd8160056127b490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600080611e1f8361294c565b90506000611e53620186a0611e4584611e3788611080565b612cef90919063ffffffff16565b612d7590919063ffffffff16565b90508092505050919050565b6000611f22611e6c611804565b84611f1d856040518060600160405280602581526020016130976025913960036000611e96611804565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124af9092919063ffffffff16565b611fa4565b6001905092915050565b6000611f40611f39611804565b84846121f5565b6001905092915050565b611f5e8160016127b490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561202a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806130736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612ed96022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6121af81600161287190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061304e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612301576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612e866023913960400191505060405180910390fd5b61236d81604051806060016040528060268152602001612efb60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124af9092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061240281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256f90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061255c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612521578082015181840152602081019050612506565b50505050905090810190601f16801561254e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156125ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561269a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6126af8160045461256f90919063ffffffff16565b60048190555061270781600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256f90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6127be8282611a7a565b612813576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f516021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61287b8282611a7a565b156128ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008061295883611080565b9050670de0b6b3a7640000811015801561297b5750683635c9adc5dea000008111155b156129f3576129eb62278d006129dd600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203612710612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b683643aa6479860400008110158015612a16575069021e19e0c9bab24000008111155b15612a8e57612a8662278d00612a78600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203612ee0612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b69021e27c1806e59a400008110158015612ab2575069152d02c7e14af68000008111155b15612b2a57612b2262278d00612b14600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442036136b0612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b69152d10a897fe9de400008110158015612b4e575069d3c21bcecceda10000008111155b15612bc657612bbe62278d00612bb0600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203613e80612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b69d3c229af83a1486400008110158015612beb57506a084595161401484a0000008111155b15612c6357612c5b62278d00612c4d600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203614650612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b6a08459523f4b7fbf16400008110612ce857612ce062278d00612cd2600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544203614e20612cef90919063ffffffff16565b612d7590919063ffffffff16565b915050612cea565b505b919050565b600080831415612d025760009050612d6f565b6000828402905082848281612d1357fe5b0414612d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612fa36021913960400191505060405180910390fd5b809150505b92915050565b6000612db783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612dbf565b905092915050565b60008083118290612e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e30578082015181840152602081019050612e15565b50505050905090810190601f168015612e5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612e7757fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c6545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65546f6b656e3a206163636f756e7420646f6573206e6f742068617665207468652057686974656c697374656420726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158209849be32816e2d8664c0e460de5cfcf1909bdbfa0b1fd3960cb8a95c7ca426c664736f6c634300050d0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a3158325420546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043158325400000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): 1X2T Token
Arg [1] : symbol (string): 1X2T
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 3158325420546f6b656e00000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 3158325400000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
31124:3591:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31124:3591:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25559:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;25559:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30413:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30413:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;32075:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32075:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;15294:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30245:160;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30245:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;32480:191;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32480:191:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;26411:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;24401:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30561:170;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30561:170:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4546:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4546:119:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29563:120;;;:::i;:::-;;23651:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23651:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27034:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27034:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3285:95;;;:::i;:::-;;28770:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27251:79;;;:::i;:::-;;15448:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15448:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3161:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3161:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;27151:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27151:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;29350:118;;;:::i;:::-;;25761:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;25761:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22668:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22668:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;22768:79;;;:::i;:::-;;34378:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34378:334:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;30739:180;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30739:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;30105:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30105:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22551:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22551:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3028:125;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3028:125:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4915:89;;;:::i;:::-;;15992:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15992:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25559:83;25596:13;25629:5;25622:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25559:83;:::o;30413:140::-;30492:4;29007:7;;;;;;;;;;;29006:8;28998:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30516:29;30530:7;30539:5;30516:13;:29::i;:::-;30509:36;;30413:140;;;;:::o;32075:152::-;2901:30;2918:12;:10;:12::i;:::-;2901:16;:30::i;:::-;2893:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32153:29;32174:7;32153:20;:29::i;:::-;32216:3;32193:11;:20;32205:7;32193:20;;;;;;;;;;;;;;;:26;;;;32075:152;:::o;15294:91::-;15338:7;15365:12;;15358:19;;15294:91;:::o;30245:160::-;30338:4;29007:7;;;;;;;;;;;29006:8;28998:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30362:35;30381:4;30387:2;30391:5;30362:18;:35::i;:::-;30355:42;;30245:160;;;;;:::o;32480:191::-;2901:30;2918:12;:10;:12::i;:::-;2901:16;:30::i;:::-;2893:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32561:21;32574:7;32561:12;:21::i;:::-;32593:32;32617:7;32593:23;:32::i;:::-;32643:11;:20;32655:7;32643:20;;;;;;;;;;;;;;;32636:27;;;32480:191;:::o;26411:83::-;26452:5;26477:9;;;;;;;;;;;26470:16;;26411:83;:::o;24401:75::-;24437:7;24464:4;;24457:11;;24401:75;:::o;30561:170::-;30655:4;29007:7;;;;;;;;;;;29006:8;28998:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30679:44;30703:7;30712:10;30679:23;:44::i;:::-;30672:51;;30561:170;;;;:::o;4546:119::-;4607:4;4631:26;4649:7;4631:13;:17;;:26;;;;:::i;:::-;4624:33;;4546:119;;;:::o;29563:120::-;26931:22;26940:12;:10;:12::i;:::-;26931:8;:22::i;:::-;26923:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29206:7;;;;;;;;;;;29198:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29632:5;29622:7;;:15;;;;;;;;;;;;;;;;;;29653:22;29662:12;:10;:12::i;:::-;29653:22;;;;;;;;;;;;;;;;;;;;;;29563:120::o;23651:143::-;23725:4;22448:22;22457:12;:10;:12::i;:::-;22448:8;:22::i;:::-;22440:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23742:22;23748:7;23757:6;23742:5;:22::i;:::-;23782:4;23775:11;;23651:143;;;;:::o;27034:109::-;27090:4;27114:21;27127:7;27114:8;:12;;:21;;;;:::i;:::-;27107:28;;27034:109;;;:::o;3285:95::-;3337:35;3359:12;:10;:12::i;:::-;3337:21;:35::i;:::-;3285:95::o;28770:78::-;28809:4;28833:7;;;;;;;;;;;28826:14;;28770:78;:::o;27251:79::-;27295:27;27309:12;:10;:12::i;:::-;27295:13;:27::i;:::-;27251:79::o;15448:110::-;15505:7;15532:9;:18;15542:7;15532:18;;;;;;;;;;;;;;;;15525:25;;15448:110;;;:::o;3161:116::-;2901:30;2918:12;:10;:12::i;:::-;2901:16;:30::i;:::-;2893:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:27;3261:7;3242:18;:27::i;:::-;3161:116;:::o;27151:92::-;26931:22;26940:12;:10;:12::i;:::-;26931:8;:22::i;:::-;26923:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27216:19;27227:7;27216:10;:19::i;:::-;27151:92;:::o;29350:118::-;26931:22;26940:12;:10;:12::i;:::-;26931:8;:22::i;:::-;26923:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29007:7;;;;;;;;;;;29006:8;28998:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29420:4;29410:7;;:14;;;;;;;;;;;;;;;;;;29440:20;29447:12;:10;:12::i;:::-;29440:20;;;;;;;;;;;;;;;;;;;;;;29350:118::o;25761:87::-;25800:13;25833:7;25826:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25761:87;:::o;22668:92::-;22448:22;22457:12;:10;:12::i;:::-;22448:8;:22::i;:::-;22440:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22733:19;22744:7;22733:10;:19::i;:::-;22668:92;:::o;22768:79::-;22812:27;22826:12;:10;:12::i;:::-;22812:13;:27::i;:::-;22768:79::o;34378:334::-;22448:22;22457:12;:10;:12::i;:::-;22448:8;:22::i;:::-;22440:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29007:7;;;;;;;;;;;29006:8;28998:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34500:22;34514:7;34500:13;:22::i;:::-;34492:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34587:16;34606:27;34625:7;34606:18;:27::i;:::-;34587:46;;34644:23;34649:7;34658:8;34644:4;:23::i;:::-;;34701:3;34678:11;:20;34690:7;34678:20;;;;;;;;;;;;;;;:26;;;;29046:1;34378:334;:::o;30739:180::-;30838:4;29007:7;;;;;;;;;;;29006:8;28998:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30862:49;30886:7;30895:15;30862:23;:49::i;:::-;30855:56;;30739:180;;;;:::o;30105:132::-;30180:4;29007:7;;;;;;;;;;;29006:8;28998:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30204:25;30219:2;30223:5;30204:14;:25::i;:::-;30197:32;;30105:132;;;;:::o;22551:109::-;22607:4;22631:21;22644:7;22631:8;:12;;:21;;;;:::i;:::-;22624:28;;22551:109;;;:::o;3028:125::-;3092:4;3116:29;3137:7;3116:16;:20;;:29;;;;:::i;:::-;3109:36;;3028:125;;;:::o;4915:89::-;4964:32;4983:12;:10;:12::i;:::-;4964:18;:32::i;:::-;4915:89::o;15992:134::-;16064:7;16091:11;:18;16103:5;16091:18;;;;;;;;;;;;;;;:27;16110:7;16091:27;;;;;;;;;;;;;;;;16084:34;;15992:134;;;;:::o;16273:152::-;16339:4;16356:39;16365:12;:10;:12::i;:::-;16379:7;16388:6;16356:8;:39::i;:::-;16413:4;16406:11;;16273:152;;;;:::o;866:98::-;911:15;946:10;939:17;;866:98;:::o;4673:110::-;2901:30;2918:12;:10;:12::i;:::-;2901:16;:30::i;:::-;2893:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4751:24;4767:7;4751:15;:24::i;:::-;4673:110;:::o;16897:304::-;16986:4;17003:36;17013:6;17021:9;17032:6;17003:9;:36::i;:::-;17050:121;17059:6;17067:12;:10;:12::i;:::-;17081:89;17119:6;17081:89;;;;;;;;;;;;;;;;;:11;:19;17093:6;17081:19;;;;;;;;;;;;;;;:33;17101:12;:10;:12::i;:::-;17081:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17050:8;:121::i;:::-;17189:4;17182:11;;16897:304;;;;;:::o;4791:116::-;2901:30;2918:12;:10;:12::i;:::-;2901:16;:30::i;:::-;2893:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4872:27;4891:7;4872:18;:27::i;:::-;4791:116;:::o;17610:210::-;17690:4;17707:83;17716:12;:10;:12::i;:::-;17730:7;17739:50;17778:10;17739:11;:25;17751:12;:10;:12::i;:::-;17739:25;;;;;;;;;;;;;;;:34;17765:7;17739:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17707:8;:83::i;:::-;17808:4;17801:11;;17610:210;;;;:::o;2075:203::-;2147:4;2191:1;2172:21;;:7;:21;;;;2164:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2250:4;:11;;:20;2262:7;2250:20;;;;;;;;;;;;;;;;;;;;;;;;;2243:27;;2075:203;;;;:::o;24649:183::-;24752:4;;24724:24;24742:5;24724:13;:11;:13::i;:::-;:17;;:24;;;;:::i;:::-;:32;;24716:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24797:27;24809:7;24818:5;24797:11;:27::i;:::-;24649:183;;:::o;3542:154::-;3610:32;3634:7;3610:16;:23;;:32;;;;:::i;:::-;3680:7;3658:30;;;;;;;;;;;;3542:154;:::o;27468:130::-;27528:24;27544:7;27528:8;:15;;:24;;;;:::i;:::-;27582:7;27568:22;;;;;;;;;;;;27468:130;:::o;3388:146::-;3453:29;3474:7;3453:16;:20;;:29;;;;:::i;:::-;3518:7;3498:28;;;;;;;;;;;;3388:146;:::o;27338:122::-;27395:21;27408:7;27395:8;:12;;:21;;;;:::i;:::-;27444:7;27432:20;;;;;;;;;;;;27338:122;:::o;22855:::-;22912:21;22925:7;22912:8;:12;;:21;;;;:::i;:::-;22961:7;22949:20;;;;;;;;;;;;22855:122;:::o;22985:130::-;23045:24;23061:7;23045:8;:15;;:24;;;;:::i;:::-;23099:7;23085:22;;;;;;;;;;;;22985:130;:::o;33993:242::-;34059:7;34079:19;34101:22;34115:7;34101:13;:22::i;:::-;34079:44;;34134:16;34153:48;34193:7;34153:35;34176:11;34153:18;34163:7;34153:9;:18::i;:::-;:22;;:35;;;;:::i;:::-;:39;;:48;;;;:::i;:::-;34134:67;;34219:8;34212:15;;;;33993:242;;;:::o;18323:261::-;18408:4;18425:129;18434:12;:10;:12::i;:::-;18448:7;18457:96;18496:15;18457:96;;;;;;;;;;;;;;;;;:11;:25;18469:12;:10;:12::i;:::-;18457:25;;;;;;;;;;;;;;;:34;18483:7;18457:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18425:8;:129::i;:::-;18572:4;18565:11;;18323:261;;;;:::o;15771:158::-;15840:4;15857:42;15867:12;:10;:12::i;:::-;15881:9;15892:6;15857:9;:42::i;:::-;15917:4;15910:11;;15771:158;;;;:::o;5157:145::-;5222:29;5243:7;5222:13;:20;;:29;;;;:::i;:::-;5286:7;5267:27;;;;;;;;;;;;5157:145;:::o;21255:338::-;21366:1;21349:19;;:5;:19;;;;21341:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21447:1;21428:21;;:7;:21;;;;21420:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21531:6;21501:11;:18;21513:5;21501:18;;;;;;;;;;;;;;;:27;21520:7;21501:27;;;;;;;;;;;;;;;:36;;;;21569:7;21553:32;;21562:5;21553:32;;;21578:6;21553:32;;;;;;;;;;;;;;;;;;21255:338;;;:::o;5012:137::-;5074:26;5092:7;5074:13;:17;;:26;;;;:::i;:::-;5133:7;5116:25;;;;;;;;;;;;5012:137;:::o;19074:471::-;19190:1;19172:20;;:6;:20;;;;19164:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19274:1;19253:23;;:9;:23;;;;19245:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19349;19371:6;19349:71;;;;;;;;;;;;;;;;;:9;:17;19359:6;19349:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;19329:9;:17;19339:6;19329:17;;;;;;;;;;;;;;;:91;;;;19454:32;19479:6;19454:9;:20;19464:9;19454:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19431:9;:20;19441:9;19431:20;;;;;;;;;;;;;;;:55;;;;19519:9;19502:35;;19511:6;19502:35;;;19530:6;19502:35;;;;;;;;;;;;;;;;;;19074:471;;;:::o;10047:192::-;10133:7;10166:1;10161;:6;;10169:12;10153:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10153:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10193:9;10209:1;10205;:5;10193:17;;10230:1;10223:8;;;10047:192;;;;;:::o;9118:181::-;9176:7;9196:9;9212:1;9208;:5;9196:17;;9237:1;9232;:6;;9224:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9290:1;9283:8;;;9118:181;;;;:::o;19826:308::-;19921:1;19902:21;;:7;:21;;;;19894:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19987:24;20004:6;19987:12;;:16;;:24;;;;:::i;:::-;19972:12;:39;;;;20043:30;20066:6;20043:9;:18;20053:7;20043:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;20022:9;:18;20032:7;20022:18;;;;;;;;;;;;;;;:51;;;;20110:7;20089:37;;20106:1;20089:37;;;20119:6;20089:37;;;;;;;;;;;;;;;;;;19826:308;;:::o;1797:183::-;1877:18;1881:4;1887:7;1877:3;:18::i;:::-;1869:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1967:5;1944:4;:11;;:20;1956:7;1944:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1797:183;;:::o;1539:178::-;1617:18;1621:4;1627:7;1617:3;:18::i;:::-;1616:19;1608:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1705:4;1682;:11;;:20;1694:7;1682:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1539:178;;:::o;32857:1002::-;32918:7;32938:15;32956:18;32966:7;32956:9;:18::i;:::-;32938:36;;32998:4;32988:7;:14;;:37;;;;;33017:8;33006:7;:19;;32988:37;32985:867;;;33049:60;33101:7;33049:47;33075:11;:20;33087:7;33075:20;;;;;;;;;;;;;;;;33069:3;:26;33057:6;33049:19;;:47;;;;:::i;:::-;:51;;:60;;;;:::i;:::-;33042:67;;;;;32985:867;33140:8;33130:7;:18;;:42;;;;;33163:9;33152:7;:20;;33130:42;33127:725;;;33196:60;33248:7;33196:47;33222:11;:20;33234:7;33222:20;;;;;;;;;;;;;;;;33216:3;:26;33204:6;33196:19;;:47;;;;:::i;:::-;:51;;:60;;;;:::i;:::-;33189:67;;;;;33127:725;33287:9;33277:7;:19;;:44;;;;;33311:10;33300:7;:21;;33277:44;33274:578;;;33345:60;33397:7;33345:47;33371:11;:20;33383:7;33371:20;;;;;;;;;;;;;;;;33365:3;:26;33353:6;33345:19;;:47;;;;:::i;:::-;:51;;:60;;;;:::i;:::-;33338:67;;;;;33274:578;33436:10;33426:7;:20;;:47;;;;;33461:12;33450:7;:23;;33426:47;33423:429;;;33497:60;33549:7;33497:47;33523:11;:20;33535:7;33523:20;;;;;;;;;;;;;;;;33517:3;:26;33505:6;33497:19;;:47;;;;:::i;:::-;:51;;:60;;;;:::i;:::-;33490:67;;;;;33423:429;33588:12;33578:7;:22;;:50;;;;;33615:13;33604:7;:24;;33578:50;33575:277;;;33652:60;33704:7;33652:47;33678:11;:20;33690:7;33678:20;;;;;;;;;;;;;;;;33672:3;:26;33660:6;33652:19;;:47;;;;:::i;:::-;:51;;:60;;;;:::i;:::-;33645:67;;;;;33575:277;33743:13;33733:7;:23;33730:122;;33780:60;33832:7;33780:47;33806:11;:20;33818:7;33806:20;;;;;;;;;;;;;;;;33800:3;:26;33788:6;33780:19;;:47;;;;:::i;:::-;:51;;:60;;;;:::i;:::-;33773:67;;;;;33730:122;32857:1002;;;;;:::o;10490:471::-;10548:7;10798:1;10793;:6;10789:47;;;10823:1;10816:8;;;;10789:47;10848:9;10864:1;10860;:5;10848:17;;10893:1;10888;10884;:5;;;;;;:10;10876:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10952:1;10945:8;;;10490:471;;;;;:::o;11429:132::-;11487:7;11514:39;11518:1;11521;11514:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11507:46;;11429:132;;;;:::o;12091:345::-;12177:7;12276:1;12272;:5;12279:12;12264:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12264:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12303:9;12319:1;12315;:5;;;;;;12303:17;;12427:1;12420:8;;;12091:345;;;;;:::o
Swarm Source
bzzr://9849be32816e2d8664c0e460de5cfcf1909bdbfa0b1fd3960cb8a95c7ca426c6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.