ETH Price: $2,498.75 (-0.70%)

Token

Bullish Coin (BULL)
 

Overview

Max Total Supply

1,000,000,000 BULL

Holders

77

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000822265626 BULL

Value
$0.00
0x835804dAFB911451EBAc7294895802BAFb90A9C3
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BullishCoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-18
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.19;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


/**
 * @dev Implementation of the {IERC20} interface.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     */
    function _createTotalSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

   
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}


// SafeMath library
library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }


    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract BullishCoin is ERC20, Ownable {

    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public immutable uniswapV2Pair;

    uint256 public liquidityFee = 1;
    uint256 public marketingFee = 1;
    uint256 public teamFee = 1; 
    uint256 public maxTransactionAmount = 10000000 * (10**18);
    uint256 private swapTokensAtAmount = 10000 * (10**18);

    address public marketingWallet = 0xEa943Ca2b2F7be854DFAA622834748b10fa99c95;
    address public teamWallet = 0xBE803939eE1C47dD7345a80378E5F54Dd980911f;

    bool private inSwapAndLiquify;
  
    // exclude from fees
    mapping (address => bool) private _isExcludedFromFees;
    
    event SwapEthForTokens(uint256 amountIn, address[] path);
    event SwapAndLiquify(uint256 tokensIntoLiqudity, uint256 ethReceived);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() ERC20("Bullish Coin", "BULL") {
    	IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;


        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(marketingWallet, true);
        excludeFromFees(teamWallet, true);
        
        /*
            internal function  that is only called here,
            and CANNOT be called ever again
        */
        _createTotalSupply(owner(), 1000000000 * (10**18));
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
       
        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to] && (from==uniswapV2Pair || to==uniswapV2Pair)){
            require(amount <= maxTransactionAmount, "amount exceeds the maxTransactionAmount.");
        }

        uint256 tokenBalance = balanceOf(address(this));
        bool overLiquidityThreshold = tokenBalance >= swapTokensAtAmount;

        // trigger swap if any of the conditions is met
        bool shouldSwap = overLiquidityThreshold;

        if(!inSwapAndLiquify && to==uniswapV2Pair && shouldSwap)
        {
            swapAndLiquify(swapTokensAtAmount);
        }

        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to] && (from==uniswapV2Pair || to==uniswapV2Pair)) {
            uint256 marketingShare = amount.mul(marketingFee).div(100);
            uint256 teamShare = amount.mul(teamFee).div(100);
            uint256 liquidityShare = amount.mul(liquidityFee).div(100);

            if(marketingShare > 0) {
                super._transfer(from, marketingWallet, marketingShare);
            }
            
            if(teamShare > 0) {
                super._transfer(from, teamWallet, teamShare);
            }

            if(liquidityShare > 0) {
                super._transfer(from, address(this), liquidityShare);
            }

            amount = amount.sub(marketingShare.add(teamShare).add(liquidityShare));

        }

        super._transfer(from, to, amount);

    }

    function swapAndLiquify(uint256 _swapThreshold) private lockTheSwap {
        //remove the stuck balance from the contract and send to marketing wallet
        if (address(this).balance >= 0.01 ether) {
            payable(marketingWallet).transfer(address(this).balance);
        }

        // split the contract balance into halves
        uint256 half = _swapThreshold.div(2);
        uint256 otherHalf = _swapThreshold.sub(half);

        // capture the contract's current ETH balance.
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half, address(this));

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount, address _to) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        if(allowance(address(this), address(uniswapV2Router)) < tokenAmount) {
          _approve(address(this), address(uniswapV2Router), ~uint256(0));
        }

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            _to,
            block.timestamp
        );
        
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    receive() external payable {

  	}
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapEthForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600755600160085560016009556a084595161401484a000000600a5569021e19e0c9bab2400000600b5573ea943ca2b2f7be854dfaa622834748b10fa99c95600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073be803939ee1c47dd7345a80378e5f54dd980911f600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000e757600080fd5b506040518060400160405280600c81526020017f42756c6c69736820436f696e00000000000000000000000000000000000000008152506040518060400160405280600481526020017f42554c4c00000000000000000000000000000000000000000000000000000000815250816003908162000165919062000b28565b50806004908162000177919062000b28565b5050506200019a6200018e6200046560201b60201c565b6200046d60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000c79565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b5919062000c79565b6040518363ffffffff1660e01b8152600401620002d492919062000cbc565b6020604051808303816000875af1158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000c79565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620003b3620003a56200053360201b60201c565b60016200055d60201b60201c565b620003c63060016200055d60201b60201c565b620003fb600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200055d60201b60201c565b62000430600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200055d60201b60201c565b6200045d620004446200053360201b60201c565b6b033b2e3c9fd0803ce80000006200072c60201b60201c565b505062000f48565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200056d6200046560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005936200053360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005e39062000d4a565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006789062000de2565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000720919062000e21565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200079e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007959062000e8e565b60405180910390fd5b620007b260008383620008a460201b60201c565b8060026000828254620007c6919062000edf565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200081d919062000edf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000884919062000f2b565b60405180910390a3620008a060008383620008a960201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200093057607f821691505b602082108103620009465762000945620008e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009b07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000971565b620009bc868362000971565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a0962000a03620009fd84620009d4565b620009de565b620009d4565b9050919050565b6000819050919050565b62000a2583620009e8565b62000a3d62000a348262000a10565b8484546200097e565b825550505050565b600090565b62000a5462000a45565b62000a6181848462000a1a565b505050565b5b8181101562000a895762000a7d60008262000a4a565b60018101905062000a67565b5050565b601f82111562000ad85762000aa2816200094c565b62000aad8462000961565b8101602085101562000abd578190505b62000ad562000acc8562000961565b83018262000a66565b50505b505050565b600082821c905092915050565b600062000afd6000198460080262000add565b1980831691505092915050565b600062000b18838362000aea565b9150826002028217905092915050565b62000b3382620008ae565b67ffffffffffffffff81111562000b4f5762000b4e620008b9565b5b62000b5b825462000917565b62000b6882828562000a8d565b600060209050601f83116001811462000ba0576000841562000b8b578287015190505b62000b97858262000b0a565b86555062000c07565b601f19841662000bb0866200094c565b60005b8281101562000bda5784890151825560018201915060208501945060208101905062000bb3565b8683101562000bfa578489015162000bf6601f89168262000aea565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c418262000c14565b9050919050565b62000c538162000c34565b811462000c5f57600080fd5b50565b60008151905062000c738162000c48565b92915050565b60006020828403121562000c925762000c9162000c0f565b5b600062000ca28482850162000c62565b91505092915050565b62000cb68162000c34565b82525050565b600060408201905062000cd3600083018562000cab565b62000ce2602083018462000cab565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d3260208362000ce9565b915062000d3f8262000cfa565b602082019050919050565b6000602082019050818103600083015262000d658162000d23565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b600062000dca602a8362000ce9565b915062000dd78262000d6c565b604082019050919050565b6000602082019050818103600083015262000dfd8162000dbb565b9050919050565b60008115159050919050565b62000e1b8162000e04565b82525050565b600060208201905062000e38600083018462000e10565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e76601f8362000ce9565b915062000e838262000e3e565b602082019050919050565b6000602082019050818103600083015262000ea98162000e67565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000eec82620009d4565b915062000ef983620009d4565b925082820190508082111562000f145762000f1362000eb0565b5b92915050565b62000f2581620009d4565b82525050565b600060208201905062000f42600083018462000f1a565b92915050565b6080516130c262000f876000396000818161086a01528181611285015281816112da015281816113aa015281816114bf015261151401526130c26000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb146104b9578063c0246668146104f6578063c8c8ebe41461051f578063d7c94efd1461054a578063dd62ed3e14610575578063f2fde38b146105b257610156565b8063715018a6146103b957806375f0a874146103d05780638da5cb5b146103fb57806395d89b411461042657806398118cb414610451578063a457c2d71461047c57610156565b80633950935111610108578063395093511461028157806349bd5a5e146102be5780634fbee193146102e957806359927044146103265780636b67c4df1461035157806370a082311461037c57610156565b806306fdde031461015b578063095ea7b3146101865780631694505e146101c357806318160ddd146101ee57806323b872dd14610219578063313ce5671461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105db565b60405161017d9190612180565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a8919061223b565b61066d565b6040516101ba9190612296565b60405180910390f35b3480156101cf57600080fd5b506101d861068b565b6040516101e59190612310565b60405180910390f35b3480156101fa57600080fd5b506102036106b1565b604051610210919061233a565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612355565b6106bb565b60405161024d9190612296565b60405180910390f35b34801561026257600080fd5b5061026b6107b3565b60405161027891906123c4565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a3919061223b565b6107bc565b6040516102b59190612296565b60405180910390f35b3480156102ca57600080fd5b506102d3610868565b6040516102e091906123ee565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190612409565b61088c565b60405161031d9190612296565b60405180910390f35b34801561033257600080fd5b5061033b6108e2565b60405161034891906123ee565b60405180910390f35b34801561035d57600080fd5b50610366610908565b604051610373919061233a565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190612409565b61090e565b6040516103b0919061233a565b60405180910390f35b3480156103c557600080fd5b506103ce610956565b005b3480156103dc57600080fd5b506103e56109de565b6040516103f291906123ee565b60405180910390f35b34801561040757600080fd5b50610410610a04565b60405161041d91906123ee565b60405180910390f35b34801561043257600080fd5b5061043b610a2e565b6040516104489190612180565b60405180910390f35b34801561045d57600080fd5b50610466610ac0565b604051610473919061233a565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e919061223b565b610ac6565b6040516104b09190612296565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db919061223b565b610bb1565b6040516104ed9190612296565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190612462565b610bcf565b005b34801561052b57600080fd5b50610534610d86565b604051610541919061233a565b60405180910390f35b34801561055657600080fd5b5061055f610d8c565b60405161056c919061233a565b60405180910390f35b34801561058157600080fd5b5061059c600480360381019061059791906124a2565b610d92565b6040516105a9919061233a565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190612409565b610e19565b005b6060600380546105ea90612511565b80601f016020809104026020016040519081016040528092919081815260200182805461061690612511565b80156106635780601f1061063857610100808354040283529160200191610663565b820191906000526020600020905b81548152906001019060200180831161064657829003601f168201915b5050505050905090565b600061068161067a610f10565b8484610f18565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006106c88484846110e1565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610713610f10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078a906125b4565b60405180910390fd5b6107a78561079f610f10565b858403610f18565b60019150509392505050565b60006012905090565b600061085e6107c9610f10565b8484600160006107d7610f10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108599190612603565b610f18565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61095e610f10565b73ffffffffffffffffffffffffffffffffffffffff1661097c610a04565b73ffffffffffffffffffffffffffffffffffffffff16146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990612683565b60405180910390fd5b6109dc60006116c0565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a3d90612511565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6990612511565b8015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b5050505050905090565b60075481565b60008060016000610ad5610f10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990612715565b60405180910390fd5b610ba6610b9d610f10565b85858403610f18565b600191505092915050565b6000610bc5610bbe610f10565b84846110e1565b6001905092915050565b610bd7610f10565b73ffffffffffffffffffffffffffffffffffffffff16610bf5610a04565b73ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290612683565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd4906127a7565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610d7a9190612296565b60405180910390a25050565b600a5481565b60095481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e21610f10565b73ffffffffffffffffffffffffffffffffffffffff16610e3f610a04565b73ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c90612683565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90612839565b60405180910390fd5b610f0d816116c0565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e906128cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed9061295d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d4919061233a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611150576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611147906129ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690612a81565b60405180910390fd5b600081036111d8576111d383836000611786565b6116bb565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561127c5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561132957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061132857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b1561137457600a54811115611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a90612b13565b60405180910390fd5b5b600061137f3061090e565b90506000600b5482101590506000819050600d60149054906101000a900460ff161580156113f857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156114015750805b1561141257611411600b54611a05565b5b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114b65750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561156357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061156257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b5b156116ac576000611592606461158460085488611b5490919063ffffffff16565b611bce90919063ffffffff16565b905060006115be60646115b060095489611b5490919063ffffffff16565b611bce90919063ffffffff16565b905060006115ea60646115dc6007548a611b5490919063ffffffff16565b611bce90919063ffffffff16565b905060008311156116235761162289600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611786565b5b600082111561165a5761165989600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611786565b5b600081111561166f5761166e893083611786565b5b6116a6611697826116898587611c1890919063ffffffff16565b611c1890919063ffffffff16565b88611c7690919063ffffffff16565b96505050505b6116b7868686611786565b5050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec906129ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90612a81565b60405180910390fd5b61186f838383611cc0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90612ba5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119889190612603565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119ec919061233a565b60405180910390a36119ff848484611cc5565b50505050565b6001600d60146101000a81548160ff021916908315150217905550662386f26fc100004710611a9857600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611a96573d6000803e3d6000fd5b505b6000611aae600283611bce90919063ffffffff16565b90506000611ac58284611c7690919063ffffffff16565b90506000479050611ad68330611cca565b6000611aeb8247611c7690919063ffffffff16565b9050611af78382611f44565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611b2a93929190612bc5565b60405180910390a1505050506000600d60146101000a81548160ff02191690831515021790555050565b6000808303611b665760009050611bc8565b60008284611b749190612bfc565b9050828482611b839190612c6d565b14611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba90612d10565b60405180910390fd5b809150505b92915050565b6000611c1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612029565b905092915050565b6000808284611c279190612603565b905083811015611c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6390612d7c565b60405180910390fd5b8091505092915050565b6000611cb883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061208c565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115611ce757611ce6612d9c565b5b604051908082528060200260200182016040528015611d155781602001602082028036833780820191505090505b5090503081600081518110611d2d57611d2c612dcb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df89190612e0f565b81600181518110611e0c57611e0b612dcb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082611e7330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d92565b1015611ea957611ea830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600019610f18565b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b8152600401611f0d959493929190612f35565b600060405180830381600087803b158015611f2757600080fd5b505af1158015611f3b573d6000803e3d6000fd5b50505050505050565b611f7130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f18565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611fbd610a04565b426040518863ffffffff1660e01b8152600401611fdf96959493929190612f8f565b60606040518083038185885af1158015611ffd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120229190613005565b5050505050565b60008083118290612070576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120679190612180565b60405180910390fd5b506000838561207f9190612c6d565b9050809150509392505050565b60008383111582906120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb9190612180565b60405180910390fd5b50600083856120e39190613058565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561212a57808201518184015260208101905061210f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612152826120f0565b61215c81856120fb565b935061216c81856020860161210c565b61217581612136565b840191505092915050565b6000602082019050818103600083015261219a8184612147565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121d2826121a7565b9050919050565b6121e2816121c7565b81146121ed57600080fd5b50565b6000813590506121ff816121d9565b92915050565b6000819050919050565b61221881612205565b811461222357600080fd5b50565b6000813590506122358161220f565b92915050565b60008060408385031215612252576122516121a2565b5b6000612260858286016121f0565b925050602061227185828601612226565b9150509250929050565b60008115159050919050565b6122908161227b565b82525050565b60006020820190506122ab6000830184612287565b92915050565b6000819050919050565b60006122d66122d16122cc846121a7565b6122b1565b6121a7565b9050919050565b60006122e8826122bb565b9050919050565b60006122fa826122dd565b9050919050565b61230a816122ef565b82525050565b60006020820190506123256000830184612301565b92915050565b61233481612205565b82525050565b600060208201905061234f600083018461232b565b92915050565b60008060006060848603121561236e5761236d6121a2565b5b600061237c868287016121f0565b935050602061238d868287016121f0565b925050604061239e86828701612226565b9150509250925092565b600060ff82169050919050565b6123be816123a8565b82525050565b60006020820190506123d960008301846123b5565b92915050565b6123e8816121c7565b82525050565b600060208201905061240360008301846123df565b92915050565b60006020828403121561241f5761241e6121a2565b5b600061242d848285016121f0565b91505092915050565b61243f8161227b565b811461244a57600080fd5b50565b60008135905061245c81612436565b92915050565b60008060408385031215612479576124786121a2565b5b6000612487858286016121f0565b92505060206124988582860161244d565b9150509250929050565b600080604083850312156124b9576124b86121a2565b5b60006124c7858286016121f0565b92505060206124d8858286016121f0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061252957607f821691505b60208210810361253c5761253b6124e2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061259e6028836120fb565b91506125a982612542565b604082019050919050565b600060208201905081810360008301526125cd81612591565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061260e82612205565b915061261983612205565b9250828201905080821115612631576126306125d4565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061266d6020836120fb565b915061267882612637565b602082019050919050565b6000602082019050818103600083015261269c81612660565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006126ff6025836120fb565b915061270a826126a3565b604082019050919050565b6000602082019050818103600083015261272e816126f2565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612791602a836120fb565b915061279c82612735565b604082019050919050565b600060208201905081810360008301526127c081612784565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006128236026836120fb565b915061282e826127c7565b604082019050919050565b6000602082019050818103600083015261285281612816565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128b56024836120fb565b91506128c082612859565b604082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129476022836120fb565b9150612952826128eb565b604082019050919050565b600060208201905081810360008301526129768161293a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006129d96025836120fb565b91506129e48261297d565b604082019050919050565b60006020820190508181036000830152612a08816129cc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a6b6023836120fb565b9150612a7682612a0f565b604082019050919050565b60006020820190508181036000830152612a9a81612a5e565b9050919050565b7f616d6f756e74206578636565647320746865206d61785472616e73616374696f60008201527f6e416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000612afd6028836120fb565b9150612b0882612aa1565b604082019050919050565b60006020820190508181036000830152612b2c81612af0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612b8f6026836120fb565b9150612b9a82612b33565b604082019050919050565b60006020820190508181036000830152612bbe81612b82565b9050919050565b6000606082019050612bda600083018661232b565b612be7602083018561232b565b612bf4604083018461232b565b949350505050565b6000612c0782612205565b9150612c1283612205565b9250828202612c2081612205565b91508282048414831517612c3757612c366125d4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c7882612205565b9150612c8383612205565b925082612c9357612c92612c3e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfa6021836120fb565b9150612d0582612c9e565b604082019050919050565b60006020820190508181036000830152612d2981612ced565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612d66601b836120fb565b9150612d7182612d30565b602082019050919050565b60006020820190508181036000830152612d9581612d59565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e09816121d9565b92915050565b600060208284031215612e2557612e246121a2565b5b6000612e3384828501612dfa565b91505092915050565b6000819050919050565b6000612e61612e5c612e5784612e3c565b6122b1565b612205565b9050919050565b612e7181612e46565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612eac816121c7565b82525050565b6000612ebe8383612ea3565b60208301905092915050565b6000602082019050919050565b6000612ee282612e77565b612eec8185612e82565b9350612ef783612e93565b8060005b83811015612f28578151612f0f8882612eb2565b9750612f1a83612eca565b925050600181019050612efb565b5085935050505092915050565b600060a082019050612f4a600083018861232b565b612f576020830187612e68565b8181036040830152612f698186612ed7565b9050612f7860608301856123df565b612f85608083018461232b565b9695505050505050565b600060c082019050612fa460008301896123df565b612fb1602083018861232b565b612fbe6040830187612e68565b612fcb6060830186612e68565b612fd860808301856123df565b612fe560a083018461232b565b979650505050505050565b600081519050612fff8161220f565b92915050565b60008060006060848603121561301e5761301d6121a2565b5b600061302c86828701612ff0565b935050602061303d86828701612ff0565b925050604061304e86828701612ff0565b9150509250925092565b600061306382612205565b915061306e83612205565b9250828203905081811115613086576130856125d4565b5b9291505056fea2646970667358221220af28e3098629fb0936d904fab750f5286c390a946d7598af2091df3a498e12d764736f6c63430008130033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb146104b9578063c0246668146104f6578063c8c8ebe41461051f578063d7c94efd1461054a578063dd62ed3e14610575578063f2fde38b146105b257610156565b8063715018a6146103b957806375f0a874146103d05780638da5cb5b146103fb57806395d89b411461042657806398118cb414610451578063a457c2d71461047c57610156565b80633950935111610108578063395093511461028157806349bd5a5e146102be5780634fbee193146102e957806359927044146103265780636b67c4df1461035157806370a082311461037c57610156565b806306fdde031461015b578063095ea7b3146101865780631694505e146101c357806318160ddd146101ee57806323b872dd14610219578063313ce5671461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105db565b60405161017d9190612180565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a8919061223b565b61066d565b6040516101ba9190612296565b60405180910390f35b3480156101cf57600080fd5b506101d861068b565b6040516101e59190612310565b60405180910390f35b3480156101fa57600080fd5b506102036106b1565b604051610210919061233a565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612355565b6106bb565b60405161024d9190612296565b60405180910390f35b34801561026257600080fd5b5061026b6107b3565b60405161027891906123c4565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a3919061223b565b6107bc565b6040516102b59190612296565b60405180910390f35b3480156102ca57600080fd5b506102d3610868565b6040516102e091906123ee565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190612409565b61088c565b60405161031d9190612296565b60405180910390f35b34801561033257600080fd5b5061033b6108e2565b60405161034891906123ee565b60405180910390f35b34801561035d57600080fd5b50610366610908565b604051610373919061233a565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190612409565b61090e565b6040516103b0919061233a565b60405180910390f35b3480156103c557600080fd5b506103ce610956565b005b3480156103dc57600080fd5b506103e56109de565b6040516103f291906123ee565b60405180910390f35b34801561040757600080fd5b50610410610a04565b60405161041d91906123ee565b60405180910390f35b34801561043257600080fd5b5061043b610a2e565b6040516104489190612180565b60405180910390f35b34801561045d57600080fd5b50610466610ac0565b604051610473919061233a565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e919061223b565b610ac6565b6040516104b09190612296565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db919061223b565b610bb1565b6040516104ed9190612296565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190612462565b610bcf565b005b34801561052b57600080fd5b50610534610d86565b604051610541919061233a565b60405180910390f35b34801561055657600080fd5b5061055f610d8c565b60405161056c919061233a565b60405180910390f35b34801561058157600080fd5b5061059c600480360381019061059791906124a2565b610d92565b6040516105a9919061233a565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190612409565b610e19565b005b6060600380546105ea90612511565b80601f016020809104026020016040519081016040528092919081815260200182805461061690612511565b80156106635780601f1061063857610100808354040283529160200191610663565b820191906000526020600020905b81548152906001019060200180831161064657829003601f168201915b5050505050905090565b600061068161067a610f10565b8484610f18565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006106c88484846110e1565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610713610f10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078a906125b4565b60405180910390fd5b6107a78561079f610f10565b858403610f18565b60019150509392505050565b60006012905090565b600061085e6107c9610f10565b8484600160006107d7610f10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108599190612603565b610f18565b6001905092915050565b7f000000000000000000000000b7a918f1a0e9a029b49fc5ce8f07f0dca6f6941481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61095e610f10565b73ffffffffffffffffffffffffffffffffffffffff1661097c610a04565b73ffffffffffffffffffffffffffffffffffffffff16146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990612683565b60405180910390fd5b6109dc60006116c0565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a3d90612511565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6990612511565b8015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b5050505050905090565b60075481565b60008060016000610ad5610f10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990612715565b60405180910390fd5b610ba6610b9d610f10565b85858403610f18565b600191505092915050565b6000610bc5610bbe610f10565b84846110e1565b6001905092915050565b610bd7610f10565b73ffffffffffffffffffffffffffffffffffffffff16610bf5610a04565b73ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290612683565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd4906127a7565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610d7a9190612296565b60405180910390a25050565b600a5481565b60095481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e21610f10565b73ffffffffffffffffffffffffffffffffffffffff16610e3f610a04565b73ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c90612683565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90612839565b60405180910390fd5b610f0d816116c0565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e906128cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed9061295d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110d4919061233a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611150576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611147906129ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690612a81565b60405180910390fd5b600081036111d8576111d383836000611786565b6116bb565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561127c5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561132957507f000000000000000000000000b7a918f1a0e9a029b49fc5ce8f07f0dca6f6941473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061132857507f000000000000000000000000b7a918f1a0e9a029b49fc5ce8f07f0dca6f6941473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b1561137457600a54811115611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a90612b13565b60405180910390fd5b5b600061137f3061090e565b90506000600b5482101590506000819050600d60149054906101000a900460ff161580156113f857507f000000000000000000000000b7a918f1a0e9a029b49fc5ce8f07f0dca6f6941473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156114015750805b1561141257611411600b54611a05565b5b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114b65750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561156357507f000000000000000000000000b7a918f1a0e9a029b49fc5ce8f07f0dca6f6941473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061156257507f000000000000000000000000b7a918f1a0e9a029b49fc5ce8f07f0dca6f6941473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b5b156116ac576000611592606461158460085488611b5490919063ffffffff16565b611bce90919063ffffffff16565b905060006115be60646115b060095489611b5490919063ffffffff16565b611bce90919063ffffffff16565b905060006115ea60646115dc6007548a611b5490919063ffffffff16565b611bce90919063ffffffff16565b905060008311156116235761162289600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611786565b5b600082111561165a5761165989600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611786565b5b600081111561166f5761166e893083611786565b5b6116a6611697826116898587611c1890919063ffffffff16565b611c1890919063ffffffff16565b88611c7690919063ffffffff16565b96505050505b6116b7868686611786565b5050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec906129ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90612a81565b60405180910390fd5b61186f838383611cc0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90612ba5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119889190612603565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119ec919061233a565b60405180910390a36119ff848484611cc5565b50505050565b6001600d60146101000a81548160ff021916908315150217905550662386f26fc100004710611a9857600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611a96573d6000803e3d6000fd5b505b6000611aae600283611bce90919063ffffffff16565b90506000611ac58284611c7690919063ffffffff16565b90506000479050611ad68330611cca565b6000611aeb8247611c7690919063ffffffff16565b9050611af78382611f44565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611b2a93929190612bc5565b60405180910390a1505050506000600d60146101000a81548160ff02191690831515021790555050565b6000808303611b665760009050611bc8565b60008284611b749190612bfc565b9050828482611b839190612c6d565b14611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba90612d10565b60405180910390fd5b809150505b92915050565b6000611c1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612029565b905092915050565b6000808284611c279190612603565b905083811015611c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6390612d7c565b60405180910390fd5b8091505092915050565b6000611cb883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061208c565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115611ce757611ce6612d9c565b5b604051908082528060200260200182016040528015611d155781602001602082028036833780820191505090505b5090503081600081518110611d2d57611d2c612dcb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df89190612e0f565b81600181518110611e0c57611e0b612dcb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082611e7330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d92565b1015611ea957611ea830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600019610f18565b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b8152600401611f0d959493929190612f35565b600060405180830381600087803b158015611f2757600080fd5b505af1158015611f3b573d6000803e3d6000fd5b50505050505050565b611f7130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f18565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611fbd610a04565b426040518863ffffffff1660e01b8152600401611fdf96959493929190612f8f565b60606040518083038185885af1158015611ffd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120229190613005565b5050505050565b60008083118290612070576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120679190612180565b60405180910390fd5b506000838561207f9190612c6d565b9050809150509392505050565b60008383111582906120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb9190612180565b60405180910390fd5b50600083856120e39190613058565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561212a57808201518184015260208101905061210f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612152826120f0565b61215c81856120fb565b935061216c81856020860161210c565b61217581612136565b840191505092915050565b6000602082019050818103600083015261219a8184612147565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121d2826121a7565b9050919050565b6121e2816121c7565b81146121ed57600080fd5b50565b6000813590506121ff816121d9565b92915050565b6000819050919050565b61221881612205565b811461222357600080fd5b50565b6000813590506122358161220f565b92915050565b60008060408385031215612252576122516121a2565b5b6000612260858286016121f0565b925050602061227185828601612226565b9150509250929050565b60008115159050919050565b6122908161227b565b82525050565b60006020820190506122ab6000830184612287565b92915050565b6000819050919050565b60006122d66122d16122cc846121a7565b6122b1565b6121a7565b9050919050565b60006122e8826122bb565b9050919050565b60006122fa826122dd565b9050919050565b61230a816122ef565b82525050565b60006020820190506123256000830184612301565b92915050565b61233481612205565b82525050565b600060208201905061234f600083018461232b565b92915050565b60008060006060848603121561236e5761236d6121a2565b5b600061237c868287016121f0565b935050602061238d868287016121f0565b925050604061239e86828701612226565b9150509250925092565b600060ff82169050919050565b6123be816123a8565b82525050565b60006020820190506123d960008301846123b5565b92915050565b6123e8816121c7565b82525050565b600060208201905061240360008301846123df565b92915050565b60006020828403121561241f5761241e6121a2565b5b600061242d848285016121f0565b91505092915050565b61243f8161227b565b811461244a57600080fd5b50565b60008135905061245c81612436565b92915050565b60008060408385031215612479576124786121a2565b5b6000612487858286016121f0565b92505060206124988582860161244d565b9150509250929050565b600080604083850312156124b9576124b86121a2565b5b60006124c7858286016121f0565b92505060206124d8858286016121f0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061252957607f821691505b60208210810361253c5761253b6124e2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061259e6028836120fb565b91506125a982612542565b604082019050919050565b600060208201905081810360008301526125cd81612591565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061260e82612205565b915061261983612205565b9250828201905080821115612631576126306125d4565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061266d6020836120fb565b915061267882612637565b602082019050919050565b6000602082019050818103600083015261269c81612660565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006126ff6025836120fb565b915061270a826126a3565b604082019050919050565b6000602082019050818103600083015261272e816126f2565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612791602a836120fb565b915061279c82612735565b604082019050919050565b600060208201905081810360008301526127c081612784565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006128236026836120fb565b915061282e826127c7565b604082019050919050565b6000602082019050818103600083015261285281612816565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128b56024836120fb565b91506128c082612859565b604082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129476022836120fb565b9150612952826128eb565b604082019050919050565b600060208201905081810360008301526129768161293a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006129d96025836120fb565b91506129e48261297d565b604082019050919050565b60006020820190508181036000830152612a08816129cc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a6b6023836120fb565b9150612a7682612a0f565b604082019050919050565b60006020820190508181036000830152612a9a81612a5e565b9050919050565b7f616d6f756e74206578636565647320746865206d61785472616e73616374696f60008201527f6e416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000612afd6028836120fb565b9150612b0882612aa1565b604082019050919050565b60006020820190508181036000830152612b2c81612af0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612b8f6026836120fb565b9150612b9a82612b33565b604082019050919050565b60006020820190508181036000830152612bbe81612b82565b9050919050565b6000606082019050612bda600083018661232b565b612be7602083018561232b565b612bf4604083018461232b565b949350505050565b6000612c0782612205565b9150612c1283612205565b9250828202612c2081612205565b91508282048414831517612c3757612c366125d4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c7882612205565b9150612c8383612205565b925082612c9357612c92612c3e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfa6021836120fb565b9150612d0582612c9e565b604082019050919050565b60006020820190508181036000830152612d2981612ced565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612d66601b836120fb565b9150612d7182612d30565b602082019050919050565b60006020820190508181036000830152612d9581612d59565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e09816121d9565b92915050565b600060208284031215612e2557612e246121a2565b5b6000612e3384828501612dfa565b91505092915050565b6000819050919050565b6000612e61612e5c612e5784612e3c565b6122b1565b612205565b9050919050565b612e7181612e46565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612eac816121c7565b82525050565b6000612ebe8383612ea3565b60208301905092915050565b6000602082019050919050565b6000612ee282612e77565b612eec8185612e82565b9350612ef783612e93565b8060005b83811015612f28578151612f0f8882612eb2565b9750612f1a83612eca565b925050600181019050612efb565b5085935050505092915050565b600060a082019050612f4a600083018861232b565b612f576020830187612e68565b8181036040830152612f698186612ed7565b9050612f7860608301856123df565b612f85608083018461232b565b9695505050505050565b600060c082019050612fa460008301896123df565b612fb1602083018861232b565b612fbe6040830187612e68565b612fcb6060830186612e68565b612fd860808301856123df565b612fe560a083018461232b565b979650505050505050565b600081519050612fff8161220f565b92915050565b60008060006060848603121561301e5761301d6121a2565b5b600061302c86828701612ff0565b935050602061303d86828701612ff0565b925050604061304e86828701612ff0565b9150509250925092565b600061306382612205565b915061306e83612205565b9250828203905081811115613086576130856125d4565b5b9291505056fea2646970667358221220af28e3098629fb0936d904fab750f5286c390a946d7598af2091df3a498e12d764736f6c63430008130033

Deployed Bytecode Sourcemap

11500:6562:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5174:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11583:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4356:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5409:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4198:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6019:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11631:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17884:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11996:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11716:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4527:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2528:94;;;;;;;;;;;;;:::i;:::-;;11914:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2042:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3987:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11678:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6352:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4724:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17586:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11788:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11754:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4962:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2777:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3768:100;3822:13;3855:5;3848:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:100;:::o;5174:169::-;5257:4;5274:39;5283:12;:10;:12::i;:::-;5297:7;5306:6;5274:8;:39::i;:::-;5331:4;5324:11;;5174:169;;;;:::o;11583:41::-;;;;;;;;;;;;;:::o;4356:108::-;4417:7;4444:12;;4437:19;;4356:108;:::o;5409:492::-;5549:4;5566:36;5576:6;5584:9;5595:6;5566:9;:36::i;:::-;5615:24;5642:11;:19;5654:6;5642:19;;;;;;;;;;;;;;;:33;5662:12;:10;:12::i;:::-;5642:33;;;;;;;;;;;;;;;;5615:60;;5714:6;5694:16;:26;;5686:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5801:57;5810:6;5818:12;:10;:12::i;:::-;5851:6;5832:16;:25;5801:8;:57::i;:::-;5889:4;5882:11;;;5409:492;;;;;:::o;4198:93::-;4256:5;4281:2;4274:9;;4198:93;:::o;6019:215::-;6107:4;6124:80;6133:12;:10;:12::i;:::-;6147:7;6193:10;6156:11;:25;6168:12;:10;:12::i;:::-;6156:25;;;;;;;;;;;;;;;:34;6182:7;6156:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6124:8;:80::i;:::-;6222:4;6215:11;;6019:215;;;;:::o;11631:38::-;;;:::o;17884:125::-;17949:4;17973:19;:28;17993:7;17973:28;;;;;;;;;;;;;;;;;;;;;;;;;17966:35;;17884:125;;;:::o;11996:70::-;;;;;;;;;;;;;:::o;11716:31::-;;;;:::o;4527:127::-;4601:7;4628:9;:18;4638:7;4628:18;;;;;;;;;;;;;;;;4621:25;;4527:127;;;:::o;2528:94::-;2273:12;:10;:12::i;:::-;2262:23;;:7;:5;:7::i;:::-;:23;;;2254:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2593:21:::1;2611:1;2593:9;:21::i;:::-;2528:94::o:0;11914:75::-;;;;;;;;;;;;;:::o;2042:87::-;2088:7;2115:6;;;;;;;;;;;2108:13;;2042:87;:::o;3987:104::-;4043:13;4076:7;4069:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3987:104;:::o;11678:31::-;;;;:::o;6352:413::-;6445:4;6462:24;6489:11;:25;6501:12;:10;:12::i;:::-;6489:25;;;;;;;;;;;;;;;:34;6515:7;6489:34;;;;;;;;;;;;;;;;6462:61;;6562:15;6542:16;:35;;6534:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6655:67;6664:12;:10;:12::i;:::-;6678:7;6706:15;6687:16;:34;6655:8;:67::i;:::-;6753:4;6746:11;;;6352:413;;;;:::o;4724:175::-;4810:4;4827:42;4837:12;:10;:12::i;:::-;4851:9;4862:6;4827:9;:42::i;:::-;4887:4;4880:11;;4724:175;;;;:::o;17586:290::-;2273:12;:10;:12::i;:::-;2262:23;;:7;:5;:7::i;:::-;:23;;;2254:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17711:8:::1;17679:40;;:19;:28;17699:7;17679:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;17671:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17808:8;17777:19;:28;17797:7;17777:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17850:7;17834:34;;;17859:8;17834:34;;;;;;:::i;:::-;;;;;;;;17586:290:::0;;:::o;11788:57::-;;;;:::o;11754:26::-;;;;:::o;4962:151::-;5051:7;5078:11;:18;5090:5;5078:18;;;;;;;;;;;;;;;:27;5097:7;5078:27;;;;;;;;;;;;;;;;5071:34;;4962:151;;;;:::o;2777:192::-;2273:12;:10;:12::i;:::-;2262:23;;:7;:5;:7::i;:::-;:23;;;2254:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2886:1:::1;2866:22;;:8;:22;;::::0;2858:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2942:19;2952:8;2942:9;:19::i;:::-;2777:192:::0;:::o;1234:98::-;1287:7;1314:10;1307:17;;1234:98;:::o;8258:380::-;8411:1;8394:19;;:5;:19;;;8386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8492:1;8473:21;;:7;:21;;;8465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8576:6;8546:11;:18;8558:5;8546:18;;;;;;;;;;;;;;;:27;8565:7;8546:27;;;;;;;;;;;;;;;:36;;;;8614:7;8598:32;;8607:5;8598:32;;;8623:6;8598:32;;;;;;:::i;:::-;;;;;;;;8258:380;;;:::o;13580:1850::-;13728:1;13712:18;;:4;:18;;;13704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13805:1;13791:16;;:2;:16;;;13783:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13880:1;13870:6;:11;13867:92;;13898:28;13914:4;13920:2;13924:1;13898:15;:28::i;:::-;13941:7;;13867:92;13975:19;:25;13995:4;13975:25;;;;;;;;;;;;;;;;;;;;;;;;;13974:26;:54;;;;;14005:19;:23;14025:2;14005:23;;;;;;;;;;;;;;;;;;;;;;;;;14004:24;13974:54;:100;;;;;14039:13;14033:19;;:4;:19;;;:40;;;;14060:13;14056:17;;:2;:17;;;14033:40;13974:100;13971:214;;;14108:20;;14098:6;:30;;14090:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;13971:214;14197:20;14220:24;14238:4;14220:9;:24::i;:::-;14197:47;;14255:27;14301:18;;14285:12;:34;;14255:64;;14389:15;14407:22;14389:40;;14446:16;;;;;;;;;;;14445:17;:38;;;;;14470:13;14466:17;;:2;:17;;;14445:38;:52;;;;;14487:10;14445:52;14442:127;;;14523:34;14538:18;;14523:14;:34::i;:::-;14442:127;14585:19;:25;14605:4;14585:25;;;;;;;;;;;;;;;;;;;;;;;;;14584:26;:54;;;;;14615:19;:23;14635:2;14615:23;;;;;;;;;;;;;;;;;;;;;;;;;14614:24;14584:54;:100;;;;;14649:13;14643:19;;:4;:19;;;:40;;;;14670:13;14666:17;;:2;:17;;;14643:40;14584:100;14581:794;;;14701:22;14726:33;14755:3;14726:24;14737:12;;14726:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;14701:58;;14774:17;14794:28;14818:3;14794:19;14805:7;;14794:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14774:48;;14837:22;14862:33;14891:3;14862:24;14873:12;;14862:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;14837:58;;14932:1;14915:14;:18;14912:112;;;14954:54;14970:4;14976:15;;;;;;;;;;;14993:14;14954:15;:54::i;:::-;14912:112;15067:1;15055:9;:13;15052:97;;;15089:44;15105:4;15111:10;;;;;;;;;;;15123:9;15089:15;:44::i;:::-;15052:97;15185:1;15168:14;:18;15165:110;;;15207:52;15223:4;15237;15244:14;15207:15;:52::i;:::-;15165:110;15300:61;15311:49;15345:14;15311:29;15330:9;15311:14;:18;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;15300:6;:10;;:61;;;;:::i;:::-;15291:70;;14686:689;;;14581:794;15387:33;15403:4;15409:2;15413:6;15387:15;:33::i;:::-;13693:1737;;;13580:1850;;;;:::o;2977:173::-;3033:16;3052:6;;;;;;;;;;;3033:25;;3078:8;3069:6;;:17;;;;;;;;;;;;;;;;;;3133:8;3102:40;;3123:8;3102:40;;;;;;;;;;;;3022:128;2977:173;:::o;6867:733::-;7025:1;7007:20;;:6;:20;;;6999:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7109:1;7088:23;;:9;:23;;;7080:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7164:47;7185:6;7193:9;7204:6;7164:20;:47::i;:::-;7224:21;7248:9;:17;7258:6;7248:17;;;;;;;;;;;;;;;;7224:41;;7301:6;7284:13;:23;;7276:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7422:6;7406:13;:22;7386:9;:17;7396:6;7386:17;;;;;;;;;;;;;;;:42;;;;7474:6;7450:9;:20;7460:9;7450:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7515:9;7498:35;;7507:6;7498:35;;;7526:6;7498:35;;;;;;:::i;:::-;;;;;;;;7546:46;7566:6;7574:9;7585:6;7546:19;:46::i;:::-;6988:612;6867:733;;;:::o;15438:912::-;12604:4;12585:16;;:23;;;;;;;;;;;;;;;;;;15629:10:::1;15604:21;:35;15600:124;;15664:15;;;;;;;;;;;15656:33;;:56;15690:21;15656:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15600:124;15787:12;15802:21;15821:1;15802:14;:18;;:21;;;;:::i;:::-;15787:36;;15834:17;15854:24;15873:4;15854:14;:18;;:24;;;;:::i;:::-;15834:44;;15947:22;15972:21;15947:46;;16038:37;16055:4;16069;16038:16;:37::i;:::-;16136:18;16157:41;16183:14;16157:21;:25;;:41;;;;:::i;:::-;16136:62;;16248:35;16261:9;16272:10;16248:12;:35::i;:::-;16299:43;16314:4;16320:10;16332:9;16299:43;;;;;;;;:::i;:::-;;;;;;;;15506:844;;;;12650:5:::0;12631:16;;:24;;;;;;;;;;;;;;;;;;15438:912;:::o;10503:250::-;10561:7;10590:1;10585;:6;10581:47;;10615:1;10608:8;;;;10581:47;10640:9;10656:1;10652;:5;;;;:::i;:::-;10640:17;;10685:1;10680;10676;:5;;;;:::i;:::-;:10;10668:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10744:1;10737:8;;;10503:250;;;;;:::o;10763:132::-;10821:7;10848:39;10852:1;10855;10848:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10841:46;;10763:132;;;;:::o;9970:181::-;10028:7;10048:9;10064:1;10060;:5;;;;:::i;:::-;10048:17;;10089:1;10084;:6;;10076:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10142:1;10135:8;;;9970:181;;;;:::o;10159:136::-;10217:7;10244:43;10248:1;10251;10244:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10237:50;;10159:136;;;;:::o;8771:125::-;;;;:::o;9028:124::-;;;;:::o;16879:695::-;17018:21;17056:1;17042:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17018:40;;17087:4;17069;17074:1;17069:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17113:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17103:4;17108:1;17103:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17204:11;17151:50;17169:4;17184:15;;;;;;;;;;;17151:9;:50::i;:::-;:64;17148:156;;;17230:62;17247:4;17262:15;;;;;;;;;;;17289:1;17280:11;17230:8;:62::i;:::-;17148:156;17342:15;;;;;;;;;;;:66;;;17423:11;17449:1;17493:4;17512:3;17530:15;17342:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16947:627;16879:695;;:::o;16358:513::-;16506:62;16523:4;16538:15;;;;;;;;;;;16556:11;16506:8;:62::i;:::-;16611:15;;;;;;;;;;;:31;;;16650:9;16683:4;16703:11;16729:1;16772;16815:7;:5;:7::i;:::-;16837:15;16611:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16358:513;;:::o;10903:278::-;10989:7;11021:1;11017;:5;11024:12;11009:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11048:9;11064:1;11060;:5;;;;:::i;:::-;11048:17;;11172:1;11165:8;;;10903:278;;;;;:::o;10303:192::-;10389:7;10422:1;10417;:6;;10425:12;10409:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10449:9;10465:1;10461;:5;;;;:::i;:::-;10449:17;;10486:1;10479:8;;;10303:192;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:116::-;6583:21;6598:5;6583:21;:::i;:::-;6576:5;6573:32;6563:60;;6619:1;6616;6609:12;6563:60;6513:116;:::o;6635:133::-;6678:5;6716:6;6703:20;6694:29;;6732:30;6756:5;6732:30;:::i;:::-;6635:133;;;;:::o;6774:468::-;6839:6;6847;6896:2;6884:9;6875:7;6871:23;6867:32;6864:119;;;6902:79;;:::i;:::-;6864:119;7022:1;7047:53;7092:7;7083:6;7072:9;7068:22;7047:53;:::i;:::-;7037:63;;6993:117;7149:2;7175:50;7217:7;7208:6;7197:9;7193:22;7175:50;:::i;:::-;7165:60;;7120:115;6774:468;;;;;:::o;7248:474::-;7316:6;7324;7373:2;7361:9;7352:7;7348:23;7344:32;7341:119;;;7379:79;;:::i;:::-;7341:119;7499:1;7524:53;7569:7;7560:6;7549:9;7545:22;7524:53;:::i;:::-;7514:63;;7470:117;7626:2;7652:53;7697:7;7688:6;7677:9;7673:22;7652:53;:::i;:::-;7642:63;;7597:118;7248:474;;;;;:::o;7728:180::-;7776:77;7773:1;7766:88;7873:4;7870:1;7863:15;7897:4;7894:1;7887:15;7914:320;7958:6;7995:1;7989:4;7985:12;7975:22;;8042:1;8036:4;8032:12;8063:18;8053:81;;8119:4;8111:6;8107:17;8097:27;;8053:81;8181:2;8173:6;8170:14;8150:18;8147:38;8144:84;;8200:18;;:::i;:::-;8144:84;7965:269;7914:320;;;:::o;8240:227::-;8380:34;8376:1;8368:6;8364:14;8357:58;8449:10;8444:2;8436:6;8432:15;8425:35;8240:227;:::o;8473:366::-;8615:3;8636:67;8700:2;8695:3;8636:67;:::i;:::-;8629:74;;8712:93;8801:3;8712:93;:::i;:::-;8830:2;8825:3;8821:12;8814:19;;8473:366;;;:::o;8845:419::-;9011:4;9049:2;9038:9;9034:18;9026:26;;9098:9;9092:4;9088:20;9084:1;9073:9;9069:17;9062:47;9126:131;9252:4;9126:131;:::i;:::-;9118:139;;8845:419;;;:::o;9270:180::-;9318:77;9315:1;9308:88;9415:4;9412:1;9405:15;9439:4;9436:1;9429:15;9456:191;9496:3;9515:20;9533:1;9515:20;:::i;:::-;9510:25;;9549:20;9567:1;9549:20;:::i;:::-;9544:25;;9592:1;9589;9585:9;9578:16;;9613:3;9610:1;9607:10;9604:36;;;9620:18;;:::i;:::-;9604:36;9456:191;;;;:::o;9653:182::-;9793:34;9789:1;9781:6;9777:14;9770:58;9653:182;:::o;9841:366::-;9983:3;10004:67;10068:2;10063:3;10004:67;:::i;:::-;9997:74;;10080:93;10169:3;10080:93;:::i;:::-;10198:2;10193:3;10189:12;10182:19;;9841:366;;;:::o;10213:419::-;10379:4;10417:2;10406:9;10402:18;10394:26;;10466:9;10460:4;10456:20;10452:1;10441:9;10437:17;10430:47;10494:131;10620:4;10494:131;:::i;:::-;10486:139;;10213:419;;;:::o;10638:224::-;10778:34;10774:1;10766:6;10762:14;10755:58;10847:7;10842:2;10834:6;10830:15;10823:32;10638:224;:::o;10868:366::-;11010:3;11031:67;11095:2;11090:3;11031:67;:::i;:::-;11024:74;;11107:93;11196:3;11107:93;:::i;:::-;11225:2;11220:3;11216:12;11209:19;;10868:366;;;:::o;11240:419::-;11406:4;11444:2;11433:9;11429:18;11421:26;;11493:9;11487:4;11483:20;11479:1;11468:9;11464:17;11457:47;11521:131;11647:4;11521:131;:::i;:::-;11513:139;;11240:419;;;:::o;11665:229::-;11805:34;11801:1;11793:6;11789:14;11782:58;11874:12;11869:2;11861:6;11857:15;11850:37;11665:229;:::o;11900:366::-;12042:3;12063:67;12127:2;12122:3;12063:67;:::i;:::-;12056:74;;12139:93;12228:3;12139:93;:::i;:::-;12257:2;12252:3;12248:12;12241:19;;11900:366;;;:::o;12272:419::-;12438:4;12476:2;12465:9;12461:18;12453:26;;12525:9;12519:4;12515:20;12511:1;12500:9;12496:17;12489:47;12553:131;12679:4;12553:131;:::i;:::-;12545:139;;12272:419;;;:::o;12697:225::-;12837:34;12833:1;12825:6;12821:14;12814:58;12906:8;12901:2;12893:6;12889:15;12882:33;12697:225;:::o;12928:366::-;13070:3;13091:67;13155:2;13150:3;13091:67;:::i;:::-;13084:74;;13167:93;13256:3;13167:93;:::i;:::-;13285:2;13280:3;13276:12;13269:19;;12928:366;;;:::o;13300:419::-;13466:4;13504:2;13493:9;13489:18;13481:26;;13553:9;13547:4;13543:20;13539:1;13528:9;13524:17;13517:47;13581:131;13707:4;13581:131;:::i;:::-;13573:139;;13300:419;;;:::o;13725:223::-;13865:34;13861:1;13853:6;13849:14;13842:58;13934:6;13929:2;13921:6;13917:15;13910:31;13725:223;:::o;13954:366::-;14096:3;14117:67;14181:2;14176:3;14117:67;:::i;:::-;14110:74;;14193:93;14282:3;14193:93;:::i;:::-;14311:2;14306:3;14302:12;14295:19;;13954:366;;;:::o;14326:419::-;14492:4;14530:2;14519:9;14515:18;14507:26;;14579:9;14573:4;14569:20;14565:1;14554:9;14550:17;14543:47;14607:131;14733:4;14607:131;:::i;:::-;14599:139;;14326:419;;;:::o;14751:221::-;14891:34;14887:1;14879:6;14875:14;14868:58;14960:4;14955:2;14947:6;14943:15;14936:29;14751:221;:::o;14978:366::-;15120:3;15141:67;15205:2;15200:3;15141:67;:::i;:::-;15134:74;;15217:93;15306:3;15217:93;:::i;:::-;15335:2;15330:3;15326:12;15319:19;;14978:366;;;:::o;15350:419::-;15516:4;15554:2;15543:9;15539:18;15531:26;;15603:9;15597:4;15593:20;15589:1;15578:9;15574:17;15567:47;15631:131;15757:4;15631:131;:::i;:::-;15623:139;;15350:419;;;:::o;15775:224::-;15915:34;15911:1;15903:6;15899:14;15892:58;15984:7;15979:2;15971:6;15967:15;15960:32;15775:224;:::o;16005:366::-;16147:3;16168:67;16232:2;16227:3;16168:67;:::i;:::-;16161:74;;16244:93;16333:3;16244:93;:::i;:::-;16362:2;16357:3;16353:12;16346:19;;16005:366;;;:::o;16377:419::-;16543:4;16581:2;16570:9;16566:18;16558:26;;16630:9;16624:4;16620:20;16616:1;16605:9;16601:17;16594:47;16658:131;16784:4;16658:131;:::i;:::-;16650:139;;16377:419;;;:::o;16802:222::-;16942:34;16938:1;16930:6;16926:14;16919:58;17011:5;17006:2;16998:6;16994:15;16987:30;16802:222;:::o;17030:366::-;17172:3;17193:67;17257:2;17252:3;17193:67;:::i;:::-;17186:74;;17269:93;17358:3;17269:93;:::i;:::-;17387:2;17382:3;17378:12;17371:19;;17030:366;;;:::o;17402:419::-;17568:4;17606:2;17595:9;17591:18;17583:26;;17655:9;17649:4;17645:20;17641:1;17630:9;17626:17;17619:47;17683:131;17809:4;17683:131;:::i;:::-;17675:139;;17402:419;;;:::o;17827:227::-;17967:34;17963:1;17955:6;17951:14;17944:58;18036:10;18031:2;18023:6;18019:15;18012:35;17827:227;:::o;18060:366::-;18202:3;18223:67;18287:2;18282:3;18223:67;:::i;:::-;18216:74;;18299:93;18388:3;18299:93;:::i;:::-;18417:2;18412:3;18408:12;18401:19;;18060:366;;;:::o;18432:419::-;18598:4;18636:2;18625:9;18621:18;18613:26;;18685:9;18679:4;18675:20;18671:1;18660:9;18656:17;18649:47;18713:131;18839:4;18713:131;:::i;:::-;18705:139;;18432:419;;;:::o;18857:225::-;18997:34;18993:1;18985:6;18981:14;18974:58;19066:8;19061:2;19053:6;19049:15;19042:33;18857:225;:::o;19088:366::-;19230:3;19251:67;19315:2;19310:3;19251:67;:::i;:::-;19244:74;;19327:93;19416:3;19327:93;:::i;:::-;19445:2;19440:3;19436:12;19429:19;;19088:366;;;:::o;19460:419::-;19626:4;19664:2;19653:9;19649:18;19641:26;;19713:9;19707:4;19703:20;19699:1;19688:9;19684:17;19677:47;19741:131;19867:4;19741:131;:::i;:::-;19733:139;;19460:419;;;:::o;19885:442::-;20034:4;20072:2;20061:9;20057:18;20049:26;;20085:71;20153:1;20142:9;20138:17;20129:6;20085:71;:::i;:::-;20166:72;20234:2;20223:9;20219:18;20210:6;20166:72;:::i;:::-;20248;20316:2;20305:9;20301:18;20292:6;20248:72;:::i;:::-;19885:442;;;;;;:::o;20333:410::-;20373:7;20396:20;20414:1;20396:20;:::i;:::-;20391:25;;20430:20;20448:1;20430:20;:::i;:::-;20425:25;;20485:1;20482;20478:9;20507:30;20525:11;20507:30;:::i;:::-;20496:41;;20686:1;20677:7;20673:15;20670:1;20667:22;20647:1;20640:9;20620:83;20597:139;;20716:18;;:::i;:::-;20597:139;20381:362;20333:410;;;;:::o;20749:180::-;20797:77;20794:1;20787:88;20894:4;20891:1;20884:15;20918:4;20915:1;20908:15;20935:185;20975:1;20992:20;21010:1;20992:20;:::i;:::-;20987:25;;21026:20;21044:1;21026:20;:::i;:::-;21021:25;;21065:1;21055:35;;21070:18;;:::i;:::-;21055:35;21112:1;21109;21105:9;21100:14;;20935:185;;;;:::o;21126:220::-;21266:34;21262:1;21254:6;21250:14;21243:58;21335:3;21330:2;21322:6;21318:15;21311:28;21126:220;:::o;21352:366::-;21494:3;21515:67;21579:2;21574:3;21515:67;:::i;:::-;21508:74;;21591:93;21680:3;21591:93;:::i;:::-;21709:2;21704:3;21700:12;21693:19;;21352:366;;;:::o;21724:419::-;21890:4;21928:2;21917:9;21913:18;21905:26;;21977:9;21971:4;21967:20;21963:1;21952:9;21948:17;21941:47;22005:131;22131:4;22005:131;:::i;:::-;21997:139;;21724:419;;;:::o;22149:177::-;22289:29;22285:1;22277:6;22273:14;22266:53;22149:177;:::o;22332:366::-;22474:3;22495:67;22559:2;22554:3;22495:67;:::i;:::-;22488:74;;22571:93;22660:3;22571:93;:::i;:::-;22689:2;22684:3;22680:12;22673:19;;22332:366;;;:::o;22704:419::-;22870:4;22908:2;22897:9;22893:18;22885:26;;22957:9;22951:4;22947:20;22943:1;22932:9;22928:17;22921:47;22985:131;23111:4;22985:131;:::i;:::-;22977:139;;22704:419;;;:::o;23129:180::-;23177:77;23174:1;23167:88;23274:4;23271:1;23264:15;23298:4;23295:1;23288:15;23315:180;23363:77;23360:1;23353:88;23460:4;23457:1;23450:15;23484:4;23481:1;23474:15;23501:143;23558:5;23589:6;23583:13;23574:22;;23605:33;23632:5;23605:33;:::i;:::-;23501:143;;;;:::o;23650:351::-;23720:6;23769:2;23757:9;23748:7;23744:23;23740:32;23737:119;;;23775:79;;:::i;:::-;23737:119;23895:1;23920:64;23976:7;23967:6;23956:9;23952:22;23920:64;:::i;:::-;23910:74;;23866:128;23650:351;;;;:::o;24007:85::-;24052:7;24081:5;24070:16;;24007:85;;;:::o;24098:158::-;24156:9;24189:61;24207:42;24216:32;24242:5;24216:32;:::i;:::-;24207:42;:::i;:::-;24189:61;:::i;:::-;24176:74;;24098:158;;;:::o;24262:147::-;24357:45;24396:5;24357:45;:::i;:::-;24352:3;24345:58;24262:147;;:::o;24415:114::-;24482:6;24516:5;24510:12;24500:22;;24415:114;;;:::o;24535:184::-;24634:11;24668:6;24663:3;24656:19;24708:4;24703:3;24699:14;24684:29;;24535:184;;;;:::o;24725:132::-;24792:4;24815:3;24807:11;;24845:4;24840:3;24836:14;24828:22;;24725:132;;;:::o;24863:108::-;24940:24;24958:5;24940:24;:::i;:::-;24935:3;24928:37;24863:108;;:::o;24977:179::-;25046:10;25067:46;25109:3;25101:6;25067:46;:::i;:::-;25145:4;25140:3;25136:14;25122:28;;24977:179;;;;:::o;25162:113::-;25232:4;25264;25259:3;25255:14;25247:22;;25162:113;;;:::o;25311:732::-;25430:3;25459:54;25507:5;25459:54;:::i;:::-;25529:86;25608:6;25603:3;25529:86;:::i;:::-;25522:93;;25639:56;25689:5;25639:56;:::i;:::-;25718:7;25749:1;25734:284;25759:6;25756:1;25753:13;25734:284;;;25835:6;25829:13;25862:63;25921:3;25906:13;25862:63;:::i;:::-;25855:70;;25948:60;26001:6;25948:60;:::i;:::-;25938:70;;25794:224;25781:1;25778;25774:9;25769:14;;25734:284;;;25738:14;26034:3;26027:10;;25435:608;;;25311:732;;;;:::o;26049:831::-;26312:4;26350:3;26339:9;26335:19;26327:27;;26364:71;26432:1;26421:9;26417:17;26408:6;26364:71;:::i;:::-;26445:80;26521:2;26510:9;26506:18;26497:6;26445:80;:::i;:::-;26572:9;26566:4;26562:20;26557:2;26546:9;26542:18;26535:48;26600:108;26703:4;26694:6;26600:108;:::i;:::-;26592:116;;26718:72;26786:2;26775:9;26771:18;26762:6;26718:72;:::i;:::-;26800:73;26868:3;26857:9;26853:19;26844:6;26800:73;:::i;:::-;26049:831;;;;;;;;:::o;26886:807::-;27135:4;27173:3;27162:9;27158:19;27150:27;;27187:71;27255:1;27244:9;27240:17;27231:6;27187:71;:::i;:::-;27268:72;27336:2;27325:9;27321:18;27312:6;27268:72;:::i;:::-;27350:80;27426:2;27415:9;27411:18;27402:6;27350:80;:::i;:::-;27440;27516:2;27505:9;27501:18;27492:6;27440:80;:::i;:::-;27530:73;27598:3;27587:9;27583:19;27574:6;27530:73;:::i;:::-;27613;27681:3;27670:9;27666:19;27657:6;27613:73;:::i;:::-;26886:807;;;;;;;;;:::o;27699:143::-;27756:5;27787:6;27781:13;27772:22;;27803:33;27830:5;27803:33;:::i;:::-;27699:143;;;;:::o;27848:663::-;27936:6;27944;27952;28001:2;27989:9;27980:7;27976:23;27972:32;27969:119;;;28007:79;;:::i;:::-;27969:119;28127:1;28152:64;28208:7;28199:6;28188:9;28184:22;28152:64;:::i;:::-;28142:74;;28098:128;28265:2;28291:64;28347:7;28338:6;28327:9;28323:22;28291:64;:::i;:::-;28281:74;;28236:129;28404:2;28430:64;28486:7;28477:6;28466:9;28462:22;28430:64;:::i;:::-;28420:74;;28375:129;27848:663;;;;;:::o;28517:194::-;28557:4;28577:20;28595:1;28577:20;:::i;:::-;28572:25;;28611:20;28629:1;28611:20;:::i;:::-;28606:25;;28655:1;28652;28648:9;28640:17;;28679:1;28673:4;28670:11;28667:37;;;28684:18;;:::i;:::-;28667:37;28517:194;;;;:::o

Swarm Source

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