ETH Price: $3,019.69 (+3.02%)
Gas: 2 Gwei

Token

Digital Rand (DZAR)
 

Overview

Max Total Supply

150,000 DZAR

Holders

208 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
583.451841 DZAR

Value
$0.00
0xaec539a116fa75e8bdcf016d3c146a25bc1af93b
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

South Africa's digital asset pegged 1:1 to the Rand.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DZARToken

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-11-22
*/

pragma solidity 0.5.8;

/*
*  DigitalRand.sol
*  DZAR token smart contract
*  2019-11-22
*  https://digitalrand.co.za
**/
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) {
        require(b <= a, "SafeMath: subtraction overflow");
        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-solidity/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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

/**
 * @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];
    }
}

contract PauserRole {
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor () internal {
        _addPauser(msg.sender);
    }

    modifier onlyPauser() {
        require(isPauser(msg.sender), "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(msg.sender);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

/**
 * @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 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(msg.sender);
    }

    /**
     * @dev Called by a pauser to unpause, returns to normal state.
     */
    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be aplied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * > Note: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @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.
     *
     * > 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);
}

/**
 * @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`.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * 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 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(msg.sender, 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 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        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 `value`.
     * - 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, msg.sender, _allowances[sender][msg.sender].sub(amount));
        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(msg.sender, spender, _allowances[msg.sender][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(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        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);
        _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 Destoys `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 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @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 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @dev Destoys `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, msg.sender, _allowances[account][msg.sender].sub(amount));
    }
}

contract BlackListableToken is Ownable, ERC20 {

    /////// Getters to allow the same blacklist to be used also by other contracts (including upgraded Tether) ///////
    function getBlackListStatus(address _maker) external view returns (bool) {
        return isBlackListed[_maker];
    }

    mapping (address => bool) public isBlackListed;

    function addBlackList(address _evilUser) public onlyOwner {
        require(!isBlackListed[_evilUser], "_evilUser is already in black list");

        isBlackListed[_evilUser] = true;
        emit AddedBlackList(_evilUser);
    }

    function removeBlackList(address _clearedUser) public onlyOwner {
        require(isBlackListed[_clearedUser], "_clearedUser isn't in black list");

        isBlackListed[_clearedUser] = false;
        emit RemovedBlackList(_clearedUser);
    }

    function destroyBlackFunds(address _blackListedUser) public onlyOwner {
        require(_blackListedUser != address(0x0), "_blackListedUser is the zero address");
        require(isBlackListed[_blackListedUser], "_blackListedUser isn't in black list");

        uint256 dirtyFunds = balanceOf(_blackListedUser);
        super._burn(_blackListedUser, dirtyFunds);
        emit DestroyedBlackFunds(_blackListedUser, dirtyFunds);
    }

    event DestroyedBlackFunds(address indexed _blackListedUser, uint256 _balance);

    event AddedBlackList(address indexed _user);

    event RemovedBlackList(address indexed _user);

}

contract UpgradedStandardToken is ERC20 {
    // those methods are called by the legacy contract
    // and they must ensure msg.sender to be the contract address
    function transferByLegacy(address from, address to, uint256 value) public returns (bool);
    function transferFromByLegacy(address sender, address from, address to, uint256 value) public returns (bool);
    function approveByLegacy(address owner, address spender, uint256 value) public returns (bool);
    function increaseAllowanceByLegacy(address owner, address spender, uint256 addedValue) public returns (bool);
    function decreaseAllowanceByLegacy(address owner, address spender, uint256 subtractedValue) public returns (bool);
}

contract DZARToken is ERC20, Pausable, BlackListableToken {

    string public name;
    string public symbol;
    uint8 public decimals;
    address public upgradedAddress;
    bool public deprecated;

    //  The contract can be initialized with a number of tokens
    //  All the tokens are deposited to the owner address
    //
    // @param _balance Initial supply of the contract
    // @param _name Token Name
    // @param _symbol Token symbol
    // @param _decimals Token decimals
    constructor(uint256 _initialSupply, string memory _name, string memory _symbol, uint8 _decimals) public {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        deprecated = false;
        super._mint(msg.sender, _initialSupply);
    }

    // Forward ERC20 methods to upgraded contract if this one is deprecated
    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool success) {
        require(!isBlackListed[msg.sender], "can't transfer token from address in black list");
        require(!isBlackListed[_to], "can't transfer token to address in black list");
        if (deprecated) {
            success = UpgradedStandardToken(upgradedAddress).transferByLegacy(msg.sender, _to, _value);
            require(success, "failed to call upgraded contract");
            return true;
        } else {
            return super.transfer(_to, _value);
        }
    }

    // Forward ERC20 methods to upgraded contract if this one is deprecated
    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool success) {
        require(!isBlackListed[_from], "can't transfer token from address in black list");
        require(!isBlackListed[_to], "can't transfer token to address in black list");
        if (deprecated) {
            success = UpgradedStandardToken(upgradedAddress).transferFromByLegacy(msg.sender, _from, _to, _value);
            require(success, "failed to call upgraded contract");
            return true;
        } else {
            return super.transferFrom(_from, _to, _value);
        }
    }

    // Forward ERC20 methods to upgraded contract if this one is deprecated
    function balanceOf(address who) public view returns (uint256) {
        if (deprecated) {
            return UpgradedStandardToken(upgradedAddress).balanceOf(who);
        } else {
            return super.balanceOf(who);
        }
    }

    // Forward ERC20 methods to upgraded contract if this one is deprecated
    function approve(address _spender, uint256 _value) public whenNotPaused returns (bool success) {
        if (deprecated) {
            success = UpgradedStandardToken(upgradedAddress).approveByLegacy(msg.sender, _spender, _value);
            require(success, "failed to call upgraded contract");
            return true;
        } else {
            return super.approve(_spender, _value);
        }
    }

    // Forward ERC20 methods to upgraded contract if this one is deprecated
    function increaseAllowance(address _spender, uint256 _addedValue) public whenNotPaused returns (bool success) {
        if (deprecated) {
            success = UpgradedStandardToken(upgradedAddress).increaseAllowanceByLegacy(msg.sender, _spender, _addedValue);
            require(success, "failed to call upgraded contract");
            return true;
        } else {
            return super.increaseAllowance(_spender, _addedValue);
        }
    }

    // Forward ERC20 methods to upgraded contract if this one is deprecated
    function decreaseAllowance(address _spender, uint256 _subtractedValue) public whenNotPaused returns (bool success) {
        if (deprecated) {
            success = UpgradedStandardToken(upgradedAddress).decreaseAllowanceByLegacy(msg.sender, _spender, _subtractedValue);
            require(success, "failed to call upgraded contract");
            return true;
        } else {
            return super.decreaseAllowance(_spender, _subtractedValue);
        }
    }

    // Forward ERC20 methods to upgraded contract if this one is deprecated
    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        if (deprecated) {
            return UpgradedStandardToken(upgradedAddress).allowance(_owner, _spender);
        } else {
            return super.allowance(_owner, _spender);
        }
    }

    // deprecate current contract in favour of a new one
    function deprecate(address _upgradedAddress) public onlyOwner {
        require(_upgradedAddress != address(0x0), "_upgradedAddress is a zero address");
        require(!deprecated, "this contract has been deprecated");

        deprecated = true;
        upgradedAddress = _upgradedAddress;
        emit Deprecate(_upgradedAddress);
    }

    function totalSupply() public view returns (uint256) {
        if (deprecated) {
            return UpgradedStandardToken(upgradedAddress).totalSupply();
        } else {
            return super.totalSupply();
        }
    }

    // Issue a new amount of tokens
    // these tokens are deposited into the owner address
    //
    // @param _amount Number of tokens to be issued
    function issue(uint256 amount) public onlyOwner whenNotPaused {
        require(!deprecated, "this contract has been deprecated");

        super._mint(msg.sender, amount);
        emit Issue(amount);
    }

    // Redeem tokens.
    // These tokens are withdrawn from the owner address
    // if the balance must be enough to cover the redeem
    // or the call will fail.
    // @param _amount Number of tokens to be issued
    function redeem(uint256 amount) public onlyOwner whenNotPaused {
        require(!deprecated, "this contract has been deprecated");

        super._burn(msg.sender, amount);
        emit Redeem(amount);
    }

    // Called when new token are issued
    event Issue(uint256 amount);

    // Called when tokens are redeemed
    event Redeem(uint256 amount);

    // Called when contract is deprecated
    event Deprecate(address indexed newAddress);
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_upgradedAddress","type":"address"}],"name":"deprecate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"deprecated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_evilUser","type":"address"}],"name":"addBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgradedAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_maker","type":"address"}],"name":"getBlackListStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isBlackListed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_clearedUser","type":"address"}],"name":"removeBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_blackListedUser","type":"address"}],"name":"destroyBlackFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_initialSupply","type":"uint256"},{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Issue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newAddress","type":"address"}],"name":"Deprecate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_blackListedUser","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"}],"name":"DestroyedBlackFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"}],"name":"AddedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"}],"name":"RemovedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","type":"event"}]

60806040523480156200001157600080fd5b50604051620048c9380380620048c9833981018060405260808110156200003757600080fd5b810190808051906020019092919080516401000000008111156200005a57600080fd5b828101905060208101848111156200007157600080fd5b81518560018202830111640100000000821117156200008f57600080fd5b50509291906020018051640100000000811115620000ac57600080fd5b82810190506020810184811115620000c357600080fd5b8151856001820283011164010000000082111715620000e157600080fd5b50509291906020018051906020019092919050505062000107336200026960201b60201c565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548160ff0219169083151502179055508260079080519060200190620001f8929190620006e3565b50816008908051906020019062000211929190620006e3565b5080600960006101000a81548160ff021916908360ff1602179055506000600960156101000a81548160ff0219169083151502179055506200025f3385620002ca60201b6200321e1760201c565b5050505062000792565b620002848160006200049660201b62003dad1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200036e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6200038a816004546200057a60201b62003c681790919060201c565b600481905550620003e981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200057a60201b62003c681790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b620004a882826200060360201b60201c565b156200051c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080828401905083811015620005f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200068c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620048a76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200072657805160ff191683800117855562000757565b8280016001018555821562000757579182015b828111156200075657825182559160200191906001019062000739565b5b5090506200076691906200076a565b5090565b6200078f91905b808211156200078b57600081600090555060010162000771565b5090565b90565b61410580620007a26000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063a9059cbb116100a2578063e47d606011610071578063e47d606014610922578063e4997dc51461097e578063f2fde38b146109c2578063f3bdc22814610a06576101e5565b8063a9059cbb146107e8578063cc872b661461084e578063db006a751461087c578063dd62ed3e146108aa576101e5565b80638da5cb5b116100de5780638da5cb5b146106935780638f32d59b146106dd57806395d89b41146106ff578063a457c2d714610782576101e5565b806370a08231146105e3578063715018a61461063b57806382dc1ec4146106455780638456cb5914610689576101e5565b806326976e3f1161018757806346fbf68e1161015657806346fbf68e146104ff57806359bf1abe1461055b5780635c975abb146105b75780636ef8d66d146105d9576101e5565b806326976e3f14610421578063313ce5671461046b578063395093511461048f5780633f4ba83a146104f5576101e5565b80630e136b19116101c35780630e136b19146103175780630ecb93c01461033957806318160ddd1461037d57806323b872dd1461039b576101e5565b806306fdde03146101ea5780630753c30c1461026d578063095ea7b3146102b1575b600080fd5b6101f2610a4a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610232578082015181840152602081019050610217565b50505050905090810190601f16801561025f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102af6004803603602081101561028357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae8565b005b6102fd600480360360408110156102c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf0565b604051808215151515815260200191505060405180910390f35b61031f610f33565b604051808215151515815260200191505060405180910390f35b61037b6004803603602081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f46565b005b610385611101565b6040518082815260200191505060405180910390f35b610407600480360360608110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d0565b604051808215151515815260200191505060405180910390f35b61042961158f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104736115b5565b604051808260ff1660ff16815260200191505060405180910390f35b6104db600480360360408110156104a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115c8565b604051808215151515815260200191505060405180910390f35b6104fd61180b565b005b6105416004803603602081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061196b565b604051808215151515815260200191505060405180910390f35b61059d6004803603602081101561057157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611988565b604051808215151515815260200191505060405180910390f35b6105bf6119de565b604051808215151515815260200191505060405180910390f35b6105e16119f5565b005b610625600480360360208110156105f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a00565b6040518082815260200191505060405180910390f35b610643611b09565b005b6106876004803603602081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c44565b005b610691611cae565b005b61069b611e0f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106e5611e39565b604051808215151515815260200191505060405180910390f35b610707611e91565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561074757808201518184015260208101905061072c565b50505050905090810190601f1680156107745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107ce6004803603604081101561079857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f2f565b604051808215151515815260200191505060405180910390f35b610834600480360360408110156107fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612172565b604051808215151515815260200191505060405180910390f35b61087a6004803603602081101561086457600080fd5b81019080803590602001909291905050506124fb565b005b6108a86004803603602081101561089257600080fd5b81019080803590602001909291905050506126a2565b005b61090c600480360360408110156108c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612849565b6040518082815260200191505060405180910390f35b6109646004803603602081101561093857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612988565b604051808215151515815260200191505060405180910390f35b6109c06004803603602081101561099457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129a8565b005b610a04600480360360208110156109d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b7f565b005b610a4860048036036020811015610a1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c05565b005b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ae05780601f10610ab557610100808354040283529160200191610ae0565b820191906000526020600020905b815481529060010190602001808311610ac357829003601f168201915b505050505081565b610af0611e39565b610b62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613f216022913960400191505060405180910390fd5b600960159054906101000a900460ff1615610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eac6021913960400191505060405180910390fd5b6001600960156101000a81548160ff02191690831515021790555080600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e60405160405180910390a250565b6000600560009054906101000a900460ff1615610d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff1615610f2057600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aee92d333385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610e6757600080fd5b505af1158015610e7b573d6000803e3d6000fd5b505050506040513d6020811015610e9157600080fd5b8101908080519060200190929190505050905080610f17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b60019050610f2d565b610f2a8383612e10565b90505b92915050565b600960159054906101000a900460ff1681565b610f4e611e39565b610fc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061402a6022913960400191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc60405160405180910390a250565b6000600960159054906101000a900460ff16156111c257600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d60208110156111aa57600080fd5b810190808051906020019092919050505090506111cd565b6111ca612e27565b90505b90565b6000600560009054906101000a900460ff1615611255576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613fce602f913960400191505060405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613ffd602d913960400191505060405180910390fd5b600960159054906101000a900460ff161561157a57600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b477adb338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b1580156114c157600080fd5b505af11580156114d5573d6000803e3d6000fd5b505050506040513d60208110156114eb57600080fd5b8101908080519060200190929190505050905080611571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b60019050611588565b611585848484612e31565b90505b9392505050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900460ff1681565b6000600560009054906101000a900460ff161561164d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff16156117f857600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4584a733385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561173f57600080fd5b505af1158015611753573d6000803e3d6000fd5b505050506040513d602081101561176957600080fd5b81019080805190602001909291905050509050806117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b60019050611805565b6118028383612ee2565b90505b92915050565b6118143361196b565b611869576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613ef16030913960400191505060405180910390fd5b600560009054906101000a900460ff166118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000611981826000612f8790919063ffffffff16565b9050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560009054906101000a900460ff16905090565b6119fe33613065565b565b6000600960159054906101000a900460ff1615611af857600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ab657600080fd5b505afa158015611aca573d6000803e3d6000fd5b505050506040513d6020811015611ae057600080fd5b81019080805190602001909291905050509050611b04565b611b01826130bf565b90505b919050565b611b11611e39565b611b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611c4d3361196b565b611ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613ef16030913960400191505060405180910390fd5b611cab81613108565b50565b611cb73361196b565b611d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613ef16030913960400191505060405180910390fd5b600560009054906101000a900460ff1615611d8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f275780601f10611efc57610100808354040283529160200191611f27565b820191906000526020600020905b815481529060010190602001808311611f0a57829003601f168201915b505050505081565b6000600560009054906101000a900460ff1615611fb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff161561215f57600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aed6cc6e3385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b505050506040513d60208110156120d057600080fd5b8101908080519060200190929190505050905080612156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b6001905061216c565b6121698383613162565b90505b92915050565b6000600560009054906101000a900460ff16156121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561229a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613fce602f913960400191505060405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561233d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613ffd602d913960400191505060405180910390fd5b600960159054906101000a900460ff16156124e857600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e18980a3385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561242f57600080fd5b505af1158015612443573d6000803e3d6000fd5b505050506040513d602081101561245957600080fd5b81019080805190602001909291905050509050806124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b600190506124f5565b6124f28383613207565b90505b92915050565b612503611e39565b612575576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560009054906101000a900460ff16156125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff161561265e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eac6021913960400191505060405180910390fd5b612668338261321e565b7fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a816040518082815260200191505060405180910390a150565b6126aa611e39565b61271c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560009054906101000a900460ff161561279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff1615612805576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eac6021913960400191505060405180910390fd5b61280f33826133db565b7f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a44816040518082815260200191505060405180910390a150565b6000600960159054906101000a900460ff161561297557600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561293357600080fd5b505afa158015612947573d6000803e3d6000fd5b505050506040513d602081101561295d57600080fd5b81019080805190602001909291905050509050612982565b61297f838361357b565b90505b92915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6129b0611e39565b612a22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ae1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5f636c6561726564557365722069736e277420696e20626c61636b206c69737481525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c60405160405180910390a250565b612b87611e39565b612bf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612c0281613602565b50565b612c0d611e39565b612c7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806140b66024913960400191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613ecd6024913960400191505060405180910390fd5b6000612db282611a00565b9050612dbe82826133db565b8173ffffffffffffffffffffffffffffffffffffffff167f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c6826040518082815260200191505060405180910390a25050565b6000612e1d338484613748565b6001905092915050565b6000600454905090565b6000612e3e84848461393f565b612ed78433612ed285600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdf90919063ffffffff16565b613748565b600190509392505050565b6000612f7d3384612f7885600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b613748565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561300e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613fac6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b613079816000613cf090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61311c816000613dad90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60006131fd33846131f885600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdf90919063ffffffff16565b613748565b6001905092915050565b600061321433848461393f565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6132d681600454613c6890919063ffffffff16565b60048190555061332e81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061404c6021913960400191505060405180910390fd5b61347681600454613bdf90919063ffffffff16565b6004819055506134ce81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdf90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613688576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f436026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806140926024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613854576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613f696022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156139c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061406d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613e896023913960400191505060405180910390fd5b613a9d81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdf90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600082821115613c57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015613ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b613cfa8282612f87565b613d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f8b6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b613db78282612f87565b15613e2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573737468697320636f6e747261637420686173206265656e20646570726563617465645f626c61636b4c6973746564557365722069736e277420696e20626c61636b206c697374506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c655f7570677261646564416464726573732069732061207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737363616e2774207472616e7366657220746f6b656e2066726f6d206164647265737320696e20626c61636b206c69737463616e2774207472616e7366657220746f6b656e20746f206164647265737320696e20626c61636b206c6973745f6576696c5573657220697320616c726561647920696e20626c61636b206c69737445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735f626c61636b4c69737465645573657220697320746865207a65726f2061646472657373a165627a7a723058201735f21b6456c2db09172339df5376af3b45874ac46fdbfd3ad080f7ef0381970029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000746a528800000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c4469676974616c2052616e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004445a415200000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063a9059cbb116100a2578063e47d606011610071578063e47d606014610922578063e4997dc51461097e578063f2fde38b146109c2578063f3bdc22814610a06576101e5565b8063a9059cbb146107e8578063cc872b661461084e578063db006a751461087c578063dd62ed3e146108aa576101e5565b80638da5cb5b116100de5780638da5cb5b146106935780638f32d59b146106dd57806395d89b41146106ff578063a457c2d714610782576101e5565b806370a08231146105e3578063715018a61461063b57806382dc1ec4146106455780638456cb5914610689576101e5565b806326976e3f1161018757806346fbf68e1161015657806346fbf68e146104ff57806359bf1abe1461055b5780635c975abb146105b75780636ef8d66d146105d9576101e5565b806326976e3f14610421578063313ce5671461046b578063395093511461048f5780633f4ba83a146104f5576101e5565b80630e136b19116101c35780630e136b19146103175780630ecb93c01461033957806318160ddd1461037d57806323b872dd1461039b576101e5565b806306fdde03146101ea5780630753c30c1461026d578063095ea7b3146102b1575b600080fd5b6101f2610a4a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610232578082015181840152602081019050610217565b50505050905090810190601f16801561025f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102af6004803603602081101561028357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae8565b005b6102fd600480360360408110156102c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf0565b604051808215151515815260200191505060405180910390f35b61031f610f33565b604051808215151515815260200191505060405180910390f35b61037b6004803603602081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f46565b005b610385611101565b6040518082815260200191505060405180910390f35b610407600480360360608110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d0565b604051808215151515815260200191505060405180910390f35b61042961158f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104736115b5565b604051808260ff1660ff16815260200191505060405180910390f35b6104db600480360360408110156104a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115c8565b604051808215151515815260200191505060405180910390f35b6104fd61180b565b005b6105416004803603602081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061196b565b604051808215151515815260200191505060405180910390f35b61059d6004803603602081101561057157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611988565b604051808215151515815260200191505060405180910390f35b6105bf6119de565b604051808215151515815260200191505060405180910390f35b6105e16119f5565b005b610625600480360360208110156105f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a00565b6040518082815260200191505060405180910390f35b610643611b09565b005b6106876004803603602081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c44565b005b610691611cae565b005b61069b611e0f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106e5611e39565b604051808215151515815260200191505060405180910390f35b610707611e91565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561074757808201518184015260208101905061072c565b50505050905090810190601f1680156107745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107ce6004803603604081101561079857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f2f565b604051808215151515815260200191505060405180910390f35b610834600480360360408110156107fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612172565b604051808215151515815260200191505060405180910390f35b61087a6004803603602081101561086457600080fd5b81019080803590602001909291905050506124fb565b005b6108a86004803603602081101561089257600080fd5b81019080803590602001909291905050506126a2565b005b61090c600480360360408110156108c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612849565b6040518082815260200191505060405180910390f35b6109646004803603602081101561093857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612988565b604051808215151515815260200191505060405180910390f35b6109c06004803603602081101561099457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129a8565b005b610a04600480360360208110156109d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b7f565b005b610a4860048036036020811015610a1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c05565b005b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ae05780601f10610ab557610100808354040283529160200191610ae0565b820191906000526020600020905b815481529060010190602001808311610ac357829003601f168201915b505050505081565b610af0611e39565b610b62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613f216022913960400191505060405180910390fd5b600960159054906101000a900460ff1615610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eac6021913960400191505060405180910390fd5b6001600960156101000a81548160ff02191690831515021790555080600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e60405160405180910390a250565b6000600560009054906101000a900460ff1615610d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff1615610f2057600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aee92d333385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610e6757600080fd5b505af1158015610e7b573d6000803e3d6000fd5b505050506040513d6020811015610e9157600080fd5b8101908080519060200190929190505050905080610f17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b60019050610f2d565b610f2a8383612e10565b90505b92915050565b600960159054906101000a900460ff1681565b610f4e611e39565b610fc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061402a6022913960400191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc60405160405180910390a250565b6000600960159054906101000a900460ff16156111c257600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d60208110156111aa57600080fd5b810190808051906020019092919050505090506111cd565b6111ca612e27565b90505b90565b6000600560009054906101000a900460ff1615611255576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613fce602f913960400191505060405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613ffd602d913960400191505060405180910390fd5b600960159054906101000a900460ff161561157a57600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b477adb338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b1580156114c157600080fd5b505af11580156114d5573d6000803e3d6000fd5b505050506040513d60208110156114eb57600080fd5b8101908080519060200190929190505050905080611571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b60019050611588565b611585848484612e31565b90505b9392505050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900460ff1681565b6000600560009054906101000a900460ff161561164d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff16156117f857600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4584a733385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561173f57600080fd5b505af1158015611753573d6000803e3d6000fd5b505050506040513d602081101561176957600080fd5b81019080805190602001909291905050509050806117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b60019050611805565b6118028383612ee2565b90505b92915050565b6118143361196b565b611869576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613ef16030913960400191505060405180910390fd5b600560009054906101000a900460ff166118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000611981826000612f8790919063ffffffff16565b9050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560009054906101000a900460ff16905090565b6119fe33613065565b565b6000600960159054906101000a900460ff1615611af857600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ab657600080fd5b505afa158015611aca573d6000803e3d6000fd5b505050506040513d6020811015611ae057600080fd5b81019080805190602001909291905050509050611b04565b611b01826130bf565b90505b919050565b611b11611e39565b611b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611c4d3361196b565b611ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613ef16030913960400191505060405180910390fd5b611cab81613108565b50565b611cb73361196b565b611d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613ef16030913960400191505060405180910390fd5b600560009054906101000a900460ff1615611d8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f275780601f10611efc57610100808354040283529160200191611f27565b820191906000526020600020905b815481529060010190602001808311611f0a57829003601f168201915b505050505081565b6000600560009054906101000a900460ff1615611fb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff161561215f57600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aed6cc6e3385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b505050506040513d60208110156120d057600080fd5b8101908080519060200190929190505050905080612156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b6001905061216c565b6121698383613162565b90505b92915050565b6000600560009054906101000a900460ff16156121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561229a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613fce602f913960400191505060405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561233d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613ffd602d913960400191505060405180910390fd5b600960159054906101000a900460ff16156124e857600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e18980a3385856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561242f57600080fd5b505af1158015612443573d6000803e3d6000fd5b505050506040513d602081101561245957600080fd5b81019080805190602001909291905050509050806124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6661696c656420746f2063616c6c20757067726164656420636f6e747261637481525060200191505060405180910390fd5b600190506124f5565b6124f28383613207565b90505b92915050565b612503611e39565b612575576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560009054906101000a900460ff16156125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff161561265e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eac6021913960400191505060405180910390fd5b612668338261321e565b7fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a816040518082815260200191505060405180910390a150565b6126aa611e39565b61271c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560009054906101000a900460ff161561279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960159054906101000a900460ff1615612805576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eac6021913960400191505060405180910390fd5b61280f33826133db565b7f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a44816040518082815260200191505060405180910390a150565b6000600960159054906101000a900460ff161561297557600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561293357600080fd5b505afa158015612947573d6000803e3d6000fd5b505050506040513d602081101561295d57600080fd5b81019080805190602001909291905050509050612982565b61297f838361357b565b90505b92915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6129b0611e39565b612a22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ae1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5f636c6561726564557365722069736e277420696e20626c61636b206c69737481525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c60405160405180910390a250565b612b87611e39565b612bf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612c0281613602565b50565b612c0d611e39565b612c7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806140b66024913960400191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613ecd6024913960400191505060405180910390fd5b6000612db282611a00565b9050612dbe82826133db565b8173ffffffffffffffffffffffffffffffffffffffff167f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c6826040518082815260200191505060405180910390a25050565b6000612e1d338484613748565b6001905092915050565b6000600454905090565b6000612e3e84848461393f565b612ed78433612ed285600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdf90919063ffffffff16565b613748565b600190509392505050565b6000612f7d3384612f7885600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b613748565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561300e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613fac6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b613079816000613cf090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61311c816000613dad90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60006131fd33846131f885600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdf90919063ffffffff16565b613748565b6001905092915050565b600061321433848461393f565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6132d681600454613c6890919063ffffffff16565b60048190555061332e81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061404c6021913960400191505060405180910390fd5b61347681600454613bdf90919063ffffffff16565b6004819055506134ce81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdf90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613688576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f436026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806140926024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613854576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613f696022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156139c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061406d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613e896023913960400191505060405180910390fd5b613a9d81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdf90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600082821115613c57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015613ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b613cfa8282612f87565b613d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f8b6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b613db78282612f87565b15613e2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573737468697320636f6e747261637420686173206265656e20646570726563617465645f626c61636b4c6973746564557365722069736e277420696e20626c61636b206c697374506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c655f7570677261646564416464726573732069732061207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737363616e2774207472616e7366657220746f6b656e2066726f6d206164647265737320696e20626c61636b206c69737463616e2774207472616e7366657220746f6b656e20746f206164647265737320696e20626c61636b206c6973745f6576696c5573657220697320616c726561647920696e20626c61636b206c69737445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735f626c61636b4c69737465645573657220697320746865207a65726f2061646472657373a165627a7a723058201735f21b6456c2db09172339df5376af3b45874ac46fdbfd3ad080f7ef0381970029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000746a528800000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c4469676974616c2052616e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004445a415200000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _initialSupply (uint256): 500000000000
Arg [1] : _name (string): Digital Rand
Arg [2] : _symbol (string): DZAR
Arg [3] : _decimals (uint8): 6

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000746a528800
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [5] : 4469676974616c2052616e640000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 445a415200000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

22425:6200:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22425:6200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22492:18;;;:::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;22492:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26968:346;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26968:346:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;25000:414;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25000:414:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22609:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20570:234;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20570:234:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;27322:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23964:623;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23964:623:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22572:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22544:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25499:459;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25499:459:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6989:118;;;:::i;:::-;;4571:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4571:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20387:120;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20387:120:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6198:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4788:77;;;:::i;:::-;;24672:243;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24672:243:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8739:140;;;:::i;:::-;;4688:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4688:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6778:116;;;:::i;:::-;;7928:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8294:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22517:20;;;:::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;22517:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26043:474;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26043:474:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23292:587;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23292:587:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27718:211;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27718:211:0;;;;;;;;;;;;;;;;;:::i;:::-;;28160:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28160:213:0;;;;;;;;;;;;;;;;;:::i;:::-;;26602:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26602:300:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20515:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20515:46:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20812:249;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20812:249:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;9034:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9034:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;21069:439;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21069:439:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;22492:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26968:346::-;8140:9;:7;:9::i;:::-;8132:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27077:3;27049:32;;:16;:32;;;;27041:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27140:10;;;;;;;;;;;27139:11;27131:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27214:4;27201:10;;:17;;;;;;;;;;;;;;;;;;27247:16;27229:15;;:34;;;;;;;;;;;;;;;;;;27289:16;27279:27;;;;;;;;;;;;26968:346;:::o;25000:414::-;25081:12;6435:7;;;;;;;;;;;6434:8;6426:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25110:10;;;;;;;;;;;25106:301;;;25169:15;;;;;;;;;;;25147:54;;;25202:10;25214:8;25224:6;25147:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25147:84:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25147:84:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25147:84:0;;;;;;;;;;;;;;;;25137:94;;25254:7;25246:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25320:4;25313:11;;;;25106:301;25364:31;25378:8;25388:6;25364:13;:31::i;:::-;25357:38;;6474:1;25000:414;;;;:::o;22609:22::-;;;;;;;;;;;;;:::o;20570:234::-;8140:9;:7;:9::i;:::-;8132:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20648:13;:24;20662:9;20648:24;;;;;;;;;;;;;;;;;;;;;;;;;20647:25;20639:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20751:4;20724:13;:24;20738:9;20724:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20786:9;20771:25;;;;;;;;;;;;20570:234;:::o;27322:232::-;27366:7;27390:10;;;;;;;;;;;27386:161;;;27446:15;;;;;;;;;;;27424:50;;;:52;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27424:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27424:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27424:52:0;;;;;;;;;;;;;;;;27417:59;;;;27386:161;27516:19;:17;:19::i;:::-;27509:26;;27322:232;;:::o;23964:623::-;24060:12;6435:7;;;;;;;;;;;6434:8;6426:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24094:13;:20;24108:5;24094:20;;;;;;;;;;;;;;;;;;;;;;;;;24093:21;24085:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24186:13;:18;24200:3;24186:18;;;;;;;;;;;;;;;;;;;;;;;;;24185:19;24177:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24269:10;;;;;;;;;;;24265:315;;;24328:15;;;;;;;;;;;24306:59;;;24366:10;24378:5;24385:3;24390:6;24306:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24306:91:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24306:91:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24306:91:0;;;;;;;;;;;;;;;;24296:101;;24420:7;24412:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24486:4;24479:11;;;;24265:315;24530:38;24549:5;24556:3;24561:6;24530:18;:38::i;:::-;24523:45;;6474:1;23964:623;;;;;:::o;22572:30::-;;;;;;;;;;;;;:::o;22544:21::-;;;;;;;;;;;;;:::o;25499:459::-;25595:12;6435:7;;;;;;;;;;;6434:8;6426:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25624:10;;;;;;;;;;;25620:331;;;25683:15;;;;;;;;;;;25661:64;;;25726:10;25738:8;25748:11;25661:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25661:99:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25661:99:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25661:99:0;;;;;;;;;;;;;;;;25651:109;;25783:7;25775:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25849:4;25842:11;;;;25620:331;25893:46;25917:8;25927:11;25893:23;:46::i;:::-;25886:53;;6474:1;25499:459;;;;:::o;6989:118::-;4470:20;4479:10;4470:8;:20::i;:::-;4462:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6634:7;;;;;;;;;;;6626:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7058:5;7048:7;;:15;;;;;;;;;;;;;;;;;;7079:20;7088:10;7079:20;;;;;;;;;;;;;;;;;;;;;;6989:118::o;4571:109::-;4627:4;4651:21;4664:7;4651:8;:12;;:21;;;;:::i;:::-;4644:28;;4571:109;;;:::o;20387:120::-;20454:4;20478:13;:21;20492:6;20478:21;;;;;;;;;;;;;;;;;;;;;;;;;20471:28;;20387:120;;;:::o;6198:78::-;6237:4;6261:7;;;;;;;;;;;6254:14;;6198:78;:::o;4788:77::-;4832:25;4846:10;4832:13;:25::i;:::-;4788:77::o;24672:243::-;24725:7;24749:10;;;;;;;;;;;24745:163;;;24805:15;;;;;;;;;;;24783:48;;;24832:3;24783:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24783:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24783:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24783:53:0;;;;;;;;;;;;;;;;24776:60;;;;24745:163;24876:20;24892:3;24876:15;:20::i;:::-;24869:27;;24672:243;;;;:::o;8739:140::-;8140:9;:7;:9::i;:::-;8132:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8838:1;8801:40;;8822:6;;;;;;;;;;;8801:40;;;;;;;;;;;;8869:1;8852:6;;:19;;;;;;;;;;;;;;;;;;8739:140::o;4688:92::-;4470:20;4479:10;4470:8;:20::i;:::-;4462:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4753:19;4764:7;4753:10;:19::i;:::-;4688:92;:::o;6778:116::-;4470:20;4479:10;4470:8;:20::i;:::-;4462:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:7;;;;;;;;;;;6434:8;6426:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6848:4;6838:7;;:14;;;;;;;;;;;;;;;;;;6868:18;6875:10;6868:18;;;;;;;;;;;;;;;;;;;;;;6778:116::o;7928:79::-;7966:7;7993:6;;;;;;;;;;;7986:13;;7928:79;:::o;8294:92::-;8334:4;8372:6;;;;;;;;;;;8358:20;;:10;:20;;;8351:27;;8294:92;:::o;22517:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26043:474::-;26144:12;6435:7;;;;;;;;;;;6434:8;6426:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26173:10;;;;;;;;;;;26169:341;;;26232:15;;;;;;;;;;;26210:64;;;26275:10;26287:8;26297:16;26210:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26210:104:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26210:104:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26210:104:0;;;;;;;;;;;;;;;;26200:114;;26337:7;26329:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26403:4;26396:11;;;;26169:341;26447:51;26471:8;26481:16;26447:23;:51::i;:::-;26440:58;;6474:1;26043:474;;;;:::o;23292:587::-;23369:12;6435:7;;;;;;;;;;;6434:8;6426:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23403:13;:25;23417:10;23403:25;;;;;;;;;;;;;;;;;;;;;;;;;23402:26;23394:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23500:13;:18;23514:3;23500:18;;;;;;;;;;;;;;;;;;;;;;;;;23499:19;23491:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23583:10;;;;;;;;;;;23579:293;;;23642:15;;;;;;;;;;;23620:55;;;23676:10;23688:3;23693:6;23620:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23620:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23620:80:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23620:80:0;;;;;;;;;;;;;;;;23610:90;;23723:7;23715:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23789:4;23782:11;;;;23579:293;23833:27;23848:3;23853:6;23833:14;:27::i;:::-;23826:34;;6474:1;23292:587;;;;:::o;27718:211::-;8140:9;:7;:9::i;:::-;8132:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:7;;;;;;;;;;;6434:8;6426:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27800:10;;;;;;;;;;;27799:11;27791:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27861:31;27873:10;27885:6;27861:11;:31::i;:::-;27908:13;27914:6;27908:13;;;;;;;;;;;;;;;;;;27718:211;:::o;28160:213::-;8140:9;:7;:9::i;:::-;8132:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:7;;;;;;;;;;;6434:8;6426:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28243:10;;;;;;;;;;;28242:11;28234:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28304:31;28316:10;28328:6;28304:11;:31::i;:::-;28351:14;28358:6;28351:14;;;;;;;;;;;;;;;;;;28160:213;:::o;26602:300::-;26676:17;26710:10;;;;;;;;;;;26706:189;;;26766:15;;;;;;;;;;;26744:48;;;26793:6;26801:8;26744:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26744:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26744:66:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26744:66:0;;;;;;;;;;;;;;;;26737:73;;;;26706:189;26850:33;26866:6;26874:8;26850:15;:33::i;:::-;26843:40;;26602:300;;;;;:::o;20515:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;20812:249::-;8140:9;:7;:9::i;:::-;8132:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20895:13;:27;20909:12;20895:27;;;;;;;;;;;;;;;;;;;;;;;;;20887:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21002:5;20972:13;:27;20986:12;20972:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;21040:12;21023:30;;;;;;;;;;;;20812:249;:::o;9034:109::-;8140:9;:7;:9::i;:::-;8132:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9107:28;9126:8;9107:18;:28::i;:::-;9034:109;:::o;21069:439::-;8140:9;:7;:9::i;:::-;8132:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21186:3;21158:32;;:16;:32;;;;21150:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21250:13;:31;21264:16;21250:31;;;;;;;;;;;;;;;;;;;;;;;;;21242:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21335:18;21356:27;21366:16;21356:9;:27::i;:::-;21335:48;;21394:41;21406:16;21424:10;21394:11;:41::i;:::-;21471:16;21451:49;;;21489:10;21451:49;;;;;;;;;;;;;;;;;;8197:1;21069:439;:::o;14713:148::-;14778:4;14795:36;14804:10;14816:7;14825:5;14795:8;:36::i;:::-;14849:4;14842:11;;14713:148;;;;:::o;13736:91::-;13780:7;13807:12;;13800:19;;13736:91;:::o;15332:256::-;15421:4;15438:36;15448:6;15456:9;15467:6;15438:9;:36::i;:::-;15485:73;15494:6;15502:10;15514:43;15550:6;15514:11;:19;15526:6;15514:19;;;;;;;;;;;;;;;:31;15534:10;15514:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;15485:8;:73::i;:::-;15576:4;15569:11;;15332:256;;;;;:::o;15997:206::-;16077:4;16094:79;16103:10;16115:7;16124:48;16161:10;16124:11;:23;16136:10;16124:23;;;;;;;;;;;;;;;:32;16148:7;16124:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;16094:8;:79::i;:::-;16191:4;16184:11;;15997:206;;;;:::o;3946:203::-;4018:4;4062:1;4043:21;;:7;:21;;;;4035:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4121:4;:11;;:20;4133:7;4121:20;;;;;;;;;;;;;;;;;;;;;;;;;4114:27;;3946:203;;;;:::o;5003:130::-;5063:24;5079:7;5063:8;:15;;:24;;;;:::i;:::-;5117:7;5103:22;;;;;;;;;;;;5003:130;:::o;13890:110::-;13947:7;13974:9;:18;13984:7;13974:18;;;;;;;;;;;;;;;;13967:25;;13890:110;;;:::o;4873:122::-;4930:21;4943:7;4930:8;:12;;:21;;;;:::i;:::-;4979:7;4967:20;;;;;;;;;;;;4873:122;:::o;16706:216::-;16791:4;16808:84;16817:10;16829:7;16838:53;16875:15;16838:11;:23;16850:10;16838:23;;;;;;;;;;;;;;;:32;16862:7;16838:32;;;;;;;;;;;;;;;;:36;;:53;;;;:::i;:::-;16808:8;:84::i;:::-;16910:4;16903:11;;16706:216;;;;:::o;14213:156::-;14282:4;14299:40;14309:10;14321:9;14332:6;14299:9;:40::i;:::-;14357:4;14350:11;;14213:156;;;;:::o;18122:308::-;18217:1;18198:21;;:7;:21;;;;18190:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18283:24;18300:6;18283:12;;:16;;:24;;;;:::i;:::-;18268:12;:39;;;;18339:30;18362:6;18339:9;:18;18349:7;18339:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;18318:9;:18;18328:7;18318:18;;;;;;;;;;;;;;;:51;;;;18406:7;18385:37;;18402:1;18385:37;;;18415:6;18385:37;;;;;;;;;;;;;;;;;;18122:308;;:::o;18751:306::-;18845:1;18826:21;;:7;:21;;;;18818:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18913:23;18930:5;18913:12;;:16;;:23;;;;:::i;:::-;18898:12;:38;;;;18968:29;18991:5;18968:9;:18;18978:7;18968:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;18947:9;:18;18957:7;18947:18;;;;;;;;;;;;;;;:50;;;;19039:1;19013:36;;19022:7;19013:36;;;19043:5;19013:36;;;;;;;;;;;;;;;;;;18751:306;;:::o;14432:134::-;14504:7;14531:11;:18;14543:5;14531:18;;;;;;;;;;;;;;;:27;14550:7;14531:27;;;;;;;;;;;;;;;;14524:34;;14432:134;;;;:::o;9249:229::-;9343:1;9323:22;;:8;:22;;;;9315:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9433:8;9404:38;;9425:6;;;;;;;;;;;9404:38;;;;;;;;;;;;9462:8;9453:6;;:17;;;;;;;;;;;;;;;;;;9249:229;:::o;19497:335::-;19607:1;19590:19;;:5;:19;;;;19582:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19688:1;19669:21;;:7;:21;;;;19661:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19772:5;19742:11;:18;19754:5;19742:18;;;;;;;;;;;;;;;:27;19761:7;19742:27;;;;;;;;;;;;;;;:35;;;;19809:7;19793:31;;19802:5;19793:31;;;19818:5;19793:31;;;;;;;;;;;;;;;;;;19497:335;;;:::o;17412:429::-;17528:1;17510:20;;:6;:20;;;;17502:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17612:1;17591:23;;:9;:23;;;;17583:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17687:29;17709:6;17687:9;:17;17697:6;17687:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;17667:9;:17;17677:6;17667:17;;;;;;;;;;;;;;;:49;;;;17750:32;17775:6;17750:9;:20;17760:9;17750:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17727:9;:20;17737:9;17727:20;;;;;;;;;;;;;;;:55;;;;17815:9;17798:35;;17807:6;17798:35;;;17826:6;17798:35;;;;;;;;;;;;;;;;;;17412:429;;;:::o;841:184::-;899:7;932:1;927;:6;;919:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;979:9;995:1;991;:5;979:17;;1016:1;1009:8;;;841:184;;;;:::o;385:181::-;443:7;463:9;479:1;475;:5;463:17;;504:1;499;:6;;491:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;557:1;550:8;;;385:181;;;;:::o;3668:183::-;3748:18;3752:4;3758:7;3748:3;:18::i;:::-;3740:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3838:5;3815:4;:11;;:20;3827:7;3815:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3668:183;;:::o;3410:178::-;3488:18;3492:4;3498:7;3488:3;:18::i;:::-;3487:19;3479:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3576:4;3553;:11;;:20;3565:7;3553:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3410:178;;:::o

Swarm Source

bzzr://1735f21b6456c2db09172339df5376af3b45874ac46fdbfd3ad080f7ef038197
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.