ETH Price: $2,269.20 (+2.73%)

Token

Cross-Chain BTC (ccBTC)
 

Overview

Max Total Supply

1.09414384 ccBTC

Holders

35 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0.0016 ccBTC

Value
$0.00
0x8fcf6d14d80a249436d1526ba8d000c35b74a80f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Cross-Chain Tokens (ccTokens) are the ERC20 tokens backed 1:1 with native assets like BTC. All ccTokens’ reserves are safeguarded by qualified third-party custodians. Meanwhile, a multi-signature mechanism is adopted for its crucial aspects: mining, burning and allowing on-the-chain verification.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ccBTC

Compiler Version
v0.7.3+commit.9bfce1f6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 3 of 14: ccBTC.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental SMTChecker;

import "ccToken.sol";

/// @title ccBTC
contract ccBTC is ccToken {
    constructor() ccToken("Cross-Chain BTC", "ccBTC", 8, (ERC20ControllerViewIf)(0)){}
}

File 1 of 14: BurnableToken.sol
pragma solidity ^0.7.0;
pragma experimental SMTChecker;

//SPDX-License-Identifier: MIT

import "ERC20Basic.sol";

/// @title BurnableToken
contract BurnableToken is ERC20Basic {
    using SafeMath for uint256;

    event Burn(address indexed burner, uint256 value);

    function burn(uint256 _value) public returns (bool){
        address _who = msg.sender;
        require(_value <= balances[_who]);

        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(_who, _value);
        emit Transfer(_who, address(0), _value);

        return true;
    }
}

File 2 of 14: CanReclaimToken.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental SMTChecker;


import "ERC20If.sol";
import "OwnableIf.sol";

/// @title CanReclaimToken
abstract contract CanReclaimToken is OwnableIf {

    function reclaimToken(ERC20If _token) external onlyOwner {
        uint256 balance = _token.balanceOf((address)(this));
        require(_token.transfer(_owner(), balance));
    }

}


File 4 of 14: ccToken.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental SMTChecker;


import "ccTokenControllerIf.sol";
import "NamedERC20.sol";
import "MintableERC20.sol";
import "BurnableToken.sol";
import "Claimable.sol";
import "CanReclaimToken.sol";

/// @title ccToken
contract ccToken is NamedERC20, Claimable, MintableERC20, BurnableToken, CanReclaimToken {
    using SafeMath for uint256;

    ERC20ControllerViewIf public erc20Controller;
    constructor(string memory _name,
        string memory _symbol,
        uint8 _decimals,
        ERC20ControllerViewIf _erc20Controller
    ) NamedERC20(_name, _symbol, _decimals){
        erc20Controller = _erc20Controller;
    }

    function hasController() view public returns (bool){
        return (address)(erc20Controller) != (address)(0);
    }

    function _notPaused() override internal view returns (bool){
        if (hasController()) {
            return !erc20Controller.paused();
        }
        return true;
    }

    function _notBlocked(address _who) override internal view returns (bool){
        if (hasController()) {
            return !erc20Controller.blocked(_who);
        }
        return true;
    }

    function setController(ERC20ControllerViewIf newController) public onlyOwner {
        erc20Controller = newController;
    }

    event BurnBlocked(address indexed burner, uint256 value);

    function burnBlocked(address addrBlocked, uint256 amount) public onlyOwner returns (bool){
        address _who = addrBlocked;
        require(!_notBlocked(_who), "addr not blocked");

        uint256 _value = amount;
        if (_value > balances[_who]) {
            _value = balances[_who];
        }

        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit BurnBlocked(_who, _value);
        emit Transfer(_who, address(0), _value);

        return true;
    }

}

File 5 of 14: ccTokenControllerIf.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental SMTChecker;


import "MemberMgrIf.sol";
import "ERC20If.sol";
/// @title ERC20ControllerViewIf
abstract contract ERC20ControllerViewIf {
    function blocked(address _who) virtual public view returns (bool);

    function paused() virtual public view returns (bool);
}

/// @title ccTokenControllerIf
abstract contract ccTokenControllerIf is MemberMgrIf, ERC20ControllerViewIf {
    function mint(address to, uint amount) virtual external returns (bool);

    function burn(uint value) virtual external returns (bool);

    function getToken() virtual external returns (ERC20If);
}

File 6 of 14: Claimable.sol
//SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;
pragma experimental SMTChecker;


import "Ownable.sol";

// File: openzeppelin-solidity/contracts/ownership/Claimable.sol

/**
 * @title Claimable
 * @dev Extension for the Ownable contract, where the ownership needs to be claimed.
 * This allows the new owner to accept the transfer.
 */
contract Claimable is Ownable {
    address public pendingOwner;

    /**
     * @dev Modifier throws if called by any account other than the pendingOwner.
     */
    modifier onlyPendingOwner() {
        require(msg.sender == pendingOwner, "no permission");
        _;
    }

    /**
     * @dev Allows the current owner to set the pendingOwner address.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) override public onlyOwner {
        pendingOwner = newOwner;
    }

    /**
     * @dev Allows the pendingOwner address to finalize the transfer.
     */
    function claimOwnership() public onlyPendingOwner {
        emit OwnershipTransferred(owner, pendingOwner);
        owner = pendingOwner;
        pendingOwner = address(0);
    }
}


File 7 of 14: ERC20Basic.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental SMTChecker;


import "ERC20If.sol";
import "SafeMathLib.sol";

/// @title ERC20Basic
contract ERC20Basic is ERC20If {
    using SafeMath for uint256;

    mapping(address => uint256) internal balances;

    mapping(address => mapping(address => uint256)) internal allowed;

    uint256 internal totalSupply_;

    function _notPaused() virtual internal view returns (bool){return false;}

    function _notBlocked(address) virtual internal view returns (bool){return false;}

    modifier notPaused() {
        require(_notPaused(), "contract has been paused");
        _;
    }

    modifier notBlocked() {
        require(_notBlocked(msg.sender), "sender has been blocked");
        _;
    }

    function totalSupply() override public view returns (uint256) {
        return totalSupply_;
    }

    function transfer(address _to, uint256 _value) override public notPaused notBlocked returns (bool) {
        require(_notBlocked(_to), "to-address has been blocked");
        require(_value <= balances[msg.sender], "insufficient balance");
        require(_to != address(0), "invalid to-address");

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function balanceOf(address _owner) override public view returns (uint256) {
        return balances[_owner];
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
    override public notPaused notBlocked
    returns (bool)
    {
        require(_notBlocked(_from), "from-address has been blocked");
        require(_notBlocked(_to), "to-address has been blocked");
        require(_value <= balances[_from], "insufficient balance");
        require(_to != address(0), "invalid to-address");
        if (_from == msg.sender){
            balances[_from] = balances[_from].sub(_value);
            balances[_to] = balances[_to].add(_value);
            return true;
        }

        require(_value <= allowed[_from][msg.sender], "value > allowed");


        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value)
    override public notPaused notBlocked
    returns (bool) {
        require(_notBlocked(_spender), "spender-address has been blocked");
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function increaseApproval(
        address _spender,
        uint256 _addedValue
    )
    public notPaused notBlocked
    returns (bool)
    {
        require(_notBlocked(_spender), "spender-address has been blocked");
        allowed[msg.sender][_spender] = (
        allowed[msg.sender][_spender].add(_addedValue));
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval(
        address _spender,
        uint _subtractedValue
    )
    public
    notPaused notBlocked
    returns (bool success)
    {
        require(_notBlocked(_spender), "spender-address has been blocked");

        uint256 oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue >= oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function allowance(
        address _owner,
        address _spender
    )
    override
    public
    view
    returns (uint256)
    {
        return allowed[_owner][_spender];
    }
}

File 8 of 14: ERC20If.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental SMTChecker;

/// @title ERC20If
abstract contract ERC20If {
    function totalSupply() virtual public view returns (uint256);

    function balanceOf(address _who) virtual public view returns (uint256);

    function transfer(address _to, uint256 _value) virtual public returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    function allowance(address _owner, address _spender) virtual public view returns (uint256);

    function transferFrom(address _from, address _to, uint256 _value) virtual public returns (bool);

    function approve(address _spender, uint256 _value) virtual public returns (bool);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}


File 9 of 14: MemberMgrIf.sol
pragma solidity ^0.7.0;
pragma experimental SMTChecker;

//SPDX-License-Identifier: MIT
/// @title MemberMgrIf
abstract contract MemberMgrIf {
    function requireMerchant(address _who) virtual public view;

    function requireCustodian(address _who) virtual public view;
}

File 10 of 14: MintableERC20.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental SMTChecker;


import "ERC20Basic.sol";
import "OwnableIf.sol";

/// @title MintableERC20
abstract contract MintableERC20 is ERC20Basic, OwnableIf {
    using SafeMath for uint256;

    event Mint(address indexed to, uint256 amount);
    event MintFinished(bool indexed finished);

    bool public mintingFinished = false;

    modifier canMint() {
        require(!mintingFinished, "can't mint");
        _;
    }

    modifier hasMintPermission() {
        require(msg.sender == _owner(), "no permission...");
        _;
    }

    /**
     * @dev Function to mint tokens
     * @param _to The address that will receive the minted tokens.
     * @param _amount The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(
        address _to,
        uint256 _amount
    )
    public
    hasMintPermission
    canMint
    notPaused
    returns (bool)
    {
        require(_notBlocked(_to), "to-address has been blocked");
        totalSupply_ = totalSupply_.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        emit Mint(_to, _amount);
        emit Transfer(address(0), _to, _amount);
        return true;
    }

    /**
     * @dev Function to stop minting new tokens.
     * @return True if the operation was successful.
     */
    function finishMinting(bool finished)
    public
    onlyOwner
    returns (bool) {
        mintingFinished = finished;
        emit MintFinished(mintingFinished);
        return true;
    }
}

File 11 of 14: NamedERC20.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental SMTChecker;

/// @title NamedERC20
contract NamedERC20 {
    string public name;
    string public symbol;
    uint8 public decimals;

    constructor(string memory _name, string memory _symbol, uint8 _decimals) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
    }
}

File 12 of 14: Ownable.sol
//SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;
pragma experimental SMTChecker;


import "OwnableIf.sol";

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable is OwnableIf {
    address public owner;

    function _owner() view override public returns (address){
        return owner;
    }

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


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() {
        owner = msg.sender;
    }

    //    /**
    //     * @dev Throws if called by any account other than the owner.
    //     */
    //    modifier onlyOwner() {
    //        require(msg.sender == owner);
    //        _;
    //    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * @notice Renouncing to ownership will leave the contract without an owner.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     */
    //   function renounceOwnership() public onlyOwner {
    //     emit OwnershipRenounced(owner);
    //     owner = address(0);
    //   }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param _newOwner The address to transfer ownership to.
     */
    function transferOwnership(address _newOwner) virtual public onlyOwner {
        _transferOwnership(_newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param _newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address _newOwner) internal {
        require(_newOwner != address(0), "invalid _newOwner");
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}



File 13 of 14: OwnableIf.sol
//SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;
pragma experimental SMTChecker;

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
abstract contract OwnableIf {

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == _owner(), "not owner......");
        _;
    }

    function _owner() view virtual public returns (address);
}

File 14 of 14: SafeMathLib.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;
pragma experimental SMTChecker;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"BurnBlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"finished","type":"bool"}],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addrBlocked","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20Controller","outputs":[{"internalType":"contract ERC20ControllerViewIf","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"finished","type":"bool"}],"name":"finishMinting","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hasController","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20If","name":"_token","type":"address"}],"name":"reclaimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20ControllerViewIf","name":"newController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600760146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600f81526020017f43726f73732d436861696e2042544300000000000000000000000000000000008152506040518060400160405280600581526020017f6363425443000000000000000000000000000000000000000000000000000000815250600860008383838260009080519060200190620000b89291906200017c565b508160019080519060200190620000d19291906200017c565b5080600260006101000a81548160ff021916908360ff16021790555050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000222565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001bf57805160ff1916838001178555620001f0565b82800160010185558215620001f0579182015b82811115620001ef578251825591602001919060010190620001d2565b5b509050620001ff919062000203565b5090565b5b808211156200021e57600081600090555060010162000204565b5090565b61356680620002326000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063b2bdfa7b11610097578063dd62ed3e11610071578063dd62ed3e14610785578063e30c3978146107fd578063ec0cf3dc14610831578063f2fde38b1461089557610173565b8063b2bdfa7b146106cd578063d73dd62314610701578063db084bd71461076557610173565b806370a08231146104d05780638da5cb5b1461052857806392eefe9b1461055c57806395d89b41146105a05780639af26b7814610623578063a9059cbb1461066957610173565b8063313ce56711610130578063313ce56714610365578063378574e51461038657806340c10f19146103ba57806342966c681461041e5780634e71e0c814610462578063661884631461046c57610173565b806305d2035b1461017857806306fdde0314610198578063095ea7b31461021b57806317ffc3201461027f57806318160ddd146102c357806323b872dd146102e1575b600080fd5b6101806108d9565b60405180821515815260200191505060405180910390f35b6101a06108ec565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e05780820151818401526020810190506101c5565b50505050905090810190601f16801561020d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102676004803603604081101561023157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061098a565b60405180821515815260200191505060405180910390f35b6102c16004803603602081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bec565b005b6102cb610dfa565b6040518082815260200191505060405180910390f35b61034d600480360360608110156102f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e04565b60405180821515815260200191505060405180910390f35b61036d61164c565b604051808260ff16815260200191505060405180910390f35b61038e61165f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610406600480360360408110156103d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611685565b60405180821515815260200191505060405180910390f35b61044a6004803603602081101561043457600080fd5b8101908080359060200190929190505050611a15565b60405180821515815260200191505060405180910390f35b61046a611bd5565b005b6104b86004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ddd565b60405180821515815260200191505060405180910390f35b610512600480360360208110156104e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121de565b6040518082815260200191505060405180910390f35b610530612227565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61059e6004803603602081101561057257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061224d565b005b6105a8612339565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e85780820151818401526020810190506105cd565b50505050905090810190601f1680156106155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106516004803603602081101561063957600080fd5b810190808035151590602001909291905050506123d7565b60405180821515815260200191505060405180910390f35b6106b56004803603604081101561067f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124e2565b60405180821515815260200191505060405180910390f35b6106d5612945565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61074d6004803603604081101561071757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061296f565b60405180821515815260200191505060405180910390f35b61076d612cdb565b60405180821515815260200191505060405180910390f35b6107e76004803603604081101561079b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d34565b6040518082815260200191505060405180910390f35b610805612dbb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61087d6004803603604081101561084757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612de1565b60405180821515815260200191505060405180910390f35b6108d7600480360360208110156108ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061310b565b005b600760149054906101000a900460ff1681565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109825780601f1061095757610100808354040283529160200191610982565b820191906000526020600020905b81548152906001019060200180831161096557829003601f168201915b505050505081565b60006109946131f7565b610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b610a0f336132b9565b610a81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b610a8a836132b9565b610afc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f7370656e6465722d6164647265737320686173206265656e20626c6f636b656481525060200191505060405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b610bf4612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610cfd57600080fd5b505afa158015610d11573d6000803e3d6000fd5b505050506040513d6020811015610d2757600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610d5e612945565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b505050506040513d6020811015610ddc57600080fd5b8101908080519060200190929190505050610df657600080fd5b5050565b6000600554905090565b6000610e0e6131f7565b610e80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b610e89336132b9565b610efb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b610f04846132b9565b610f76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f66726f6d2d6164647265737320686173206265656e20626c6f636b656400000081525060200191505060405180910390fd5b610f7f836132b9565b610ff1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f746f2d6164647265737320686173206265656e20626c6f636b6564000000000081525060200191505060405180910390fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e73756666696369656e742062616c616e636500000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c696420746f2d61646472657373000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112b0576111cf82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061126482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050611645565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f76616c7565203e20616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6113f482600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061148982600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061155b82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061168f612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6e6f207065726d697373696f6e2e2e2e0000000000000000000000000000000081525060200191505060405180910390fd5b600760149054906101000a900460ff16156117b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f63616e2774206d696e740000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6117ba6131f7565b61182c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b611835836132b9565b6118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f746f2d6164647265737320686173206265656e20626c6f636b6564000000000081525060200191505060405180910390fd5b6118bc826005546133e890919063ffffffff16565b60058190555061191482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080339050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115611a6757600080fd5b611ab983600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b118360055461339e90919063ffffffff16565b6005819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a36001915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6e6f207065726d697373696f6e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611de76131f7565b611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b611e62336132b9565b611ed4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b611edd836132b9565b611f4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f7370656e6465722d6164647265737320686173206265656e20626c6f636b656481525060200191505060405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831061205e576000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120f2565b612071838261339e90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612255612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123cf5780601f106123a4576101008083540402835291602001916123cf565b820191906000526020600020905b8154815290600101906020018083116123b257829003601f168201915b505050505081565b60006123e1612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b81600760146101000a81548160ff021916908315150217905550600760149054906101000a900460ff1615157ffc061c4ab31aa523af95591b59ea9fdc28779e0f9bba6b997320fdd0f7653c2760405160405180910390a260019050919050565b60006124ec6131f7565b61255e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b612567336132b9565b6125d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b6125e2836132b9565b612654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f746f2d6164647265737320686173206265656e20626c6f636b6564000000000081525060200191505060405180910390fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115612709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e73756666696369656e742062616c616e636500000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c696420746f2d61646472657373000000000000000000000000000081525060200191505060405180910390fd5b6127fe82600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061289382600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006129796131f7565b6129eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b6129f4336132b9565b612a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b612a6f836132b9565b612ae1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f7370656e6465722d6164647265737320686173206265656e20626c6f636b656481525060200191505060405180910390fd5b612b7082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612deb612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b6000839050612e99816132b9565b15612f0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f61646472206e6f7420626c6f636b65640000000000000000000000000000000081525060200191505060405180910390fd5b6000839050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115612f9b57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b612fed81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130458160055461339e90919063ffffffff16565b6005819055508173ffffffffffffffffffffffffffffffffffffffff167feff07194896bfa6254e521809f217f70dbdd9cefa6b894f5326af3ce8402c320826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019250505092915050565b613113612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146131b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000613201612cdb565b156132b157600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561326e57600080fd5b505afa158015613282573d6000803e3d6000fd5b505050506040513d602081101561329857600080fd5b81019080805190602001909291905050501590506132b6565b600190505b90565b60006132c3612cdb565b1561339457600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5962195836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561335157600080fd5b505afa158015613365573d6000803e3d6000fd5b505050506040513d602081101561337b57600080fd5b8101908080519060200190929190505050159050613399565b600190505b919050565b60006133e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613470565b905092915050565b600080828401905083811015613466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600083831115829061351d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134e25780820151818401526020810190506134c7565b50505050905090810190601f16801561350f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fea264697066735822122022f86cc7a20c1c1e0456c10b0b02ca83c6e3b4e26886f4b9bd7b8a4f4a97407664736f6c63430007030033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063b2bdfa7b11610097578063dd62ed3e11610071578063dd62ed3e14610785578063e30c3978146107fd578063ec0cf3dc14610831578063f2fde38b1461089557610173565b8063b2bdfa7b146106cd578063d73dd62314610701578063db084bd71461076557610173565b806370a08231146104d05780638da5cb5b1461052857806392eefe9b1461055c57806395d89b41146105a05780639af26b7814610623578063a9059cbb1461066957610173565b8063313ce56711610130578063313ce56714610365578063378574e51461038657806340c10f19146103ba57806342966c681461041e5780634e71e0c814610462578063661884631461046c57610173565b806305d2035b1461017857806306fdde0314610198578063095ea7b31461021b57806317ffc3201461027f57806318160ddd146102c357806323b872dd146102e1575b600080fd5b6101806108d9565b60405180821515815260200191505060405180910390f35b6101a06108ec565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e05780820151818401526020810190506101c5565b50505050905090810190601f16801561020d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102676004803603604081101561023157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061098a565b60405180821515815260200191505060405180910390f35b6102c16004803603602081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bec565b005b6102cb610dfa565b6040518082815260200191505060405180910390f35b61034d600480360360608110156102f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e04565b60405180821515815260200191505060405180910390f35b61036d61164c565b604051808260ff16815260200191505060405180910390f35b61038e61165f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610406600480360360408110156103d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611685565b60405180821515815260200191505060405180910390f35b61044a6004803603602081101561043457600080fd5b8101908080359060200190929190505050611a15565b60405180821515815260200191505060405180910390f35b61046a611bd5565b005b6104b86004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ddd565b60405180821515815260200191505060405180910390f35b610512600480360360208110156104e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121de565b6040518082815260200191505060405180910390f35b610530612227565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61059e6004803603602081101561057257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061224d565b005b6105a8612339565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e85780820151818401526020810190506105cd565b50505050905090810190601f1680156106155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106516004803603602081101561063957600080fd5b810190808035151590602001909291905050506123d7565b60405180821515815260200191505060405180910390f35b6106b56004803603604081101561067f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124e2565b60405180821515815260200191505060405180910390f35b6106d5612945565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61074d6004803603604081101561071757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061296f565b60405180821515815260200191505060405180910390f35b61076d612cdb565b60405180821515815260200191505060405180910390f35b6107e76004803603604081101561079b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d34565b6040518082815260200191505060405180910390f35b610805612dbb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61087d6004803603604081101561084757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612de1565b60405180821515815260200191505060405180910390f35b6108d7600480360360208110156108ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061310b565b005b600760149054906101000a900460ff1681565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109825780601f1061095757610100808354040283529160200191610982565b820191906000526020600020905b81548152906001019060200180831161096557829003601f168201915b505050505081565b60006109946131f7565b610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b610a0f336132b9565b610a81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b610a8a836132b9565b610afc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f7370656e6465722d6164647265737320686173206265656e20626c6f636b656481525060200191505060405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b610bf4612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610cfd57600080fd5b505afa158015610d11573d6000803e3d6000fd5b505050506040513d6020811015610d2757600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610d5e612945565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b505050506040513d6020811015610ddc57600080fd5b8101908080519060200190929190505050610df657600080fd5b5050565b6000600554905090565b6000610e0e6131f7565b610e80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b610e89336132b9565b610efb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b610f04846132b9565b610f76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f66726f6d2d6164647265737320686173206265656e20626c6f636b656400000081525060200191505060405180910390fd5b610f7f836132b9565b610ff1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f746f2d6164647265737320686173206265656e20626c6f636b6564000000000081525060200191505060405180910390fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e73756666696369656e742062616c616e636500000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c696420746f2d61646472657373000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112b0576111cf82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061126482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050611645565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f76616c7565203e20616c6c6f776564000000000000000000000000000000000081525060200191505060405180910390fd5b6113f482600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061148982600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061155b82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061168f612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6e6f207065726d697373696f6e2e2e2e0000000000000000000000000000000081525060200191505060405180910390fd5b600760149054906101000a900460ff16156117b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f63616e2774206d696e740000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6117ba6131f7565b61182c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b611835836132b9565b6118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f746f2d6164647265737320686173206265656e20626c6f636b6564000000000081525060200191505060405180910390fd5b6118bc826005546133e890919063ffffffff16565b60058190555061191482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080339050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115611a6757600080fd5b611ab983600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b118360055461339e90919063ffffffff16565b6005819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a36001915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6e6f207065726d697373696f6e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611de76131f7565b611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b611e62336132b9565b611ed4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b611edd836132b9565b611f4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f7370656e6465722d6164647265737320686173206265656e20626c6f636b656481525060200191505060405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831061205e576000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120f2565b612071838261339e90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612255612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123cf5780601f106123a4576101008083540402835291602001916123cf565b820191906000526020600020905b8154815290600101906020018083116123b257829003601f168201915b505050505081565b60006123e1612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b81600760146101000a81548160ff021916908315150217905550600760149054906101000a900460ff1615157ffc061c4ab31aa523af95591b59ea9fdc28779e0f9bba6b997320fdd0f7653c2760405160405180910390a260019050919050565b60006124ec6131f7565b61255e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b612567336132b9565b6125d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b6125e2836132b9565b612654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f746f2d6164647265737320686173206265656e20626c6f636b6564000000000081525060200191505060405180910390fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115612709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e73756666696369656e742062616c616e636500000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c696420746f2d61646472657373000000000000000000000000000081525060200191505060405180910390fd5b6127fe82600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061289382600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006129796131f7565b6129eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f636f6e747261637420686173206265656e20706175736564000000000000000081525060200191505060405180910390fd5b6129f4336132b9565b612a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f73656e64657220686173206265656e20626c6f636b656400000000000000000081525060200191505060405180910390fd5b612a6f836132b9565b612ae1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f7370656e6465722d6164647265737320686173206265656e20626c6f636b656481525060200191505060405180910390fd5b612b7082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612deb612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b6000839050612e99816132b9565b15612f0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f61646472206e6f7420626c6f636b65640000000000000000000000000000000081525060200191505060405180910390fd5b6000839050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115612f9b57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b612fed81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339e90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130458160055461339e90919063ffffffff16565b6005819055508173ffffffffffffffffffffffffffffffffffffffff167feff07194896bfa6254e521809f217f70dbdd9cefa6b894f5326af3ce8402c320826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019250505092915050565b613113612945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146131b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6e6f74206f776e65722e2e2e2e2e2e000000000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000613201612cdb565b156132b157600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561326e57600080fd5b505afa158015613282573d6000803e3d6000fd5b505050506040513d602081101561329857600080fd5b81019080805190602001909291905050501590506132b6565b600190505b90565b60006132c3612cdb565b1561339457600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5962195836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561335157600080fd5b505afa158015613365573d6000803e3d6000fd5b505050506040513d602081101561337b57600080fd5b8101908080519060200190929190505050159050613399565b600190505b919050565b60006133e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613470565b905092915050565b600080828401905083811015613466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600083831115829061351d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134e25780820151818401526020810190506134c7565b50505050905090810190601f16801561350f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fea264697066735822122022f86cc7a20c1c1e0456c10b0b02ca83c6e3b4e26886f4b9bd7b8a4f4a97407664736f6c63430007030033

Deployed Bytecode Sourcemap

128:116:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;360:35:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;136:18:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:316:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;217:178:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;774:98:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1493:936;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;186:21:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;406:44:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;852:426:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;272:343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;977:178:2;;;:::i;:::-;;3184:589:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1373:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;405:20:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1193:125:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;160:20:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1402:190:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;878:489:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;432:85:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2757:421:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;692:117:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3779:183:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;381:27:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1387:523:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;774:111:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;360:35:6;;;;;;;;;;;;;:::o;136:18:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2435:316:3:-;2540:4;594:12;:10;:12::i;:::-;586:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;699:23:::1;711:10;699:11;:23::i;:::-;691:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;2564:21:::2;2576:8;2564:11;:21::i;:::-;2556:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;2664:6;2632:7;:19;2640:10;2632:19;;;;;;;;;;;;;;;:29;2652:8;2632:29;;;;;;;;;;;;;;;:38;;;;2706:8;2685:38;;2694:10;2685:38;;;2716:6;2685:38;;;;;;;;;;;;;;;;;;2740:4;2733:11;;2435:316:::0;;;;:::o;217:178:1:-;513:8:9;:6;:8::i;:::-;499:22;;:10;:22;;;491:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;284:15:1::1;302:6;:16;;;329:4;302:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;284:51;;353:6;:15;;;369:8;:6;:8::i;:::-;379:7;353:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;345:43;;;::::0;::::1;;551:1:9;217:178:1::0;:::o;774:98:3:-;827:7;853:12;;846:19;;774:98;:::o;1493:936::-;1643:4;594:12;:10;:12::i;:::-;586:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;699:23:::1;711:10;699:11;:23::i;:::-;691:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;1671:18:::2;1683:5;1671:11;:18::i;:::-;1663:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1741:16;1753:3;1741:11;:16::i;:::-;1733:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1817:8;:15;1826:5;1817:15;;;;;;;;;;;;;;;;1807:6;:25;;1799:58;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1890:1;1875:17;;:3;:17;;;;1867:48;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1938:10;1929:19;;:5;:19;;;1925:174;;;1981:27;2001:6;1981:8;:15;1990:5;1981:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;1963:8;:15;1972:5;1963:15;;;;;;;;;;;;;;;:45;;;;2038:25;2056:6;2038:8;:13;2047:3;2038:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;2022:8;:13;2031:3;2022:13;;;;;;;;;;;;;;;:41;;;;2084:4;2077:11;;;;1925:174;2127:7;:14;2135:5;2127:14;;;;;;;;;;;;;;;:26;2142:10;2127:26;;;;;;;;;;;;;;;;2117:6;:36;;2109:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;2203:27;2223:6;2203:8;:15;2212:5;2203:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;2185:8;:15;2194:5;2185:15;;;;;;;;;;;;;;;:45;;;;2256:25;2274:6;2256:8;:13;2265:3;2256:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;2240:8;:13;2249:3;2240:13;;;;;;;;;;;;;;;:41;;;;2320:38;2351:6;2320:7;:14;2328:5;2320:14;;;;;;;;;;;;;;;:26;2335:10;2320:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;2291:7;:14;2299:5;2291:14;;;;;;;;;;;;;;;:26;2306:10;2291:26;;;;;;;;;;;;;;;:67;;;;2389:3;2373:28;;2382:5;2373:28;;;2394:6;2373:28;;;;;;;;;;;;;;;;;;2418:4;2411:11;;760:1;1493:936:::0;;;;;:::o;186:21:7:-;;;;;;;;;;;;;:::o;406:44:12:-;;;;;;;;;;;;;:::o;852:426:6:-;990:4;555:8;:6;:8::i;:::-;541:22;;:10;:22;;;533:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;440:15:::1;;;;;;;;;;;439:16;431:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;594:12:3::2;:10;:12::i;:::-;586:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1018:16:6::3;1030:3;1018:11;:16::i;:::-;1010:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;1091:25;1108:7;1091:12;;:16;;:25;;;;:::i;:::-;1076:12;:40;;;;1142:26;1160:7;1142:8;:13;1151:3;1142:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;1126:8;:13;1135:3;1126:13;;;;;;;;;;;;;;;:42;;;;1188:3;1183:18;;;1193:7;1183:18;;;;;;;;;;;;;;;;;;1237:3;1216:34;;1233:1;1216:34;;;1242:7;1216:34;;;;;;;;;;;;;;;;;;1267:4;1260:11;;852:426:::0;;;;:::o;272:343:0:-;318:4;333:12;348:10;333:25;;386:8;:14;395:4;386:14;;;;;;;;;;;;;;;;376:6;:24;;368:33;;;;;;429:26;448:6;429:8;:14;438:4;429:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;412:8;:14;421:4;412:14;;;;;;;;;;;;;;;:43;;;;480:24;497:6;480:12;;:16;;:24;;;;:::i;:::-;465:12;:39;;;;524:4;519:18;;;530:6;519:18;;;;;;;;;;;;;;;;;;575:1;552:34;;561:4;552:34;;;579:6;552:34;;;;;;;;;;;;;;;;;;604:4;597:11;;;272:343;;;:::o;977:178:2:-;573:12;;;;;;;;;;;559:26;;:10;:26;;;551:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1070:12:::1;;;;;;;;;;;1042:41;;1063:5;;;;;;;;;;;1042:41;;;;;;;;;;;;1101:12;;;;;;;;;;;1093:5;;:20;;;;;;;;;;;;;;;;;;1146:1;1123:12;;:25;;;;;;;;;;;;;;;;;;977:178::o:0;3184:589:3:-;3322:12;594;:10;:12::i;:::-;586:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;699:23:::1;711:10;699:11;:23::i;:::-;691:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;3358:21:::2;3370:8;3358:11;:21::i;:::-;3350:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;3427:16;3446:7;:19;3454:10;3446:19;;;;;;;;;;;;;;;:29;3466:8;3446:29;;;;;;;;;;;;;;;;3427:48;;3509:8;3489:16;:28;3485:185;;3565:1;3533:7;:19;3541:10;3533:19;;;;;;;;;;;;;;;:29;3553:8;3533:29;;;;;;;;;;;;;;;:33;;;;3485:185;;;3629:30;3642:16;3629:8;:12;;:30;;;;:::i;:::-;3597:7;:19;3605:10;3597:19;;;;;;;;;;;;;;;:29;3617:8;3597:29;;;;;;;;;;;;;;;:62;;;;3485:185;3705:8;3684:61;;3693:10;3684:61;;;3715:7;:19;3723:10;3715:19;;;;;;;;;;;;;;;:29;3735:8;3715:29;;;;;;;;;;;;;;;;3684:61;;;;;;;;;;;;;;;;;;3762:4;3755:11;;;3184:589:::0;;;;:::o;1373:114::-;1438:7;1464:8;:16;1473:6;1464:16;;;;;;;;;;;;;;;;1457:23;;1373:114;;;:::o;405:20:8:-;;;;;;;;;;;;;:::o;1193:125:12:-;513:8:9;:6;:8::i;:::-;499:22;;:10;:22;;;491:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1298:13:12::1;1280:15;;:31;;;;;;;;;;;;;;;;;;1193:125:::0;:::o;160:20:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1402:190:6:-;1478:4;513:8:9;:6;:8::i;:::-;499:22;;:10;:22;;;491:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1512:8:6::1;1494:15;;:26;;;;;;;;;;;;;;;;;;1548:15;;;;;;;;;;;1535:29;;;;;;;;;;;;1581:4;1574:11;;1402:190:::0;;;:::o;878:489:3:-;971:4;594:12;:10;:12::i;:::-;586:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;699:23:::1;711:10;699:11;:23::i;:::-;691:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;995:16:::2;1007:3;995:11;:16::i;:::-;987:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1071:8;:20;1080:10;1071:20;;;;;;;;;;;;;;;;1061:6;:30;;1053:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1149:1;1134:17;;:3;:17;;;;1126:48;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;1208:32;1233:6;1208:8;:20;1217:10;1208:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;1185:8;:20;1194:10;1185:20;;;;;;;;;;;;;;;:55;;;;1266:25;1284:6;1266:8;:13;1275:3;1266:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;1250:8;:13;1259:3;1250:13;;;;;;;;;;;;;;;:41;;;;1327:3;1306:33;;1315:10;1306:33;;;1332:6;1306:33;;;;;;;;;;;;;;;;;;1356:4;1349:11;;878:489:::0;;;;:::o;432:85:8:-;480:7;505:5;;;;;;;;;;;498:12;;432:85;:::o;2757:421:3:-;2889:4;594:12;:10;:12::i;:::-;586:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;699:23:::1;711:10;699:11;:23::i;:::-;691:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;2917:21:::2;2929:8;2917:11;:21::i;:::-;2909:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;3027:46;3061:11;3027:7;:19;3035:10;3027:19;;;;;;;;;;;;;;;:29;3047:8;3027:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;2985:7;:19;2993:10;2985:19;;;;;;;;;;;;;;;:29;3005:8;2985:29;;;;;;;;;;;;;;;:89;;;;3110:8;3089:61;;3098:10;3089:61;;;3120:7;:19;3128:10;3120:19;;;;;;;;;;;;;;;:29;3140:8;3120:29;;;;;;;;;;;;;;;;3089:61;;;;;;;;;;;;;;;;;;3167:4;3160:11;;2757:421:::0;;;;:::o;692:117:12:-;738:4;800:1;760:42;;770:15;;;;;;;;;;;760:42;;;;753:49;;692:117;:::o;3779:183:3:-;3900:7;3930;:15;3938:6;3930:15;;;;;;;;;;;;;;;:25;3946:8;3930:25;;;;;;;;;;;;;;;;3923:32;;3779:183;;;;:::o;381:27:2:-;;;;;;;;;;;;;:::o;1387:523:12:-;1471:4;513:8:9;:6;:8::i;:::-;499:22;;:10;:22;;;491:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:12:12::1;1501:11;1486:26;;1531:17;1543:4;1531:11;:17::i;:::-;1530:18;1522:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;1580:14;1597:6;1580:23;;1626:8;:14;1635:4;1626:14;;;;;;;;;;;;;;;;1617:6;:23;1613:77;;;1665:8;:14;1674:4;1665:14;;;;;;;;;;;;;;;;1656:23;;1613:77;1717:26;1736:6;1717:8;:14;1726:4;1717:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;1700:8;:14;1709:4;1700:14;;;;;;;;;;;;;;;:43;;;;1768:24;1785:6;1768:12;;:16;;:24;;;;:::i;:::-;1753:12;:39;;;;1819:4;1807:25;;;1825:6;1807:25;;;;;;;;;;;;;;;;;;1870:1;1847:34;;1856:4;1847:34;;;1874:6;1847:34;;;;;;;;;;;;;;;;;;1899:4;1892:11;;;;1387:523:::0;;;;:::o;774:111:2:-;513:8:9;:6;:8::i;:::-;499:22;;:10;:22;;;491:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;870:8:2::1;855:12;;:23;;;;;;;;;;;;;;;;;;774:111:::0;:::o;815:174:12:-;869:4;888:15;:13;:15::i;:::-;884:78;;;927:15;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;926:25;919:32;;;;884:78;978:4;971:11;;815:174;;:::o;995:192::-;1062:4;1081:15;:13;:15::i;:::-;1077:83;;;1120:15;;;;;;;;;;;:23;;;1144:4;1120:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1119:30;1112:37;;;;1077:83;1176:4;1169:11;;995:192;;;;:::o;1354:134:10:-;1412:7;1438:43;1442:1;1445;1438:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1431:50;;1354:134;;;;:::o;907:176::-;965:7;984:9;1000:1;996;:5;984:17;;1024:1;1019;:6;;1011:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1075:1;1068:8;;;907:176;;;;:::o;1779:187::-;1865:7;1897:1;1892;:6;;1900:12;1884:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1923:9;1939:1;1935;:5;1923:17;;1958:1;1951:8;;;1779:187;;;;;:::o

Swarm Source

ipfs://22f86cc7a20c1c1e0456c10b0b02ca83c6e3b4e26886f4b9bd7b8a4f4a974076
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.