ETH Price: $3,099.05 (+0.87%)
Gas: 5 Gwei

Token

DOS Token (DOS)
 

Overview

Max Total Supply

900,000,000 DOS

Holders

10,505 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
25 DOS

Value
$0.00
0x8f83a38abed06abc98363b7fcbb601ed1204da11
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A platform to secure data storage, the indexing of valuables, the creation of individualised insurance services and support in all ownership transfer processes.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DOS

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Multiple files format)

File 1 of 3: DOS.sol
pragma solidity 0.5.7;

import "./SafeMath.sol";
import "./Utils.sol";

contract ERC20 {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC677 transferAndCall token interface
 * @dev See https://github.com/ethereum/EIPs/issues/677 for specification and
 *      discussion.
 *
 * We deviate from the specification and we don't define a tokenfallback. That means
 * tranferAndCall can specify the function to call (bytes4(sha3("setN(uint256)")))
 * and its arguments, and the respective function is called.
 *
 * If an invalid function is called, its default function (if implemented) is called.
 *
 * We also deviate from ERC865 and added a pre signed transaction for transferAndCall.
 */

/*
 Notes on signature malleability: Ethereum took the same
 precaution as in bitcoin was used to prevent that:

 https://github.com/ethereum/go-ethereum/blob/master/vendor/github.com/btcsuite/btcd/btcec/signature.go#L48
 https://github.com/ethereum/go-ethereum/blob/master/crypto/signature_test.go
 https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md
 https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.md

 However, ecrecover still allows ambigous signatures. Thus, recover that wraps ecrecover checks for ambigous
 signatures and only allows unique signatures.
*/

contract ERC865Plus677ish {
    event TransferAndCall(address indexed _from, address indexed _to, uint256 _value, bytes4 _methodName, bytes _args);
    function transferAndCall(address _to, uint256 _value, bytes4 _methodName, bytes memory _args) public returns (bytes memory);

    event TransferPreSigned(address indexed _from, address indexed _to, address indexed _delegate,
        uint256 _amount, uint256 _fee);
    event TransferAndCallPreSigned(address indexed _from, address indexed _to, address indexed _delegate,
        uint256 _amount, uint256 _fee, bytes4 _methodName, bytes _args);

    function transferPreSigned(bytes memory _signature, address _to, uint256 _value,
        uint256 _fee, uint256 _nonce) public returns (bool);
    function transferAndCallPreSigned(bytes memory _signature, address _to, uint256 _value,
        uint256 _fee, uint256 _nonce, bytes4 _methodName, bytes memory _args) public returns (bytes memory);
}

contract DOS is ERC20, ERC865Plus677ish {
    using SafeMath for uint256;

    string public constant name = "DOS Token";
    string public constant symbol = "DOS";
    uint8 public constant decimals = 18;

    mapping(address => uint256) private balances;
    mapping(address => mapping(address => uint256)) private allowed;
    // nonces of transfers performed
    mapping(bytes => bool) private signatures;
    mapping(address => mapping (uint256 => bool)) private nonces;
    mapping(address => bool) private contractWhitelist;

    uint256 private totalSupply_;
    uint256 public constant maxSupply = 900000000 * (10 ** uint256(decimals));

    // token lockups
    mapping(address => uint256) private lockups;

    // ownership
    address public owner;
    address public tmpOwner;
    address public admin1;
    address public admin2;

    //3 admins can disable the transfers, however, the balances remain.
    //this can be used to migrate to another contract. This flag can only
    //be set by 3 admins.
    bool public transfersEnabled1 = true;
    bool public transfersEnabled2 = true;
    bool public transfersEnabled3 = true;

    // minting
    bool public mintingDone = false;

    //vesting variables, check dates with https://www.epochconverter.com/ and https://www.unixtimestamp.com/
    uint256 public constant firstFeb19 = 1548979200;
    uint256 public constant sixMonth = 6 * 30 days;

    event TokensLocked(address indexed _holder, uint256 _timeout);

    constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Allows the current owner to transfer the ownership.
     * @param _newOwner The address to transfer ownership to.
     */
    function transferOwnership(address _newOwner) public {
        require(owner == msg.sender);
        require(_newOwner != address(0));
        require(_newOwner != admin1);
        require(_newOwner != admin2);
        require(_newOwner != owner); //sanity check

        tmpOwner = _newOwner;
    }

    function claimOwnership() public {
        require(tmpOwner == msg.sender);
        owner = tmpOwner;
        tmpOwner = address(0);
    }

    function setAdmin(address _admin1, address _admin2) public {
        require(owner == msg.sender);
        require(!mintingDone);
        require(_admin1 != address(0));
        require(_admin1 != owner);
        require(_admin2 != address(0));
        require(_admin2 != owner);
        require(_admin1 != _admin2);

        admin1 = _admin1;
        admin2 = _admin2;
    }

    function addWhitelist(address contractAddress) public {
        require(owner == msg.sender || admin1 == msg.sender || admin2 == msg.sender);

        contractWhitelist[contractAddress] = true;
    }

    function removeWhitelist(address contractAddress) public {
        require(owner == msg.sender || admin1 == msg.sender || admin2 == msg.sender);

        delete contractWhitelist[contractAddress];
    }

    // minting functionality
    function mint(address[] calldata _recipients, uint256[] calldata _amounts) external {
        require(owner == msg.sender);
        require(!mintingDone);
        require(_recipients.length == _amounts.length);
        require(_recipients.length <= 255);

        for (uint8 i = 0; i < _recipients.length; i++) {
            uint256 amount = _amounts[i];
            totalSupply_ = totalSupply_.add(amount);
            require(totalSupply_ <= maxSupply); // enforce maximum token supply

            address recipient = _recipients[i];
            balances[recipient] = balances[recipient].add(amount);

            emit Transfer(address(0), recipient, amount);
        }
    }

    /**
     * @param _sixMonthCliff Number of a six month cliff. E.g., 1 is for 6 month, 2 is for 12 month, 3 is for 18 month, etc.
     */
    function lockTokens(address[] calldata _holders, uint256[] calldata _sixMonthCliff) external {
        require(owner == msg.sender);
        require(!mintingDone);
        require(_holders.length == _sixMonthCliff.length);
        require(_holders.length <= 255);

        for (uint8 i = 0; i < _holders.length; i++) {
            address holder = _holders[i];
            // make sure lockup period can not be overwritten
            require(lockups[holder] == 0);

            uint256 timeout = (_sixMonthCliff[i].mul(sixMonth)).add(firstFeb19);

            lockups[holder] = timeout;
            emit TokensLocked(holder, timeout);
        }
    }

    //If this is called, no more tokens can be generated
    //The status of the contract can be checked with getMintingDone, as
    //this variable is set to public, thus, getters are generated automatically
    function finishMinting() public {
        require(owner == msg.sender);
        require(!mintingDone);
        require(admin1 != address(0));
        require(admin2 != address(0));

        mintingDone = true;
    }

    function transferDisable() public {
        if(msg.sender == owner) {
            transfersEnabled1 = false;
        } else if(msg.sender == admin1) {
            transfersEnabled2 = false;
        } else if(msg.sender == admin2) {
            transfersEnabled3 = false;
        } else {
            revert();
        }
    }

    function isTransferEnabled() public view returns (bool) {
        //all three must agree to disable the transfer
        return transfersEnabled1 || transfersEnabled2 || transfersEnabled3;
    }

    /**
    * @dev total number of tokens in existence, which is mandated by the ERC20 interface
    */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        _transfer(msg.sender, _to, _value, 0, address(0));
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        _transfer(_from, _to, _value, 0, address(0));
        _approve(_from, msg.sender, allowed[_from][msg.sender].sub(_value));
        return true;
    }

    function _transfer(address _from, address _to, uint256 _value, uint256 _fee, address _feeAddress) internal {
        require(isTransferEnabled());
        require(_to != address(0));
        require(_to != address(this));
        uint256 total = _value.add(_fee);
        require(mintingDone);
        require(now >= lockups[_from]); // check lockups
        require(total <= balances[_from]);

        balances[_from] = balances[_from].sub(total);

        if(_fee > 0 && _feeAddress != address(0)) {
            balances[_feeAddress] = balances[_feeAddress].add(_fee);
        }

        balances[_to] = balances[_to].add(_value);
        emit Transfer(_from, _to, _value);
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }


    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) public returns (bool) {
        _approve(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowed[msg.sender][spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address _spender, uint256 _addedValue) public returns (bool) {
        _approve(msg.sender, _spender, allowed[msg.sender][_spender].add(_addedValue));
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowed[msg.sender][spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address _spender, uint256 _subtractedValue) public returns (bool) {
        _approve(msg.sender, _spender, allowed[msg.sender][_spender].sub(_subtractedValue));
        return true;
    }

    /**
     * @dev Approve an address to spend another addresses' tokens.
     * @param _owner The address that owns the tokens.
     * @param _spender The address that will spend the tokens.
     * @param _value The number of tokens that can be spent.
     */
    function _approve(address _owner, address _spender, uint256 _value) internal {
        require(_spender != address(0));
        require(_owner != address(0));

        allowed[_owner][_spender] = _value;
        emit Approval(_owner, _spender, _value);
    }

    function transferAndCall(address _to, uint256 _value, bytes4 _methodName, bytes memory _args) public returns (bytes memory) {
        require(contractWhitelist[_to]);
        require(transfer(_to, _value));

        emit TransferAndCall(msg.sender, _to, _value, _methodName, _args);

        // call receiver
        require(Utils.isContract(_to));

        (bool success, bytes memory data) = _to.call(abi.encodePacked(abi.encodeWithSelector(_methodName, msg.sender, _value), _args));
        require(success);
        return data;
    }

    //ERC 865 + delegate transfer and call
    //The signature only allows s < secp256k1n / 2 and v to be 27/28
    //If this is not the case the function will revert
    function transferPreSigned(bytes memory _signature, address _to, uint256 _value, uint256 _fee, uint256 _nonce) public returns (bool) {

        require(!signatures[_signature]);
        bytes32 hashedTx = Utils.transferPreSignedHashing(address(this), _to, _value, _fee, _nonce);
        address from = Utils.recover(hashedTx, _signature);

        require(from != address(0));
        require(!nonces[from][_nonce]);

        _transfer(from, _to, _value, _fee, msg.sender);
        signatures[_signature] = true;
        nonces[from][_nonce] = true;

        emit Transfer(from, msg.sender, _fee);
        emit TransferPreSigned(from, _to, msg.sender, _value, _fee);
        return true;
    }

    //The signature only allows s < secp256k1n / 2 and v to be 27/28
    //If this is not the case the function will revert
    function transferAndCallPreSigned(bytes memory _signature, address _to, uint256 _value, uint256 _fee, uint256 _nonce,
        bytes4 _methodName, bytes memory _args) public returns (bytes memory) {

        require(contractWhitelist[_to]);
        require(!signatures[_signature]);
        bytes32 hashedTx = Utils.transferAndCallPreSignedHashing(address(this), _to, _value, _fee, _nonce, _methodName, _args);
        address from = Utils.recover(hashedTx, _signature);

        require(from != address(0));
        require(!nonces[from][_nonce]);

        _transfer(from, _to, _value, _fee, msg.sender);
        signatures[_signature] = true;
        nonces[from][_nonce] = true;

        emit Transfer(from, msg.sender, _fee);
        emit TransferAndCallPreSigned(from, _to, msg.sender, _value, _fee, _methodName, _args);

        // call receiver
        require(Utils.isContract(_to));

        //call on behalf of from and not msg.sender
        (bool success, bytes memory data) = _to.call(abi.encodePacked(abi.encodeWithSelector(_methodName, from, _value), _args));
        require(success);
        return data;
    }
}

File 2 of 3: SafeMath.sol
//using: https://github.com/OpenZeppelin/openzeppelin-solidity/blob/f80c65ff67957404c964af864ffb230e4cbb1cf4/contracts/math/SafeMath.sol
pragma solidity 0.5.7;

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
  /**
  * @dev Multiplies two unsigned integers, reverts on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b);

    return c;
  }

  /**
  * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // Solidity only automatically asserts when dividing by 0
    require(b > 0);
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;
  }

  /**
  * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

    return c;
  }

  /**
  * @dev Adds two unsigned integers, reverts on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a);

    return c;
  }

  /**
  * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

File 3 of 3: Utils.sol
pragma solidity 0.5.7;

library Utils {

    //From: https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/AddressUtils.sol

    /**
    * Returns whether the target address is a contract
    * @dev This function will return false if invoked during the constructor of a contract,
    *  as the code is not actually created until after the constructor finishes.
    * @param addr address to check
    * @return whether the target address is a contract
    */
    function isContract(address addr) internal view returns (bool) {
        uint256 size;
        // XXX Currently there is no better way to check if there is a contract in an address
        // than to check the size of the code at that address.
        // See https://ethereum.stackexchange.com/a/14016/36603
        // for more details about how this works.
        // TODO Check this again before the Serenity release, because all addresses will be
        // contracts then.
        // solium-disable-next-line security/no-inline-assembly
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    //From: https://github.com/PROPSProject/props-token-distribution/blob/master/contracts/token/ERC865Token.sol
    //adapted to: https://solidity.readthedocs.io/en/v0.5.3/050-breaking-changes.html?highlight=abi%20encode

    /**
     * @notice Hash (keccak256) of the payload used by transferPreSigned
     * @param _token address The address of the token.
     * @param _to address The address which you want to transfer to.
     * @param _value uint256 The amount of tokens to be transferred.
     * @param _fee uint256 The amount of tokens paid to msg.sender, by the owner.
     */
    function transferAndCallPreSignedHashing(address _token, address _to, uint256 _value, uint256 _fee, uint256 _nonce,
        bytes4 _methodName, bytes memory _args) internal pure returns (bytes32) {
        /* "38980f82": transferAndCallPreSignedHashing(address,address,uint256,uint256,uint256,bytes4,bytes) */
        return keccak256(abi.encode(bytes4(0x38980f82), _token, _to, _value, _fee, _nonce, _methodName, _args));
    }

    function transferPreSignedHashing(address _token, address _to, uint256 _value, uint256 _fee, uint256 _nonce)
    internal pure returns (bytes32) {
        /* "15420b71": transferPreSignedHashing(address,address,uint256,uint256,uint256) */
        return keccak256(abi.encode(bytes4(0x15420b71), _token, _to, _value, _fee, _nonce));
    }

    //From: https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/cryptography/ECDSA.sol

    /**
     * @dev Recover signer address from a message by using their signature
     * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.
     * @param signature bytes signature, the signature is generated using web3.eth.sign()
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        // Check the signature length
        if (signature.length != 65) {
            return (address(0));
        }

        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // ecrecover takes the signature parameters, and the only way to get them
        // currently is to use assembly.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := byte(0, mload(add(signature, 0x60)))
        }

        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return address(0);
        }

        if (v != 27 && v != 28) {
            return address(0);
        }

        // If the signature is valid (and not malleable), return the signer address
        return ecrecover(hash, v, r, s);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"admin2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"transferPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_methodName","type":"bytes4"},{"name":"_args","type":"bytes"}],"name":"transferAndCallPreSigned","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"transferDisable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holders","type":"address[]"},{"name":"_sixMonthCliff","type":"uint256[]"}],"name":"lockTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_methodName","type":"bytes4"},{"name":"_args","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"contractAddress","type":"address"}],"name":"removeWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingDone","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sixMonth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabled1","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabled2","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabled3","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_admin1","type":"address"},{"name":"_admin2","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isTransferEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipients","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tmpOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"firstFeb19","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"contractAddress","type":"address"}],"name":"addWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_holder","type":"address"},{"indexed":false,"name":"_timeout","type":"uint256"}],"name":"TokensLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_methodName","type":"bytes4"},{"indexed":false,"name":"_args","type":"bytes"}],"name":"TransferAndCall","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":true,"name":"_delegate","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_fee","type":"uint256"}],"name":"TransferPreSigned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":true,"name":"_delegate","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_fee","type":"uint256"},{"indexed":false,"name":"_methodName","type":"bytes4"},{"indexed":false,"name":"_args","type":"bytes"}],"name":"TransferAndCallPreSigned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60806040526001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff0219169083151502179055506000600a60176101000a81548160ff02191690831515021790555034801561007c57600080fd5b5033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613ae7806100cd6000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80638da5cb5b11610125578063c55b6bb7116100ad578063e467f7e01161007c578063e467f7e014610e6e578063f1f06a4a14610f3c578063f2fde38b14610f86578063f5fa681e14610fca578063f80f5dd514610fe857610211565b8063c55b6bb714610d52578063cca5dcb614610db6578063d5abeb0114610dd8578063dd62ed3e14610df657610211565b8063a457c2d7116100f4578063a457c2d714610c20578063a5b6a23614610c86578063a9059cbb14610ca8578063b49b7b5914610d0e578063c1f2295314610d3057610211565b80638da5cb5b14610b135780638e2ae56414610b5d57806395d89b4114610b7f578063986feefa14610c0257610211565b8063313ce567116101a85780633c4461be116101775780633c4461be146108dc5780634e71e0c814610a6357806370a0823114610a6d57806378c8cda714610ac55780637d64bcb414610b0957610211565b8063313ce5671461077a578063353319a11461079e5780633547800a146107a8578063395093511461087657610211565b80631296830d116101e45780631296830d1461039357806318160ddd146104a45780632345d956146104c257806323b872dd146106f457610211565b806306a8f8a21461021657806306fdde0314610260578063095ea7b3146102e3578063115976c414610349575b600080fd5b61021e61102c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610268611052565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a857808201518184015260208101905061028d565b50505050905090810190601f1680156102d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61032f600480360360408110156102f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061108b565b604051808215151515815260200191505060405180910390f35b6103516110a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61048a600480360360a08110156103a957600080fd5b81019080803590602001906401000000008111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111640100000000831117156103fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506110c8565b604051808215151515815260200191505060405180910390f35b6104ac6113fc565b6040518082815260200191505060405180910390f35b610679600480360360e08110156104d857600080fd5b81019080803590602001906401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184600183028401116401000000008311171561052957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803590602001906401000000008111156105f357600080fd5b82018360208201111561060557600080fd5b8035906020019184600183028401116401000000008311171561062757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611406565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106b957808201518184015260208101905061069e565b50505050905090810190601f1680156106e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107606004803603606081101561070a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a7e565b604051808215151515815260200191505060405180910390f35b610782611b32565b604051808260ff1660ff16815260200191505060405180910390f35b6107a6611b37565b005b610874600480360360408110156107be57600080fd5b81019080803590602001906401000000008111156107db57600080fd5b8201836020820111156107ed57600080fd5b8035906020019184602083028401116401000000008311171561080f57600080fd5b90919293919293908035906020019064010000000081111561083057600080fd5b82018360208201111561084257600080fd5b8035906020019184602083028401116401000000008311171561086457600080fd5b9091929391929390505050611ca2565b005b6108c26004803603604081101561088c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611eb6565b604051808215151515815260200191505060405180910390f35b6109e8600480360360808110156108f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019064010000000081111561096257600080fd5b82018360208201111561097457600080fd5b8035906020019184600183028401116401000000008311171561099657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611f5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a28578082015181840152602081019050610a0d565b50505050905090810190601f168015610a555780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a6b612321565b005b610aaf60048036036020811015610a8357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612422565b6040518082815260200191505060405180910390f35b610b0760048036036020811015610adb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246a565b005b610b116125c6565b005b610b1b61270f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b65612735565b604051808215151515815260200191505060405180910390f35b610b87612748565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bc7578082015181840152602081019050610bac565b50505050905090810190601f168015610bf45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c0a612781565b6040518082815260200191505060405180910390f35b610c6c60048036036040811015610c3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612788565b604051808215151515815260200191505060405180910390f35b610c8e61282d565b604051808215151515815260200191505060405180910390f35b610cf460048036036040811015610cbe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612840565b604051808215151515815260200191505060405180910390f35b610d1661285a565b604051808215151515815260200191505060405180910390f35b610d3861286d565b604051808215151515815260200191505060405180910390f35b610db460048036036040811015610d6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612880565b005b610dbe612add565b604051808215151515815260200191505060405180910390f35b610de0612b22565b6040518082815260200191505060405180910390f35b610e5860048036036040811015610e0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b33565b6040518082815260200191505060405180910390f35b610f3a60048036036040811015610e8457600080fd5b8101908080359060200190640100000000811115610ea157600080fd5b820183602082011115610eb357600080fd5b80359060200191846020830284011164010000000083111715610ed557600080fd5b909192939192939080359060200190640100000000811115610ef657600080fd5b820183602082011115610f0857600080fd5b80359060200191846020830284011164010000000083111715610f2a57600080fd5b9091929391929390505050612bba565b005b610f44612df5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610fc860048036036020811015610f9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e1b565b005b610fd2613004565b6040518082815260200191505060405180910390f35b61102a60048036036020811015610ffe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061300c565b005b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600981526020017f444f5320546f6b656e000000000000000000000000000000000000000000000081525081565b6000611098338484613171565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002866040518082805190602001908083835b6020831061110057805182526020820191506020810190506020830392506110dd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff161561114b57600080fd5b600061115a30878787876132d0565b9050600061116882896133c9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111a457600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff161561120c57600080fd5b61121981888888336134cd565b60016002896040518082805190602001908083835b60208310611251578051825260208201915060208101905060208303925061122e565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fec5a73fd1f178be20c1bca1b406cbf4b5c20d833b66e582fc122fb4baa0fc2a48989604051808381526020018281526020019250505060405180910390a460019250505095945050505050565b6000600554905090565b6060600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661145e57600080fd5b6002886040518082805190602001908083835b602083106114945780518252602082019150602081019050602083039250611471565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff16156114df57600080fd5b60006114f030898989898989613881565b905060006114fe828b6133c9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561153a57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060009054906101000a900460ff16156115a257600080fd5b6115af818a8a8a336134cd565b600160028b6040518082805190602001908083835b602083106115e757805182526020820191506020810190506020830392506115c4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f95f8bb1059e9b9dc861fa51f50b9143ef0101152bce82dd2760584849223d1f28b8b8a8a60405180858152602001848152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117f95780820151818401526020810190506117de565b50505050905090810190601f1680156118265780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a461183f89613a2f565b61184857600080fd5b600060608a73ffffffffffffffffffffffffffffffffffffffff1687848c604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050876040516020018083805190602001908083835b6020831061193d578051825260208201915060208101905060208303925061191a565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061198e578051825260208201915060208101905060208303925061196b565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106119f657805182526020820191506020810190506020830392506119d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a58576040519150601f19603f3d011682016040523d82523d6000602084013e611a5d565b606091505b509150915081611a6c57600080fd5b80945050505050979650505050505050565b6000611a8e8484846000806134cd565b611b278433611b2285600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4290919063ffffffff16565b613171565b600190509392505050565b601281565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611bad576000600a60146101000a81548160ff021916908315150217905550611ca0565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611c23576000600a60156101000a81548160ff021916908315150217905550611c9f565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611c99576000600a60166101000a81548160ff021916908315150217905550611c9e565b600080fd5b5b5b565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfc57600080fd5b600a60179054906101000a900460ff1615611d1657600080fd5b818190508484905014611d2857600080fd5b60ff848490501115611d3957600080fd5b60008090505b848490508160ff161015611eaf57600085858360ff16818110611d5e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611dc957600080fd5b6000611e0c635c538c00611dfe62ed4e0088888860ff16818110611de957fe5b90506020020135613a6290919063ffffffff16565b613a9c90919063ffffffff16565b905080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fac87f20a77d28ee8bbb58ec87ea8fa968b3393efae1a368fd50b767c2847391c826040518082815260200191505060405180910390a250508080600101915050611d3f565b5050505050565b6000611f513384611f4c85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9c90919063ffffffff16565b613171565b6001905092915050565b6060600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fb357600080fd5b611fbd8585612840565b611fc657600080fd5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdd3e0c228b64b39b4fe47dda02dba02d084503cb9a5692cb36a09c225376292786868660405180848152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156120a2578082015181840152602081019050612087565b50505050905090810190601f1680156120cf5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a36120e785613a2f565b6120f057600080fd5b600060608673ffffffffffffffffffffffffffffffffffffffff16853388604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050856040516020018083805190602001908083835b602083106121e557805182526020820191506020810190506020830392506121c2565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083106122365780518252602082019150602081019050602083039250612213565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061229e578051825260208201915060208101905060208303925061227b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612300576040519150601f19603f3d011682016040523d82523d6000602084013e612305565b606091505b50915091508161231457600080fd5b8092505050949350505050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461237b57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061251357503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061256b57503373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61257457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262057600080fd5b600a60179054906101000a900460ff161561263a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561269657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156126f257600080fd5b6001600a60176101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60179054906101000a900460ff1681565b6040518060400160405280600381526020017f444f53000000000000000000000000000000000000000000000000000000000081525081565b62ed4e0081565b6000612823338461281e85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4290919063ffffffff16565b613171565b6001905092915050565b600a60149054906101000a900460ff1681565b60006128503384846000806134cd565b6001905092915050565b600a60159054906101000a900460ff1681565b600a60169054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128da57600080fd5b600a60179054906101000a900460ff16156128f457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561292e57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561298957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129c357600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a1e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a5757600080fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600a60149054906101000a900460ff1680612b065750600a60159054906101000a900460ff165b80612b1d5750600a60169054906101000a900460ff165b905090565b601260ff16600a0a6335a4e9000281565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c1457600080fd5b600a60179054906101000a900460ff1615612c2e57600080fd5b818190508484905014612c4057600080fd5b60ff848490501115612c5157600080fd5b60008090505b848490508160ff161015612dee57600083838360ff16818110612c7657fe5b905060200201359050612c9481600554613a9c90919063ffffffff16565b600581905550601260ff16600a0a6335a4e900026005541115612cb657600080fd5b600086868460ff16818110612cc757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050612d37826000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9c90919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350508080600101915050612c57565b5050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e7557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612eaf57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f0a57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f6557600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612fc057600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b635c538c0081565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806130b557503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061310d57503373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61311657600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131ab57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131e557600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60006315420b7160e01b868686868660405160200180877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405160208183030381529060405280519060200120905095945050505050565b600060418251146133dd57600090506134c7565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c111561343157600093505050506134c7565b601b8160ff16141580156134495750601c8160ff1614155b1561345a57600093505050506134c7565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156134b7573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b6134d5612add565b6134de57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561351857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561355157600080fd5b60006135668385613a9c90919063ffffffff16565b9050600a60179054906101000a900460ff1661358157600080fd5b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156135cd57600080fd5b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561361857600080fd5b613669816000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4290919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000831180156136e85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156137815761373e836000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6137d2846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9c90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3505050505050565b60006338980f8260e01b8888888888888860405160200180897bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156139d35780820151818401526020810190506139b8565b50505050905090810190601f168015613a005780820380516001836020036101000a031916815260200191505b509950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b600080823b905060008111915050919050565b600082821115613a5157600080fd5b600082840390508091505092915050565b600080831415613a755760009050613a96565b6000828402905082848281613a8657fe5b0414613a9157600080fd5b809150505b92915050565b600080828401905083811015613ab157600080fd5b809150509291505056fea165627a7a72305820e7f304f4484d0f7faaef9ce545b5a3c6e7bbbd1887de8d2fff2b00cb11d2a9300029

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102115760003560e01c80638da5cb5b11610125578063c55b6bb7116100ad578063e467f7e01161007c578063e467f7e014610e6e578063f1f06a4a14610f3c578063f2fde38b14610f86578063f5fa681e14610fca578063f80f5dd514610fe857610211565b8063c55b6bb714610d52578063cca5dcb614610db6578063d5abeb0114610dd8578063dd62ed3e14610df657610211565b8063a457c2d7116100f4578063a457c2d714610c20578063a5b6a23614610c86578063a9059cbb14610ca8578063b49b7b5914610d0e578063c1f2295314610d3057610211565b80638da5cb5b14610b135780638e2ae56414610b5d57806395d89b4114610b7f578063986feefa14610c0257610211565b8063313ce567116101a85780633c4461be116101775780633c4461be146108dc5780634e71e0c814610a6357806370a0823114610a6d57806378c8cda714610ac55780637d64bcb414610b0957610211565b8063313ce5671461077a578063353319a11461079e5780633547800a146107a8578063395093511461087657610211565b80631296830d116101e45780631296830d1461039357806318160ddd146104a45780632345d956146104c257806323b872dd146106f457610211565b806306a8f8a21461021657806306fdde0314610260578063095ea7b3146102e3578063115976c414610349575b600080fd5b61021e61102c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610268611052565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a857808201518184015260208101905061028d565b50505050905090810190601f1680156102d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61032f600480360360408110156102f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061108b565b604051808215151515815260200191505060405180910390f35b6103516110a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61048a600480360360a08110156103a957600080fd5b81019080803590602001906401000000008111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111640100000000831117156103fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506110c8565b604051808215151515815260200191505060405180910390f35b6104ac6113fc565b6040518082815260200191505060405180910390f35b610679600480360360e08110156104d857600080fd5b81019080803590602001906401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184600183028401116401000000008311171561052957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190803590602001906401000000008111156105f357600080fd5b82018360208201111561060557600080fd5b8035906020019184600183028401116401000000008311171561062757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611406565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106b957808201518184015260208101905061069e565b50505050905090810190601f1680156106e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107606004803603606081101561070a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a7e565b604051808215151515815260200191505060405180910390f35b610782611b32565b604051808260ff1660ff16815260200191505060405180910390f35b6107a6611b37565b005b610874600480360360408110156107be57600080fd5b81019080803590602001906401000000008111156107db57600080fd5b8201836020820111156107ed57600080fd5b8035906020019184602083028401116401000000008311171561080f57600080fd5b90919293919293908035906020019064010000000081111561083057600080fd5b82018360208201111561084257600080fd5b8035906020019184602083028401116401000000008311171561086457600080fd5b9091929391929390505050611ca2565b005b6108c26004803603604081101561088c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611eb6565b604051808215151515815260200191505060405180910390f35b6109e8600480360360808110156108f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291908035906020019064010000000081111561096257600080fd5b82018360208201111561097457600080fd5b8035906020019184600183028401116401000000008311171561099657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611f5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a28578082015181840152602081019050610a0d565b50505050905090810190601f168015610a555780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a6b612321565b005b610aaf60048036036020811015610a8357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612422565b6040518082815260200191505060405180910390f35b610b0760048036036020811015610adb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246a565b005b610b116125c6565b005b610b1b61270f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b65612735565b604051808215151515815260200191505060405180910390f35b610b87612748565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bc7578082015181840152602081019050610bac565b50505050905090810190601f168015610bf45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c0a612781565b6040518082815260200191505060405180910390f35b610c6c60048036036040811015610c3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612788565b604051808215151515815260200191505060405180910390f35b610c8e61282d565b604051808215151515815260200191505060405180910390f35b610cf460048036036040811015610cbe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612840565b604051808215151515815260200191505060405180910390f35b610d1661285a565b604051808215151515815260200191505060405180910390f35b610d3861286d565b604051808215151515815260200191505060405180910390f35b610db460048036036040811015610d6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612880565b005b610dbe612add565b604051808215151515815260200191505060405180910390f35b610de0612b22565b6040518082815260200191505060405180910390f35b610e5860048036036040811015610e0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b33565b6040518082815260200191505060405180910390f35b610f3a60048036036040811015610e8457600080fd5b8101908080359060200190640100000000811115610ea157600080fd5b820183602082011115610eb357600080fd5b80359060200191846020830284011164010000000083111715610ed557600080fd5b909192939192939080359060200190640100000000811115610ef657600080fd5b820183602082011115610f0857600080fd5b80359060200191846020830284011164010000000083111715610f2a57600080fd5b9091929391929390505050612bba565b005b610f44612df5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610fc860048036036020811015610f9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e1b565b005b610fd2613004565b6040518082815260200191505060405180910390f35b61102a60048036036020811015610ffe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061300c565b005b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600981526020017f444f5320546f6b656e000000000000000000000000000000000000000000000081525081565b6000611098338484613171565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002866040518082805190602001908083835b6020831061110057805182526020820191506020810190506020830392506110dd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff161561114b57600080fd5b600061115a30878787876132d0565b9050600061116882896133c9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111a457600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff161561120c57600080fd5b61121981888888336134cd565b60016002896040518082805190602001908083835b60208310611251578051825260208201915060208101905060208303925061122e565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fec5a73fd1f178be20c1bca1b406cbf4b5c20d833b66e582fc122fb4baa0fc2a48989604051808381526020018281526020019250505060405180910390a460019250505095945050505050565b6000600554905090565b6060600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661145e57600080fd5b6002886040518082805190602001908083835b602083106114945780518252602082019150602081019050602083039250611471565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff16156114df57600080fd5b60006114f030898989898989613881565b905060006114fe828b6133c9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561153a57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060009054906101000a900460ff16156115a257600080fd5b6115af818a8a8a336134cd565b600160028b6040518082805190602001908083835b602083106115e757805182526020820191506020810190506020830392506115c4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f95f8bb1059e9b9dc861fa51f50b9143ef0101152bce82dd2760584849223d1f28b8b8a8a60405180858152602001848152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117f95780820151818401526020810190506117de565b50505050905090810190601f1680156118265780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a461183f89613a2f565b61184857600080fd5b600060608a73ffffffffffffffffffffffffffffffffffffffff1687848c604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050876040516020018083805190602001908083835b6020831061193d578051825260208201915060208101905060208303925061191a565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061198e578051825260208201915060208101905060208303925061196b565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083106119f657805182526020820191506020810190506020830392506119d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a58576040519150601f19603f3d011682016040523d82523d6000602084013e611a5d565b606091505b509150915081611a6c57600080fd5b80945050505050979650505050505050565b6000611a8e8484846000806134cd565b611b278433611b2285600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4290919063ffffffff16565b613171565b600190509392505050565b601281565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611bad576000600a60146101000a81548160ff021916908315150217905550611ca0565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611c23576000600a60156101000a81548160ff021916908315150217905550611c9f565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611c99576000600a60166101000a81548160ff021916908315150217905550611c9e565b600080fd5b5b5b565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfc57600080fd5b600a60179054906101000a900460ff1615611d1657600080fd5b818190508484905014611d2857600080fd5b60ff848490501115611d3957600080fd5b60008090505b848490508160ff161015611eaf57600085858360ff16818110611d5e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611dc957600080fd5b6000611e0c635c538c00611dfe62ed4e0088888860ff16818110611de957fe5b90506020020135613a6290919063ffffffff16565b613a9c90919063ffffffff16565b905080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fac87f20a77d28ee8bbb58ec87ea8fa968b3393efae1a368fd50b767c2847391c826040518082815260200191505060405180910390a250508080600101915050611d3f565b5050505050565b6000611f513384611f4c85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9c90919063ffffffff16565b613171565b6001905092915050565b6060600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fb357600080fd5b611fbd8585612840565b611fc657600080fd5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdd3e0c228b64b39b4fe47dda02dba02d084503cb9a5692cb36a09c225376292786868660405180848152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156120a2578082015181840152602081019050612087565b50505050905090810190601f1680156120cf5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a36120e785613a2f565b6120f057600080fd5b600060608673ffffffffffffffffffffffffffffffffffffffff16853388604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050856040516020018083805190602001908083835b602083106121e557805182526020820191506020810190506020830392506121c2565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083106122365780518252602082019150602081019050602083039250612213565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061229e578051825260208201915060208101905060208303925061227b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612300576040519150601f19603f3d011682016040523d82523d6000602084013e612305565b606091505b50915091508161231457600080fd5b8092505050949350505050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461237b57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061251357503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061256b57503373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61257457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262057600080fd5b600a60179054906101000a900460ff161561263a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561269657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156126f257600080fd5b6001600a60176101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60179054906101000a900460ff1681565b6040518060400160405280600381526020017f444f53000000000000000000000000000000000000000000000000000000000081525081565b62ed4e0081565b6000612823338461281e85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4290919063ffffffff16565b613171565b6001905092915050565b600a60149054906101000a900460ff1681565b60006128503384846000806134cd565b6001905092915050565b600a60159054906101000a900460ff1681565b600a60169054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128da57600080fd5b600a60179054906101000a900460ff16156128f457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561292e57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561298957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129c357600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a1e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a5757600080fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600a60149054906101000a900460ff1680612b065750600a60159054906101000a900460ff165b80612b1d5750600a60169054906101000a900460ff165b905090565b601260ff16600a0a6335a4e9000281565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c1457600080fd5b600a60179054906101000a900460ff1615612c2e57600080fd5b818190508484905014612c4057600080fd5b60ff848490501115612c5157600080fd5b60008090505b848490508160ff161015612dee57600083838360ff16818110612c7657fe5b905060200201359050612c9481600554613a9c90919063ffffffff16565b600581905550601260ff16600a0a6335a4e900026005541115612cb657600080fd5b600086868460ff16818110612cc757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050612d37826000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9c90919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350508080600101915050612c57565b5050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e7557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612eaf57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f0a57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f6557600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612fc057600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b635c538c0081565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806130b557503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061310d57503373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61311657600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131ab57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131e557600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60006315420b7160e01b868686868660405160200180877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405160208183030381529060405280519060200120905095945050505050565b600060418251146133dd57600090506134c7565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c111561343157600093505050506134c7565b601b8160ff16141580156134495750601c8160ff1614155b1561345a57600093505050506134c7565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156134b7573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b6134d5612add565b6134de57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561351857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561355157600080fd5b60006135668385613a9c90919063ffffffff16565b9050600a60179054906101000a900460ff1661358157600080fd5b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544210156135cd57600080fd5b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561361857600080fd5b613669816000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a4290919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000831180156136e85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156137815761373e836000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6137d2846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9c90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3505050505050565b60006338980f8260e01b8888888888888860405160200180897bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156139d35780820151818401526020810190506139b8565b50505050905090810190601f168015613a005780820380516001836020036101000a031916815260200191505b509950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b600080823b905060008111915050919050565b600082821115613a5157600080fd5b600082840390508091505092915050565b600080831415613a755760009050613a96565b6000828402905082848281613a8657fe5b0414613a9157600080fd5b809150505b92915050565b600080828401905083811015613ab157600080fd5b809150509291505056fea165627a7a72305820e7f304f4484d0f7faaef9ce545b5a3c6e7bbbd1887de8d2fff2b00cb11d2a9300029

Deployed Bytecode Sourcemap

2797:12919:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2797:12919:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3618:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2876:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2876:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10453:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10453:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3591:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13765:693;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;13765:693:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;13765:693:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13765:693:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13765:693:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13765:693:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8304:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14588:1126;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;14588:1126:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;14588:1126:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14588:1126:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14588:1126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;14588:1126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;14588:1126:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14588:1126:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14588:1126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;14588:1126:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14588:1126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8561:247;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8561:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2966:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7669:325;;;:::i;:::-;;6582:651;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6582:651:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6582:651:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6582:651:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6582:651:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6582:651:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6582:651:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6582:651:0;;;;;;;;;;;;:::i;:::-;;11583:204;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11583:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13054:538;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;13054:538:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;13054:538:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13054:538:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13054:538:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13054:538:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13054:538:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4790:138;;;:::i;:::-;;9709:105;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9709:105:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5520:202;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5520:202:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7448:215;;;:::i;:::-;;3536:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3960:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2923:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2923:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4160:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12308:214;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12308:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3818:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8399:156;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8399:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3860:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3902;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4934:375;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4934:375:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8000:194;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3368:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10935:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10935:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5757:678;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5757:678:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5757:678:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5757:678:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5757:678:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5757:678:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5757:678:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5757:678:0;;;;;;;;;;;;:::i;:::-;;3562:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4485:299;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4485:299:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4107:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5315:199;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5315:199:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3618:21;;;;;;;;;;;;;:::o;2876:41::-;;;;;;;;;;;;;;;;;;;:::o;10453:149::-;10520:4;10536:38;10545:10;10557:8;10567:6;10536:8;:38::i;:::-;10591:4;10584:11;;10453:149;;;;:::o;3591:21::-;;;;;;;;;;;;;:::o;13765:693::-;13892:4;13918:10;13929;13918:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13918:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13917:23;13909:32;;;;;;13951:16;13970:72;14009:4;14016:3;14021:6;14029:4;14035:6;13970:30;:72::i;:::-;13951:91;;14052:12;14067:35;14081:8;14091:10;14067:13;:35::i;:::-;14052:50;;14137:1;14121:18;;:4;:18;;;;14113:27;;;;;;14159:6;:12;14166:4;14159:12;;;;;;;;;;;;;;;:20;14172:6;14159:20;;;;;;;;;;;;;;;;;;;;;14158:21;14150:30;;;;;;14191:46;14201:4;14207:3;14212:6;14220:4;14226:10;14191:9;:46::i;:::-;14272:4;14247:10;14258;14247:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14247:22:0;;;;;;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14309:4;14286:6;:12;14293:4;14286:12;;;;;;;;;;;;;;;:20;14299:6;14286:20;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14344:10;14329:32;;14338:4;14329:32;;;14356:4;14329:32;;;;;;;;;;;;;;;;;;14405:10;14376:54;;14400:3;14376:54;;14394:4;14376:54;;;14417:6;14425:4;14376:54;;;;;;;;;;;;;;;;;;;;;;;;14447:4;14440:11;;;;13765:693;;;;;;;:::o;8304:89::-;8348:7;8374:12;;8367:19;;8304:89;:::o;14588:1126::-;14770:12;14803:17;:22;14821:3;14803:22;;;;;;;;;;;;;;;;;;;;;;;;;14795:31;;;;;;14845:10;14856;14845:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14845:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14844:23;14836:32;;;;;;14878:16;14897:99;14943:4;14950:3;14955:6;14963:4;14969:6;14977:11;14990:5;14897:37;:99::i;:::-;14878:118;;15006:12;15021:35;15035:8;15045:10;15021:13;:35::i;:::-;15006:50;;15091:1;15075:18;;:4;:18;;;;15067:27;;;;;;15113:6;:12;15120:4;15113:12;;;;;;;;;;;;;;;:20;15126:6;15113:20;;;;;;;;;;;;;;;;;;;;;15112:21;15104:30;;;;;;15145:46;15155:4;15161:3;15166:6;15174:4;15180:10;15145:9;:46::i;:::-;15226:4;15201:10;15212;15201:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15201:22:0;;;;;;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;15263:4;15240:6;:12;15247:4;15240:12;;;;;;;;;;;;;;;:20;15253:6;15240:20;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;15298:10;15283:32;;15292:4;15283:32;;;15310:4;15283:32;;;;;;;;;;;;;;;;;;15366:10;15330:81;;15361:3;15330:81;;15355:4;15330:81;;;15378:6;15386:4;15392:11;15405:5;15330:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15330:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15455:21;15472:3;15455:16;:21::i;:::-;15447:30;;;;;;15541:12;15555:17;15576:3;:8;;15625:11;15638:4;15644:6;15602:49;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15602::0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;15602:49:0;15653:5;15585:74;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15585:74:0;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15585:74:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15585:74:0;;;15576:84;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15576:84:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15540:120:0;;;;15678:7;15670:16;;;;;;15703:4;15696:11;;;;;;14588:1126;;;;;;;;;:::o;8561:247::-;8643:4;8659:44;8669:5;8676:3;8681:6;8689:1;8700;8659:9;:44::i;:::-;8713:67;8722:5;8729:10;8741:38;8772:6;8741:7;:14;8749:5;8741:14;;;;;;;;;;;;;;;:26;8756:10;8741:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;8713:8;:67::i;:::-;8797:4;8790:11;;8561:247;;;;;:::o;2966:35::-;2999:2;2966:35;:::o;7669:325::-;7730:5;;;;;;;;;;;7716:19;;:10;:19;;;7713:275;;;7771:5;7751:17;;:25;;;;;;;;;;;;;;;;;;7713:275;;;7810:6;;;;;;;;;;;7796:20;;:10;:20;;;7793:195;;;7852:5;7832:17;;:25;;;;;;;;;;;;;;;;;;7793:195;;;7891:6;;;;;;;;;;;7877:20;;:10;:20;;;7874:114;;;7933:5;7913:17;;:25;;;;;;;;;;;;;;;;;;7874:114;;;7969:8;;;7874:114;7793:195;7713:275;7669:325::o;6582:651::-;6702:10;6693:19;;:5;;;;;;;;;;;:19;;;6685:28;;;;;;6732:11;;;;;;;;;;;6731:12;6723:21;;;;;;6781:14;;:21;;6762:8;;:15;;:40;6754:49;;;;;;6840:3;6821:8;;:15;;:22;;6813:31;;;;;;6860:7;6870:1;6860:11;;6855:372;6877:8;;:15;;6873:1;:19;;;6855:372;;;6913:14;6930:8;;6939:1;6930:11;;;;;;;;;;;;;;;;;6913:28;;7044:1;7025:7;:15;7033:6;7025:15;;;;;;;;;;;;;;;;:20;7017:29;;;;;;7061:15;7079:49;4144:10;7080:31;4195:11;7080:14;;7095:1;7080:17;;;;;;;;;;;;;;;:21;;:31;;;;:::i;:::-;7079:37;;:49;;;;:::i;:::-;7061:67;;7161:7;7143;:15;7151:6;7143:15;;;;;;;;;;;;;;;:25;;;;7200:6;7187:29;;;7208:7;7187:29;;;;;;;;;;;;;;;;;;6855:372;;6894:3;;;;;;;6855:372;;;;6582:651;;;;:::o;11583:204::-;11665:4;11681:78;11690:10;11702:8;11712:46;11746:11;11712:7;:19;11720:10;11712:19;;;;;;;;;;;;;;;:29;11732:8;11712:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;11681:8;:78::i;:::-;11776:4;11769:11;;11583:204;;;;:::o;13054:538::-;13164:12;13196:17;:22;13214:3;13196:22;;;;;;;;;;;;;;;;;;;;;;;;;13188:31;;;;;;13237:21;13246:3;13251:6;13237:8;:21::i;:::-;13229:30;;;;;;13303:3;13275:60;;13291:10;13275:60;;;13308:6;13316:11;13329:5;13275:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13275:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13379:21;13396:3;13379:16;:21::i;:::-;13371:30;;;;;;13413:12;13427:17;13448:3;:8;;13497:11;13510:10;13522:6;13474:55;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13474:55:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;13474:55:0;13531:5;13457:80;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13457:80:0;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13457:80:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13457:80:0;;;13448:90;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13448:90:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;13412:126:0;;;;13556:7;13548:16;;;;;;13581:4;13574:11;;;;13054:538;;;;;;:::o;4790:138::-;4853:10;4841:22;;:8;;;;;;;;;;;:22;;;4833:31;;;;;;4882:8;;;;;;;;;;;4874:5;;:16;;;;;;;;;;;;;;;;;;4919:1;4900:8;;:21;;;;;;;;;;;;;;;;;;4790:138::o;9709:105::-;9765:7;9791:8;:16;9800:6;9791:16;;;;;;;;;;;;;;;;9784:23;;9709:105;;;:::o;5520:202::-;5604:10;5595:19;;:5;;;;;;;;;;;:19;;;:43;;;;5628:10;5618:20;;:6;;;;;;;;;;;:20;;;5595:43;:67;;;;5652:10;5642:20;;:6;;;;;;;;;;;:20;;;5595:67;5587:76;;;;;;5681:17;:34;5699:15;5681:34;;;;;;;;;;;;;;;;5674:41;;;;;;;;;;;5520:202;:::o;7448:215::-;7507:10;7498:19;;:5;;;;;;;;;;;:19;;;7490:28;;;;;;7537:11;;;;;;;;;;;7536:12;7528:21;;;;;;7585:1;7567:20;;:6;;;;;;;;;;;:20;;;;7559:29;;;;;;7624:1;7606:20;;:6;;;;;;;;;;;:20;;;;7598:29;;;;;;7652:4;7638:11;;:18;;;;;;;;;;;;;;;;;;7448:215::o;3536:20::-;;;;;;;;;;;;;:::o;3960:31::-;;;;;;;;;;;;;:::o;2923:37::-;;;;;;;;;;;;;;;;;;;:::o;4160:46::-;4195:11;4160:46;:::o;12308:214::-;12395:4;12411:83;12420:10;12432:8;12442:51;12476:16;12442:7;:19;12450:10;12442:19;;;;;;;;;;;;;;;:29;12462:8;12442:29;;;;;;;;;;;;;;;;:33;;:51;;;;:::i;:::-;12411:8;:83::i;:::-;12511:4;12504:11;;12308:214;;;;:::o;3818:36::-;;;;;;;;;;;;;:::o;8399:156::-;8462:4;8478:49;8488:10;8500:3;8505:6;8513:1;8524;8478:9;:49::i;:::-;8544:4;8537:11;;8399:156;;;;:::o;3860:36::-;;;;;;;;;;;;;:::o;3902:::-;;;;;;;;;;;;;:::o;4934:375::-;5020:10;5011:19;;:5;;;;;;;;;;;:19;;;5003:28;;;;;;5050:11;;;;;;;;;;;5049:12;5041:21;;;;;;5099:1;5080:21;;:7;:21;;;;5072:30;;;;;;5131:5;;;;;;;;;;;5120:16;;:7;:16;;;;5112:25;;;;;;5174:1;5155:21;;:7;:21;;;;5147:30;;;;;;5206:5;;;;;;;;;;;5195:16;;:7;:16;;;;5187:25;;;;;;5241:7;5230:18;;:7;:18;;;;5222:27;;;;;;5269:7;5260:6;;:16;;;;;;;;;;;;;;;;;;5295:7;5286:6;;:16;;;;;;;;;;;;;;;;;;4934:375;;:::o;8000:194::-;8050:4;8128:17;;;;;;;;;;;:38;;;;8149:17;;;;;;;;;;;8128:38;:59;;;;8170:17;;;;;;;;;;;8128:59;8121:66;;8000:194;:::o;3368:73::-;2999:2;3423:17;;3417:2;:23;3404:9;:37;3368:73;:::o;10935:132::-;11009:7;11035;:15;11043:6;11035:15;;;;;;;;;;;;;;;:25;11051:8;11035:25;;;;;;;;;;;;;;;;11028:32;;10935:132;;;;:::o;5757:678::-;5868:10;5859:19;;:5;;;;;;;;;;;:19;;;5851:28;;;;;;5898:11;;;;;;;;;;;5897:12;5889:21;;;;;;5950:8;;:15;;5928:11;;:18;;:37;5920:46;;;;;;6006:3;5984:11;;:18;;:25;;5976:34;;;;;;6026:7;6036:1;6026:11;;6021:408;6043:11;;:18;;6039:1;:22;;;6021:408;;;6082:14;6099:8;;6108:1;6099:11;;;;;;;;;;;;;;;6082:28;;6139:24;6156:6;6139:12;;:16;;:24;;;;:::i;:::-;6124:12;:39;;;;2999:2;3423:17;;3417:2;:23;3404:9;:37;6185:12;;:25;;6177:34;;;;;;6258:17;6278:11;;6290:1;6278:14;;;;;;;;;;;;;;;;;6258:34;;6328:31;6352:6;6328:8;:19;6337:9;6328:19;;;;;;;;;;;;;;;;:23;;:31;;;;:::i;:::-;6306:8;:19;6315:9;6306:19;;;;;;;;;;;;;;;:53;;;;6400:9;6379:39;;6396:1;6379:39;;;6411:6;6379:39;;;;;;;;;;;;;;;;;;6021:408;;6063:3;;;;;;;6021:408;;;;5757:678;;;;:::o;3562:23::-;;;;;;;;;;;;;:::o;4485:299::-;4565:10;4556:19;;:5;;;;;;;;;;;:19;;;4548:28;;;;;;4615:1;4594:23;;:9;:23;;;;4586:32;;;;;;4649:6;;;;;;;;;;;4636:19;;:9;:19;;;;4628:28;;;;;;4687:6;;;;;;;;;;;4674:19;;:9;:19;;;;4666:28;;;;;;4725:5;;;;;;;;;;;4712:18;;:9;:18;;;;4704:27;;;;;;4768:9;4757:8;;:20;;;;;;;;;;;;;;;;;;4485:299;:::o;4107:47::-;4144:10;4107:47;:::o;5315:199::-;5396:10;5387:19;;:5;;;;;;;;;;;:19;;;:43;;;;5420:10;5410:20;;:6;;;;;;;;;;;:20;;;5387:43;:67;;;;5444:10;5434:20;;:6;;;;;;;;;;;:20;;;5387:67;5379:76;;;;;;5503:4;5466:17;:34;5484:15;5466:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;5315:199;:::o;12790:258::-;12905:1;12885:22;;:8;:22;;;;12877:31;;;;;;12944:1;12926:20;;:6;:20;;;;12918:29;;;;;;12986:6;12958:7;:15;12966:6;12958:15;;;;;;;;;;;;;;;:25;12974:8;12958:25;;;;;;;;;;;;;;;:34;;;;13024:8;13007:34;;13016:6;13007:34;;;13034:6;13007:34;;;;;;;;;;;;;;;;;;12790:258;;;:::o;2129:337:2:-;2265:7;2411:10;2404:18;;2424:6;2432:3;2437:6;2445:4;2451:6;2393:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2393:65:2;;;2383:76;;;;;;2376:83;;2129:337;;;;;;;:::o;2874:1891::-;2952:7;3033:2;3013:9;:16;:22;3009:72;;3067:1;3051:19;;;;3009:72;3147:9;3166;3185:7;3431:4;3420:9;3416:20;3410:27;3405:32;;3476:4;3465:9;3461:20;3455:27;3450:32;;3529:4;3518:9;3514:20;3508:27;3505:1;3500:36;3495:41;;4447:66;4442:1;4434:10;;:79;4430:127;;;4544:1;4529:17;;;;;;;4430:127;4576:2;4571:1;:7;;;;:18;;;;;4587:2;4582:1;:7;;;;4571:18;4567:66;;;4620:1;4605:17;;;;;;;4567:66;4734:24;4744:4;4750:1;4753;4756;4734:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4734:24:2;;;;;;;;4727:31;;;;;2874:1891;;;;;:::o;8814:681:0:-;8939:19;:17;:19::i;:::-;8931:28;;;;;;8992:1;8977:17;;:3;:17;;;;8969:26;;;;;;9028:4;9013:20;;:3;:20;;;;9005:29;;;;;;9044:13;9060:16;9071:4;9060:6;:10;;:16;;;;:::i;:::-;9044:32;;9094:11;;;;;;;;;;;9086:20;;;;;;9131:7;:14;9139:5;9131:14;;;;;;;;;;;;;;;;9124:3;:21;;9116:30;;;;;;9190:8;:15;9199:5;9190:15;;;;;;;;;;;;;;;;9181:5;:24;;9173:33;;;;;;9235:26;9255:5;9235:8;:15;9244:5;9235:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;9217:8;:15;9226:5;9217:15;;;;;;;;;;;;;;;:44;;;;9282:1;9275:4;:8;:37;;;;;9310:1;9287:25;;:11;:25;;;;9275:37;9272:122;;;9352:31;9378:4;9352:8;:21;9361:11;9352:21;;;;;;;;;;;;;;;;:25;;:31;;;;:::i;:::-;9328:8;:21;9337:11;9328:21;;;;;;;;;;;;;;;:55;;;;9272:122;9420:25;9438:6;9420:8;:13;9429:3;9420:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;9404:8;:13;9413:3;9404:13;;;;;;;;;;;;;;;:41;;;;9476:3;9460:28;;9469:5;9460:28;;;9481:6;9460:28;;;;;;;;;;;;;;;;;;8814:681;;;;;;:::o;1695:428:2:-;1882:7;2048:10;2041:18;;2061:6;2069:3;2074:6;2082:4;2088:6;2096:11;2109:5;2030:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2030:85:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2030:85:2;;;2020:96;;;;;;2013:103;;1695:428;;;;;;;;;:::o;484:618::-;541:4;557:12;1064:4;1052:17;1044:25;;1094:1;1087:4;:8;1080:15;;;484:618;;;:::o;1255:131:1:-;1313:7;1341:1;1336;:6;;1328:15;;;;;;1349:9;1365:1;1361;:5;1349:17;;1380:1;1373:8;;;1255:131;;;;:::o;357:381::-;415:7;644:1;639;:6;635:35;;;662:1;655:8;;;;635:35;676:9;692:1;688;:5;676:17;;716:1;711;707;:5;;;;;;:10;699:19;;;;;;732:1;725:8;;;357:381;;;;;:::o;1459:131::-;1517:7;1532:9;1548:1;1544;:5;1532:17;;1568:1;1563;:6;;1555:15;;;;;;1584:1;1577:8;;;1459:131;;;;:::o

Swarm Source

bzzr://e7f304f4484d0f7faaef9ce545b5a3c6e7bbbd1887de8d2fff2b00cb11d2a930
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.