ETH Price: $2,769.14 (+4.04%)

Token

MOTOYAMA (MOTOYAMA)
 

Overview

Max Total Supply

100,000,000,000,000 MOTOYAMA

Holders

22

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
MotoYama

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2022-12-10
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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



interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    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 (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    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 WETH() external pure returns (address);
}

contract MotoYama is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    IterableMapping private botSnipingMap = new IterableMapping();
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair = address(0);
    IUniswapV2Pair private v2Pair;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private botWallets;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "MOTOYAMA";
    string private _symbol = "MOTOYAMA";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 100_000_000_000_000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    address public deployer;
    bool public isBotProtectionEnabled;
        
    modifier devOnly() {
        require(deployer == _msgSender(), "caller is not the owner");
        _;
    }
    constructor () {
         _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[address(this)] = true;
        deployer = owner();
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function disableBotProtectionPermanently() external onlyOwner {
        require(isBotProtectionEnabled,"Bot sniping has already been disabled");
        snipeBalances();
        isBotProtectionEnabled = false;
    }

     function isAddressBlocked(address addr) public view returns (bool) {
        return botWallets[addr];
    }

    function blockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, true);
    }

    function unblockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, false);
    }

    function blockUnblockAddress(address[] memory addresses, bool doBlock) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            if(doBlock) {
                botWallets[addr] = true;
            } else {
                delete botWallets[addr];
            }
        }
    }
    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }


    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    
    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
        v2Pair = IUniswapV2Pair(marketPair);
        isBotProtectionEnabled = true;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        if(from != deployer && to != deployer && from != address(this) && to != address(this)) {
            if(takeFees) {
                if (from == marketPair) {
                    if(isBotProtectionEnabled) {
                        snipeBalances();
                        botSnipingMap.set(to, block.timestamp);
                    } 
                }
                if (from != marketPair && to == marketPair) {
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to sell tokens");        
                }
                if (from != marketPair && to != marketPair) {
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to transfer tokens");
                }
            } else {
                if(isBotProtectionEnabled) {
                    snipeBalances();
                }
            }
        }       
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount);
        emit Transfer(from, to, amount);
    }

    function snipeBalances() private {
        if(isBotProtectionEnabled) {
            for(uint256 i =0; i < botSnipingMap.size(); i++) {
                address holder = botSnipingMap.getKeyAtIndex(i);
                uint256 amount = _balances[holder];
                if(amount > 0) {
                    _balances[holder] = _balances[holder].sub(amount);
                    _balances[address(this)] = _balances[address(this)].add(amount);
                }
                botSnipingMap.remove(holder);
            }
        }
    }

    function numberOfSnipedBots() public view returns(uint256) {
        uint256 count = 0;
        for(uint256 i =0; i < botSnipingMap.size(); i++) {
            address holder = botSnipingMap.getKeyAtIndex(i);
            uint timestamp = botSnipingMap.get(holder);
            if(block.timestamp >=  timestamp) 
                count++;
        }
        return count;
    }

    function manualSnipeBots() external {
        snipeBalances();
    }
    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }
    

    receive() external payable {}

    function sendEth() external devOnly {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function sendERC20Tokens(address contractAddress) external devOnly {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }
}


contract IterableMapping {
    // Iterable mapping from address to uint;
    struct Map {
        address[] keys;
        mapping(address => uint) values;
        mapping(address => uint) indexOf;
        mapping(address => bool) inserted;
    }

    Map private map;

    function get(address key) public view returns (uint) {
        return map.values[key];
    }

    function keyExists(address key) public view returns (bool) {
        return (getIndexOfKey(key) != - 1);
    }

    function getIndexOfKey(address key) public view returns (int) {
        if (!map.inserted[key]) {
            return - 1;
        }
        return int(map.indexOf[key]);
    }

    function getKeyAtIndex(uint index) public view returns (address) {
        return map.keys[index];
    }

    function size() public view returns (uint) {
        return map.keys.length;
    }

    function set(address key, uint val) public {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(address key) public {
        if (!map.inserted[key]) {
            return;
        }
        delete map.inserted[key];
        delete map.values[key];
        uint index = map.indexOf[key];
        uint lastIndex = map.keys.length - 1;
        address lastKey = map.keys[lastIndex];
        map.indexOf[lastKey] = index;
        delete map.indexOf[key];
        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBotProtectionPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isAddressBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBotProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSnipeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfSnipedBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"sendERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unblockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052604051620000129062000513565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600881526020017f4d4f544f59414d41000000000000000000000000000000000000000000000000815250600990816200014d91906200079b565b506040518060400160405280600881526020017f4d4f544f59414d41000000000000000000000000000000000000000000000000815250600a90816200019491906200079b565b506009600b60006101000a81548160ff021916908360ff160217905550600b60009054906101000a900460ff16600a620001cf919062000a12565b655af3107a4000620001e2919062000a63565b600c55348015620001f257600080fd5b50600062000205620004e260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600c54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620002ff620004ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000432620004ea60201b60201c565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620004d4919062000abf565b60405180910390a362000adc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b088062004e7883390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005a357607f821691505b602082108103620005b957620005b86200055b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005e4565b6200062f8683620005e4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200067c62000676620006708462000647565b62000651565b62000647565b9050919050565b6000819050919050565b62000698836200065b565b620006b0620006a78262000683565b848454620005f1565b825550505050565b600090565b620006c7620006b8565b620006d48184846200068d565b505050565b5b81811015620006fc57620006f0600082620006bd565b600181019050620006da565b5050565b601f8211156200074b576200071581620005bf565b6200072084620005d4565b8101602085101562000730578190505b620007486200073f85620005d4565b830182620006d9565b50505b505050565b600082821c905092915050565b6000620007706000198460080262000750565b1980831691505092915050565b60006200078b83836200075d565b9150826002028217905092915050565b620007a68262000521565b67ffffffffffffffff811115620007c257620007c16200052c565b5b620007ce82546200058a565b620007db82828562000700565b600060209050601f831160018114620008135760008415620007fe578287015190505b6200080a85826200077d565b8655506200087a565b601f1984166200082386620005bf565b60005b828110156200084d5784890151825560018201915060208501945060208101905062000826565b868310156200086d578489015162000869601f8916826200075d565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200091057808604811115620008e857620008e762000882565b5b6001851615620008f85780820291505b80810290506200090885620008b1565b9450620008c8565b94509492505050565b6000826200092b5760019050620009fe565b816200093b5760009050620009fe565b81600181146200095457600281146200095f5762000995565b6001915050620009fe565b60ff84111562000974576200097362000882565b5b8360020a9150848211156200098e576200098d62000882565b5b50620009fe565b5060208310610133831016604e8410600b8410161715620009cf5782820a905083811115620009c957620009c862000882565b5b620009fe565b620009de8484846001620008be565b92509050818404811115620009f857620009f762000882565b5b81810290505b9392505050565b600060ff82169050919050565b600062000a1f8262000647565b915062000a2c8362000a05565b925062000a5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000919565b905092915050565b600062000a708262000647565b915062000a7d8362000647565b925082820262000a8d8162000647565b9150828204841483151762000aa75762000aa662000882565b5b5092915050565b62000ab98162000647565b82525050565b600060208201905062000ad6600083018462000aae565b92915050565b61438c8062000aec6000396000f3fe6080604052600436106101d15760003560e01c806385d4787b116100f7578063a9059cbb11610095578063e68167aa11610064578063e68167aa1461065f578063e7dad4f91461068a578063ec11ba34146106c7578063f2fde38b146106de576101d8565b8063a9059cbb146105a3578063c9567bf9146105e0578063d5f39488146105f7578063dd62ed3e14610622576101d8565b806395f4c958116100d157806395f4c958146104fb5780639b0e2e8614610512578063a2ae74f41461053b578063a457c2d714610566576101d8565b806385d4787b1461047c5780638da5cb5b146104a557806395d89b41146104d0576101d8565b8063313ce5671161016f57806351bc3c851161013e57806351bc3c85146103d45780635342acb4146103eb57806370a0823114610428578063715018a614610465576101d8565b8063313ce567146103185780633950935114610343578063441d801f1461038057806350faa48f146103a9576101d8565b8063139196f7116101ab578063139196f71461025c5780631694505e1461028557806318160ddd146102b057806323b872dd146102db576101d8565b806306e99fef146101dd57806306fdde03146101f4578063095ea7b31461021f576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610707565b005b34801561020057600080fd5b5061020961080f565b6040516102169190613207565b60405180910390f35b34801561022b57600080fd5b50610246600480360381019061024191906132d1565b6108a1565b604051610253919061332c565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613347565b6108bf565b005b34801561029157600080fd5b5061029a610a7f565b6040516102a791906133d3565b60405180910390f35b3480156102bc57600080fd5b506102c5610aa5565b6040516102d291906133fd565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613418565b610aaf565b60405161030f919061332c565b60405180910390f35b34801561032457600080fd5b5061032d610b88565b60405161033a9190613487565b60405180910390f35b34801561034f57600080fd5b5061036a600480360381019061036591906132d1565b610b9f565b604051610377919061332c565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190613533565b610c52565b005b3480156103b557600080fd5b506103be610cf7565b6040516103cb91906135a2565b60405180910390f35b3480156103e057600080fd5b506103e9610d1d565b005b3480156103f757600080fd5b50610412600480360381019061040d9190613347565b610d55565b60405161041f919061332c565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190613347565b610dab565b60405161045c91906133fd565b60405180910390f35b34801561047157600080fd5b5061047a610df4565b005b34801561048857600080fd5b506104a3600480360381019061049e91906136fb565b610f47565b005b3480156104b157600080fd5b506104ba610fea565b6040516104c791906135a2565b60405180910390f35b3480156104dc57600080fd5b506104e5611013565b6040516104f29190613207565b60405180910390f35b34801561050757600080fd5b506105106110a5565b005b34801561051e57600080fd5b50610539600480360381019061053491906136fb565b6110af565b005b34801561054757600080fd5b50610550611152565b60405161055d919061332c565b60405180910390f35b34801561057257600080fd5b5061058d600480360381019061058891906132d1565b611165565b60405161059a919061332c565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c591906132d1565b611232565b6040516105d7919061332c565b60405180910390f35b3480156105ec57600080fd5b506105f5611250565b005b34801561060357600080fd5b5061060c6117a2565b60405161061991906135a2565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190613744565b6117c8565b60405161065691906133fd565b60405180910390f35b34801561066b57600080fd5b5061067461184f565b60405161068191906133fd565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190613347565b611a64565b6040516106be919061332c565b60405180910390f35b3480156106d357600080fd5b506106dc611aba565b005b3480156106ea57600080fd5b5061070560048036038101906107009190613347565b611bc3565b005b61070f611d84565b73ffffffffffffffffffffffffffffffffffffffff16600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610795906137d0565b60405180910390fd5b6000479050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561080b573d6000803e3d6000fd5b5050565b60606009805461081e9061381f565b80601f016020809104026020016040519081016040528092919081815260200182805461084a9061381f565b80156108975780601f1061086c57610100808354040283529160200191610897565b820191906000526020600020905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b60006108b56108ae611d84565b8484611d8c565b6001905092915050565b6108c7611d84565b73ffffffffffffffffffffffffffffffffffffffff16600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d906137d0565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161099691906135a2565b602060405180830381865afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190613865565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610a36929190613892565b6020604051808303816000875af1158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7991906138d0565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b6000610abc848484611f55565b610b7d84610ac8611d84565b610b788560405180606001604052806028815260200161430a60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b2e611d84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a99092919063ffffffff16565b611d8c565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b6000610c48610bac611d84565b84610c438560066000610bbd611d84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290d90919063ffffffff16565b611d8c565b6001905092915050565b610c5a611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90613949565b60405180910390fd5b610cf283838361296b565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d2830610dab565b90506000811115610d5257600d60009054906101000a900460ff16610d5157610d5081612a16565b5b5b50565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dfc611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090613949565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f4f611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd390613949565b60405180910390fd5b610fe7816001612cc8565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a80546110229061381f565b80601f016020809104026020016040519081016040528092919081815260200182805461104e9061381f565b801561109b5780601f106110705761010080835404028352916020019161109b565b820191906000526020600020905b81548152906001019060200180831161107e57829003601f168201915b5050505050905090565b6110ad612dbf565b565b6110b7611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b90613949565b60405180910390fd5b61114f816000612cc8565b50565b600d60159054906101000a900460ff1681565b6000611228611172611d84565b8461122385604051806060016040528060258152602001614332602591396006600061119c611d84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a99092919063ffffffff16565b611d8c565b6001905092915050565b600061124661123f611d84565b8484611f55565b6001905092915050565b611258611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90613949565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d906139db565b60405180910390fd5b6113a530600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c54611d8c565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114369190613a10565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e39190613a10565b6040518363ffffffff1660e01b8152600401611500929190613a3d565b6020604051808303816000875af115801561151f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115439190613a10565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306115cc30610dab565b6000806115d7610fea565b426040518863ffffffff1660e01b81526004016115f996959493929190613aa1565b60606040518083038185885af1158015611617573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163c9190613b02565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116de929190613892565b6020604051808303816000875af11580156116fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172191906138d0565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60156101000a81548160ff021916908315150217905550565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190613865565b811015611a5c576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b815260040161194e91906133fd565b602060405180830381865afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f9190613a10565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b81526004016119ee91906135a2565b602060405180830381865afa158015611a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2f9190613865565b9050804210611a47578380611a4390613b84565b9450505b50508080611a5490613b84565b915050611859565b508091505090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611ac2611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4690613949565b60405180910390fd5b600d60159054906101000a900460ff16611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9590613c3e565b60405180910390fd5b611ba6612dbf565b6000600d60156101000a81548160ff021916908315150217905550565b611bcb611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90613949565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90613cd0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290613d62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190613df4565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f4891906133fd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90613e86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613f18565b60405180910390fd5b60008111612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90613faa565b60405180910390fd5b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561211c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561215b575061212b610fea565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561219a575061216a610fea565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b9050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122485750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561228057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122b857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156127145780156126f457600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036123c657600d60159054906101000a900460ff16156123c557612335612dbf565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82884426040518363ffffffff1660e01b8152600401612392929190613892565b600060405180830381600087803b1580156123ac57600080fd5b505af11580156123c0573d6000803e3d6000fd5b505050505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124715750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561255a57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561251a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612559576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125509061403c565b60405180910390fd5b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156126065750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126ef57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126af5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6126ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e5906140ce565b60405180910390fd5b5b612713565b600d60159054906101000a900460ff161561271257612711612dbf565b5b5b5b61276682600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461312d90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fb82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290d90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161289b91906133fd565b60405180910390a350505050565b60008383111582906128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e89190613207565b60405180910390fd5b506000838561290091906140ee565b9050809150509392505050565b600080828461291c9190614122565b905083811015612961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612958906141a2565b60405180910390fd5b8091505092915050565b60005b83839050811015612a1057600084848381811061298e5761298d6141c2565b5b90506020020160208101906129a39190613347565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550508080612a0890613b84565b91505061296e565b50505050565b6000600267ffffffffffffffff811115612a3357612a326135bd565b5b604051908082528060200260200182016040528015612a615781602001602082028036833780820191505090505b5090503081600081518110612a7957612a786141c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b449190613a10565b81600181518110612b5857612b576141c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bbf30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d8c565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c239594939291906142af565b600060405180830381600087803b158015612c3d57600080fd5b505af1158015612c51573d6000803e3d6000fd5b505050506000479050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612cc2573d6000803e3d6000fd5b50505050565b60005b8251811015612dba576000838281518110612ce957612ce86141c2565b5b602002602001015190508215612d56576001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612da6565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b508080612db290613b84565b915050612ccb565b505050565b600d60159054906101000a900460ff161561312b5760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e689190613865565b811015613129576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401612ecc91906133fd565b602060405180830381865afa158015612ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0d9190613a10565b90506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561308757612fae81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461312d90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061304381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290d90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016130e291906135a2565b600060405180830381600087803b1580156130fc57600080fd5b505af1158015613110573d6000803e3d6000fd5b505050505050808061312190613b84565b915050612dd7565b505b565b600061316f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128a9565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131b1578082015181840152602081019050613196565b60008484015250505050565b6000601f19601f8301169050919050565b60006131d982613177565b6131e38185613182565b93506131f3818560208601613193565b6131fc816131bd565b840191505092915050565b6000602082019050818103600083015261322181846131ce565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132688261323d565b9050919050565b6132788161325d565b811461328357600080fd5b50565b6000813590506132958161326f565b92915050565b6000819050919050565b6132ae8161329b565b81146132b957600080fd5b50565b6000813590506132cb816132a5565b92915050565b600080604083850312156132e8576132e7613233565b5b60006132f685828601613286565b9250506020613307858286016132bc565b9150509250929050565b60008115159050919050565b61332681613311565b82525050565b6000602082019050613341600083018461331d565b92915050565b60006020828403121561335d5761335c613233565b5b600061336b84828501613286565b91505092915050565b6000819050919050565b600061339961339461338f8461323d565b613374565b61323d565b9050919050565b60006133ab8261337e565b9050919050565b60006133bd826133a0565b9050919050565b6133cd816133b2565b82525050565b60006020820190506133e860008301846133c4565b92915050565b6133f78161329b565b82525050565b600060208201905061341260008301846133ee565b92915050565b60008060006060848603121561343157613430613233565b5b600061343f86828701613286565b935050602061345086828701613286565b9250506040613461868287016132bc565b9150509250925092565b600060ff82169050919050565b6134818161346b565b82525050565b600060208201905061349c6000830184613478565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126134c7576134c66134a2565b5b8235905067ffffffffffffffff8111156134e4576134e36134a7565b5b602083019150836020820283011115613500576134ff6134ac565b5b9250929050565b61351081613311565b811461351b57600080fd5b50565b60008135905061352d81613507565b92915050565b60008060006040848603121561354c5761354b613233565b5b600084013567ffffffffffffffff81111561356a57613569613238565b5b613576868287016134b1565b935093505060206135898682870161351e565b9150509250925092565b61359c8161325d565b82525050565b60006020820190506135b76000830184613593565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135f5826131bd565b810181811067ffffffffffffffff82111715613614576136136135bd565b5b80604052505050565b6000613627613229565b905061363382826135ec565b919050565b600067ffffffffffffffff821115613653576136526135bd565b5b602082029050602081019050919050565b600061367761367284613638565b61361d565b9050808382526020820190506020840283018581111561369a576136996134ac565b5b835b818110156136c357806136af8882613286565b84526020840193505060208101905061369c565b5050509392505050565b600082601f8301126136e2576136e16134a2565b5b81356136f2848260208601613664565b91505092915050565b60006020828403121561371157613710613233565b5b600082013567ffffffffffffffff81111561372f5761372e613238565b5b61373b848285016136cd565b91505092915050565b6000806040838503121561375b5761375a613233565b5b600061376985828601613286565b925050602061377a85828601613286565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b60006137ba601783613182565b91506137c582613784565b602082019050919050565b600060208201905081810360008301526137e9816137ad565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061383757607f821691505b60208210810361384a576138496137f0565b5b50919050565b60008151905061385f816132a5565b92915050565b60006020828403121561387b5761387a613233565b5b600061388984828501613850565b91505092915050565b60006040820190506138a76000830185613593565b6138b460208301846133ee565b9392505050565b6000815190506138ca81613507565b92915050565b6000602082840312156138e6576138e5613233565b5b60006138f4848285016138bb565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613933602083613182565b915061393e826138fd565b602082019050919050565b6000602082019050818103600083015261396281613926565b9050919050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b60006139c5602283613182565b91506139d082613969565b604082019050919050565b600060208201905081810360008301526139f4816139b8565b9050919050565b600081519050613a0a8161326f565b92915050565b600060208284031215613a2657613a25613233565b5b6000613a34848285016139fb565b91505092915050565b6000604082019050613a526000830185613593565b613a5f6020830184613593565b9392505050565b6000819050919050565b6000613a8b613a86613a8184613a66565b613374565b61329b565b9050919050565b613a9b81613a70565b82525050565b600060c082019050613ab66000830189613593565b613ac360208301886133ee565b613ad06040830187613a92565b613add6060830186613a92565b613aea6080830185613593565b613af760a08301846133ee565b979650505050505050565b600080600060608486031215613b1b57613b1a613233565b5b6000613b2986828701613850565b9350506020613b3a86828701613850565b9250506040613b4b86828701613850565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b8f8261329b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bc157613bc0613b55565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b6000613c28602583613182565b9150613c3382613bcc565b604082019050919050565b60006020820190508181036000830152613c5781613c1b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cba602683613182565b9150613cc582613c5e565b604082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d4c602483613182565b9150613d5782613cf0565b604082019050919050565b60006020820190508181036000830152613d7b81613d3f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dde602283613182565b9150613de982613d82565b604082019050919050565b60006020820190508181036000830152613e0d81613dd1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e70602583613182565b9150613e7b82613e14565b604082019050919050565b60006020820190508181036000830152613e9f81613e63565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f02602383613182565b9150613f0d82613ea6565b604082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613f94602983613182565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b6000614026602383613182565b915061403182613fca565b604082019050919050565b6000602082019050818103600083015261405581614019565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e7366657260008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b60006140b8602783613182565b91506140c38261405c565b604082019050919050565b600060208201905081810360008301526140e7816140ab565b9050919050565b60006140f98261329b565b91506141048361329b565b925082820390508181111561411c5761411b613b55565b5b92915050565b600061412d8261329b565b91506141388361329b565b92508282019050808211156141505761414f613b55565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061418c601b83613182565b915061419782614156565b602082019050919050565b600060208201905081810360008301526141bb8161417f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142268161325d565b82525050565b6000614238838361421d565b60208301905092915050565b6000602082019050919050565b600061425c826141f1565b61426681856141fc565b93506142718361420d565b8060005b838110156142a2578151614289888261422c565b975061429483614244565b925050600181019050614275565b5085935050505092915050565b600060a0820190506142c460008301886133ee565b6142d16020830187613a92565b81810360408301526142e38186614251565b90506142f26060830185613593565b6142ff60808301846133ee565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122041ffc61028378510a1d17995104bc19537010892084523bdc9b23b79e8a3cc7d64736f6c63430008110033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b9250828203905081811115610a4e57610a4d6109f1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220064568a7bf3069768422974f74e32ecba63c8569ab82ad15ae3f7a734fe50d2964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806385d4787b116100f7578063a9059cbb11610095578063e68167aa11610064578063e68167aa1461065f578063e7dad4f91461068a578063ec11ba34146106c7578063f2fde38b146106de576101d8565b8063a9059cbb146105a3578063c9567bf9146105e0578063d5f39488146105f7578063dd62ed3e14610622576101d8565b806395f4c958116100d157806395f4c958146104fb5780639b0e2e8614610512578063a2ae74f41461053b578063a457c2d714610566576101d8565b806385d4787b1461047c5780638da5cb5b146104a557806395d89b41146104d0576101d8565b8063313ce5671161016f57806351bc3c851161013e57806351bc3c85146103d45780635342acb4146103eb57806370a0823114610428578063715018a614610465576101d8565b8063313ce567146103185780633950935114610343578063441d801f1461038057806350faa48f146103a9576101d8565b8063139196f7116101ab578063139196f71461025c5780631694505e1461028557806318160ddd146102b057806323b872dd146102db576101d8565b806306e99fef146101dd57806306fdde03146101f4578063095ea7b31461021f576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610707565b005b34801561020057600080fd5b5061020961080f565b6040516102169190613207565b60405180910390f35b34801561022b57600080fd5b50610246600480360381019061024191906132d1565b6108a1565b604051610253919061332c565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613347565b6108bf565b005b34801561029157600080fd5b5061029a610a7f565b6040516102a791906133d3565b60405180910390f35b3480156102bc57600080fd5b506102c5610aa5565b6040516102d291906133fd565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613418565b610aaf565b60405161030f919061332c565b60405180910390f35b34801561032457600080fd5b5061032d610b88565b60405161033a9190613487565b60405180910390f35b34801561034f57600080fd5b5061036a600480360381019061036591906132d1565b610b9f565b604051610377919061332c565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190613533565b610c52565b005b3480156103b557600080fd5b506103be610cf7565b6040516103cb91906135a2565b60405180910390f35b3480156103e057600080fd5b506103e9610d1d565b005b3480156103f757600080fd5b50610412600480360381019061040d9190613347565b610d55565b60405161041f919061332c565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190613347565b610dab565b60405161045c91906133fd565b60405180910390f35b34801561047157600080fd5b5061047a610df4565b005b34801561048857600080fd5b506104a3600480360381019061049e91906136fb565b610f47565b005b3480156104b157600080fd5b506104ba610fea565b6040516104c791906135a2565b60405180910390f35b3480156104dc57600080fd5b506104e5611013565b6040516104f29190613207565b60405180910390f35b34801561050757600080fd5b506105106110a5565b005b34801561051e57600080fd5b50610539600480360381019061053491906136fb565b6110af565b005b34801561054757600080fd5b50610550611152565b60405161055d919061332c565b60405180910390f35b34801561057257600080fd5b5061058d600480360381019061058891906132d1565b611165565b60405161059a919061332c565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c591906132d1565b611232565b6040516105d7919061332c565b60405180910390f35b3480156105ec57600080fd5b506105f5611250565b005b34801561060357600080fd5b5061060c6117a2565b60405161061991906135a2565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190613744565b6117c8565b60405161065691906133fd565b60405180910390f35b34801561066b57600080fd5b5061067461184f565b60405161068191906133fd565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190613347565b611a64565b6040516106be919061332c565b60405180910390f35b3480156106d357600080fd5b506106dc611aba565b005b3480156106ea57600080fd5b5061070560048036038101906107009190613347565b611bc3565b005b61070f611d84565b73ffffffffffffffffffffffffffffffffffffffff16600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610795906137d0565b60405180910390fd5b6000479050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561080b573d6000803e3d6000fd5b5050565b60606009805461081e9061381f565b80601f016020809104026020016040519081016040528092919081815260200182805461084a9061381f565b80156108975780601f1061086c57610100808354040283529160200191610897565b820191906000526020600020905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b60006108b56108ae611d84565b8484611d8c565b6001905092915050565b6108c7611d84565b73ffffffffffffffffffffffffffffffffffffffff16600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d906137d0565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161099691906135a2565b602060405180830381865afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190613865565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610a36929190613892565b6020604051808303816000875af1158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7991906138d0565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b6000610abc848484611f55565b610b7d84610ac8611d84565b610b788560405180606001604052806028815260200161430a60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b2e611d84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a99092919063ffffffff16565b611d8c565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b6000610c48610bac611d84565b84610c438560066000610bbd611d84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290d90919063ffffffff16565b611d8c565b6001905092915050565b610c5a611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90613949565b60405180910390fd5b610cf283838361296b565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d2830610dab565b90506000811115610d5257600d60009054906101000a900460ff16610d5157610d5081612a16565b5b5b50565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dfc611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090613949565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f4f611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd390613949565b60405180910390fd5b610fe7816001612cc8565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a80546110229061381f565b80601f016020809104026020016040519081016040528092919081815260200182805461104e9061381f565b801561109b5780601f106110705761010080835404028352916020019161109b565b820191906000526020600020905b81548152906001019060200180831161107e57829003601f168201915b5050505050905090565b6110ad612dbf565b565b6110b7611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b90613949565b60405180910390fd5b61114f816000612cc8565b50565b600d60159054906101000a900460ff1681565b6000611228611172611d84565b8461122385604051806060016040528060258152602001614332602591396006600061119c611d84565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a99092919063ffffffff16565b611d8c565b6001905092915050565b600061124661123f611d84565b8484611f55565b6001905092915050565b611258611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90613949565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d906139db565b60405180910390fd5b6113a530600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c54611d8c565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114369190613a10565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e39190613a10565b6040518363ffffffff1660e01b8152600401611500929190613a3d565b6020604051808303816000875af115801561151f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115439190613a10565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306115cc30610dab565b6000806115d7610fea565b426040518863ffffffff1660e01b81526004016115f996959493929190613aa1565b60606040518083038185885af1158015611617573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163c9190613b02565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116de929190613892565b6020604051808303816000875af11580156116fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172191906138d0565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60156101000a81548160ff021916908315150217905550565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190613865565b811015611a5c576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b815260040161194e91906133fd565b602060405180830381865afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f9190613a10565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b81526004016119ee91906135a2565b602060405180830381865afa158015611a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2f9190613865565b9050804210611a47578380611a4390613b84565b9450505b50508080611a5490613b84565b915050611859565b508091505090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611ac2611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4690613949565b60405180910390fd5b600d60159054906101000a900460ff16611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9590613c3e565b60405180910390fd5b611ba6612dbf565b6000600d60156101000a81548160ff021916908315150217905550565b611bcb611d84565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90613949565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90613cd0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290613d62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190613df4565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f4891906133fd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90613e86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613f18565b60405180910390fd5b60008111612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90613faa565b60405180910390fd5b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561211c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561215b575061212b610fea565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561219a575061216a610fea565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b9050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122485750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561228057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122b857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156127145780156126f457600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036123c657600d60159054906101000a900460ff16156123c557612335612dbf565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82884426040518363ffffffff1660e01b8152600401612392929190613892565b600060405180830381600087803b1580156123ac57600080fd5b505af11580156123c0573d6000803e3d6000fd5b505050505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124715750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561255a57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561251a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612559576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125509061403c565b60405180910390fd5b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156126065750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126ef57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126af5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6126ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e5906140ce565b60405180910390fd5b5b612713565b600d60159054906101000a900460ff161561271257612711612dbf565b5b5b5b61276682600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461312d90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fb82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290d90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161289b91906133fd565b60405180910390a350505050565b60008383111582906128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e89190613207565b60405180910390fd5b506000838561290091906140ee565b9050809150509392505050565b600080828461291c9190614122565b905083811015612961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612958906141a2565b60405180910390fd5b8091505092915050565b60005b83839050811015612a1057600084848381811061298e5761298d6141c2565b5b90506020020160208101906129a39190613347565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550508080612a0890613b84565b91505061296e565b50505050565b6000600267ffffffffffffffff811115612a3357612a326135bd565b5b604051908082528060200260200182016040528015612a615781602001602082028036833780820191505090505b5090503081600081518110612a7957612a786141c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b449190613a10565b81600181518110612b5857612b576141c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bbf30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d8c565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c239594939291906142af565b600060405180830381600087803b158015612c3d57600080fd5b505af1158015612c51573d6000803e3d6000fd5b505050506000479050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612cc2573d6000803e3d6000fd5b50505050565b60005b8251811015612dba576000838281518110612ce957612ce86141c2565b5b602002602001015190508215612d56576001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612da6565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b508080612db290613b84565b915050612ccb565b505050565b600d60159054906101000a900460ff161561312b5760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e689190613865565b811015613129576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401612ecc91906133fd565b602060405180830381865afa158015612ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0d9190613a10565b90506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561308757612fae81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461312d90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061304381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290d90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016130e291906135a2565b600060405180830381600087803b1580156130fc57600080fd5b505af1158015613110573d6000803e3d6000fd5b505050505050808061312190613b84565b915050612dd7565b505b565b600061316f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128a9565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131b1578082015181840152602081019050613196565b60008484015250505050565b6000601f19601f8301169050919050565b60006131d982613177565b6131e38185613182565b93506131f3818560208601613193565b6131fc816131bd565b840191505092915050565b6000602082019050818103600083015261322181846131ce565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132688261323d565b9050919050565b6132788161325d565b811461328357600080fd5b50565b6000813590506132958161326f565b92915050565b6000819050919050565b6132ae8161329b565b81146132b957600080fd5b50565b6000813590506132cb816132a5565b92915050565b600080604083850312156132e8576132e7613233565b5b60006132f685828601613286565b9250506020613307858286016132bc565b9150509250929050565b60008115159050919050565b61332681613311565b82525050565b6000602082019050613341600083018461331d565b92915050565b60006020828403121561335d5761335c613233565b5b600061336b84828501613286565b91505092915050565b6000819050919050565b600061339961339461338f8461323d565b613374565b61323d565b9050919050565b60006133ab8261337e565b9050919050565b60006133bd826133a0565b9050919050565b6133cd816133b2565b82525050565b60006020820190506133e860008301846133c4565b92915050565b6133f78161329b565b82525050565b600060208201905061341260008301846133ee565b92915050565b60008060006060848603121561343157613430613233565b5b600061343f86828701613286565b935050602061345086828701613286565b9250506040613461868287016132bc565b9150509250925092565b600060ff82169050919050565b6134818161346b565b82525050565b600060208201905061349c6000830184613478565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126134c7576134c66134a2565b5b8235905067ffffffffffffffff8111156134e4576134e36134a7565b5b602083019150836020820283011115613500576134ff6134ac565b5b9250929050565b61351081613311565b811461351b57600080fd5b50565b60008135905061352d81613507565b92915050565b60008060006040848603121561354c5761354b613233565b5b600084013567ffffffffffffffff81111561356a57613569613238565b5b613576868287016134b1565b935093505060206135898682870161351e565b9150509250925092565b61359c8161325d565b82525050565b60006020820190506135b76000830184613593565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135f5826131bd565b810181811067ffffffffffffffff82111715613614576136136135bd565b5b80604052505050565b6000613627613229565b905061363382826135ec565b919050565b600067ffffffffffffffff821115613653576136526135bd565b5b602082029050602081019050919050565b600061367761367284613638565b61361d565b9050808382526020820190506020840283018581111561369a576136996134ac565b5b835b818110156136c357806136af8882613286565b84526020840193505060208101905061369c565b5050509392505050565b600082601f8301126136e2576136e16134a2565b5b81356136f2848260208601613664565b91505092915050565b60006020828403121561371157613710613233565b5b600082013567ffffffffffffffff81111561372f5761372e613238565b5b61373b848285016136cd565b91505092915050565b6000806040838503121561375b5761375a613233565b5b600061376985828601613286565b925050602061377a85828601613286565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b60006137ba601783613182565b91506137c582613784565b602082019050919050565b600060208201905081810360008301526137e9816137ad565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061383757607f821691505b60208210810361384a576138496137f0565b5b50919050565b60008151905061385f816132a5565b92915050565b60006020828403121561387b5761387a613233565b5b600061388984828501613850565b91505092915050565b60006040820190506138a76000830185613593565b6138b460208301846133ee565b9392505050565b6000815190506138ca81613507565b92915050565b6000602082840312156138e6576138e5613233565b5b60006138f4848285016138bb565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613933602083613182565b915061393e826138fd565b602082019050919050565b6000602082019050818103600083015261396281613926565b9050919050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b60006139c5602283613182565b91506139d082613969565b604082019050919050565b600060208201905081810360008301526139f4816139b8565b9050919050565b600081519050613a0a8161326f565b92915050565b600060208284031215613a2657613a25613233565b5b6000613a34848285016139fb565b91505092915050565b6000604082019050613a526000830185613593565b613a5f6020830184613593565b9392505050565b6000819050919050565b6000613a8b613a86613a8184613a66565b613374565b61329b565b9050919050565b613a9b81613a70565b82525050565b600060c082019050613ab66000830189613593565b613ac360208301886133ee565b613ad06040830187613a92565b613add6060830186613a92565b613aea6080830185613593565b613af760a08301846133ee565b979650505050505050565b600080600060608486031215613b1b57613b1a613233565b5b6000613b2986828701613850565b9350506020613b3a86828701613850565b9250506040613b4b86828701613850565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b8f8261329b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bc157613bc0613b55565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b6000613c28602583613182565b9150613c3382613bcc565b604082019050919050565b60006020820190508181036000830152613c5781613c1b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cba602683613182565b9150613cc582613c5e565b604082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d4c602483613182565b9150613d5782613cf0565b604082019050919050565b60006020820190508181036000830152613d7b81613d3f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dde602283613182565b9150613de982613d82565b604082019050919050565b60006020820190508181036000830152613e0d81613dd1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e70602583613182565b9150613e7b82613e14565b604082019050919050565b60006020820190508181036000830152613e9f81613e63565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f02602383613182565b9150613f0d82613ea6565b604082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613f94602983613182565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b6000614026602383613182565b915061403182613fca565b604082019050919050565b6000602082019050818103600083015261405581614019565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e7366657260008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b60006140b8602783613182565b91506140c38261405c565b604082019050919050565b600060208201905081810360008301526140e7816140ab565b9050919050565b60006140f98261329b565b91506141048361329b565b925082820390508181111561411c5761411b613b55565b5b92915050565b600061412d8261329b565b91506141388361329b565b92508282019050808211156141505761414f613b55565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061418c601b83613182565b915061419782614156565b602082019050919050565b600060208201905081810360008301526141bb8161417f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142268161325d565b82525050565b6000614238838361421d565b60208301905092915050565b6000602082019050919050565b600061425c826141f1565b61426681856141fc565b93506142718361420d565b8060005b838110156142a2578151614289888261422c565b975061429483614244565b925050600181019050614275565b5085935050505092915050565b600060a0820190506142c460008301886133ee565b6142d16020830187613a92565b81810360408301526142e38186614251565b90506142f26060830185613593565b6142ff60808301846133ee565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122041ffc61028378510a1d17995104bc19537010892084523bdc9b23b79e8a3cc7d64736f6c63430008110033

Deployed Bytecode Sourcemap

11503:9753:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20857:146;;;;;;;;;;;;;:::i;:::-;;12969:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13802:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21011:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11805:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13246:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13971:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13155:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14292:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15767:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11918:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19898:267;;;;;;;;;;;;;:::i;:::-;;16905:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13349:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6577:148;;;;;;;;;;;;;:::i;:::-;;15140:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6363:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13060:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19822:70;;;;;;;;;;;;;:::i;:::-;;15276:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12478:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14518:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13476:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16188:709;;;;;;;;;;;;;:::i;:::-;;12448:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13651:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19432:382;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15023:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14795:219;;;;;;;;;;;;;:::i;:::-;;6733:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20857:146;12579:12;:10;:12::i;:::-;12567:24;;:8;;;;;;;;;;;:24;;;12559:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20904:18:::1;20925:21;20904:42;;20965:8;;;;;;;;;;;20957:26;;:38;20984:10;20957:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20893:110;20857:146::o:0;12969:83::-;13006:13;13039:5;13032:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12969:83;:::o;13802:161::-;13877:4;13894:39;13903:12;:10;:12::i;:::-;13917:7;13926:6;13894:8;:39::i;:::-;13951:4;13944:11;;13802:161;;;;:::o;21011:242::-;12579:12;:10;:12::i;:::-;12567:24;;:8;;;;;;;;;;;:24;;;12559:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21089:17:::1;21116:15;21089:43;;21143:15;21161:10;:20;;;21190:4;21161:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21143:53;;21207:10;:19;;;21227:8;;;;;;;;;;;21237:7;21207:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21078:175;;21011:242:::0;:::o;11805:106::-;;;;;;;;;;;;;:::o;13246:95::-;13299:7;13326;;13319:14;;13246:95;:::o;13971:313::-;14069:4;14086:36;14096:6;14104:9;14115:6;14086:9;:36::i;:::-;14133:121;14142:6;14150:12;:10;:12::i;:::-;14164:89;14202:6;14164:89;;;;;;;;;;;;;;;;;:11;:19;14176:6;14164:19;;;;;;;;;;;;;;;:33;14184:12;:10;:12::i;:::-;14164:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14133:8;:121::i;:::-;14272:4;14265:11;;13971:313;;;;;:::o;13155:83::-;13196:5;13221:9;;;;;;;;;;;13214:16;;13155:83;:::o;14292:218::-;14380:4;14397:83;14406:12;:10;:12::i;:::-;14420:7;14429:50;14468:10;14429:11;:25;14441:12;:10;:12::i;:::-;14429:25;;;;;;;;;;;;;;;:34;14455:7;14429:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14397:8;:83::i;:::-;14498:4;14491:11;;14292:218;;;;:::o;15767:161::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15879:41:::1;15892:9;;15903:16;15879:12;:41::i;:::-;15767:161:::0;;;:::o;11918:38::-;;;;;;;;;;;;;:::o;19898:267::-;19940:28;19971:24;19989:4;19971:9;:24::i;:::-;19940:55;;20033:1;20010:20;:24;20006:152;;;20056:16;;;;;;;;;;;20051:96;;20093:38;20110:20;20093:16;:38::i;:::-;20051:96;20006:152;19929:236;19898:267::o;16905:124::-;16970:4;16994:18;:27;17013:7;16994:27;;;;;;;;;;;;;;;;;;;;;;;;;16987:34;;16905:124;;;:::o;13349:119::-;13415:7;13442:9;:18;13452:7;13442:18;;;;;;;;;;;;;;;;13435:25;;13349:119;;;:::o;6577:148::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6684:1:::1;6647:40;;6668:6;::::0;::::1;;;;;;;;6647:40;;;;;;;;;;;;6715:1;6698:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6577:148::o:0;15140:128::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15224:36:::1;15244:9;15255:4;15224:19;:36::i;:::-;15140:128:::0;:::o;6363:79::-;6401:7;6428:6;;;;;;;;;;;6421:13;;6363:79;:::o;13060:87::-;13099:13;13132:7;13125:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13060:87;:::o;19822:70::-;19869:15;:13;:15::i;:::-;19822:70::o;15276:131::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15362:37:::1;15382:9;15393:5;15362:19;:37::i;:::-;15276:131:::0;:::o;12478:34::-;;;;;;;;;;;;;:::o;14518:269::-;14611:4;14628:129;14637:12;:10;:12::i;:::-;14651:7;14660:96;14699:15;14660:96;;;;;;;;;;;;;;;;;:11;:25;14672:12;:10;:12::i;:::-;14660:25;;;;;;;;;;;;;;;:34;14686:7;14660:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;14628:8;:129::i;:::-;14775:4;14768:11;;14518:269;;;;:::o;13476:167::-;13554:4;13571:42;13581:12;:10;:12::i;:::-;13595:9;13606:6;13571:9;:42::i;:::-;13631:4;13624:11;;13476:167;;;;:::o;16188:709::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16273:1:::1;16251:24;;:10;;;;;;;;;;;:24;;;16243:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16324:58;16341:4;16356:15;;;;;;;;;;;16374:7;;16324:8;:58::i;:::-;16424:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16406:55;;;16470:4;16477:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16406:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16393:10;;:107;;;;;;;;;;;;;;;;;;16511:15;;;;;;;;;;;:31;;;16550:21;16595:4;16615:24;16633:4;16615:9;:24::i;:::-;16654:1;16670::::0;16686:7:::1;:5;:7::i;:::-;16708:15;16511:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16742:10;;;;;;;;;;;16735:26;;;16770:15;;;;;;;;;;;16788:14;16735:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16838:10;;;;;;;;;;;16814:6;;:35;;;;;;;;;;;;;;;;;;16885:4;16860:22;;:29;;;;;;;;;;;;;;;;;;16188:709::o:0;12448:23::-;;;;;;;;;;;;;:::o;13651:143::-;13732:7;13759:11;:18;13771:5;13759:18;;;;;;;;;;;;;;;:27;13778:7;13759:27;;;;;;;;;;;;;;;;13752:34;;13651:143;;;;:::o;19432:382::-;19482:7;19502:13;19518:1;19502:17;;19534:9;19530:254;19552:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19548:1;:24;19530:254;;;19594:14;19611:13;;;;;;;;;;;:27;;;19639:1;19611:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19594:47;;19656:14;19673:13;;;;;;;;;;;:17;;;19691:6;19673:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19656:42;;19736:9;19716:15;:29;19713:59;;19765:7;;;;;:::i;:::-;;;;19713:59;19579:205;;19574:3;;;;;:::i;:::-;;;;19530:254;;;;19801:5;19794:12;;;19432:382;:::o;15023:109::-;15084:4;15108:10;:16;15119:4;15108:16;;;;;;;;;;;;;;;;;;;;;;;;;15101:23;;15023:109;;;:::o;14795:219::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14876:22:::1;;;;;;;;;;;14868:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14950:15;:13;:15::i;:::-;15001:5;14976:22;;:30;;;;;;;;;;;;;;;;;;14795:219::o:0;6733:244::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6842:1:::1;6822:22;;:8;:22;;::::0;6814:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6932:8;6903:38;;6924:6;::::0;::::1;;;;;;;;6903:38;;;;;;;;;;;;6961:8;6952:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6733:244:::0;:::o;2705:98::-;2758:7;2785:10;2778:17;;2705:98;:::o;17037:337::-;17147:1;17130:19;;:5;:19;;;17122:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17228:1;17209:21;;:7;:21;;;17201:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17312:6;17282:11;:18;17294:5;17282:18;;;;;;;;;;;;;;;:27;17301:7;17282:27;;;;;;;;;;;;;;;:36;;;;17350:7;17334:32;;17343:5;17334:32;;;17359:6;17334:32;;;;;;:::i;:::-;;;;;;;;17037:337;;;:::o;17382:1488::-;17486:1;17470:18;;:4;:18;;;17462:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17563:1;17549:16;;:2;:16;;;17541:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17633:1;17624:6;:10;17616:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17691:13;17708:18;:24;17727:4;17708:24;;;;;;;;;;;;;;;;;;;;;;;;;17707:25;:52;;;;;17737:18;:22;17756:2;17737:22;;;;;;;;;;;;;;;;;;;;;;;;;17736:23;17707:52;:71;;;;;17771:7;:5;:7::i;:::-;17763:15;;:4;:15;;;;17707:71;:88;;;;;17788:7;:5;:7::i;:::-;17782:13;;:2;:13;;;;17707:88;17691:104;;17817:8;;;;;;;;;;;17809:16;;:4;:16;;;;:34;;;;;17835:8;;;;;;;;;;;17829:14;;:2;:14;;;;17809:34;:59;;;;;17863:4;17847:21;;:4;:21;;;;17809:59;:82;;;;;17886:4;17872:19;;:2;:19;;;;17809:82;17806:900;;;17911:8;17908:787;;;17952:10;;;;;;;;;;;17944:18;;:4;:18;;;17940:225;;17990:22;;;;;;;;;;;17987:158;;;18041:15;:13;:15::i;:::-;18083:13;;;;;;;;;;;:17;;;18101:2;18105:15;18083:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17987:158;17940:225;18195:10;;;;;;;;;;;18187:18;;:4;:18;;;;:38;;;;;18215:10;;;;;;;;;;;18209:16;;:2;:16;;;18187:38;18183:179;;;18259:10;:16;18270:4;18259:16;;;;;;;;;;;;;;;;;;;;;;;;;18258:17;:36;;;;;18280:10;:14;18291:2;18280:14;;;;;;;;;;;;;;;;;;;;;;;;;18279:15;18258:36;18250:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;18183:179;18392:10;;;;;;;;;;;18384:18;;:4;:18;;;;:38;;;;;18412:10;;;;;;;;;;;18406:16;;:2;:16;;;;18384:38;18380:175;;;18456:10;:16;18467:4;18456:16;;;;;;;;;;;;;;;;;;;;;;;;;18455:17;:36;;;;;18477:10;:14;18488:2;18477:14;;;;;;;;;;;;;;;;;;;;;;;;;18476:15;18455:36;18447:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18380:175;17908:787;;;18598:22;;;;;;;;;;;18595:85;;;18645:15;:13;:15::i;:::-;18595:85;17908:787;17806:900;18741:27;18761:6;18741:9;:15;18751:4;18741:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;18723:9;:15;18733:4;18723:15;;;;;;;;;;;;;;;:45;;;;18795:25;18813:6;18795:9;:13;18805:2;18795:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;18779:9;:13;18789:2;18779:13;;;;;;;;;;;;;;;:41;;;;18851:2;18836:26;;18845:4;18836:26;;;18855:6;18836:26;;;;;;:::i;:::-;;;;;;;;17451:1419;17382:1488;;;:::o;1177:192::-;1263:7;1296:1;1291;:6;;1299:12;1283:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1323:9;1339:1;1335;:5;;;;:::i;:::-;1323:17;;1360:1;1353:8;;;1177:192;;;;;:::o;844:181::-;902:7;922:9;938:1;934;:5;;;;:::i;:::-;922:17;;963:1;958;:6;;950:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1016:1;1009:8;;;844:181;;;;:::o;15938:236::-;16025:9;16020:147;16044:9;;:16;;16040:1;:20;16020:147;;;16082:12;16097:9;;16107:1;16097:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16082:27;;16151:4;16124:18;:24;16143:4;16124:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;16067:100;16062:3;;;;;:::i;:::-;;;;16020:147;;;;15938:236;;;:::o;20173:633::-;20299:21;20337:1;20323:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20299:40;;20368:4;20350;20355:1;20350:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20394:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20384:4;20389:1;20384:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;20427:62;20444:4;20459:15;;;;;;;;;;;20477:11;20427:8;:62::i;:::-;20500:15;;;;;;;;;;;:66;;;20581:11;20607:1;20623:4;20650;20670:15;20500:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20707:18;20728:21;20707:42;;20768:8;;;;;;;;;;;20760:26;;:38;20787:10;20760:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20228:578;;20173:633;:::o;15415:346::-;15510:9;15505:249;15529:9;:16;15525:1;:20;15505:249;;;15567:12;15582:9;15592:1;15582:12;;;;;;;;:::i;:::-;;;;;;;;15567:27;;15612:7;15609:134;;;15659:4;15640:10;:16;15651:4;15640:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15609:134;;;15711:10;:16;15722:4;15711:16;;;;;;;;;;;;;;;;15704:23;;;;;;;;;;;15609:134;15552:202;15547:3;;;;;:::i;:::-;;;;15505:249;;;;15415:346;;:::o;18878:546::-;18925:22;;;;;;;;;;;18922:495;;;18968:9;18964:442;18986:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18982:1;:24;18964:442;;;19032:14;19049:13;;;;;;;;;;;:27;;;19077:1;19049:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19032:47;;19098:14;19115:9;:17;19125:6;19115:17;;;;;;;;;;;;;;;;19098:34;;19163:1;19154:6;:10;19151:193;;;19209:29;19231:6;19209:9;:17;19219:6;19209:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;19189:9;:17;19199:6;19189:17;;;;;;;;;;;;;;;:49;;;;19288:36;19317:6;19288:9;:24;19306:4;19288:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;19261:9;:24;19279:4;19261:24;;;;;;;;;;;;;;;:63;;;;19151:193;19362:13;;;;;;;;;;;:20;;;19383:6;19362:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19013:393;;19008:3;;;;;:::i;:::-;;;;18964:442;;;;18922:495;18878:546::o;1033:136::-;1091:7;1118:43;1122:1;1125;1118:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1111:50;;1033:136;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:117::-;6270:1;6267;6260:12;6284:117;6393:1;6390;6383:12;6407:117;6516:1;6513;6506:12;6547:568;6620:8;6630:6;6680:3;6673:4;6665:6;6661:17;6657:27;6647:122;;6688:79;;:::i;:::-;6647:122;6801:6;6788:20;6778:30;;6831:18;6823:6;6820:30;6817:117;;;6853:79;;:::i;:::-;6817:117;6967:4;6959:6;6955:17;6943:29;;7021:3;7013:4;7005:6;7001:17;6991:8;6987:32;6984:41;6981:128;;;7028:79;;:::i;:::-;6981:128;6547:568;;;;;:::o;7121:116::-;7191:21;7206:5;7191:21;:::i;:::-;7184:5;7181:32;7171:60;;7227:1;7224;7217:12;7171:60;7121:116;:::o;7243:133::-;7286:5;7324:6;7311:20;7302:29;;7340:30;7364:5;7340:30;:::i;:::-;7243:133;;;;:::o;7382:698::-;7474:6;7482;7490;7539:2;7527:9;7518:7;7514:23;7510:32;7507:119;;;7545:79;;:::i;:::-;7507:119;7693:1;7682:9;7678:17;7665:31;7723:18;7715:6;7712:30;7709:117;;;7745:79;;:::i;:::-;7709:117;7858:80;7930:7;7921:6;7910:9;7906:22;7858:80;:::i;:::-;7840:98;;;;7636:312;7987:2;8013:50;8055:7;8046:6;8035:9;8031:22;8013:50;:::i;:::-;8003:60;;7958:115;7382:698;;;;;:::o;8086:118::-;8173:24;8191:5;8173:24;:::i;:::-;8168:3;8161:37;8086:118;;:::o;8210:222::-;8303:4;8341:2;8330:9;8326:18;8318:26;;8354:71;8422:1;8411:9;8407:17;8398:6;8354:71;:::i;:::-;8210:222;;;;:::o;8438:180::-;8486:77;8483:1;8476:88;8583:4;8580:1;8573:15;8607:4;8604:1;8597:15;8624:281;8707:27;8729:4;8707:27;:::i;:::-;8699:6;8695:40;8837:6;8825:10;8822:22;8801:18;8789:10;8786:34;8783:62;8780:88;;;8848:18;;:::i;:::-;8780:88;8888:10;8884:2;8877:22;8667:238;8624:281;;:::o;8911:129::-;8945:6;8972:20;;:::i;:::-;8962:30;;9001:33;9029:4;9021:6;9001:33;:::i;:::-;8911:129;;;:::o;9046:311::-;9123:4;9213:18;9205:6;9202:30;9199:56;;;9235:18;;:::i;:::-;9199:56;9285:4;9277:6;9273:17;9265:25;;9345:4;9339;9335:15;9327:23;;9046:311;;;:::o;9380:710::-;9476:5;9501:81;9517:64;9574:6;9517:64;:::i;:::-;9501:81;:::i;:::-;9492:90;;9602:5;9631:6;9624:5;9617:21;9665:4;9658:5;9654:16;9647:23;;9718:4;9710:6;9706:17;9698:6;9694:30;9747:3;9739:6;9736:15;9733:122;;;9766:79;;:::i;:::-;9733:122;9881:6;9864:220;9898:6;9893:3;9890:15;9864:220;;;9973:3;10002:37;10035:3;10023:10;10002:37;:::i;:::-;9997:3;9990:50;10069:4;10064:3;10060:14;10053:21;;9940:144;9924:4;9919:3;9915:14;9908:21;;9864:220;;;9868:21;9482:608;;9380:710;;;;;:::o;10113:370::-;10184:5;10233:3;10226:4;10218:6;10214:17;10210:27;10200:122;;10241:79;;:::i;:::-;10200:122;10358:6;10345:20;10383:94;10473:3;10465:6;10458:4;10450:6;10446:17;10383:94;:::i;:::-;10374:103;;10190:293;10113:370;;;;:::o;10489:539::-;10573:6;10622:2;10610:9;10601:7;10597:23;10593:32;10590:119;;;10628:79;;:::i;:::-;10590:119;10776:1;10765:9;10761:17;10748:31;10806:18;10798:6;10795:30;10792:117;;;10828:79;;:::i;:::-;10792:117;10933:78;11003:7;10994:6;10983:9;10979:22;10933:78;:::i;:::-;10923:88;;10719:302;10489:539;;;;:::o;11034:474::-;11102:6;11110;11159:2;11147:9;11138:7;11134:23;11130:32;11127:119;;;11165:79;;:::i;:::-;11127:119;11285:1;11310:53;11355:7;11346:6;11335:9;11331:22;11310:53;:::i;:::-;11300:63;;11256:117;11412:2;11438:53;11483:7;11474:6;11463:9;11459:22;11438:53;:::i;:::-;11428:63;;11383:118;11034:474;;;;;:::o;11514:173::-;11654:25;11650:1;11642:6;11638:14;11631:49;11514:173;:::o;11693:366::-;11835:3;11856:67;11920:2;11915:3;11856:67;:::i;:::-;11849:74;;11932:93;12021:3;11932:93;:::i;:::-;12050:2;12045:3;12041:12;12034:19;;11693:366;;;:::o;12065:419::-;12231:4;12269:2;12258:9;12254:18;12246:26;;12318:9;12312:4;12308:20;12304:1;12293:9;12289:17;12282:47;12346:131;12472:4;12346:131;:::i;:::-;12338:139;;12065:419;;;:::o;12490:180::-;12538:77;12535:1;12528:88;12635:4;12632:1;12625:15;12659:4;12656:1;12649:15;12676:320;12720:6;12757:1;12751:4;12747:12;12737:22;;12804:1;12798:4;12794:12;12825:18;12815:81;;12881:4;12873:6;12869:17;12859:27;;12815:81;12943:2;12935:6;12932:14;12912:18;12909:38;12906:84;;12962:18;;:::i;:::-;12906:84;12727:269;12676:320;;;:::o;13002:143::-;13059:5;13090:6;13084:13;13075:22;;13106:33;13133:5;13106:33;:::i;:::-;13002:143;;;;:::o;13151:351::-;13221:6;13270:2;13258:9;13249:7;13245:23;13241:32;13238:119;;;13276:79;;:::i;:::-;13238:119;13396:1;13421:64;13477:7;13468:6;13457:9;13453:22;13421:64;:::i;:::-;13411:74;;13367:128;13151:351;;;;:::o;13508:332::-;13629:4;13667:2;13656:9;13652:18;13644:26;;13680:71;13748:1;13737:9;13733:17;13724:6;13680:71;:::i;:::-;13761:72;13829:2;13818:9;13814:18;13805:6;13761:72;:::i;:::-;13508:332;;;;;:::o;13846:137::-;13900:5;13931:6;13925:13;13916:22;;13947:30;13971:5;13947:30;:::i;:::-;13846:137;;;;:::o;13989:345::-;14056:6;14105:2;14093:9;14084:7;14080:23;14076:32;14073:119;;;14111:79;;:::i;:::-;14073:119;14231:1;14256:61;14309:7;14300:6;14289:9;14285:22;14256:61;:::i;:::-;14246:71;;14202:125;13989:345;;;;:::o;14340:182::-;14480:34;14476:1;14468:6;14464:14;14457:58;14340:182;:::o;14528:366::-;14670:3;14691:67;14755:2;14750:3;14691:67;:::i;:::-;14684:74;;14767:93;14856:3;14767:93;:::i;:::-;14885:2;14880:3;14876:12;14869:19;;14528:366;;;:::o;14900:419::-;15066:4;15104:2;15093:9;15089:18;15081:26;;15153:9;15147:4;15143:20;15139:1;15128:9;15124:17;15117:47;15181:131;15307:4;15181:131;:::i;:::-;15173:139;;14900:419;;;:::o;15325:221::-;15465:34;15461:1;15453:6;15449:14;15442:58;15534:4;15529:2;15521:6;15517:15;15510:29;15325:221;:::o;15552:366::-;15694:3;15715:67;15779:2;15774:3;15715:67;:::i;:::-;15708:74;;15791:93;15880:3;15791:93;:::i;:::-;15909:2;15904:3;15900:12;15893:19;;15552:366;;;:::o;15924:419::-;16090:4;16128:2;16117:9;16113:18;16105:26;;16177:9;16171:4;16167:20;16163:1;16152:9;16148:17;16141:47;16205:131;16331:4;16205:131;:::i;:::-;16197:139;;15924:419;;;:::o;16349:143::-;16406:5;16437:6;16431:13;16422:22;;16453:33;16480:5;16453:33;:::i;:::-;16349:143;;;;:::o;16498:351::-;16568:6;16617:2;16605:9;16596:7;16592:23;16588:32;16585:119;;;16623:79;;:::i;:::-;16585:119;16743:1;16768:64;16824:7;16815:6;16804:9;16800:22;16768:64;:::i;:::-;16758:74;;16714:128;16498:351;;;;:::o;16855:332::-;16976:4;17014:2;17003:9;16999:18;16991:26;;17027:71;17095:1;17084:9;17080:17;17071:6;17027:71;:::i;:::-;17108:72;17176:2;17165:9;17161:18;17152:6;17108:72;:::i;:::-;16855:332;;;;;:::o;17193:85::-;17238:7;17267:5;17256:16;;17193:85;;;:::o;17284:158::-;17342:9;17375:61;17393:42;17402:32;17428:5;17402:32;:::i;:::-;17393:42;:::i;:::-;17375:61;:::i;:::-;17362:74;;17284:158;;;:::o;17448:147::-;17543:45;17582:5;17543:45;:::i;:::-;17538:3;17531:58;17448:147;;:::o;17601:807::-;17850:4;17888:3;17877:9;17873:19;17865:27;;17902:71;17970:1;17959:9;17955:17;17946:6;17902:71;:::i;:::-;17983:72;18051:2;18040:9;18036:18;18027:6;17983:72;:::i;:::-;18065:80;18141:2;18130:9;18126:18;18117:6;18065:80;:::i;:::-;18155;18231:2;18220:9;18216:18;18207:6;18155:80;:::i;:::-;18245:73;18313:3;18302:9;18298:19;18289:6;18245:73;:::i;:::-;18328;18396:3;18385:9;18381:19;18372:6;18328:73;:::i;:::-;17601:807;;;;;;;;;:::o;18414:663::-;18502:6;18510;18518;18567:2;18555:9;18546:7;18542:23;18538:32;18535:119;;;18573:79;;:::i;:::-;18535:119;18693:1;18718:64;18774:7;18765:6;18754:9;18750:22;18718:64;:::i;:::-;18708:74;;18664:128;18831:2;18857:64;18913:7;18904:6;18893:9;18889:22;18857:64;:::i;:::-;18847:74;;18802:129;18970:2;18996:64;19052:7;19043:6;19032:9;19028:22;18996:64;:::i;:::-;18986:74;;18941:129;18414:663;;;;;:::o;19083:180::-;19131:77;19128:1;19121:88;19228:4;19225:1;19218:15;19252:4;19249:1;19242:15;19269:233;19308:3;19331:24;19349:5;19331:24;:::i;:::-;19322:33;;19377:66;19370:5;19367:77;19364:103;;19447:18;;:::i;:::-;19364:103;19494:1;19487:5;19483:13;19476:20;;19269:233;;;:::o;19508:224::-;19648:34;19644:1;19636:6;19632:14;19625:58;19717:7;19712:2;19704:6;19700:15;19693:32;19508:224;:::o;19738:366::-;19880:3;19901:67;19965:2;19960:3;19901:67;:::i;:::-;19894:74;;19977:93;20066:3;19977:93;:::i;:::-;20095:2;20090:3;20086:12;20079:19;;19738:366;;;:::o;20110:419::-;20276:4;20314:2;20303:9;20299:18;20291:26;;20363:9;20357:4;20353:20;20349:1;20338:9;20334:17;20327:47;20391:131;20517:4;20391:131;:::i;:::-;20383:139;;20110:419;;;:::o;20535:225::-;20675:34;20671:1;20663:6;20659:14;20652:58;20744:8;20739:2;20731:6;20727:15;20720:33;20535:225;:::o;20766:366::-;20908:3;20929:67;20993:2;20988:3;20929:67;:::i;:::-;20922:74;;21005:93;21094:3;21005:93;:::i;:::-;21123:2;21118:3;21114:12;21107:19;;20766:366;;;:::o;21138:419::-;21304:4;21342:2;21331:9;21327:18;21319:26;;21391:9;21385:4;21381:20;21377:1;21366:9;21362:17;21355:47;21419:131;21545:4;21419:131;:::i;:::-;21411:139;;21138:419;;;:::o;21563:223::-;21703:34;21699:1;21691:6;21687:14;21680:58;21772:6;21767:2;21759:6;21755:15;21748:31;21563:223;:::o;21792:366::-;21934:3;21955:67;22019:2;22014:3;21955:67;:::i;:::-;21948:74;;22031:93;22120:3;22031:93;:::i;:::-;22149:2;22144:3;22140:12;22133:19;;21792:366;;;:::o;22164:419::-;22330:4;22368:2;22357:9;22353:18;22345:26;;22417:9;22411:4;22407:20;22403:1;22392:9;22388:17;22381:47;22445:131;22571:4;22445:131;:::i;:::-;22437:139;;22164:419;;;:::o;22589:221::-;22729:34;22725:1;22717:6;22713:14;22706:58;22798:4;22793:2;22785:6;22781:15;22774:29;22589:221;:::o;22816:366::-;22958:3;22979:67;23043:2;23038:3;22979:67;:::i;:::-;22972:74;;23055:93;23144:3;23055:93;:::i;:::-;23173:2;23168:3;23164:12;23157:19;;22816:366;;;:::o;23188:419::-;23354:4;23392:2;23381:9;23377:18;23369:26;;23441:9;23435:4;23431:20;23427:1;23416:9;23412:17;23405:47;23469:131;23595:4;23469:131;:::i;:::-;23461:139;;23188:419;;;:::o;23613:224::-;23753:34;23749:1;23741:6;23737:14;23730:58;23822:7;23817:2;23809:6;23805:15;23798:32;23613:224;:::o;23843:366::-;23985:3;24006:67;24070:2;24065:3;24006:67;:::i;:::-;23999:74;;24082:93;24171:3;24082:93;:::i;:::-;24200:2;24195:3;24191:12;24184:19;;23843:366;;;:::o;24215:419::-;24381:4;24419:2;24408:9;24404:18;24396:26;;24468:9;24462:4;24458:20;24454:1;24443:9;24439:17;24432:47;24496:131;24622:4;24496:131;:::i;:::-;24488:139;;24215:419;;;:::o;24640:222::-;24780:34;24776:1;24768:6;24764:14;24757:58;24849:5;24844:2;24836:6;24832:15;24825:30;24640:222;:::o;24868:366::-;25010:3;25031:67;25095:2;25090:3;25031:67;:::i;:::-;25024:74;;25107:93;25196:3;25107:93;:::i;:::-;25225:2;25220:3;25216:12;25209:19;;24868:366;;;:::o;25240:419::-;25406:4;25444:2;25433:9;25429:18;25421:26;;25493:9;25487:4;25483:20;25479:1;25468:9;25464:17;25457:47;25521:131;25647:4;25521:131;:::i;:::-;25513:139;;25240:419;;;:::o;25665:228::-;25805:34;25801:1;25793:6;25789:14;25782:58;25874:11;25869:2;25861:6;25857:15;25850:36;25665:228;:::o;25899:366::-;26041:3;26062:67;26126:2;26121:3;26062:67;:::i;:::-;26055:74;;26138:93;26227:3;26138:93;:::i;:::-;26256:2;26251:3;26247:12;26240:19;;25899:366;;;:::o;26271:419::-;26437:4;26475:2;26464:9;26460:18;26452:26;;26524:9;26518:4;26514:20;26510:1;26499:9;26495:17;26488:47;26552:131;26678:4;26552:131;:::i;:::-;26544:139;;26271:419;;;:::o;26696:222::-;26836:34;26832:1;26824:6;26820:14;26813:58;26905:5;26900:2;26892:6;26888:15;26881:30;26696:222;:::o;26924:366::-;27066:3;27087:67;27151:2;27146:3;27087:67;:::i;:::-;27080:74;;27163:93;27252:3;27163:93;:::i;:::-;27281:2;27276:3;27272:12;27265:19;;26924:366;;;:::o;27296:419::-;27462:4;27500:2;27489:9;27485:18;27477:26;;27549:9;27543:4;27539:20;27535:1;27524:9;27520:17;27513:47;27577:131;27703:4;27577:131;:::i;:::-;27569:139;;27296:419;;;:::o;27721:226::-;27861:34;27857:1;27849:6;27845:14;27838:58;27930:9;27925:2;27917:6;27913:15;27906:34;27721:226;:::o;27953:366::-;28095:3;28116:67;28180:2;28175:3;28116:67;:::i;:::-;28109:74;;28192:93;28281:3;28192:93;:::i;:::-;28310:2;28305:3;28301:12;28294:19;;27953:366;;;:::o;28325:419::-;28491:4;28529:2;28518:9;28514:18;28506:26;;28578:9;28572:4;28568:20;28564:1;28553:9;28549:17;28542:47;28606:131;28732:4;28606:131;:::i;:::-;28598:139;;28325:419;;;:::o;28750:194::-;28790:4;28810:20;28828:1;28810:20;:::i;:::-;28805:25;;28844:20;28862:1;28844:20;:::i;:::-;28839:25;;28888:1;28885;28881:9;28873:17;;28912:1;28906:4;28903:11;28900:37;;;28917:18;;:::i;:::-;28900:37;28750:194;;;;:::o;28950:191::-;28990:3;29009:20;29027:1;29009:20;:::i;:::-;29004:25;;29043:20;29061:1;29043:20;:::i;:::-;29038:25;;29086:1;29083;29079:9;29072:16;;29107:3;29104:1;29101:10;29098:36;;;29114:18;;:::i;:::-;29098:36;28950:191;;;;:::o;29147:177::-;29287:29;29283:1;29275:6;29271:14;29264:53;29147:177;:::o;29330:366::-;29472:3;29493:67;29557:2;29552:3;29493:67;:::i;:::-;29486:74;;29569:93;29658:3;29569:93;:::i;:::-;29687:2;29682:3;29678:12;29671:19;;29330:366;;;:::o;29702:419::-;29868:4;29906:2;29895:9;29891:18;29883:26;;29955:9;29949:4;29945:20;29941:1;29930:9;29926:17;29919:47;29983:131;30109:4;29983:131;:::i;:::-;29975:139;;29702:419;;;:::o;30127:180::-;30175:77;30172:1;30165:88;30272:4;30269:1;30262:15;30296:4;30293:1;30286:15;30313:114;30380:6;30414:5;30408:12;30398:22;;30313:114;;;:::o;30433:184::-;30532:11;30566:6;30561:3;30554:19;30606:4;30601:3;30597:14;30582:29;;30433:184;;;;:::o;30623:132::-;30690:4;30713:3;30705:11;;30743:4;30738:3;30734:14;30726:22;;30623:132;;;:::o;30761:108::-;30838:24;30856:5;30838:24;:::i;:::-;30833:3;30826:37;30761:108;;:::o;30875:179::-;30944:10;30965:46;31007:3;30999:6;30965:46;:::i;:::-;31043:4;31038:3;31034:14;31020:28;;30875:179;;;;:::o;31060:113::-;31130:4;31162;31157:3;31153:14;31145:22;;31060:113;;;:::o;31209:732::-;31328:3;31357:54;31405:5;31357:54;:::i;:::-;31427:86;31506:6;31501:3;31427:86;:::i;:::-;31420:93;;31537:56;31587:5;31537:56;:::i;:::-;31616:7;31647:1;31632:284;31657:6;31654:1;31651:13;31632:284;;;31733:6;31727:13;31760:63;31819:3;31804:13;31760:63;:::i;:::-;31753:70;;31846:60;31899:6;31846:60;:::i;:::-;31836:70;;31692:224;31679:1;31676;31672:9;31667:14;;31632:284;;;31636:14;31932:3;31925:10;;31333:608;;;31209:732;;;;:::o;31947:831::-;32210:4;32248:3;32237:9;32233:19;32225:27;;32262:71;32330:1;32319:9;32315:17;32306:6;32262:71;:::i;:::-;32343:80;32419:2;32408:9;32404:18;32395:6;32343:80;:::i;:::-;32470:9;32464:4;32460:20;32455:2;32444:9;32440:18;32433:48;32498:108;32601:4;32592:6;32498:108;:::i;:::-;32490:116;;32616:72;32684:2;32673:9;32669:18;32660:6;32616:72;:::i;:::-;32698:73;32766:3;32755:9;32751:19;32742:6;32698:73;:::i;:::-;31947:831;;;;;;;;:::o

Swarm Source

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