ETH Price: $2,417.33 (-0.02%)

Token

Squirrel With A Gun (ACORN)
 

Overview

Max Total Supply

1,000,000,000,000 ACORN

Holders

79

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
276,418,586.811711847299566932 ACORN

Value
$0.00
0x32086d2dc4cc1869b5e4184dc322af1c3550a4db
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:
ACORN

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-16
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(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);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

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

    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);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

contract ACORN is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    uint256 private _liveBlock;
    uint256 private _maxTransactionAmount;
    uint256 private _maxWallet;
        
    bool private _limitsInEffect = true;
    
    mapping (address => bool) private _isExcludedMaxTransactionAmount;
    mapping (address => bool) private _automatedMarketMakerPairs;
    mapping(address => uint256) private _holderLastTransferBlock;

    constructor() ERC20("Squirrel With A Gun", "ACORN") payable {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;
                        
        uint256 totalSupply = 1e12 * 1e18;

        _maxTransactionAmount = totalSupply * 5 / 1000;
        _maxWallet = totalSupply * 25 / 1000;
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(address(0x000000000000000000000000000000000000dEaD), totalSupply / 100 * 50);
        _mint(address(this), totalSupply / 100 * 50);
    }

    /**
    * @dev Once live, can never be switched off
    */
    function startTrading(uint256 number) external onlyOwner() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance} (
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        _liveBlock = block.number.add(number);
    }

    /**
    * @dev Remove limits after token is somewhat stable
    */
    function removeLimits() external onlyOwner() {
        _limitsInEffect = false;
    }

    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;
        }

        // all to secure a smooth launch
        if (_limitsInEffect) {
            if (from != address(this) && to != address(this)) {
                if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                    require(_holderLastTransferBlock[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                    _holderLastTransferBlock[tx.origin] = block.number;
                }

                // on buy
                if (_automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= _maxTransactionAmount, "_transfer:: Buy transfer amount exceeds the _maxTransactionAmount.");
                    require(amount + balanceOf(to) <= _maxWallet, "_transfer:: Max wallet exceeded");
                }
                
                // on sell
                else if (_automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= _maxTransactionAmount, "_transfer:: Sell transfer amount exceeds the _maxTransactionAmount.");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= _maxWallet, "_transfer:: Max wallet exceeded");
                }
            }
        }

        super._transfer(from, to, amount);
    }

    /**
    * @dev In case any eth is stuck in the contract
    */
    function withdrawContractETH() external {
        payable(owner()).transfer(address(this).balance);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"withdrawContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600b60006101000a81548160ff0219169083151502179055506040518060400160405280601381526020017f537175697272656c205769746820412047756e000000000000000000000000008152506040518060400160405280600581526020017f41434f524e00000000000000000000000000000000000000000000000000000081525081600390816200009c91906200070d565b508060049081620000ae91906200070d565b505050620000d1620000c56200024360201b60201c565b6200024b60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006c0c9f2c9cd04674edea4000000090506103e8600582620001a7919062000823565b620001b39190620008b3565b6009819055506103e8601982620001cb919062000823565b620001d79190620008b3565b600a819055506200020d61dead6032606484620001f59190620008b3565b62000201919062000823565b6200031160201b60201c565b6200023b306032606484620002239190620008b3565b6200022f919062000823565b6200031160201b60201c565b5050620009f9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200037a906200094c565b60405180910390fd5b62000397600083836200048960201b60201c565b8060026000828254620003ab91906200096e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200040291906200096e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004699190620009dc565b60405180910390a362000485600083836200048e60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200051557607f821691505b6020821081036200052b576200052a620004cd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000556565b620005a1868362000556565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005ee620005e8620005e284620005b9565b620005c3565b620005b9565b9050919050565b6000819050919050565b6200060a83620005cd565b620006226200061982620005f5565b84845462000563565b825550505050565b600090565b620006396200062a565b62000646818484620005ff565b505050565b5b818110156200066e57620006626000826200062f565b6001810190506200064c565b5050565b601f821115620006bd57620006878162000531565b620006928462000546565b81016020851015620006a2578190505b620006ba620006b18562000546565b8301826200064b565b50505b505050565b600082821c905092915050565b6000620006e260001984600802620006c2565b1980831691505092915050565b6000620006fd8383620006cf565b9150826002028217905092915050565b620007188262000493565b67ffffffffffffffff8111156200073457620007336200049e565b5b620007408254620004fc565b6200074d82828562000672565b600060209050601f83116001811462000785576000841562000770578287015190505b6200077c8582620006ef565b865550620007ec565b601f198416620007958662000531565b60005b82811015620007bf5784890151825560018201915060208501945060208101905062000798565b86831015620007df5784890151620007db601f891682620006cf565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200083082620005b9565b91506200083d83620005b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620008795762000878620007f4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008c082620005b9565b9150620008cd83620005b9565b925082620008e057620008df62000884565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000934601f83620008eb565b91506200094182620008fc565b602082019050919050565b60006020820190508181036000830152620009678162000925565b9050919050565b60006200097b82620005b9565b91506200098883620005b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620009c057620009bf620007f4565b5b828201905092915050565b620009d681620005b9565b82525050565b6000602082019050620009f36000830184620009cb565b92915050565b61284e8062000a096000396000f3fe6080604052600436106101025760003560e01c806370a082311161009557806395d89b411161006457806395d89b411461031c578063a457c2d714610347578063a9059cbb14610384578063dd62ed3e146103c1578063f2fde38b146103fe57610109565b806370a0823114610286578063715018a6146102c3578063751039fc146102da5780638da5cb5b146102f157610109565b806323b872dd116100d157806323b872dd146101ca578063313ce5671461020757806339509351146102325780633dd5b2da1461026f57610109565b806306a1409f1461010e57806306fdde0314610137578063095ea7b31461016257806318160ddd1461019f57610109565b3661010957005b600080fd5b34801561011a57600080fd5b5061013560048036038101906101309190611b49565b610427565b005b34801561014357600080fd5b5061014c610881565b6040516101599190611c0f565b60405180910390f35b34801561016e57600080fd5b5061018960048036038101906101849190611c8f565b610913565b6040516101969190611cea565b60405180910390f35b3480156101ab57600080fd5b506101b4610936565b6040516101c19190611d14565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec9190611d2f565b610940565b6040516101fe9190611cea565b60405180910390f35b34801561021357600080fd5b5061021c61096f565b6040516102299190611d9e565b60405180910390f35b34801561023e57600080fd5b5061025960048036038101906102549190611c8f565b610978565b6040516102669190611cea565b60405180910390f35b34801561027b57600080fd5b50610284610a22565b005b34801561029257600080fd5b506102ad60048036038101906102a89190611db9565b610a72565b6040516102ba9190611d14565b60405180910390f35b3480156102cf57600080fd5b506102d8610aba565b005b3480156102e657600080fd5b506102ef610b42565b005b3480156102fd57600080fd5b50610306610bdb565b6040516103139190611df5565b60405180910390f35b34801561032857600080fd5b50610331610c05565b60405161033e9190611c0f565b60405180910390f35b34801561035357600080fd5b5061036e60048036038101906103699190611c8f565b610c97565b60405161037b9190611cea565b60405180910390f35b34801561039057600080fd5b506103ab60048036038101906103a69190611c8f565b610d81565b6040516103b89190611cea565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190611e10565b610da4565b6040516103f59190611d14565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190611db9565b610e2b565b005b61042f610f22565b73ffffffffffffffffffffffffffffffffffffffff1661044d610bdb565b73ffffffffffffffffffffffffffffffffffffffff16146104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a90611e9c565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105349190611ed1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e19190611ed1565b6040518363ffffffff1660e01b81526004016105fe929190611efe565b6020604051808303816000875af115801561061d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106419190611ed1565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107a930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107a4610936565b610f2a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306107f230610a72565b6000806107fd610bdb565b426040518863ffffffff1660e01b815260040161081f96959493929190611f6c565b60606040518083038185885af115801561083d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108629190611fe2565b50505061087881436110f390919063ffffffff16565b60088190555050565b60606003805461089090612064565b80601f01602080910402602001604051908101604052809291908181526020018280546108bc90612064565b80156109095780601f106108de57610100808354040283529160200191610909565b820191906000526020600020905b8154815290600101906020018083116108ec57829003601f168201915b5050505050905090565b60008061091e610f22565b905061092b818585610f2a565b600191505092915050565b6000600254905090565b60008061094b610f22565b9050610958858285611109565b610963858585611195565b60019150509392505050565b60006012905090565b600080610983610f22565b9050610a17818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a1291906120c4565b610f2a565b600191505092915050565b610a2a610bdb565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a6f573d6000803e3d6000fd5b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ac2610f22565b73ffffffffffffffffffffffffffffffffffffffff16610ae0610bdb565b73ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90611e9c565b60405180910390fd5b610b4060006117bf565b565b610b4a610f22565b73ffffffffffffffffffffffffffffffffffffffff16610b68610bdb565b73ffffffffffffffffffffffffffffffffffffffff1614610bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb590611e9c565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c1490612064565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4090612064565b8015610c8d5780601f10610c6257610100808354040283529160200191610c8d565b820191906000526020600020905b815481529060010190602001808311610c7057829003601f168201915b5050505050905090565b600080610ca2610f22565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f9061218c565b60405180910390fd5b610d758286868403610f2a565b60019250505092915050565b600080610d8c610f22565b9050610d99818585611195565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e33610f22565b73ffffffffffffffffffffffffffffffffffffffff16610e51610bdb565b73ffffffffffffffffffffffffffffffffffffffff1614610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e90611e9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0d9061221e565b60405180910390fd5b610f1f816117bf565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f90906122b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90612342565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110e69190611d14565b60405180910390a3505050565b6000818361110191906120c4565b905092915050565b60006111158484610da4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461118f5781811015611181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611178906123ae565b60405180910390fd5b61118e8484848403610f2a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb90612440565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a906124d2565b60405180910390fd5b6000810361128c5761128783836000611885565b6117ba565b600b60009054906101000a900460ff16156117ae573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117ad57611316610bdb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561139f5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156113f95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114c45743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061258a565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156115675750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561160e576009548111156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612642565b60405180910390fd5b600a546115bd83610a72565b826115c891906120c4565b1115611609576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611600906126ae565b60405180910390fd5b6117ac565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116b15750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611700576009548111156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290612766565b60405180910390fd5b6117ab565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117aa57600a5461175d83610a72565b8261176891906120c4565b11156117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906126ae565b60405180910390fd5b5b5b5b5b5b6117b9838383611885565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118eb90612440565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a906124d2565b60405180910390fd5b61196e838383611b04565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb906127f8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a8791906120c4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611aeb9190611d14565b60405180910390a3611afe848484611b09565b50505050565b505050565b505050565b600080fd5b6000819050919050565b611b2681611b13565b8114611b3157600080fd5b50565b600081359050611b4381611b1d565b92915050565b600060208284031215611b5f57611b5e611b0e565b5b6000611b6d84828501611b34565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bb0578082015181840152602081019050611b95565b83811115611bbf576000848401525b50505050565b6000601f19601f8301169050919050565b6000611be182611b76565b611beb8185611b81565b9350611bfb818560208601611b92565b611c0481611bc5565b840191505092915050565b60006020820190508181036000830152611c298184611bd6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c5c82611c31565b9050919050565b611c6c81611c51565b8114611c7757600080fd5b50565b600081359050611c8981611c63565b92915050565b60008060408385031215611ca657611ca5611b0e565b5b6000611cb485828601611c7a565b9250506020611cc585828601611b34565b9150509250929050565b60008115159050919050565b611ce481611ccf565b82525050565b6000602082019050611cff6000830184611cdb565b92915050565b611d0e81611b13565b82525050565b6000602082019050611d296000830184611d05565b92915050565b600080600060608486031215611d4857611d47611b0e565b5b6000611d5686828701611c7a565b9350506020611d6786828701611c7a565b9250506040611d7886828701611b34565b9150509250925092565b600060ff82169050919050565b611d9881611d82565b82525050565b6000602082019050611db36000830184611d8f565b92915050565b600060208284031215611dcf57611dce611b0e565b5b6000611ddd84828501611c7a565b91505092915050565b611def81611c51565b82525050565b6000602082019050611e0a6000830184611de6565b92915050565b60008060408385031215611e2757611e26611b0e565b5b6000611e3585828601611c7a565b9250506020611e4685828601611c7a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e86602083611b81565b9150611e9182611e50565b602082019050919050565b60006020820190508181036000830152611eb581611e79565b9050919050565b600081519050611ecb81611c63565b92915050565b600060208284031215611ee757611ee6611b0e565b5b6000611ef584828501611ebc565b91505092915050565b6000604082019050611f136000830185611de6565b611f206020830184611de6565b9392505050565b6000819050919050565b6000819050919050565b6000611f56611f51611f4c84611f27565b611f31565b611b13565b9050919050565b611f6681611f3b565b82525050565b600060c082019050611f816000830189611de6565b611f8e6020830188611d05565b611f9b6040830187611f5d565b611fa86060830186611f5d565b611fb56080830185611de6565b611fc260a0830184611d05565b979650505050505050565b600081519050611fdc81611b1d565b92915050565b600080600060608486031215611ffb57611ffa611b0e565b5b600061200986828701611fcd565b935050602061201a86828701611fcd565b925050604061202b86828701611fcd565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061207c57607f821691505b60208210810361208f5761208e612035565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120cf82611b13565b91506120da83611b13565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561210f5761210e612095565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612176602583611b81565b91506121818261211a565b604082019050919050565b600060208201905081810360008301526121a581612169565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612208602683611b81565b9150612213826121ac565b604082019050919050565b60006020820190508181036000830152612237816121fb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061229a602483611b81565b91506122a58261223e565b604082019050919050565b600060208201905081810360008301526122c98161228d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061232c602283611b81565b9150612337826122d0565b604082019050919050565b6000602082019050818103600083015261235b8161231f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612398601d83611b81565b91506123a382612362565b602082019050919050565b600060208201905081810360008301526123c78161238b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061242a602583611b81565b9150612435826123ce565b604082019050919050565b600060208201905081810360008301526124598161241d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006124bc602383611b81565b91506124c782612460565b604082019050919050565b600060208201905081810360008301526124eb816124af565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000612574604983611b81565b915061257f826124f2565b606082019050919050565b600060208201905081810360008301526125a381612567565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865205f6d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b600061262c604283611b81565b9150612637826125aa565b606082019050919050565b6000602082019050818103600083015261265b8161261f565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000612698601f83611b81565b91506126a382612662565b602082019050919050565b600060208201905081810360008301526126c78161268b565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865205f6d61785472616e73616374696f6e416d6f7560208201527f6e742e0000000000000000000000000000000000000000000000000000000000604082015250565b6000612750604383611b81565b915061275b826126ce565b606082019050919050565b6000602082019050818103600083015261277f81612743565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006127e2602683611b81565b91506127ed82612786565b604082019050919050565b60006020820190508181036000830152612811816127d5565b905091905056fea2646970667358221220fcf227163eedbb2c273224747f9f87fcb674b8c091da5f9f3e25a5d4cfe14b7964736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101025760003560e01c806370a082311161009557806395d89b411161006457806395d89b411461031c578063a457c2d714610347578063a9059cbb14610384578063dd62ed3e146103c1578063f2fde38b146103fe57610109565b806370a0823114610286578063715018a6146102c3578063751039fc146102da5780638da5cb5b146102f157610109565b806323b872dd116100d157806323b872dd146101ca578063313ce5671461020757806339509351146102325780633dd5b2da1461026f57610109565b806306a1409f1461010e57806306fdde0314610137578063095ea7b31461016257806318160ddd1461019f57610109565b3661010957005b600080fd5b34801561011a57600080fd5b5061013560048036038101906101309190611b49565b610427565b005b34801561014357600080fd5b5061014c610881565b6040516101599190611c0f565b60405180910390f35b34801561016e57600080fd5b5061018960048036038101906101849190611c8f565b610913565b6040516101969190611cea565b60405180910390f35b3480156101ab57600080fd5b506101b4610936565b6040516101c19190611d14565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec9190611d2f565b610940565b6040516101fe9190611cea565b60405180910390f35b34801561021357600080fd5b5061021c61096f565b6040516102299190611d9e565b60405180910390f35b34801561023e57600080fd5b5061025960048036038101906102549190611c8f565b610978565b6040516102669190611cea565b60405180910390f35b34801561027b57600080fd5b50610284610a22565b005b34801561029257600080fd5b506102ad60048036038101906102a89190611db9565b610a72565b6040516102ba9190611d14565b60405180910390f35b3480156102cf57600080fd5b506102d8610aba565b005b3480156102e657600080fd5b506102ef610b42565b005b3480156102fd57600080fd5b50610306610bdb565b6040516103139190611df5565b60405180910390f35b34801561032857600080fd5b50610331610c05565b60405161033e9190611c0f565b60405180910390f35b34801561035357600080fd5b5061036e60048036038101906103699190611c8f565b610c97565b60405161037b9190611cea565b60405180910390f35b34801561039057600080fd5b506103ab60048036038101906103a69190611c8f565b610d81565b6040516103b89190611cea565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190611e10565b610da4565b6040516103f59190611d14565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190611db9565b610e2b565b005b61042f610f22565b73ffffffffffffffffffffffffffffffffffffffff1661044d610bdb565b73ffffffffffffffffffffffffffffffffffffffff16146104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a90611e9c565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105349190611ed1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e19190611ed1565b6040518363ffffffff1660e01b81526004016105fe929190611efe565b6020604051808303816000875af115801561061d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106419190611ed1565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107a930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107a4610936565b610f2a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306107f230610a72565b6000806107fd610bdb565b426040518863ffffffff1660e01b815260040161081f96959493929190611f6c565b60606040518083038185885af115801561083d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108629190611fe2565b50505061087881436110f390919063ffffffff16565b60088190555050565b60606003805461089090612064565b80601f01602080910402602001604051908101604052809291908181526020018280546108bc90612064565b80156109095780601f106108de57610100808354040283529160200191610909565b820191906000526020600020905b8154815290600101906020018083116108ec57829003601f168201915b5050505050905090565b60008061091e610f22565b905061092b818585610f2a565b600191505092915050565b6000600254905090565b60008061094b610f22565b9050610958858285611109565b610963858585611195565b60019150509392505050565b60006012905090565b600080610983610f22565b9050610a17818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a1291906120c4565b610f2a565b600191505092915050565b610a2a610bdb565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a6f573d6000803e3d6000fd5b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ac2610f22565b73ffffffffffffffffffffffffffffffffffffffff16610ae0610bdb565b73ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90611e9c565b60405180910390fd5b610b4060006117bf565b565b610b4a610f22565b73ffffffffffffffffffffffffffffffffffffffff16610b68610bdb565b73ffffffffffffffffffffffffffffffffffffffff1614610bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb590611e9c565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c1490612064565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4090612064565b8015610c8d5780601f10610c6257610100808354040283529160200191610c8d565b820191906000526020600020905b815481529060010190602001808311610c7057829003601f168201915b5050505050905090565b600080610ca2610f22565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f9061218c565b60405180910390fd5b610d758286868403610f2a565b60019250505092915050565b600080610d8c610f22565b9050610d99818585611195565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e33610f22565b73ffffffffffffffffffffffffffffffffffffffff16610e51610bdb565b73ffffffffffffffffffffffffffffffffffffffff1614610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e90611e9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0d9061221e565b60405180910390fd5b610f1f816117bf565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f90906122b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90612342565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110e69190611d14565b60405180910390a3505050565b6000818361110191906120c4565b905092915050565b60006111158484610da4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461118f5781811015611181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611178906123ae565b60405180910390fd5b61118e8484848403610f2a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb90612440565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a906124d2565b60405180910390fd5b6000810361128c5761128783836000611885565b6117ba565b600b60009054906101000a900460ff16156117ae573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117ad57611316610bdb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561139f5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156113f95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114c45743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061258a565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156115675750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561160e576009548111156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612642565b60405180910390fd5b600a546115bd83610a72565b826115c891906120c4565b1115611609576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611600906126ae565b60405180910390fd5b6117ac565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116b15750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611700576009548111156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290612766565b60405180910390fd5b6117ab565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117aa57600a5461175d83610a72565b8261176891906120c4565b11156117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906126ae565b60405180910390fd5b5b5b5b5b5b6117b9838383611885565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118eb90612440565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a906124d2565b60405180910390fd5b61196e838383611b04565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb906127f8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a8791906120c4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611aeb9190611d14565b60405180910390a3611afe848484611b09565b50505050565b505050565b505050565b600080fd5b6000819050919050565b611b2681611b13565b8114611b3157600080fd5b50565b600081359050611b4381611b1d565b92915050565b600060208284031215611b5f57611b5e611b0e565b5b6000611b6d84828501611b34565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bb0578082015181840152602081019050611b95565b83811115611bbf576000848401525b50505050565b6000601f19601f8301169050919050565b6000611be182611b76565b611beb8185611b81565b9350611bfb818560208601611b92565b611c0481611bc5565b840191505092915050565b60006020820190508181036000830152611c298184611bd6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c5c82611c31565b9050919050565b611c6c81611c51565b8114611c7757600080fd5b50565b600081359050611c8981611c63565b92915050565b60008060408385031215611ca657611ca5611b0e565b5b6000611cb485828601611c7a565b9250506020611cc585828601611b34565b9150509250929050565b60008115159050919050565b611ce481611ccf565b82525050565b6000602082019050611cff6000830184611cdb565b92915050565b611d0e81611b13565b82525050565b6000602082019050611d296000830184611d05565b92915050565b600080600060608486031215611d4857611d47611b0e565b5b6000611d5686828701611c7a565b9350506020611d6786828701611c7a565b9250506040611d7886828701611b34565b9150509250925092565b600060ff82169050919050565b611d9881611d82565b82525050565b6000602082019050611db36000830184611d8f565b92915050565b600060208284031215611dcf57611dce611b0e565b5b6000611ddd84828501611c7a565b91505092915050565b611def81611c51565b82525050565b6000602082019050611e0a6000830184611de6565b92915050565b60008060408385031215611e2757611e26611b0e565b5b6000611e3585828601611c7a565b9250506020611e4685828601611c7a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e86602083611b81565b9150611e9182611e50565b602082019050919050565b60006020820190508181036000830152611eb581611e79565b9050919050565b600081519050611ecb81611c63565b92915050565b600060208284031215611ee757611ee6611b0e565b5b6000611ef584828501611ebc565b91505092915050565b6000604082019050611f136000830185611de6565b611f206020830184611de6565b9392505050565b6000819050919050565b6000819050919050565b6000611f56611f51611f4c84611f27565b611f31565b611b13565b9050919050565b611f6681611f3b565b82525050565b600060c082019050611f816000830189611de6565b611f8e6020830188611d05565b611f9b6040830187611f5d565b611fa86060830186611f5d565b611fb56080830185611de6565b611fc260a0830184611d05565b979650505050505050565b600081519050611fdc81611b1d565b92915050565b600080600060608486031215611ffb57611ffa611b0e565b5b600061200986828701611fcd565b935050602061201a86828701611fcd565b925050604061202b86828701611fcd565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061207c57607f821691505b60208210810361208f5761208e612035565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120cf82611b13565b91506120da83611b13565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561210f5761210e612095565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612176602583611b81565b91506121818261211a565b604082019050919050565b600060208201905081810360008301526121a581612169565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612208602683611b81565b9150612213826121ac565b604082019050919050565b60006020820190508181036000830152612237816121fb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061229a602483611b81565b91506122a58261223e565b604082019050919050565b600060208201905081810360008301526122c98161228d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061232c602283611b81565b9150612337826122d0565b604082019050919050565b6000602082019050818103600083015261235b8161231f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612398601d83611b81565b91506123a382612362565b602082019050919050565b600060208201905081810360008301526123c78161238b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061242a602583611b81565b9150612435826123ce565b604082019050919050565b600060208201905081810360008301526124598161241d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006124bc602383611b81565b91506124c782612460565b604082019050919050565b600060208201905081810360008301526124eb816124af565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000612574604983611b81565b915061257f826124f2565b606082019050919050565b600060208201905081810360008301526125a381612567565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865205f6d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b600061262c604283611b81565b9150612637826125aa565b606082019050919050565b6000602082019050818103600083015261265b8161261f565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b6000612698601f83611b81565b91506126a382612662565b602082019050919050565b600060208201905081810360008301526126c78161268b565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865205f6d61785472616e73616374696f6e416d6f7560208201527f6e742e0000000000000000000000000000000000000000000000000000000000604082015250565b6000612750604383611b81565b915061275b826126ce565b606082019050919050565b6000602082019050818103600083015261277f81612743565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006127e2602683611b81565b91506127ed82612786565b604082019050919050565b60006020820190508181036000830152612811816127d5565b905091905056fea2646970667358221220fcf227163eedbb2c273224747f9f87fcb674b8c091da5f9f3e25a5d4cfe14b7964736f6c634300080f0033

Deployed Bytecode Sourcemap

18157:4308:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19564:691;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1633:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1954:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2774:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1853:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3077:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22318:107;;;;;;;;;;;;;:::i;:::-;;2070:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14995:103;;;;;;;;;;;;;:::i;:::-;;20337:87;;;;;;;;;;;;;:::i;:::-;;14772;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1741:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3325:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2205:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2406:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15106:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19564:691;14918:12;:10;:12::i;:::-;14907:23;;:7;:5;:7::i;:::-;:23;;;14899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19668:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19650:55;;;19714:4;19721:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19650:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19634:13;;:110;;;;;;;;;;;;;;;;;;19813:4;19755:31;:55;19795:13;;;;;;;;;;;19755:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;19881:4;19828:26;:50;19863:13;;;;;;;;;;;19828:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;19898:64;19915:4;19930:15;;;;;;;;;;;19948:13;:11;:13::i;:::-;19898:8;:64::i;:::-;19973:15;;;;;;;;;;;:31;;;20012:21;20058:4;20078:24;20096:4;20078:9;:24::i;:::-;20117:1;20133::::0;20149:7:::1;:5;:7::i;:::-;20171:15;19973:224;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20223:24;20240:6;20223:12;:16;;:24;;;;:::i;:::-;20210:10;:37;;;;19564:691:::0;:::o;1633:100::-;1687:13;1720:5;1713:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:100;:::o;2565:201::-;2648:4;2665:13;2681:12;:10;:12::i;:::-;2665:28;;2704:32;2713:5;2720:7;2729:6;2704:8;:32::i;:::-;2754:4;2747:11;;;2565:201;;;;:::o;1954:108::-;2015:7;2042:12;;2035:19;;1954:108;:::o;2774:295::-;2905:4;2922:15;2940:12;:10;:12::i;:::-;2922:30;;2963:38;2979:4;2985:7;2994:6;2963:15;:38::i;:::-;3012:27;3022:4;3028:2;3032:6;3012:9;:27::i;:::-;3057:4;3050:11;;;2774:295;;;;;:::o;1853:93::-;1911:5;1936:2;1929:9;;1853:93;:::o;3077:240::-;3165:4;3182:13;3198:12;:10;:12::i;:::-;3182:28;;3221:66;3230:5;3237:7;3276:10;3246:11;:18;3258:5;3246:18;;;;;;;;;;;;;;;:27;3265:7;3246:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3221:8;:66::i;:::-;3305:4;3298:11;;;3077:240;;;;:::o;22318:107::-;22377:7;:5;:7::i;:::-;22369:25;;:48;22395:21;22369:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22318:107::o;2070:127::-;2144:7;2171:9;:18;2181:7;2171:18;;;;;;;;;;;;;;;;2164:25;;2070:127;;;:::o;14995:103::-;14918:12;:10;:12::i;:::-;14907:23;;:7;:5;:7::i;:::-;:23;;;14899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15060:30:::1;15087:1;15060:18;:30::i;:::-;14995:103::o:0;20337:87::-;14918:12;:10;:12::i;:::-;14907:23;;:7;:5;:7::i;:::-;:23;;;14899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20411:5:::1;20393:15;;:23;;;;;;;;;;;;;;;;;;20337:87::o:0;14772:::-;14818:7;14845:6;;;;;;;;;;;14838:13;;14772:87;:::o;1741:104::-;1797:13;1830:7;1823:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1741:104;:::o;3325:438::-;3418:4;3435:13;3451:12;:10;:12::i;:::-;3435:28;;3474:24;3501:11;:18;3513:5;3501:18;;;;;;;;;;;;;;;:27;3520:7;3501:27;;;;;;;;;;;;;;;;3474:54;;3567:15;3547:16;:35;;3539:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3660:60;3669:5;3676:7;3704:15;3685:16;:34;3660:8;:60::i;:::-;3751:4;3744:11;;;;3325:438;;;;:::o;2205:193::-;2284:4;2301:13;2317:12;:10;:12::i;:::-;2301:28;;2340;2350:5;2357:2;2361:6;2340:9;:28::i;:::-;2386:4;2379:11;;;2205:193;;;;:::o;2406:151::-;2495:7;2522:11;:18;2534:5;2522:18;;;;;;;;;;;;;;;:27;2541:7;2522:27;;;;;;;;;;;;;;;;2515:34;;2406:151;;;;:::o;15106:201::-;14918:12;:10;:12::i;:::-;14907:23;;:7;:5;:7::i;:::-;:23;;;14899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15215:1:::1;15195:22;;:8;:22;;::::0;15187:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15271:28;15290:8;15271:18;:28::i;:::-;15106:201:::0;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;5456:380::-;5609:1;5592:19;;:5;:19;;;5584:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5690:1;5671:21;;:7;:21;;;5663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5774:6;5744:11;:18;5756:5;5744:18;;;;;;;;;;;;;;;:27;5763:7;5744:27;;;;;;;;;;;;;;;:36;;;;5812:7;5796:32;;5805:5;5796:32;;;5821:6;5796:32;;;;;;:::i;:::-;;;;;;;;5456:380;;;:::o;16886:98::-;16944:7;16975:1;16971;:5;;;;:::i;:::-;16964:12;;16886:98;;;;:::o;5844:453::-;5979:24;6006:25;6016:5;6023:7;6006:9;:25::i;:::-;5979:52;;6066:17;6046:16;:37;6042:248;;6128:6;6108:16;:26;;6100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6212:51;6221:5;6228:7;6256:6;6237:16;:25;6212:8;:51::i;:::-;6042:248;5968:329;5844:453;;;:::o;20432:1808::-;20580:1;20564:18;;:4;:18;;;20556:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20657:1;20643:16;;:2;:16;;;20635:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20734:1;20724:6;:11;20720:93;;20752:28;20768:4;20774:2;20778:1;20752:15;:28::i;:::-;20795:7;;20720:93;20871:15;;;;;;;;;;;20867:1320;;;20923:4;20907:21;;:4;:21;;;;:44;;;;;20946:4;20932:19;;:2;:19;;;;20907:44;20903:1273;;;20982:7;:5;:7::i;:::-;20976:13;;:2;:13;;;;:47;;;;;21007:15;;;;;;;;;;;20993:30;;:2;:30;;;;20976:47;:79;;;;;21041:13;;;;;;;;;;;21027:28;;:2;:28;;;;20976:79;20972:336;;;21125:12;21087:24;:35;21112:9;21087:35;;;;;;;;;;;;;;;;:50;21079:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;21276:12;21238:24;:35;21263:9;21238:35;;;;;;;;;;;;;;;:50;;;;20972:336;21359:26;:32;21386:4;21359:32;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;21396:31;:35;21428:2;21396:35;;;;;;;;;;;;;;;;;;;;;;;;;21395:36;21359:72;21355:806;;;21474:21;;21464:6;:31;;21456:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;21623:10;;21606:13;21616:2;21606:9;:13::i;:::-;21597:6;:22;;;;:::i;:::-;:36;;21589:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21355:806;;;21762:26;:30;21789:2;21762:30;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;21797:31;:37;21829:4;21797:37;;;;;;;;;;;;;;;;;;;;;;;;;21796:38;21762:72;21758:403;;;21877:21;;21867:6;:31;;21859:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;21758:403;;;22001:31;:35;22033:2;22001:35;;;;;;;;;;;;;;;;;;;;;;;;;21996:165;;22095:10;;22078:13;22088:2;22078:9;:13::i;:::-;22069:6;:22;;;;:::i;:::-;:36;;22061:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21996:165;21758:403;21355:806;20903:1273;20867:1320;22199:33;22215:4;22221:2;22225:6;22199:15;:33::i;:::-;20432:1808;;;;:::o;15315:191::-;15389:16;15408:6;;;;;;;;;;;15389:25;;15434:8;15425:6;;:17;;;;;;;;;;;;;;;;;;15489:8;15458:40;;15479:8;15458:40;;;;;;;;;;;;15378:128;15315:191;:::o;3771:671::-;3918:1;3902:18;;:4;:18;;;3894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3995:1;3981:16;;:2;:16;;;3973:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4050:38;4071:4;4077:2;4081:6;4050:20;:38::i;:::-;4101:19;4123:9;:15;4133:4;4123:15;;;;;;;;;;;;;;;;4101:37;;4172:6;4157:11;:21;;4149:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4289:6;4275:11;:20;4257:9;:15;4267:4;4257:15;;;;;;;;;;;;;;;:38;;;;4334:6;4317:9;:13;4327:2;4317:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4373:2;4358:26;;4367:4;4358:26;;;4377:6;4358:26;;;;;;:::i;:::-;;;;;;;;4397:37;4417:4;4423:2;4427:6;4397:19;:37::i;:::-;3883:559;3771:671;;;:::o;6305:125::-;;;;:::o;6438:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:329::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:474::-;5991:6;5999;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;6301:2;6327:53;6372:7;6363:6;6352:9;6348:22;6327:53;:::i;:::-;6317:63;;6272:118;5923:474;;;;;:::o;6403:182::-;6543:34;6539:1;6531:6;6527:14;6520:58;6403:182;:::o;6591:366::-;6733:3;6754:67;6818:2;6813:3;6754:67;:::i;:::-;6747:74;;6830:93;6919:3;6830:93;:::i;:::-;6948:2;6943:3;6939:12;6932:19;;6591:366;;;:::o;6963:419::-;7129:4;7167:2;7156:9;7152:18;7144:26;;7216:9;7210:4;7206:20;7202:1;7191:9;7187:17;7180:47;7244:131;7370:4;7244:131;:::i;:::-;7236:139;;6963:419;;;:::o;7388:143::-;7445:5;7476:6;7470:13;7461:22;;7492:33;7519:5;7492:33;:::i;:::-;7388:143;;;;:::o;7537:351::-;7607:6;7656:2;7644:9;7635:7;7631:23;7627:32;7624:119;;;7662:79;;:::i;:::-;7624:119;7782:1;7807:64;7863:7;7854:6;7843:9;7839:22;7807:64;:::i;:::-;7797:74;;7753:128;7537:351;;;;:::o;7894:332::-;8015:4;8053:2;8042:9;8038:18;8030:26;;8066:71;8134:1;8123:9;8119:17;8110:6;8066:71;:::i;:::-;8147:72;8215:2;8204:9;8200:18;8191:6;8147:72;:::i;:::-;7894:332;;;;;:::o;8232:85::-;8277:7;8306:5;8295:16;;8232:85;;;:::o;8323:60::-;8351:3;8372:5;8365:12;;8323:60;;;:::o;8389:158::-;8447:9;8480:61;8498:42;8507:32;8533:5;8507:32;:::i;:::-;8498:42;:::i;:::-;8480:61;:::i;:::-;8467:74;;8389:158;;;:::o;8553:147::-;8648:45;8687:5;8648:45;:::i;:::-;8643:3;8636:58;8553:147;;:::o;8706:807::-;8955:4;8993:3;8982:9;8978:19;8970:27;;9007:71;9075:1;9064:9;9060:17;9051:6;9007:71;:::i;:::-;9088:72;9156:2;9145:9;9141:18;9132:6;9088:72;:::i;:::-;9170:80;9246:2;9235:9;9231:18;9222:6;9170:80;:::i;:::-;9260;9336:2;9325:9;9321:18;9312:6;9260:80;:::i;:::-;9350:73;9418:3;9407:9;9403:19;9394:6;9350:73;:::i;:::-;9433;9501:3;9490:9;9486:19;9477:6;9433:73;:::i;:::-;8706:807;;;;;;;;;:::o;9519:143::-;9576:5;9607:6;9601:13;9592:22;;9623:33;9650:5;9623:33;:::i;:::-;9519:143;;;;:::o;9668:663::-;9756:6;9764;9772;9821:2;9809:9;9800:7;9796:23;9792:32;9789:119;;;9827:79;;:::i;:::-;9789:119;9947:1;9972:64;10028:7;10019:6;10008:9;10004:22;9972:64;:::i;:::-;9962:74;;9918:128;10085:2;10111:64;10167:7;10158:6;10147:9;10143:22;10111:64;:::i;:::-;10101:74;;10056:129;10224:2;10250:64;10306:7;10297:6;10286:9;10282:22;10250:64;:::i;:::-;10240:74;;10195:129;9668:663;;;;;:::o;10337:180::-;10385:77;10382:1;10375:88;10482:4;10479:1;10472:15;10506:4;10503:1;10496:15;10523:320;10567:6;10604:1;10598:4;10594:12;10584:22;;10651:1;10645:4;10641:12;10672:18;10662:81;;10728:4;10720:6;10716:17;10706:27;;10662:81;10790:2;10782:6;10779:14;10759:18;10756:38;10753:84;;10809:18;;:::i;:::-;10753:84;10574:269;10523:320;;;:::o;10849:180::-;10897:77;10894:1;10887:88;10994:4;10991:1;10984:15;11018:4;11015:1;11008:15;11035:305;11075:3;11094:20;11112:1;11094:20;:::i;:::-;11089:25;;11128:20;11146:1;11128:20;:::i;:::-;11123:25;;11282:1;11214:66;11210:74;11207:1;11204:81;11201:107;;;11288:18;;:::i;:::-;11201:107;11332:1;11329;11325:9;11318:16;;11035:305;;;;:::o;11346:224::-;11486:34;11482:1;11474:6;11470:14;11463:58;11555:7;11550:2;11542:6;11538:15;11531:32;11346:224;:::o;11576:366::-;11718:3;11739:67;11803:2;11798:3;11739:67;:::i;:::-;11732:74;;11815:93;11904:3;11815:93;:::i;:::-;11933:2;11928:3;11924:12;11917:19;;11576:366;;;:::o;11948:419::-;12114:4;12152:2;12141:9;12137:18;12129:26;;12201:9;12195:4;12191:20;12187:1;12176:9;12172:17;12165:47;12229:131;12355:4;12229:131;:::i;:::-;12221:139;;11948:419;;;:::o;12373:225::-;12513:34;12509:1;12501:6;12497:14;12490:58;12582:8;12577:2;12569:6;12565:15;12558:33;12373:225;:::o;12604:366::-;12746:3;12767:67;12831:2;12826:3;12767:67;:::i;:::-;12760:74;;12843:93;12932:3;12843:93;:::i;:::-;12961:2;12956:3;12952:12;12945:19;;12604:366;;;:::o;12976:419::-;13142:4;13180:2;13169:9;13165:18;13157:26;;13229:9;13223:4;13219:20;13215:1;13204:9;13200:17;13193:47;13257:131;13383:4;13257:131;:::i;:::-;13249:139;;12976:419;;;:::o;13401:223::-;13541:34;13537:1;13529:6;13525:14;13518:58;13610:6;13605:2;13597:6;13593:15;13586:31;13401:223;:::o;13630:366::-;13772:3;13793:67;13857:2;13852:3;13793:67;:::i;:::-;13786:74;;13869:93;13958:3;13869:93;:::i;:::-;13987:2;13982:3;13978:12;13971:19;;13630:366;;;:::o;14002:419::-;14168:4;14206:2;14195:9;14191:18;14183:26;;14255:9;14249:4;14245:20;14241:1;14230:9;14226:17;14219:47;14283:131;14409:4;14283:131;:::i;:::-;14275:139;;14002:419;;;:::o;14427:221::-;14567:34;14563:1;14555:6;14551:14;14544:58;14636:4;14631:2;14623:6;14619:15;14612:29;14427:221;:::o;14654:366::-;14796:3;14817:67;14881:2;14876:3;14817:67;:::i;:::-;14810:74;;14893:93;14982:3;14893:93;:::i;:::-;15011:2;15006:3;15002:12;14995:19;;14654:366;;;:::o;15026:419::-;15192:4;15230:2;15219:9;15215:18;15207:26;;15279:9;15273:4;15269:20;15265:1;15254:9;15250:17;15243:47;15307:131;15433:4;15307:131;:::i;:::-;15299:139;;15026:419;;;:::o;15451:179::-;15591:31;15587:1;15579:6;15575:14;15568:55;15451:179;:::o;15636:366::-;15778:3;15799:67;15863:2;15858:3;15799:67;:::i;:::-;15792:74;;15875:93;15964:3;15875:93;:::i;:::-;15993:2;15988:3;15984:12;15977:19;;15636:366;;;:::o;16008:419::-;16174:4;16212:2;16201:9;16197:18;16189:26;;16261:9;16255:4;16251:20;16247:1;16236:9;16232:17;16225:47;16289:131;16415:4;16289:131;:::i;:::-;16281:139;;16008:419;;;:::o;16433:224::-;16573:34;16569:1;16561:6;16557:14;16550:58;16642:7;16637:2;16629:6;16625:15;16618:32;16433:224;:::o;16663:366::-;16805:3;16826:67;16890:2;16885:3;16826:67;:::i;:::-;16819:74;;16902:93;16991:3;16902:93;:::i;:::-;17020:2;17015:3;17011:12;17004:19;;16663:366;;;:::o;17035:419::-;17201:4;17239:2;17228:9;17224:18;17216:26;;17288:9;17282:4;17278:20;17274:1;17263:9;17259:17;17252:47;17316:131;17442:4;17316:131;:::i;:::-;17308:139;;17035:419;;;:::o;17460:222::-;17600:34;17596:1;17588:6;17584:14;17577:58;17669:5;17664:2;17656:6;17652:15;17645:30;17460:222;:::o;17688:366::-;17830:3;17851:67;17915:2;17910:3;17851:67;:::i;:::-;17844:74;;17927:93;18016:3;17927:93;:::i;:::-;18045:2;18040:3;18036:12;18029:19;;17688:366;;;:::o;18060:419::-;18226:4;18264:2;18253:9;18249:18;18241:26;;18313:9;18307:4;18303:20;18299:1;18288:9;18284:17;18277:47;18341:131;18467:4;18341:131;:::i;:::-;18333:139;;18060:419;;;:::o;18485:297::-;18625:34;18621:1;18613:6;18609:14;18602:58;18694:34;18689:2;18681:6;18677:15;18670:59;18763:11;18758:2;18750:6;18746:15;18739:36;18485:297;:::o;18788:366::-;18930:3;18951:67;19015:2;19010:3;18951:67;:::i;:::-;18944:74;;19027:93;19116:3;19027:93;:::i;:::-;19145:2;19140:3;19136:12;19129:19;;18788:366;;;:::o;19160:419::-;19326:4;19364:2;19353:9;19349:18;19341:26;;19413:9;19407:4;19403:20;19399:1;19388:9;19384:17;19377:47;19441:131;19567:4;19441:131;:::i;:::-;19433:139;;19160:419;;;:::o;19585:290::-;19725:34;19721:1;19713:6;19709:14;19702:58;19794:34;19789:2;19781:6;19777:15;19770:59;19863:4;19858:2;19850:6;19846:15;19839:29;19585:290;:::o;19881:366::-;20023:3;20044:67;20108:2;20103:3;20044:67;:::i;:::-;20037:74;;20120:93;20209:3;20120:93;:::i;:::-;20238:2;20233:3;20229:12;20222:19;;19881:366;;;:::o;20253:419::-;20419:4;20457:2;20446:9;20442:18;20434:26;;20506:9;20500:4;20496:20;20492:1;20481:9;20477:17;20470:47;20534:131;20660:4;20534:131;:::i;:::-;20526:139;;20253:419;;;:::o;20678:181::-;20818:33;20814:1;20806:6;20802:14;20795:57;20678:181;:::o;20865:366::-;21007:3;21028:67;21092:2;21087:3;21028:67;:::i;:::-;21021:74;;21104:93;21193:3;21104:93;:::i;:::-;21222:2;21217:3;21213:12;21206:19;;20865:366;;;:::o;21237:419::-;21403:4;21441:2;21430:9;21426:18;21418:26;;21490:9;21484:4;21480:20;21476:1;21465:9;21461:17;21454:47;21518:131;21644:4;21518:131;:::i;:::-;21510:139;;21237:419;;;:::o;21662:291::-;21802:34;21798:1;21790:6;21786:14;21779:58;21871:34;21866:2;21858:6;21854:15;21847:59;21940:5;21935:2;21927:6;21923:15;21916:30;21662:291;:::o;21959:366::-;22101:3;22122:67;22186:2;22181:3;22122:67;:::i;:::-;22115:74;;22198:93;22287:3;22198:93;:::i;:::-;22316:2;22311:3;22307:12;22300:19;;21959:366;;;:::o;22331:419::-;22497:4;22535:2;22524:9;22520:18;22512:26;;22584:9;22578:4;22574:20;22570:1;22559:9;22555:17;22548:47;22612:131;22738:4;22612:131;:::i;:::-;22604:139;;22331:419;;;:::o;22756:225::-;22896:34;22892:1;22884:6;22880:14;22873:58;22965:8;22960:2;22952:6;22948:15;22941:33;22756:225;:::o;22987:366::-;23129:3;23150:67;23214:2;23209:3;23150:67;:::i;:::-;23143:74;;23226:93;23315:3;23226:93;:::i;:::-;23344:2;23339:3;23335:12;23328:19;;22987:366;;;:::o;23359:419::-;23525:4;23563:2;23552:9;23548:18;23540:26;;23612:9;23606:4;23602:20;23598:1;23587:9;23583:17;23576:47;23640:131;23766:4;23640:131;:::i;:::-;23632:139;;23359:419;;;:::o

Swarm Source

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