ETH Price: $2,451.16 (-2.38%)

Token

I3EM (I3EM)
 

Overview

Max Total Supply

100,000,000 I3EM

Holders

2,009 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
17,513.954175856 I3EM

Value
$0.00
0xbb2d605fb88fc02de1fc0dc122f18f2ee07edb6c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

I3EM is an innovative tech startup with a mission to build web3 based tools for individuals, businesses and communities.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
I3EM

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.8.12;
// 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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

contract I3EM is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;
    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 = "I3EM";
    string private _symbol = "I3EM";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 100000000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public ethPriceToSwap = 300000000000000000; //.3 ETH
    address public liquidityBuyBackAddress = 0x79d611c08a144d0679041f8Bca5631B0FE5147EE;
    address public devAddress = 0x1108c1F1bE9fe8d58Da3f97C545c40De824E1728;
    address public deadWallet = 0x000000000000000000000000000000000000dEaD;

    event Burned(address, address, uint256);
    event Minted(address, uint256);

    struct Distribution {
        uint256 development;
        uint256 liquidityPool;
    }

    struct TaxFees {
        uint256 buyFee;
        uint256 sellFee;
        uint256 burnRate;
    }
    
    bool private doTakeFees;
    bool private isSellTxn;
    TaxFees public taxFees;
    Distribution public distribution;
    constructor () {
        _balances[_msgSender()] = _totalSupply;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[liquidityBuyBackAddress] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[devAddress] = true;
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        taxFees = TaxFees(4,8,0);
        distribution = Distribution(40,60);
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

    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 mint(uint256 amount) external onlyOwner {
        _mint(msg.sender, amount * 10 ** _decimals);
    }

    function burn(uint256 amount) public {
        _burn(msg.sender, amount * 10 ** _decimals);
    }

    function airDrops(address[] calldata holders, uint256[] calldata amounts) external onlyOwner {
        uint256 iterator = 0;
        require(holders.length == amounts.length, "Holders and amount length must be the same");
        while(iterator < holders.length){
            _tokenTransfer(_msgSender(), holders[iterator], amounts[iterator], false, false);
            iterator += 1;
        }
    }

    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

    function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
        ethPriceToSwap = ethPriceToSwap_;
    }

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

    function setTaxFees(uint256 buyFee, uint256 sellFee, uint256 burnRate) external onlyOwner {
        taxFees.buyFee = buyFee;
        taxFees.sellFee = sellFee;
        taxFees.burnRate = burnRate;
    }

    function setDistribution(uint256 development, uint256 liquidityPool) external onlyOwner {
        distribution.development = development;
        distribution.liquidityPool = liquidityPool;
    }

    function setWalletAddresses(address devAddr, address lpAddress) external onlyOwner {
        devAddress = devAddr;
        liquidityBuyBackAddress = lpAddress;
    }

    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 setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

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

    function extractERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(devAddress, balance);
    }

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

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

    function getTokenAmountByEthPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }
    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 isSell = from != uniswapV2Pair && to == uniswapV2Pair;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        //block the bots, but allow them to transfer to dead wallet if they are blocked
        if(from != owner() && to != owner()) {
            require(!botWallets[from] && !botWallets[to], "bots are not allowed to sell or transfer tokens");        
            if(isSell) {
                sellTaxTokens();
            }
        }
        _tokenTransfer(from, to, amount, takeFees, isSell);
    }

    function sellTaxTokens() private {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if(!inSwapAndLiquify && swapAndLiquifyEnabled) {
                uint256 tokenAmount = getTokenAmountByEthPrice();
                if (contractTokenBalance >= tokenAmount) {
                    //send eth to dev address and add to liquidity pool
                    distributeShares(tokenAmount);
                }
            }
        }
    }

    function distributeShares(uint256 tokens) private lockTheSwap {
        uint256 lpTokens = tokens.mul(distribution.liquidityPool).div(100).div(2);
        uint256 tokensToSwap = tokens.sub(lpTokens);
        swapTokensForEth(tokensToSwap);
        uint256 distributionEth = address(this).balance;
        uint256 lpEth = distributionEth.mul(distribution.liquidityPool).div(100).div(2);
        uint256 devEth = distributionEth.sub(lpEth);

        if(devEth > 0) {
            payable(devAddress).transfer(devEth);
        }
       
        addLiquidity(lpTokens, lpEth);
        emit SwapAndLiquify(lpTokens, lpEth, lpTokens);
    }


    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);
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFees, bool isSell) private {
        
        if(takeFees && taxFees.burnRate > 0) {
                uint256 burnAmount = amount.mul(taxFees.burnRate).div(100);
                if(burnAmount > 0) {
                    _burn(sender, burnAmount);
                    amount = amount.sub(burnAmount);
                }   
        }
        uint256 taxAmount = takeFees ? amount.mul(taxFees.buyFee).div(100) : 0;

        if(takeFees && isSell) {
            taxAmount = amount.mul(taxFees.sellFee).div(100);
        }
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(sender, recipient, amount);
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Burned(account, address(0), value);
    }

    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Minted(account, amount);
    }
}

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":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"holders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airDrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distribution","outputs":[{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"liquidityPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"contractAddress","type":"address"}],"name":"extractERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenAmountByEthPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityBuyBackAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"liquidityPool","type":"uint256"}],"name":"setDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"burnRate","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"devAddr","type":"address"},{"internalType":"address","name":"lpAddress","type":"address"}],"name":"setWalletAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"burnRate","type":"uint256"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600481526020017f4933454d00000000000000000000000000000000000000000000000000000000815250600790816200009f919062000a92565b506040518060400160405280600481526020017f4933454d0000000000000000000000000000000000000000000000000000000081525060089081620000e6919062000a92565b5060098060006101000a81548160ff021916908360ff160217905550600960009054906101000a900460ff16600a62000120919062000d09565b6305f5e10062000131919062000d5a565b600a556001600b60016101000a81548160ff021916908315150217905550670429d069189e0000600c557379d611c08a144d0679041f8bca5631b0fe5147ee600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731108c1f1be9fe8d58da3f97c545c40de824e1728600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200025557600080fd5b50600062000268620007e760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a54600360006200031d620007e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016006600062000371620007ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200057c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a2919062000e25565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000652919062000e25565b6040518363ffffffff1660e01b81526004016200067192919062000e68565b6020604051808303816000875af115801562000691573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006b7919062000e25565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060600160405280600481526020016008815260200160008152506010600082015181600001556020820151816001015560408201518160020155905050604051806040016040528060288152602001603c8152506013600082015181600001556020820151816001015590505062000778620007e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620007d9919062000ea6565b60405180910390a362000ec3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200089a57607f821691505b602082108103620008b057620008af62000852565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200091a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008db565b620009268683620008db565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009736200096d62000967846200093e565b62000948565b6200093e565b9050919050565b6000819050919050565b6200098f8362000952565b620009a76200099e826200097a565b848454620008e8565b825550505050565b600090565b620009be620009af565b620009cb81848462000984565b505050565b5b81811015620009f357620009e7600082620009b4565b600181019050620009d1565b5050565b601f82111562000a425762000a0c81620008b6565b62000a1784620008cb565b8101602085101562000a27578190505b62000a3f62000a3685620008cb565b830182620009d0565b50505b505050565b600082821c905092915050565b600062000a676000198460080262000a47565b1980831691505092915050565b600062000a82838362000a54565b9150826002028217905092915050565b62000a9d8262000818565b67ffffffffffffffff81111562000ab95762000ab862000823565b5b62000ac5825462000881565b62000ad2828285620009f7565b600060209050601f83116001811462000b0a576000841562000af5578287015190505b62000b01858262000a74565b86555062000b71565b601f19841662000b1a86620008b6565b60005b8281101562000b445784890151825560018201915060208501945060208101905062000b1d565b8683101562000b64578489015162000b60601f89168262000a54565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c075780860481111562000bdf5762000bde62000b79565b5b600185161562000bef5780820291505b808102905062000bff8562000ba8565b945062000bbf565b94509492505050565b60008262000c22576001905062000cf5565b8162000c32576000905062000cf5565b816001811462000c4b576002811462000c565762000c8c565b600191505062000cf5565b60ff84111562000c6b5762000c6a62000b79565b5b8360020a91508482111562000c855762000c8462000b79565b5b5062000cf5565b5060208310610133831016604e8410600b841016171562000cc65782820a90508381111562000cc05762000cbf62000b79565b5b62000cf5565b62000cd5848484600162000bb5565b9250905081840481111562000cef5762000cee62000b79565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d16826200093e565b915062000d238362000cfc565b925062000d527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c10565b905092915050565b600062000d67826200093e565b915062000d74836200093e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000db05762000daf62000b79565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ded8262000dc0565b9050919050565b62000dff8162000de0565b811462000e0b57600080fd5b50565b60008151905062000e1f8162000df4565b92915050565b60006020828403121562000e3e5762000e3d62000dbb565b5b600062000e4e8482850162000e0e565b91505092915050565b62000e628162000de0565b82525050565b600060408201905062000e7f600083018562000e57565b62000e8e602083018462000e57565b9392505050565b62000ea0816200093e565b82525050565b600060208201905062000ebd600083018462000e95565b92915050565b614c0c8062000ed36000396000f3fe6080604052600436106102345760003560e01c8063715018a61161012e578063a0712d68116100ab578063dcda6af31161006f578063dcda6af31461083b578063dd62ed3e14610864578063e7dad4f9146108a1578063f18dba26146108de578063f2fde38b146109075761023b565b8063a0712d6814610746578063a457c2d71461076f578063a9059cbb146107ac578063b2abbbc4146107e9578063c49b9a80146108125761023b565b8063920cd52e116100f2578063920cd52e1461067357806395d89b411461069e5780639758f61d146106c957806397995706146106f25780639b0e2e861461071d5761023b565b8063715018a6146105b457806385141a77146105cb57806385d4787b146105f6578063888478251461061f5780638da5cb5b146106485761023b565b80633ad10ef6116101bc5780635342acb4116101805780635342acb4146104ba57806354a5df1f146104f75780635ee58efc1461052257806363373b871461054e57806370a08231146105775761023b565b80633ad10ef6146103e757806342966c6814610412578063441d801f1461043b57806349bd5a5e146104645780634a74bb021461048f5761023b565b80631694505e116102035780631694505e146102ec57806318160ddd1461031757806323b872dd14610342578063313ce5671461037f57806339509351146103aa5761023b565b806306e99fef1461024057806306fdde0314610257578063095ea7b3146102825780630ddc0976146102bf5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610930565b005b34801561026357600080fd5b5061026c6109a1565b60405161027991906134e1565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a491906135ab565b610a33565b6040516102b69190613606565b60405180910390f35b3480156102cb57600080fd5b506102d4610a51565b6040516102e393929190613630565b60405180910390f35b3480156102f857600080fd5b50610301610a69565b60405161030e91906136c6565b60405180910390f35b34801561032357600080fd5b5061032c610a8f565b60405161033991906136e1565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906136fc565b610a99565b6040516103769190613606565b60405180910390f35b34801561038b57600080fd5b50610394610b72565b6040516103a1919061376b565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906135ab565b610b89565b6040516103de9190613606565b60405180910390f35b3480156103f357600080fd5b506103fc610c3c565b6040516104099190613795565b60405180910390f35b34801561041e57600080fd5b50610439600480360381019061043491906137b0565b610c62565b005b34801561044757600080fd5b50610462600480360381019061045d919061386e565b610c95565b005b34801561047057600080fd5b50610479610d3a565b6040516104869190613795565b60405180910390f35b34801561049b57600080fd5b506104a4610d60565b6040516104b19190613606565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906138ce565b610d73565b6040516104ee9190613606565b60405180910390f35b34801561050357600080fd5b5061050c610dc9565b60405161051991906136e1565b60405180910390f35b34801561052e57600080fd5b50610537610dcf565b6040516105459291906138fb565b60405180910390f35b34801561055a57600080fd5b50610575600480360381019061057091906138ce565b610de1565b005b34801561058357600080fd5b5061059e600480360381019061059991906138ce565b610f0a565b6040516105ab91906136e1565b60405180910390f35b3480156105c057600080fd5b506105c9610f53565b005b3480156105d757600080fd5b506105e06110a6565b6040516105ed9190613795565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613a62565b6110cc565b005b34801561062b57600080fd5b5061064660048036038101906106419190613aab565b61116f565b005b34801561065457600080fd5b5061065d61128a565b60405161066a9190613795565b60405180910390f35b34801561067f57600080fd5b506106886112b3565b6040516106959190613795565b60405180910390f35b3480156106aa57600080fd5b506106b36112d9565b6040516106c091906134e1565b60405180910390f35b3480156106d557600080fd5b506106f060048036038101906106eb9190613aeb565b61136b565b005b3480156106fe57600080fd5b50610707611423565b60405161071491906136e1565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190613a62565b611666565b005b34801561075257600080fd5b5061076d600480360381019061076891906137b0565b611709565b005b34801561077b57600080fd5b50610796600480360381019061079191906135ab565b6117d1565b6040516107a39190613606565b60405180910390f35b3480156107b857600080fd5b506107d360048036038101906107ce91906135ab565b61189e565b6040516107e09190613606565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b91906137b0565b6118bc565b005b34801561081e57600080fd5b5061083960048036038101906108349190613b3e565b61195b565b005b34801561084757600080fd5b50610862600480360381019061085d9190613bc1565b611a44565b005b34801561087057600080fd5b5061088b60048036038101906108869190613aab565b611b9f565b60405161089891906136e1565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c391906138ce565b611c26565b6040516108d59190613606565b60405180910390f35b3480156108ea57600080fd5b5061090560048036038101906109009190613c42565b611c7c565b005b34801561091357600080fd5b5061092e600480360381019061092991906138ce565b611d29565b005b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561099d573d6000803e3d6000fd5b5050565b6060600780546109b090613cb1565b80601f01602080910402602001604051908101604052809291908181526020018280546109dc90613cb1565b8015610a295780601f106109fe57610100808354040283529160200191610a29565b820191906000526020600020905b815481529060010190602001808311610a0c57829003601f168201915b5050505050905090565b6000610a47610a40611eea565b8484611ef2565b6001905092915050565b60108060000154908060010154908060020154905083565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b6000610aa68484846120bb565b610b6784610ab2611eea565b610b6285604051806060016040528060288152602001614b8a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b18611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125339092919063ffffffff16565b611ef2565b600190509392505050565b6000600960009054906101000a900460ff16905090565b6000610c32610b96611eea565b84610c2d8560046000610ba7611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259790919063ffffffff16565b611ef2565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c9233600960009054906101000a900460ff16600a610c829190613e44565b83610c8d9190613e8f565b6125f5565b50565b610c9d611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2190613f35565b60405180910390fd5b610d35838383612754565b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60019054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c5481565b60138060000154908060010154905082565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e219190613795565b602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e629190613f6a565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ec1929190613f97565b6020604051808303816000875af1158015610ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f049190613fd5565b50505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f5b611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90613f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110d4611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890613f35565b60405180910390fd5b61116c8160016127ff565b50565b611177611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb90613f35565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600880546112e890613cb1565b80601f016020809104026020016040519081016040528092919081815260200182805461131490613cb1565b80156113615780601f1061133657610100808354040283529160200191611361565b820191906000526020600020905b81548152906001019060200180831161134457829003601f168201915b5050505050905090565b611373611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f790613f35565b60405180910390fd5b826010600001819055508160106001018190555080601060020181905550505050565b600080600267ffffffffffffffff81111561144157611440613924565b5b60405190808252806020026020018201604052801561146f5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190614017565b8160008151811061151757611516614044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061156657611565614044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600c54836040518363ffffffff1660e01b81526004016115ff929190614131565b600060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906116459190614224565b60018151811061165857611657614044565b5b602002602001015191505090565b61166e611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290613f35565b60405180910390fd5b6117068160006127ff565b50565b611711611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179590613f35565b60405180910390fd5b6117ce33600960009054906101000a900460ff16600a6117be9190613e44565b836117c99190613e8f565b6128f6565b50565b60006118946117de611eea565b8461188f85604051806060016040528060258152602001614bb26025913960046000611808611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125339092919063ffffffff16565b611ef2565b6001905092915050565b60006118b26118ab611eea565b84846120bb565b6001905092915050565b6118c4611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194890613f35565b60405180910390fd5b80600c8190555050565b611963611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790613f35565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611a399190613606565b60405180910390a150565b611a4c611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad090613f35565b60405180910390fd5b6000828290508585905014611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a906142df565b60405180910390fd5b5b84849050811015611b9857611b84611b3a611eea565b868684818110611b4d57611b4c614044565b5b9050602002016020810190611b6291906138ce565b858585818110611b7557611b74614044565b5b90506020020135600080612a52565b600181611b9191906142ff565b9050611b24565b5050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c84611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0890613f35565b60405180910390fd5b81601360000181905550806013600101819055505050565b611d31611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db590613f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e24906143a5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890614437565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc7906144c9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120ae91906136e1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361212a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121219061455b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612190906145ed565b60405180910390fd5b600081116121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d39061467f565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122895750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b90506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123315750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612370575061234061128a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123af575061237f61128a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506123b961128a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561242757506123f761128a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561251f57600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124d05750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61250f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250690614711565b60405180910390fd5b811561251e5761251d612d80565b5b5b61252c8585858486612a52565b5050505050565b600083831115829061257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257291906134e1565b60405180910390fd5b506000838561258a9190614731565b9050809150509392505050565b60008082846125a691906142ff565b9050838110156125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e2906147b1565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614843565b60405180910390fd5b61267981600a54612de790919063ffffffff16565b600a819055506126d181600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de790919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f6ab368f832c266c8eb942b84fbcaa20aedc24a699d2a05fae2568028733b1d098260008360405161274893929190614863565b60405180910390a15050565b60005b838390508110156127f957600084848381811061277757612776614044565b5b905060200201602081019061278c91906138ce565b905082600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806127f19061489a565b915050612757565b50505050565b60005b82518110156128f15760008382815181106128205761281f614044565b5b60200260200101519050821561288d576001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506128dd565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b5080806128e99061489a565b915050612802565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c9061492e565b60405180910390fd5b61297a81600a5461259790919063ffffffff16565b600a819055506129d281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259790919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8282604051612a46929190613f97565b60405180910390a15050565b818015612a6457506000601060020154115b15612ac3576000612a966064612a8860106002015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b90506000811115612ac157612aab86826125f5565b612abe8185612de790919063ffffffff16565b93505b505b600082612ad1576000612afd565b612afc6064612aee60106000015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b5b9050828015612b095750815b15612b3c57612b396064612b2b60106001015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b90505b6000612b518286612de790919063ffffffff16565b9050612ba585600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de790919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3a81600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259790919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ccf82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259790919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612d6f91906136e1565b60405180910390a350505050505050565b6000612d8b30610f0a565b90506000811115612de457600b60009054906101000a900460ff16158015612dbf5750600b60019054906101000a900460ff165b15612de3576000612dce611423565b9050808210612de157612de081612ef5565b5b505b5b50565b6000612e2983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612533565b905092915050565b6000808303612e435760009050612ea5565b60008284612e519190613e8f565b9050828482612e60919061497d565b14612ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9790614a20565b60405180910390fd5b809150505b92915050565b6000612eed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130ab565b905092915050565b6001600b60006101000a81548160ff0219169083151502179055506000612f506002612f426064612f3460136001015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b612eab90919063ffffffff16565b90506000612f678284612de790919063ffffffff16565b9050612f728161310e565b60004790506000612fb76002612fa96064612f9b60136001015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b612eab90919063ffffffff16565b90506000612fce8284612de790919063ffffffff16565b9050600081111561304357600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613041573d6000803e3d6000fd5b505b61304d8583613351565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185838760405161308093929190613630565b60405180910390a150505050506000600b60006101000a81548160ff02191690831515021790555050565b600080831182906130f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e991906134e1565b60405180910390fd5b5060008385613101919061497d565b9050809150509392505050565b6000600267ffffffffffffffff81111561312b5761312a613924565b5b6040519080825280602002602001820160405280156131595781602001602082028036833780820191505090505b509050308160008151811061317157613170614044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323c9190614017565b816001815181106132505761324f614044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132b730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ef2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161331b959493929190614a7b565b600060405180830381600087803b15801561333557600080fd5b505af1158015613349573d6000803e3d6000fd5b505050505050565b61337e30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ef2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161340796959493929190614ad5565b60606040518083038185885af1158015613425573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061344a9190614b36565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561348b578082015181840152602081019050613470565b60008484015250505050565b6000601f19601f8301169050919050565b60006134b382613451565b6134bd818561345c565b93506134cd81856020860161346d565b6134d681613497565b840191505092915050565b600060208201905081810360008301526134fb81846134a8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061354282613517565b9050919050565b61355281613537565b811461355d57600080fd5b50565b60008135905061356f81613549565b92915050565b6000819050919050565b61358881613575565b811461359357600080fd5b50565b6000813590506135a58161357f565b92915050565b600080604083850312156135c2576135c161350d565b5b60006135d085828601613560565b92505060206135e185828601613596565b9150509250929050565b60008115159050919050565b613600816135eb565b82525050565b600060208201905061361b60008301846135f7565b92915050565b61362a81613575565b82525050565b60006060820190506136456000830186613621565b6136526020830185613621565b61365f6040830184613621565b949350505050565b6000819050919050565b600061368c61368761368284613517565b613667565b613517565b9050919050565b600061369e82613671565b9050919050565b60006136b082613693565b9050919050565b6136c0816136a5565b82525050565b60006020820190506136db60008301846136b7565b92915050565b60006020820190506136f66000830184613621565b92915050565b6000806000606084860312156137155761371461350d565b5b600061372386828701613560565b935050602061373486828701613560565b925050604061374586828701613596565b9150509250925092565b600060ff82169050919050565b6137658161374f565b82525050565b6000602082019050613780600083018461375c565b92915050565b61378f81613537565b82525050565b60006020820190506137aa6000830184613786565b92915050565b6000602082840312156137c6576137c561350d565b5b60006137d484828501613596565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613802576138016137dd565b5b8235905067ffffffffffffffff81111561381f5761381e6137e2565b5b60208301915083602082028301111561383b5761383a6137e7565b5b9250929050565b61384b816135eb565b811461385657600080fd5b50565b60008135905061386881613842565b92915050565b6000806000604084860312156138875761388661350d565b5b600084013567ffffffffffffffff8111156138a5576138a4613512565b5b6138b1868287016137ec565b935093505060206138c486828701613859565b9150509250925092565b6000602082840312156138e4576138e361350d565b5b60006138f284828501613560565b91505092915050565b60006040820190506139106000830185613621565b61391d6020830184613621565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61395c82613497565b810181811067ffffffffffffffff8211171561397b5761397a613924565b5b80604052505050565b600061398e613503565b905061399a8282613953565b919050565b600067ffffffffffffffff8211156139ba576139b9613924565b5b602082029050602081019050919050565b60006139de6139d98461399f565b613984565b90508083825260208201905060208402830185811115613a0157613a006137e7565b5b835b81811015613a2a5780613a168882613560565b845260208401935050602081019050613a03565b5050509392505050565b600082601f830112613a4957613a486137dd565b5b8135613a598482602086016139cb565b91505092915050565b600060208284031215613a7857613a7761350d565b5b600082013567ffffffffffffffff811115613a9657613a95613512565b5b613aa284828501613a34565b91505092915050565b60008060408385031215613ac257613ac161350d565b5b6000613ad085828601613560565b9250506020613ae185828601613560565b9150509250929050565b600080600060608486031215613b0457613b0361350d565b5b6000613b1286828701613596565b9350506020613b2386828701613596565b9250506040613b3486828701613596565b9150509250925092565b600060208284031215613b5457613b5361350d565b5b6000613b6284828501613859565b91505092915050565b60008083601f840112613b8157613b806137dd565b5b8235905067ffffffffffffffff811115613b9e57613b9d6137e2565b5b602083019150836020820283011115613bba57613bb96137e7565b5b9250929050565b60008060008060408587031215613bdb57613bda61350d565b5b600085013567ffffffffffffffff811115613bf957613bf8613512565b5b613c05878288016137ec565b9450945050602085013567ffffffffffffffff811115613c2857613c27613512565b5b613c3487828801613b6b565b925092505092959194509250565b60008060408385031215613c5957613c5861350d565b5b6000613c6785828601613596565b9250506020613c7885828601613596565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cc957607f821691505b602082108103613cdc57613cdb613c82565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613d6857808604811115613d4457613d43613ce2565b5b6001851615613d535780820291505b8081029050613d6185613d11565b9450613d28565b94509492505050565b600082613d815760019050613e3d565b81613d8f5760009050613e3d565b8160018114613da55760028114613daf57613dde565b6001915050613e3d565b60ff841115613dc157613dc0613ce2565b5b8360020a915084821115613dd857613dd7613ce2565b5b50613e3d565b5060208310610133831016604e8410600b8410161715613e135782820a905083811115613e0e57613e0d613ce2565b5b613e3d565b613e208484846001613d1e565b92509050818404811115613e3757613e36613ce2565b5b81810290505b9392505050565b6000613e4f82613575565b9150613e5a8361374f565b9250613e877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d71565b905092915050565b6000613e9a82613575565b9150613ea583613575565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ede57613edd613ce2565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f1f60208361345c565b9150613f2a82613ee9565b602082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b600081519050613f648161357f565b92915050565b600060208284031215613f8057613f7f61350d565b5b6000613f8e84828501613f55565b91505092915050565b6000604082019050613fac6000830185613786565b613fb96020830184613621565b9392505050565b600081519050613fcf81613842565b92915050565b600060208284031215613feb57613fea61350d565b5b6000613ff984828501613fc0565b91505092915050565b60008151905061401181613549565b92915050565b60006020828403121561402d5761402c61350d565b5b600061403b84828501614002565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140a881613537565b82525050565b60006140ba838361409f565b60208301905092915050565b6000602082019050919050565b60006140de82614073565b6140e8818561407e565b93506140f38361408f565b8060005b8381101561412457815161410b88826140ae565b9750614116836140c6565b9250506001810190506140f7565b5085935050505092915050565b60006040820190506141466000830185613621565b818103602083015261415881846140d3565b90509392505050565b600067ffffffffffffffff82111561417c5761417b613924565b5b602082029050602081019050919050565b60006141a061419b84614161565b613984565b905080838252602082019050602084028301858111156141c3576141c26137e7565b5b835b818110156141ec57806141d88882613f55565b8452602084019350506020810190506141c5565b5050509392505050565b600082601f83011261420b5761420a6137dd565b5b815161421b84826020860161418d565b91505092915050565b60006020828403121561423a5761423961350d565b5b600082015167ffffffffffffffff81111561425857614257613512565b5b614264848285016141f6565b91505092915050565b7f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260008201527f65207468652073616d6500000000000000000000000000000000000000000000602082015250565b60006142c9602a8361345c565b91506142d48261426d565b604082019050919050565b600060208201905081810360008301526142f8816142bc565b9050919050565b600061430a82613575565b915061431583613575565b925082820190508082111561432d5761432c613ce2565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061438f60268361345c565b915061439a82614333565b604082019050919050565b600060208201905081810360008301526143be81614382565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061442160248361345c565b915061442c826143c5565b604082019050919050565b6000602082019050818103600083015261445081614414565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144b360228361345c565b91506144be82614457565b604082019050919050565b600060208201905081810360008301526144e2816144a6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061454560258361345c565b9150614550826144e9565b604082019050919050565b6000602082019050818103600083015261457481614538565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145d760238361345c565b91506145e28261457b565b604082019050919050565b60006020820190508181036000830152614606816145ca565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061466960298361345c565b91506146748261460d565b604082019050919050565b600060208201905081810360008301526146988161465c565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c206f722060008201527f7472616e7366657220746f6b656e730000000000000000000000000000000000602082015250565b60006146fb602f8361345c565b91506147068261469f565b604082019050919050565b6000602082019050818103600083015261472a816146ee565b9050919050565b600061473c82613575565b915061474783613575565b925082820390508181111561475f5761475e613ce2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061479b601b8361345c565b91506147a682614765565b602082019050919050565b600060208201905081810360008301526147ca8161478e565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061482d60218361345c565b9150614838826147d1565b604082019050919050565b6000602082019050818103600083015261485c81614820565b9050919050565b60006060820190506148786000830186613786565b6148856020830185613786565b6148926040830184613621565b949350505050565b60006148a582613575565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148d7576148d6613ce2565b5b600182019050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000614918601f8361345c565b9150614923826148e2565b602082019050919050565b600060208201905081810360008301526149478161490b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061498882613575565b915061499383613575565b9250826149a3576149a261494e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a0a60218361345c565b9150614a15826149ae565b604082019050919050565b60006020820190508181036000830152614a39816149fd565b9050919050565b6000819050919050565b6000614a65614a60614a5b84614a40565b613667565b613575565b9050919050565b614a7581614a4a565b82525050565b600060a082019050614a906000830188613621565b614a9d6020830187614a6c565b8181036040830152614aaf81866140d3565b9050614abe6060830185613786565b614acb6080830184613621565b9695505050505050565b600060c082019050614aea6000830189613786565b614af76020830188613621565b614b046040830187614a6c565b614b116060830186614a6c565b614b1e6080830185613786565b614b2b60a0830184613621565b979650505050505050565b600080600060608486031215614b4f57614b4e61350d565b5b6000614b5d86828701613f55565b9350506020614b6e86828701613f55565b9250506040614b7f86828701613f55565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bf94c39415cdc82f7bc5ccd63b19437147ae57878e5db0521e084c393ecd3c5e64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063715018a61161012e578063a0712d68116100ab578063dcda6af31161006f578063dcda6af31461083b578063dd62ed3e14610864578063e7dad4f9146108a1578063f18dba26146108de578063f2fde38b146109075761023b565b8063a0712d6814610746578063a457c2d71461076f578063a9059cbb146107ac578063b2abbbc4146107e9578063c49b9a80146108125761023b565b8063920cd52e116100f2578063920cd52e1461067357806395d89b411461069e5780639758f61d146106c957806397995706146106f25780639b0e2e861461071d5761023b565b8063715018a6146105b457806385141a77146105cb57806385d4787b146105f6578063888478251461061f5780638da5cb5b146106485761023b565b80633ad10ef6116101bc5780635342acb4116101805780635342acb4146104ba57806354a5df1f146104f75780635ee58efc1461052257806363373b871461054e57806370a08231146105775761023b565b80633ad10ef6146103e757806342966c6814610412578063441d801f1461043b57806349bd5a5e146104645780634a74bb021461048f5761023b565b80631694505e116102035780631694505e146102ec57806318160ddd1461031757806323b872dd14610342578063313ce5671461037f57806339509351146103aa5761023b565b806306e99fef1461024057806306fdde0314610257578063095ea7b3146102825780630ddc0976146102bf5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610930565b005b34801561026357600080fd5b5061026c6109a1565b60405161027991906134e1565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a491906135ab565b610a33565b6040516102b69190613606565b60405180910390f35b3480156102cb57600080fd5b506102d4610a51565b6040516102e393929190613630565b60405180910390f35b3480156102f857600080fd5b50610301610a69565b60405161030e91906136c6565b60405180910390f35b34801561032357600080fd5b5061032c610a8f565b60405161033991906136e1565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906136fc565b610a99565b6040516103769190613606565b60405180910390f35b34801561038b57600080fd5b50610394610b72565b6040516103a1919061376b565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906135ab565b610b89565b6040516103de9190613606565b60405180910390f35b3480156103f357600080fd5b506103fc610c3c565b6040516104099190613795565b60405180910390f35b34801561041e57600080fd5b50610439600480360381019061043491906137b0565b610c62565b005b34801561044757600080fd5b50610462600480360381019061045d919061386e565b610c95565b005b34801561047057600080fd5b50610479610d3a565b6040516104869190613795565b60405180910390f35b34801561049b57600080fd5b506104a4610d60565b6040516104b19190613606565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906138ce565b610d73565b6040516104ee9190613606565b60405180910390f35b34801561050357600080fd5b5061050c610dc9565b60405161051991906136e1565b60405180910390f35b34801561052e57600080fd5b50610537610dcf565b6040516105459291906138fb565b60405180910390f35b34801561055a57600080fd5b50610575600480360381019061057091906138ce565b610de1565b005b34801561058357600080fd5b5061059e600480360381019061059991906138ce565b610f0a565b6040516105ab91906136e1565b60405180910390f35b3480156105c057600080fd5b506105c9610f53565b005b3480156105d757600080fd5b506105e06110a6565b6040516105ed9190613795565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613a62565b6110cc565b005b34801561062b57600080fd5b5061064660048036038101906106419190613aab565b61116f565b005b34801561065457600080fd5b5061065d61128a565b60405161066a9190613795565b60405180910390f35b34801561067f57600080fd5b506106886112b3565b6040516106959190613795565b60405180910390f35b3480156106aa57600080fd5b506106b36112d9565b6040516106c091906134e1565b60405180910390f35b3480156106d557600080fd5b506106f060048036038101906106eb9190613aeb565b61136b565b005b3480156106fe57600080fd5b50610707611423565b60405161071491906136e1565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190613a62565b611666565b005b34801561075257600080fd5b5061076d600480360381019061076891906137b0565b611709565b005b34801561077b57600080fd5b50610796600480360381019061079191906135ab565b6117d1565b6040516107a39190613606565b60405180910390f35b3480156107b857600080fd5b506107d360048036038101906107ce91906135ab565b61189e565b6040516107e09190613606565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b91906137b0565b6118bc565b005b34801561081e57600080fd5b5061083960048036038101906108349190613b3e565b61195b565b005b34801561084757600080fd5b50610862600480360381019061085d9190613bc1565b611a44565b005b34801561087057600080fd5b5061088b60048036038101906108869190613aab565b611b9f565b60405161089891906136e1565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c391906138ce565b611c26565b6040516108d59190613606565b60405180910390f35b3480156108ea57600080fd5b5061090560048036038101906109009190613c42565b611c7c565b005b34801561091357600080fd5b5061092e600480360381019061092991906138ce565b611d29565b005b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561099d573d6000803e3d6000fd5b5050565b6060600780546109b090613cb1565b80601f01602080910402602001604051908101604052809291908181526020018280546109dc90613cb1565b8015610a295780601f106109fe57610100808354040283529160200191610a29565b820191906000526020600020905b815481529060010190602001808311610a0c57829003601f168201915b5050505050905090565b6000610a47610a40611eea565b8484611ef2565b6001905092915050565b60108060000154908060010154908060020154905083565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b6000610aa68484846120bb565b610b6784610ab2611eea565b610b6285604051806060016040528060288152602001614b8a60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b18611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125339092919063ffffffff16565b611ef2565b600190509392505050565b6000600960009054906101000a900460ff16905090565b6000610c32610b96611eea565b84610c2d8560046000610ba7611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259790919063ffffffff16565b611ef2565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c9233600960009054906101000a900460ff16600a610c829190613e44565b83610c8d9190613e8f565b6125f5565b50565b610c9d611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2190613f35565b60405180910390fd5b610d35838383612754565b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60019054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c5481565b60138060000154908060010154905082565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e219190613795565b602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e629190613f6a565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ec1929190613f97565b6020604051808303816000875af1158015610ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f049190613fd5565b50505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f5b611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90613f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110d4611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890613f35565b60405180910390fd5b61116c8160016127ff565b50565b611177611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb90613f35565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600880546112e890613cb1565b80601f016020809104026020016040519081016040528092919081815260200182805461131490613cb1565b80156113615780601f1061133657610100808354040283529160200191611361565b820191906000526020600020905b81548152906001019060200180831161134457829003601f168201915b5050505050905090565b611373611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f790613f35565b60405180910390fd5b826010600001819055508160106001018190555080601060020181905550505050565b600080600267ffffffffffffffff81111561144157611440613924565b5b60405190808252806020026020018201604052801561146f5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190614017565b8160008151811061151757611516614044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061156657611565614044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600c54836040518363ffffffff1660e01b81526004016115ff929190614131565b600060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906116459190614224565b60018151811061165857611657614044565b5b602002602001015191505090565b61166e611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290613f35565b60405180910390fd5b6117068160006127ff565b50565b611711611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179590613f35565b60405180910390fd5b6117ce33600960009054906101000a900460ff16600a6117be9190613e44565b836117c99190613e8f565b6128f6565b50565b60006118946117de611eea565b8461188f85604051806060016040528060258152602001614bb26025913960046000611808611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125339092919063ffffffff16565b611ef2565b6001905092915050565b60006118b26118ab611eea565b84846120bb565b6001905092915050565b6118c4611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194890613f35565b60405180910390fd5b80600c8190555050565b611963611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790613f35565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611a399190613606565b60405180910390a150565b611a4c611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad090613f35565b60405180910390fd5b6000828290508585905014611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a906142df565b60405180910390fd5b5b84849050811015611b9857611b84611b3a611eea565b868684818110611b4d57611b4c614044565b5b9050602002016020810190611b6291906138ce565b858585818110611b7557611b74614044565b5b90506020020135600080612a52565b600181611b9191906142ff565b9050611b24565b5050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c84611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0890613f35565b60405180910390fd5b81601360000181905550806013600101819055505050565b611d31611eea565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db590613f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e24906143a5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890614437565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc7906144c9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120ae91906136e1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361212a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121219061455b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612190906145ed565b60405180910390fd5b600081116121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d39061467f565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122895750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b90506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123315750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612370575061234061128a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123af575061237f61128a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506123b961128a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561242757506123f761128a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561251f57600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124d05750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61250f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250690614711565b60405180910390fd5b811561251e5761251d612d80565b5b5b61252c8585858486612a52565b5050505050565b600083831115829061257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257291906134e1565b60405180910390fd5b506000838561258a9190614731565b9050809150509392505050565b60008082846125a691906142ff565b9050838110156125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e2906147b1565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614843565b60405180910390fd5b61267981600a54612de790919063ffffffff16565b600a819055506126d181600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de790919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f6ab368f832c266c8eb942b84fbcaa20aedc24a699d2a05fae2568028733b1d098260008360405161274893929190614863565b60405180910390a15050565b60005b838390508110156127f957600084848381811061277757612776614044565b5b905060200201602081019061278c91906138ce565b905082600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806127f19061489a565b915050612757565b50505050565b60005b82518110156128f15760008382815181106128205761281f614044565b5b60200260200101519050821561288d576001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506128dd565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b5080806128e99061489a565b915050612802565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c9061492e565b60405180910390fd5b61297a81600a5461259790919063ffffffff16565b600a819055506129d281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259790919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8282604051612a46929190613f97565b60405180910390a15050565b818015612a6457506000601060020154115b15612ac3576000612a966064612a8860106002015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b90506000811115612ac157612aab86826125f5565b612abe8185612de790919063ffffffff16565b93505b505b600082612ad1576000612afd565b612afc6064612aee60106000015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b5b9050828015612b095750815b15612b3c57612b396064612b2b60106001015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b90505b6000612b518286612de790919063ffffffff16565b9050612ba585600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de790919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3a81600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259790919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ccf82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259790919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612d6f91906136e1565b60405180910390a350505050505050565b6000612d8b30610f0a565b90506000811115612de457600b60009054906101000a900460ff16158015612dbf5750600b60019054906101000a900460ff165b15612de3576000612dce611423565b9050808210612de157612de081612ef5565b5b505b5b50565b6000612e2983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612533565b905092915050565b6000808303612e435760009050612ea5565b60008284612e519190613e8f565b9050828482612e60919061497d565b14612ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9790614a20565b60405180910390fd5b809150505b92915050565b6000612eed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130ab565b905092915050565b6001600b60006101000a81548160ff0219169083151502179055506000612f506002612f426064612f3460136001015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b612eab90919063ffffffff16565b90506000612f678284612de790919063ffffffff16565b9050612f728161310e565b60004790506000612fb76002612fa96064612f9b60136001015487612e3190919063ffffffff16565b612eab90919063ffffffff16565b612eab90919063ffffffff16565b90506000612fce8284612de790919063ffffffff16565b9050600081111561304357600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613041573d6000803e3d6000fd5b505b61304d8583613351565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185838760405161308093929190613630565b60405180910390a150505050506000600b60006101000a81548160ff02191690831515021790555050565b600080831182906130f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e991906134e1565b60405180910390fd5b5060008385613101919061497d565b9050809150509392505050565b6000600267ffffffffffffffff81111561312b5761312a613924565b5b6040519080825280602002602001820160405280156131595781602001602082028036833780820191505090505b509050308160008151811061317157613170614044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323c9190614017565b816001815181106132505761324f614044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132b730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ef2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161331b959493929190614a7b565b600060405180830381600087803b15801561333557600080fd5b505af1158015613349573d6000803e3d6000fd5b505050505050565b61337e30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ef2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161340796959493929190614ad5565b60606040518083038185885af1158015613425573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061344a9190614b36565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561348b578082015181840152602081019050613470565b60008484015250505050565b6000601f19601f8301169050919050565b60006134b382613451565b6134bd818561345c565b93506134cd81856020860161346d565b6134d681613497565b840191505092915050565b600060208201905081810360008301526134fb81846134a8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061354282613517565b9050919050565b61355281613537565b811461355d57600080fd5b50565b60008135905061356f81613549565b92915050565b6000819050919050565b61358881613575565b811461359357600080fd5b50565b6000813590506135a58161357f565b92915050565b600080604083850312156135c2576135c161350d565b5b60006135d085828601613560565b92505060206135e185828601613596565b9150509250929050565b60008115159050919050565b613600816135eb565b82525050565b600060208201905061361b60008301846135f7565b92915050565b61362a81613575565b82525050565b60006060820190506136456000830186613621565b6136526020830185613621565b61365f6040830184613621565b949350505050565b6000819050919050565b600061368c61368761368284613517565b613667565b613517565b9050919050565b600061369e82613671565b9050919050565b60006136b082613693565b9050919050565b6136c0816136a5565b82525050565b60006020820190506136db60008301846136b7565b92915050565b60006020820190506136f66000830184613621565b92915050565b6000806000606084860312156137155761371461350d565b5b600061372386828701613560565b935050602061373486828701613560565b925050604061374586828701613596565b9150509250925092565b600060ff82169050919050565b6137658161374f565b82525050565b6000602082019050613780600083018461375c565b92915050565b61378f81613537565b82525050565b60006020820190506137aa6000830184613786565b92915050565b6000602082840312156137c6576137c561350d565b5b60006137d484828501613596565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613802576138016137dd565b5b8235905067ffffffffffffffff81111561381f5761381e6137e2565b5b60208301915083602082028301111561383b5761383a6137e7565b5b9250929050565b61384b816135eb565b811461385657600080fd5b50565b60008135905061386881613842565b92915050565b6000806000604084860312156138875761388661350d565b5b600084013567ffffffffffffffff8111156138a5576138a4613512565b5b6138b1868287016137ec565b935093505060206138c486828701613859565b9150509250925092565b6000602082840312156138e4576138e361350d565b5b60006138f284828501613560565b91505092915050565b60006040820190506139106000830185613621565b61391d6020830184613621565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61395c82613497565b810181811067ffffffffffffffff8211171561397b5761397a613924565b5b80604052505050565b600061398e613503565b905061399a8282613953565b919050565b600067ffffffffffffffff8211156139ba576139b9613924565b5b602082029050602081019050919050565b60006139de6139d98461399f565b613984565b90508083825260208201905060208402830185811115613a0157613a006137e7565b5b835b81811015613a2a5780613a168882613560565b845260208401935050602081019050613a03565b5050509392505050565b600082601f830112613a4957613a486137dd565b5b8135613a598482602086016139cb565b91505092915050565b600060208284031215613a7857613a7761350d565b5b600082013567ffffffffffffffff811115613a9657613a95613512565b5b613aa284828501613a34565b91505092915050565b60008060408385031215613ac257613ac161350d565b5b6000613ad085828601613560565b9250506020613ae185828601613560565b9150509250929050565b600080600060608486031215613b0457613b0361350d565b5b6000613b1286828701613596565b9350506020613b2386828701613596565b9250506040613b3486828701613596565b9150509250925092565b600060208284031215613b5457613b5361350d565b5b6000613b6284828501613859565b91505092915050565b60008083601f840112613b8157613b806137dd565b5b8235905067ffffffffffffffff811115613b9e57613b9d6137e2565b5b602083019150836020820283011115613bba57613bb96137e7565b5b9250929050565b60008060008060408587031215613bdb57613bda61350d565b5b600085013567ffffffffffffffff811115613bf957613bf8613512565b5b613c05878288016137ec565b9450945050602085013567ffffffffffffffff811115613c2857613c27613512565b5b613c3487828801613b6b565b925092505092959194509250565b60008060408385031215613c5957613c5861350d565b5b6000613c6785828601613596565b9250506020613c7885828601613596565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cc957607f821691505b602082108103613cdc57613cdb613c82565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613d6857808604811115613d4457613d43613ce2565b5b6001851615613d535780820291505b8081029050613d6185613d11565b9450613d28565b94509492505050565b600082613d815760019050613e3d565b81613d8f5760009050613e3d565b8160018114613da55760028114613daf57613dde565b6001915050613e3d565b60ff841115613dc157613dc0613ce2565b5b8360020a915084821115613dd857613dd7613ce2565b5b50613e3d565b5060208310610133831016604e8410600b8410161715613e135782820a905083811115613e0e57613e0d613ce2565b5b613e3d565b613e208484846001613d1e565b92509050818404811115613e3757613e36613ce2565b5b81810290505b9392505050565b6000613e4f82613575565b9150613e5a8361374f565b9250613e877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d71565b905092915050565b6000613e9a82613575565b9150613ea583613575565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ede57613edd613ce2565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f1f60208361345c565b9150613f2a82613ee9565b602082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b600081519050613f648161357f565b92915050565b600060208284031215613f8057613f7f61350d565b5b6000613f8e84828501613f55565b91505092915050565b6000604082019050613fac6000830185613786565b613fb96020830184613621565b9392505050565b600081519050613fcf81613842565b92915050565b600060208284031215613feb57613fea61350d565b5b6000613ff984828501613fc0565b91505092915050565b60008151905061401181613549565b92915050565b60006020828403121561402d5761402c61350d565b5b600061403b84828501614002565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140a881613537565b82525050565b60006140ba838361409f565b60208301905092915050565b6000602082019050919050565b60006140de82614073565b6140e8818561407e565b93506140f38361408f565b8060005b8381101561412457815161410b88826140ae565b9750614116836140c6565b9250506001810190506140f7565b5085935050505092915050565b60006040820190506141466000830185613621565b818103602083015261415881846140d3565b90509392505050565b600067ffffffffffffffff82111561417c5761417b613924565b5b602082029050602081019050919050565b60006141a061419b84614161565b613984565b905080838252602082019050602084028301858111156141c3576141c26137e7565b5b835b818110156141ec57806141d88882613f55565b8452602084019350506020810190506141c5565b5050509392505050565b600082601f83011261420b5761420a6137dd565b5b815161421b84826020860161418d565b91505092915050565b60006020828403121561423a5761423961350d565b5b600082015167ffffffffffffffff81111561425857614257613512565b5b614264848285016141f6565b91505092915050565b7f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260008201527f65207468652073616d6500000000000000000000000000000000000000000000602082015250565b60006142c9602a8361345c565b91506142d48261426d565b604082019050919050565b600060208201905081810360008301526142f8816142bc565b9050919050565b600061430a82613575565b915061431583613575565b925082820190508082111561432d5761432c613ce2565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061438f60268361345c565b915061439a82614333565b604082019050919050565b600060208201905081810360008301526143be81614382565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061442160248361345c565b915061442c826143c5565b604082019050919050565b6000602082019050818103600083015261445081614414565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144b360228361345c565b91506144be82614457565b604082019050919050565b600060208201905081810360008301526144e2816144a6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061454560258361345c565b9150614550826144e9565b604082019050919050565b6000602082019050818103600083015261457481614538565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145d760238361345c565b91506145e28261457b565b604082019050919050565b60006020820190508181036000830152614606816145ca565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061466960298361345c565b91506146748261460d565b604082019050919050565b600060208201905081810360008301526146988161465c565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c206f722060008201527f7472616e7366657220746f6b656e730000000000000000000000000000000000602082015250565b60006146fb602f8361345c565b91506147068261469f565b604082019050919050565b6000602082019050818103600083015261472a816146ee565b9050919050565b600061473c82613575565b915061474783613575565b925082820390508181111561475f5761475e613ce2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061479b601b8361345c565b91506147a682614765565b602082019050919050565b600060208201905081810360008301526147ca8161478e565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061482d60218361345c565b9150614838826147d1565b604082019050919050565b6000602082019050818103600083015261485c81614820565b9050919050565b60006060820190506148786000830186613786565b6148856020830185613786565b6148926040830184613621565b949350505050565b60006148a582613575565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148d7576148d6613ce2565b5b600182019050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000614918601f8361345c565b9150614923826148e2565b602082019050919050565b600060208201905081810360008301526149478161490b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061498882613575565b915061499383613575565b9250826149a3576149a261494e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a0a60218361345c565b9150614a15826149ae565b604082019050919050565b60006020820190508181036000830152614a39816149fd565b9050919050565b6000819050919050565b6000614a65614a60614a5b84614a40565b613667565b613575565b9050919050565b614a7581614a4a565b82525050565b600060a082019050614a906000830188613621565b614a9d6020830187614a6c565b8181036040830152614aaf81866140d3565b9050614abe6060830185613786565b614acb6080830184613621565b9695505050505050565b600060c082019050614aea6000830189613786565b614af76020830188613621565b614b046040830187614a6c565b614b116060830186614a6c565b614b1e6080830185613786565b614b2b60a0830184613621565b979650505050505050565b600080600060608486031215614b4f57614b4e61350d565b5b6000614b5d86828701613f55565b9350506020614b6e86828701613f55565b9250506040614b7f86828701613f55565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bf94c39415cdc82f7bc5ccd63b19437147ae57878e5db0521e084c393ecd3c5e64736f6c63430008100033

Deployed Bytecode Sourcemap

7733:12890:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14610:140;;;;;;;;;;;;;:::i;:::-;;10074:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10912:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9456:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8155:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10351:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11081:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10260:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11402:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8945:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12024:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12546:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8268:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8742:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15858:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8789:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9485:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;14758:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10459:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6508:148;;;;;;;;;;;;;:::i;:::-;;9022:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13802:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13509:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6294:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8855:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10165:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13089:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15577:275;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13938:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11905:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11628:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10586:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12715:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14431:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12131:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10761:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13685:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13303:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6664:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14610:140;14649:18;14670:21;14649:42;;14710:10;;;;;;;;;;;14702:28;;:40;14731:10;14702:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14638:112;14610:140::o;10074:83::-;10111:13;10144:5;10137:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10074:83;:::o;10912:161::-;10987:4;11004:39;11013:12;:10;:12::i;:::-;11027:7;11036:6;11004:8;:39::i;:::-;11061:4;11054:11;;10912:161;;;;:::o;9456:22::-;;;;;;;;;;;;;;;;;;;:::o;8155:106::-;;;;;;;;;;;;;:::o;10351:100::-;10404:7;10431:12;;10424:19;;10351:100;:::o;11081:313::-;11179:4;11196:36;11206:6;11214:9;11225:6;11196:9;:36::i;:::-;11243:121;11252:6;11260:12;:10;:12::i;:::-;11274:89;11312:6;11274:89;;;;;;;;;;;;;;;;;:11;:19;11286:6;11274:19;;;;;;;;;;;;;;;:33;11294:12;:10;:12::i;:::-;11274:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11243:8;:121::i;:::-;11382:4;11375:11;;11081:313;;;;;:::o;10260:83::-;10301:5;10326:9;;;;;;;;;;;10319:16;;10260:83;:::o;11402:218::-;11490:4;11507:83;11516:12;:10;:12::i;:::-;11530:7;11539:50;11578:10;11539:11;:25;11551:12;:10;:12::i;:::-;11539:25;;;;;;;;;;;;;;;:34;11565:7;11539:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11507:8;:83::i;:::-;11608:4;11601:11;;11402:218;;;;:::o;8945:70::-;;;;;;;;;;;;;:::o;12024:99::-;12072:43;12078:10;12105:9;;;;;;;;;;;12099:2;:15;;;;:::i;:::-;12090:6;:24;;;;:::i;:::-;12072:5;:43::i;:::-;12024:99;:::o;12546:161::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12658:41:::1;12671:9;;12682:16;12658:12;:41::i;:::-;12546:161:::0;;;:::o;8268:28::-;;;;;;;;;;;;;:::o;8742:40::-;;;;;;;;;;;;;:::o;15858:123::-;15922:4;15946:18;:27;15965:7;15946:27;;;;;;;;;;;;;;;;;;;;;;;;;15939:34;;15858:123;;;:::o;8789:50::-;;;;:::o;9485:32::-;;;;;;;;;;;;;;:::o;14758:239::-;14831:17;14858:15;14831:43;;14885:15;14903:10;:20;;;14932:4;14903:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14885:53;;14949:10;:19;;;14969:10;;;;;;;;;;;14981:7;14949:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14820:177;;14758:239;:::o;10459:119::-;10525:7;10552:9;:18;10562:7;10552:18;;;;;;;;;;;;;;;;10545:25;;10459:119;;;:::o;6508:148::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6615:1:::1;6578:40;;6599:6;::::0;::::1;;;;;;;;6578:40;;;;;;;;;;;;6646:1;6629:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6508:148::o:0;9022:70::-;;;;;;;;;;;;;:::o;13802:128::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13886:36:::1;13906:9;13917:4;13886:19;:36::i;:::-;13802:128:::0;:::o;13509:168::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13616:7:::1;13603:10;;:20;;;;;;;;;;;;;;;;;;13660:9;13634:23;;:35;;;;;;;;;;;;;;;;;;13509:168:::0;;:::o;6294:79::-;6332:7;6359:6;;;;;;;;;;;6352:13;;6294:79;:::o;8855:83::-;;;;;;;;;;;;;:::o;10165:87::-;10204:13;10237:7;10230:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10165:87;:::o;13089:206::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13207:6:::1;13190:7;:14;;:23;;;;13242:7;13224;:15;;:25;;;;13279:8;13260:7;:16;;:27;;;;13089:206:::0;;;:::o;15577:275::-;15634:7;15655:21;15693:1;15679:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15655:40;;15716:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15706:4;15711:1;15706:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15767:4;15749;15754:1;15749:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15790:15;;;;;;;;;;;:29;;;15820:14;;15836:4;15790:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15842:1;15790:54;;;;;;;;:::i;:::-;;;;;;;;15783:61;;;15577:275;:::o;13938:131::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14024:37:::1;14044:9;14055:5;14024:19;:37::i;:::-;13938:131:::0;:::o;11905:111::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11965:43:::1;11971:10;11998:9;;;;;;;;;;;11992:2;:15;;;;:::i;:::-;11983:6;:24;;;;:::i;:::-;11965:5;:43::i;:::-;11905:111:::0;:::o;11628:269::-;11721:4;11738:129;11747:12;:10;:12::i;:::-;11761:7;11770:96;11809:15;11770:96;;;;;;;;;;;;;;;;;:11;:25;11782:12;:10;:12::i;:::-;11770:25;;;;;;;;;;;;;;;:34;11796:7;11770:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11738:8;:129::i;:::-;11885:4;11878:11;;11628:269;;;;:::o;10586:167::-;10664:4;10681:42;10691:12;:10;:12::i;:::-;10705:9;10716:6;10681:9;:42::i;:::-;10741:4;10734:11;;10586:167;;;;:::o;12715:122::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12814:15:::1;12797:14;:32;;;;12715:122:::0;:::o;14431:171::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14532:8:::1;14508:21;;:32;;;;;;;;;;;;;;;;;;14556:38;14585:8;14556:38;;;;;;:::i;:::-;;;;;;;;14431:171:::0;:::o;12131:407::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12235:16:::1;12292:7;;:14;;12274:7;;:14;;:32;12266:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12364:167;12381:7;;:14;;12370:8;:25;12364:167;;;12411:80;12426:12;:10;:12::i;:::-;12440:7;;12448:8;12440:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12459:7;;12467:8;12459:17;;;;;;;:::i;:::-;;;;;;;;12478:5;12485::::0;12411:14:::1;:80::i;:::-;12518:1;12506:13;;;;;:::i;:::-;;;12364:167;;;12224:314;12131:407:::0;;;;:::o;10761:143::-;10842:7;10869:11;:18;10881:5;10869:18;;;;;;;;;;;;;;;:27;10888:7;10869:27;;;;;;;;;;;;;;;;10862:34;;10761:143;;;;:::o;13685:109::-;13746:4;13770:10;:16;13781:4;13770:16;;;;;;;;;;;;;;;;;;;;;;;;;13763:23;;13685:109;;;:::o;13303:198::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13429:11:::1;13402:12;:24;;:38;;;;13480:13;13451:12;:26;;:42;;;;13303:198:::0;;:::o;6664:244::-;6431:12;:10;:12::i;:::-;6421:22;;:6;;;;;;;;;;:22;;;6413:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6773:1:::1;6753:22;;:8;:22;;::::0;6745:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6863:8;6834:38;;6855:6;::::0;::::1;;;;;;;;6834:38;;;;;;;;;;;;6892:8;6883:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6664:244:::0;:::o;2638:98::-;2691:7;2718:10;2711:17;;2638:98;:::o;15989:337::-;16099:1;16082:19;;:5;:19;;;16074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16180:1;16161:21;;:7;:21;;;16153:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16264:6;16234:11;:18;16246:5;16234:18;;;;;;;;;;;;;;;:27;16253:7;16234:27;;;;;;;;;;;;;;;:36;;;;16302:7;16286:32;;16295:5;16286:32;;;16311:6;16286:32;;;;;;:::i;:::-;;;;;;;;15989:337;;;:::o;16334:893::-;16438:1;16422:18;;:4;:18;;;16414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16515:1;16501:16;;:2;:16;;;16493:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16585:1;16576:6;:10;16568:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16643:11;16665:13;;;;;;;;;;;16657:21;;:4;:21;;;;:44;;;;;16688:13;;;;;;;;;;;16682:19;;:2;:19;;;16657:44;16643:58;;16712:13;16729:18;:24;16748:4;16729:24;;;;;;;;;;;;;;;;;;;;;;;;;16728:25;:52;;;;;16758:18;:22;16777:2;16758:22;;;;;;;;;;;;;;;;;;;;;;;;;16757:23;16728:52;:71;;;;;16792:7;:5;:7::i;:::-;16784:15;;:4;:15;;;;16728:71;:88;;;;;16809:7;:5;:7::i;:::-;16803:13;;:2;:13;;;;16728:88;16712:104;;16927:7;:5;:7::i;:::-;16919:15;;:4;:15;;;;:32;;;;;16944:7;:5;:7::i;:::-;16938:13;;:2;:13;;;;16919:32;16916:243;;;16977:10;:16;16988:4;16977:16;;;;;;;;;;;;;;;;;;;;;;;;;16976:17;:36;;;;;16998:10;:14;17009:2;16998:14;;;;;;;;;;;;;;;;;;;;;;;;;16997:15;16976:36;16968:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;17090:6;17087:61;;;17117:15;:13;:15::i;:::-;17087:61;16916:243;17169:50;17184:4;17190:2;17194:6;17202:8;17212:6;17169:14;:50::i;:::-;16403:824;;16334:893;;;:::o;1102:192::-;1188:7;1221:1;1216;:6;;1224:12;1208:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1248:9;1264:1;1260;:5;;;;:::i;:::-;1248:17;;1285:1;1278:8;;;1102:192;;;;;:::o;769:181::-;827:7;847:9;863:1;859;:5;;;;:::i;:::-;847:17;;888:1;883;:6;;875:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;941:1;934:8;;;769:181;;;;:::o;20018:302::-;20112:1;20093:21;;:7;:21;;;20085:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20178:23;20195:5;20178:12;;:16;;:23;;;;:::i;:::-;20163:12;:38;;;;20233:29;20256:5;20233:9;:18;20243:7;20233:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;20212:9;:18;20222:7;20212:18;;;;;;;;;;;;;;;:50;;;;20278:34;20285:7;20302:1;20306:5;20278:34;;;;;;;;:::i;:::-;;;;;;;;20018:302;;:::o;12845:236::-;12932:9;12927:147;12951:9;;:16;;12947:1;:20;12927:147;;;12989:12;13004:9;;13014:1;13004:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12989:27;;13058:4;13031:18;:24;13050:4;13031:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12974:100;12969:3;;;;;:::i;:::-;;;;12927:147;;;;12845:236;;;:::o;14077:346::-;14172:9;14167:249;14191:9;:16;14187:1;:20;14167:249;;;14229:12;14244:9;14254:1;14244:12;;;;;;;;:::i;:::-;;;;;;;;14229:27;;14274:7;14271:134;;;14321:4;14302:10;:16;14313:4;14302:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14271:134;;;14373:10;:16;14384:4;14373:16;;;;;;;;;;;;;;;;14366:23;;;;;;;;;;;14271:134;14214:202;14209:3;;;;;:::i;:::-;;;;14167:249;;;;14077:346;;:::o;20328:292::-;20423:1;20404:21;;:7;:21;;;20396:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20487:24;20504:6;20487:12;;:16;;:24;;;;:::i;:::-;20472:12;:39;;;;20543:30;20566:6;20543:9;:18;20553:7;20543:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;20522:9;:18;20532:7;20522:18;;;;;;;;;;;;;;;:51;;;;20589:23;20596:7;20605:6;20589:23;;;;;;;:::i;:::-;;;;;;;;20328:292;;:::o;19073:937::-;19208:8;:32;;;;;19239:1;19220:7;:16;;;:20;19208:32;19205:288;;;19261:18;19282:37;19315:3;19282:28;19293:7;:16;;;19282:6;:10;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;19261:58;;19354:1;19341:10;:14;19338:141;;;19380:25;19386:6;19394:10;19380:5;:25::i;:::-;19437:22;19448:10;19437:6;:10;;:22;;;;:::i;:::-;19428:31;;19338:141;19242:251;19205:288;19503:17;19523:8;:50;;19572:1;19523:50;;;19534:35;19565:3;19534:26;19545:7;:14;;;19534:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;19523:50;19503:70;;19589:8;:18;;;;;19601:6;19589:18;19586:98;;;19636:36;19668:3;19636:27;19647:7;:15;;;19636:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;19624:48;;19586:98;19694:22;19719:21;19730:9;19719:6;:10;;:21;;;;:::i;:::-;19694:46;;19771:29;19793:6;19771:9;:17;19781:6;19771:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;19751:9;:17;19761:6;19751:17;;;;;;;;;;;;;;;:49;;;;19834:40;19859:14;19834:9;:20;19844:9;19834:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;19811:9;:20;19821:9;19811:20;;;;;;;;;;;;;;;:63;;;;19912:39;19941:9;19912;:24;19930:4;19912:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19885:9;:24;19903:4;19885:24;;;;;;;;;;;;;;;:66;;;;19984:9;19967:35;;19976:6;19967:35;;;19995:6;19967:35;;;;;;:::i;:::-;;;;;;;;19184:826;;19073:937;;;;;:::o;17235:507::-;17279:28;17310:24;17328:4;17310:9;:24::i;:::-;17279:55;;17372:1;17349:20;:24;17345:390;;;17394:16;;;;;;;;;;;17393:17;:42;;;;;17414:21;;;;;;;;;;;17393:42;17390:334;;;17456:19;17478:26;:24;:26::i;:::-;17456:48;;17551:11;17527:20;:35;17523:186;;17660:29;17677:11;17660:16;:29::i;:::-;17523:186;17437:287;17390:334;17345:390;17268:474;17235:507::o;958:136::-;1016:7;1043:43;1047:1;1050;1043:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1036:50;;958:136;;;;:::o;1302:471::-;1360:7;1610:1;1605;:6;1601:47;;1635:1;1628:8;;;;1601:47;1660:9;1676:1;1672;:5;;;;:::i;:::-;1660:17;;1705:1;1700;1696;:5;;;;:::i;:::-;:10;1688:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1764:1;1757:8;;;1302:471;;;;;:::o;1785:132::-;1843:7;1870:39;1874:1;1877;1870:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1863:46;;1785:132;;;;:::o;17750:647::-;8090:4;8071:16;;:23;;;;;;;;;;;;;;;;;;17823:16:::1;17842:54;17894:1;17842:47;17885:3;17842:38;17853:12;:26;;;17842:6;:10;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;17823:73;;17907:20;17930;17941:8;17930:6;:10;;:20;;;;:::i;:::-;17907:43;;17961:30;17978:12;17961:16;:30::i;:::-;18002:23;18028:21;18002:47;;18060:13;18076:63;18137:1;18076:56;18128:3;18076:47;18096:12;:26;;;18076:15;:19;;:47;;;;:::i;:::-;:51;;:56;;;;:::i;:::-;:60;;:63;;;;:::i;:::-;18060:79;;18150:14;18167:26;18187:5;18167:15;:19;;:26;;;;:::i;:::-;18150:43;;18218:1;18209:6;:10;18206:78;;;18244:10;;;;;;;;;;;18236:28;;:36;18265:6;18236:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18206:78;18303:29;18316:8;18326:5;18303:12;:29::i;:::-;18348:41;18363:8;18373:5;18380:8;18348:41;;;;;;;;:::i;:::-;;;;;;;;17812:585;;;;;8136:5:::0;8117:16;;:24;;;;;;;;;;;;;;;;;;17750:647;:::o;1929:278::-;2015:7;2047:1;2043;:5;2050:12;2035:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2074:9;2090:1;2086;:5;;;;:::i;:::-;2074:17;;2198:1;2191:8;;;1929:278;;;;;:::o;18407:585::-;18533:21;18571:1;18557:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18533:40;;18602:4;18584;18589:1;18584:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18628:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18618:4;18623:1;18618:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18661:62;18678:4;18693:15;;;;;;;;;;;18711:11;18661:8;:62::i;:::-;18760:15;;;;;;;;;;;:66;;;18841:11;18867:1;18911:4;18938;18958:15;18760:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18462:530;18407:585;:::o;15005:529::-;15153:62;15170:4;15185:15;;;;;;;;;;;15203:11;15153:8;:62::i;:::-;15258:15;;;;;;;;;;;:31;;;15297:9;15330:4;15350:11;15376:1;15419;15462:23;;;;;;;;;;;15500:15;15258:268;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15005:529;;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:442::-;3719:4;3757:2;3746:9;3742:18;3734:26;;3770:71;3838:1;3827:9;3823:17;3814:6;3770:71;:::i;:::-;3851:72;3919:2;3908:9;3904:18;3895:6;3851:72;:::i;:::-;3933;4001:2;3990:9;3986:18;3977:6;3933:72;:::i;:::-;3570:442;;;;;;:::o;4018:60::-;4046:3;4067:5;4060:12;;4018:60;;;:::o;4084:142::-;4134:9;4167:53;4185:34;4194:24;4212:5;4194:24;:::i;:::-;4185:34;:::i;:::-;4167:53;:::i;:::-;4154:66;;4084:142;;;:::o;4232:126::-;4282:9;4315:37;4346:5;4315:37;:::i;:::-;4302:50;;4232:126;;;:::o;4364:152::-;4440:9;4473:37;4504:5;4473:37;:::i;:::-;4460:50;;4364:152;;;:::o;4522:183::-;4635:63;4692:5;4635:63;:::i;:::-;4630:3;4623:76;4522:183;;:::o;4711:274::-;4830:4;4868:2;4857:9;4853:18;4845:26;;4881:97;4975:1;4964:9;4960:17;4951:6;4881:97;:::i;:::-;4711:274;;;;:::o;4991:222::-;5084:4;5122:2;5111:9;5107:18;5099:26;;5135:71;5203:1;5192:9;5188:17;5179:6;5135:71;:::i;:::-;4991:222;;;;:::o;5219:619::-;5296:6;5304;5312;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5614:2;5640:53;5685:7;5676:6;5665:9;5661:22;5640:53;:::i;:::-;5630:63;;5585:118;5742:2;5768:53;5813:7;5804:6;5793:9;5789:22;5768:53;:::i;:::-;5758:63;;5713:118;5219:619;;;;;:::o;5844:86::-;5879:7;5919:4;5912:5;5908:16;5897:27;;5844:86;;;:::o;5936:112::-;6019:22;6035:5;6019:22;:::i;:::-;6014:3;6007:35;5936:112;;:::o;6054:214::-;6143:4;6181:2;6170:9;6166:18;6158:26;;6194:67;6258:1;6247:9;6243:17;6234:6;6194:67;:::i;:::-;6054:214;;;;:::o;6274:118::-;6361:24;6379:5;6361:24;:::i;:::-;6356:3;6349:37;6274:118;;:::o;6398:222::-;6491:4;6529:2;6518:9;6514:18;6506:26;;6542:71;6610:1;6599:9;6595:17;6586:6;6542:71;:::i;:::-;6398:222;;;;:::o;6626:329::-;6685:6;6734:2;6722:9;6713:7;6709:23;6705:32;6702:119;;;6740:79;;:::i;:::-;6702:119;6860:1;6885:53;6930:7;6921:6;6910:9;6906:22;6885:53;:::i;:::-;6875:63;;6831:117;6626:329;;;;:::o;6961:117::-;7070:1;7067;7060:12;7084:117;7193:1;7190;7183:12;7207:117;7316:1;7313;7306:12;7347:568;7420:8;7430:6;7480:3;7473:4;7465:6;7461:17;7457:27;7447:122;;7488:79;;:::i;:::-;7447:122;7601:6;7588:20;7578:30;;7631:18;7623:6;7620:30;7617:117;;;7653:79;;:::i;:::-;7617:117;7767:4;7759:6;7755:17;7743:29;;7821:3;7813:4;7805:6;7801:17;7791:8;7787:32;7784:41;7781:128;;;7828:79;;:::i;:::-;7781:128;7347:568;;;;;:::o;7921:116::-;7991:21;8006:5;7991:21;:::i;:::-;7984:5;7981:32;7971:60;;8027:1;8024;8017:12;7971:60;7921:116;:::o;8043:133::-;8086:5;8124:6;8111:20;8102:29;;8140:30;8164:5;8140:30;:::i;:::-;8043:133;;;;:::o;8182:698::-;8274:6;8282;8290;8339:2;8327:9;8318:7;8314:23;8310:32;8307:119;;;8345:79;;:::i;:::-;8307:119;8493:1;8482:9;8478:17;8465:31;8523:18;8515:6;8512:30;8509:117;;;8545:79;;:::i;:::-;8509:117;8658:80;8730:7;8721:6;8710:9;8706:22;8658:80;:::i;:::-;8640:98;;;;8436:312;8787:2;8813:50;8855:7;8846:6;8835:9;8831:22;8813:50;:::i;:::-;8803:60;;8758:115;8182:698;;;;;:::o;8886:329::-;8945:6;8994:2;8982:9;8973:7;8969:23;8965:32;8962:119;;;9000:79;;:::i;:::-;8962:119;9120:1;9145:53;9190:7;9181:6;9170:9;9166:22;9145:53;:::i;:::-;9135:63;;9091:117;8886:329;;;;:::o;9221:332::-;9342:4;9380:2;9369:9;9365:18;9357:26;;9393:71;9461:1;9450:9;9446:17;9437:6;9393:71;:::i;:::-;9474:72;9542:2;9531:9;9527:18;9518:6;9474:72;:::i;:::-;9221:332;;;;;:::o;9559:180::-;9607:77;9604:1;9597:88;9704:4;9701:1;9694:15;9728:4;9725:1;9718:15;9745:281;9828:27;9850:4;9828:27;:::i;:::-;9820:6;9816:40;9958:6;9946:10;9943:22;9922:18;9910:10;9907:34;9904:62;9901:88;;;9969:18;;:::i;:::-;9901:88;10009:10;10005:2;9998:22;9788:238;9745:281;;:::o;10032:129::-;10066:6;10093:20;;:::i;:::-;10083:30;;10122:33;10150:4;10142:6;10122:33;:::i;:::-;10032:129;;;:::o;10167:311::-;10244:4;10334:18;10326:6;10323:30;10320:56;;;10356:18;;:::i;:::-;10320:56;10406:4;10398:6;10394:17;10386:25;;10466:4;10460;10456:15;10448:23;;10167:311;;;:::o;10501:710::-;10597:5;10622:81;10638:64;10695:6;10638:64;:::i;:::-;10622:81;:::i;:::-;10613:90;;10723:5;10752:6;10745:5;10738:21;10786:4;10779:5;10775:16;10768:23;;10839:4;10831:6;10827:17;10819:6;10815:30;10868:3;10860:6;10857:15;10854:122;;;10887:79;;:::i;:::-;10854:122;11002:6;10985:220;11019:6;11014:3;11011:15;10985:220;;;11094:3;11123:37;11156:3;11144:10;11123:37;:::i;:::-;11118:3;11111:50;11190:4;11185:3;11181:14;11174:21;;11061:144;11045:4;11040:3;11036:14;11029:21;;10985:220;;;10989:21;10603:608;;10501:710;;;;;:::o;11234:370::-;11305:5;11354:3;11347:4;11339:6;11335:17;11331:27;11321:122;;11362:79;;:::i;:::-;11321:122;11479:6;11466:20;11504:94;11594:3;11586:6;11579:4;11571:6;11567:17;11504:94;:::i;:::-;11495:103;;11311:293;11234:370;;;;:::o;11610:539::-;11694:6;11743:2;11731:9;11722:7;11718:23;11714:32;11711:119;;;11749:79;;:::i;:::-;11711:119;11897:1;11886:9;11882:17;11869:31;11927:18;11919:6;11916:30;11913:117;;;11949:79;;:::i;:::-;11913:117;12054:78;12124:7;12115:6;12104:9;12100:22;12054:78;:::i;:::-;12044:88;;11840:302;11610:539;;;;:::o;12155:474::-;12223:6;12231;12280:2;12268:9;12259:7;12255:23;12251:32;12248:119;;;12286:79;;:::i;:::-;12248:119;12406:1;12431:53;12476:7;12467:6;12456:9;12452:22;12431:53;:::i;:::-;12421:63;;12377:117;12533:2;12559:53;12604:7;12595:6;12584:9;12580:22;12559:53;:::i;:::-;12549:63;;12504:118;12155:474;;;;;:::o;12635:619::-;12712:6;12720;12728;12777:2;12765:9;12756:7;12752:23;12748:32;12745:119;;;12783:79;;:::i;:::-;12745:119;12903:1;12928:53;12973:7;12964:6;12953:9;12949:22;12928:53;:::i;:::-;12918:63;;12874:117;13030:2;13056:53;13101:7;13092:6;13081:9;13077:22;13056:53;:::i;:::-;13046:63;;13001:118;13158:2;13184:53;13229:7;13220:6;13209:9;13205:22;13184:53;:::i;:::-;13174:63;;13129:118;12635:619;;;;;:::o;13260:323::-;13316:6;13365:2;13353:9;13344:7;13340:23;13336:32;13333:119;;;13371:79;;:::i;:::-;13333:119;13491:1;13516:50;13558:7;13549:6;13538:9;13534:22;13516:50;:::i;:::-;13506:60;;13462:114;13260:323;;;;:::o;13606:568::-;13679:8;13689:6;13739:3;13732:4;13724:6;13720:17;13716:27;13706:122;;13747:79;;:::i;:::-;13706:122;13860:6;13847:20;13837:30;;13890:18;13882:6;13879:30;13876:117;;;13912:79;;:::i;:::-;13876:117;14026:4;14018:6;14014:17;14002:29;;14080:3;14072:4;14064:6;14060:17;14050:8;14046:32;14043:41;14040:128;;;14087:79;;:::i;:::-;14040:128;13606:568;;;;;:::o;14180:934::-;14302:6;14310;14318;14326;14375:2;14363:9;14354:7;14350:23;14346:32;14343:119;;;14381:79;;:::i;:::-;14343:119;14529:1;14518:9;14514:17;14501:31;14559:18;14551:6;14548:30;14545:117;;;14581:79;;:::i;:::-;14545:117;14694:80;14766:7;14757:6;14746:9;14742:22;14694:80;:::i;:::-;14676:98;;;;14472:312;14851:2;14840:9;14836:18;14823:32;14882:18;14874:6;14871:30;14868:117;;;14904:79;;:::i;:::-;14868:117;15017:80;15089:7;15080:6;15069:9;15065:22;15017:80;:::i;:::-;14999:98;;;;14794:313;14180:934;;;;;;;:::o;15120:474::-;15188:6;15196;15245:2;15233:9;15224:7;15220:23;15216:32;15213:119;;;15251:79;;:::i;:::-;15213:119;15371:1;15396:53;15441:7;15432:6;15421:9;15417:22;15396:53;:::i;:::-;15386:63;;15342:117;15498:2;15524:53;15569:7;15560:6;15549:9;15545:22;15524:53;:::i;:::-;15514:63;;15469:118;15120:474;;;;;:::o;15600:180::-;15648:77;15645:1;15638:88;15745:4;15742:1;15735:15;15769:4;15766:1;15759:15;15786:320;15830:6;15867:1;15861:4;15857:12;15847:22;;15914:1;15908:4;15904:12;15935:18;15925:81;;15991:4;15983:6;15979:17;15969:27;;15925:81;16053:2;16045:6;16042:14;16022:18;16019:38;16016:84;;16072:18;;:::i;:::-;16016:84;15837:269;15786:320;;;:::o;16112:180::-;16160:77;16157:1;16150:88;16257:4;16254:1;16247:15;16281:4;16278:1;16271:15;16298:102;16340:8;16387:5;16384:1;16380:13;16359:34;;16298:102;;;:::o;16406:848::-;16467:5;16474:4;16498:6;16489:15;;16522:5;16513:14;;16536:712;16557:1;16547:8;16544:15;16536:712;;;16652:4;16647:3;16643:14;16637:4;16634:24;16631:50;;;16661:18;;:::i;:::-;16631:50;16711:1;16701:8;16697:16;16694:451;;;17126:4;17119:5;17115:16;17106:25;;16694:451;17176:4;17170;17166:15;17158:23;;17206:32;17229:8;17206:32;:::i;:::-;17194:44;;16536:712;;;16406:848;;;;;;;:::o;17260:1073::-;17314:5;17505:8;17495:40;;17526:1;17517:10;;17528:5;;17495:40;17554:4;17544:36;;17571:1;17562:10;;17573:5;;17544:36;17640:4;17688:1;17683:27;;;;17724:1;17719:191;;;;17633:277;;17683:27;17701:1;17692:10;;17703:5;;;17719:191;17764:3;17754:8;17751:17;17748:43;;;17771:18;;:::i;:::-;17748:43;17820:8;17817:1;17813:16;17804:25;;17855:3;17848:5;17845:14;17842:40;;;17862:18;;:::i;:::-;17842:40;17895:5;;;17633:277;;18019:2;18009:8;18006:16;18000:3;17994:4;17991:13;17987:36;17969:2;17959:8;17956:16;17951:2;17945:4;17942:12;17938:35;17922:111;17919:246;;;18075:8;18069:4;18065:19;18056:28;;18110:3;18103:5;18100:14;18097:40;;;18117:18;;:::i;:::-;18097:40;18150:5;;17919:246;18190:42;18228:3;18218:8;18212:4;18209:1;18190:42;:::i;:::-;18175:57;;;;18264:4;18259:3;18255:14;18248:5;18245:25;18242:51;;;18273:18;;:::i;:::-;18242:51;18322:4;18315:5;18311:16;18302:25;;17260:1073;;;;;;:::o;18339:281::-;18397:5;18421:23;18439:4;18421:23;:::i;:::-;18413:31;;18465:25;18481:8;18465:25;:::i;:::-;18453:37;;18509:104;18546:66;18536:8;18530:4;18509:104;:::i;:::-;18500:113;;18339:281;;;;:::o;18626:348::-;18666:7;18689:20;18707:1;18689:20;:::i;:::-;18684:25;;18723:20;18741:1;18723:20;:::i;:::-;18718:25;;18911:1;18843:66;18839:74;18836:1;18833:81;18828:1;18821:9;18814:17;18810:105;18807:131;;;18918:18;;:::i;:::-;18807:131;18966:1;18963;18959:9;18948:20;;18626:348;;;;:::o;18980:182::-;19120:34;19116:1;19108:6;19104:14;19097:58;18980:182;:::o;19168:366::-;19310:3;19331:67;19395:2;19390:3;19331:67;:::i;:::-;19324:74;;19407:93;19496:3;19407:93;:::i;:::-;19525:2;19520:3;19516:12;19509:19;;19168:366;;;:::o;19540:419::-;19706:4;19744:2;19733:9;19729:18;19721:26;;19793:9;19787:4;19783:20;19779:1;19768:9;19764:17;19757:47;19821:131;19947:4;19821:131;:::i;:::-;19813:139;;19540:419;;;:::o;19965:143::-;20022:5;20053:6;20047:13;20038:22;;20069:33;20096:5;20069:33;:::i;:::-;19965:143;;;;:::o;20114:351::-;20184:6;20233:2;20221:9;20212:7;20208:23;20204:32;20201:119;;;20239:79;;:::i;:::-;20201:119;20359:1;20384:64;20440:7;20431:6;20420:9;20416:22;20384:64;:::i;:::-;20374:74;;20330:128;20114:351;;;;:::o;20471:332::-;20592:4;20630:2;20619:9;20615:18;20607:26;;20643:71;20711:1;20700:9;20696:17;20687:6;20643:71;:::i;:::-;20724:72;20792:2;20781:9;20777:18;20768:6;20724:72;:::i;:::-;20471:332;;;;;:::o;20809:137::-;20863:5;20894:6;20888:13;20879:22;;20910:30;20934:5;20910:30;:::i;:::-;20809:137;;;;:::o;20952:345::-;21019:6;21068:2;21056:9;21047:7;21043:23;21039:32;21036:119;;;21074:79;;:::i;:::-;21036:119;21194:1;21219:61;21272:7;21263:6;21252:9;21248:22;21219:61;:::i;:::-;21209:71;;21165:125;20952:345;;;;:::o;21303:143::-;21360:5;21391:6;21385:13;21376:22;;21407:33;21434:5;21407:33;:::i;:::-;21303:143;;;;:::o;21452:351::-;21522:6;21571:2;21559:9;21550:7;21546:23;21542:32;21539:119;;;21577:79;;:::i;:::-;21539:119;21697:1;21722:64;21778:7;21769:6;21758:9;21754:22;21722:64;:::i;:::-;21712:74;;21668:128;21452:351;;;;:::o;21809:180::-;21857:77;21854:1;21847:88;21954:4;21951:1;21944:15;21978:4;21975:1;21968:15;21995:114;22062:6;22096:5;22090:12;22080:22;;21995:114;;;:::o;22115:184::-;22214:11;22248:6;22243:3;22236:19;22288:4;22283:3;22279:14;22264:29;;22115:184;;;;:::o;22305:132::-;22372:4;22395:3;22387:11;;22425:4;22420:3;22416:14;22408:22;;22305:132;;;:::o;22443:108::-;22520:24;22538:5;22520:24;:::i;:::-;22515:3;22508:37;22443:108;;:::o;22557:179::-;22626:10;22647:46;22689:3;22681:6;22647:46;:::i;:::-;22725:4;22720:3;22716:14;22702:28;;22557:179;;;;:::o;22742:113::-;22812:4;22844;22839:3;22835:14;22827:22;;22742:113;;;:::o;22891:732::-;23010:3;23039:54;23087:5;23039:54;:::i;:::-;23109:86;23188:6;23183:3;23109:86;:::i;:::-;23102:93;;23219:56;23269:5;23219:56;:::i;:::-;23298:7;23329:1;23314:284;23339:6;23336:1;23333:13;23314:284;;;23415:6;23409:13;23442:63;23501:3;23486:13;23442:63;:::i;:::-;23435:70;;23528:60;23581:6;23528:60;:::i;:::-;23518:70;;23374:224;23361:1;23358;23354:9;23349:14;;23314:284;;;23318:14;23614:3;23607:10;;23015:608;;;22891:732;;;;:::o;23629:483::-;23800:4;23838:2;23827:9;23823:18;23815:26;;23851:71;23919:1;23908:9;23904:17;23895:6;23851:71;:::i;:::-;23969:9;23963:4;23959:20;23954:2;23943:9;23939:18;23932:48;23997:108;24100:4;24091:6;23997:108;:::i;:::-;23989:116;;23629:483;;;;;:::o;24118:311::-;24195:4;24285:18;24277:6;24274:30;24271:56;;;24307:18;;:::i;:::-;24271:56;24357:4;24349:6;24345:17;24337:25;;24417:4;24411;24407:15;24399:23;;24118:311;;;:::o;24452:732::-;24559:5;24584:81;24600:64;24657:6;24600:64;:::i;:::-;24584:81;:::i;:::-;24575:90;;24685:5;24714:6;24707:5;24700:21;24748:4;24741:5;24737:16;24730:23;;24801:4;24793:6;24789:17;24781:6;24777:30;24830:3;24822:6;24819:15;24816:122;;;24849:79;;:::i;:::-;24816:122;24964:6;24947:231;24981:6;24976:3;24973:15;24947:231;;;25056:3;25085:48;25129:3;25117:10;25085:48;:::i;:::-;25080:3;25073:61;25163:4;25158:3;25154:14;25147:21;;25023:155;25007:4;25002:3;24998:14;24991:21;;24947:231;;;24951:21;24565:619;;24452:732;;;;;:::o;25207:385::-;25289:5;25338:3;25331:4;25323:6;25319:17;25315:27;25305:122;;25346:79;;:::i;:::-;25305:122;25456:6;25450:13;25481:105;25582:3;25574:6;25567:4;25559:6;25555:17;25481:105;:::i;:::-;25472:114;;25295:297;25207:385;;;;:::o;25598:554::-;25693:6;25742:2;25730:9;25721:7;25717:23;25713:32;25710:119;;;25748:79;;:::i;:::-;25710:119;25889:1;25878:9;25874:17;25868:24;25919:18;25911:6;25908:30;25905:117;;;25941:79;;:::i;:::-;25905:117;26046:89;26127:7;26118:6;26107:9;26103:22;26046:89;:::i;:::-;26036:99;;25839:306;25598:554;;;;:::o;26158:229::-;26298:34;26294:1;26286:6;26282:14;26275:58;26367:12;26362:2;26354:6;26350:15;26343:37;26158:229;:::o;26393:366::-;26535:3;26556:67;26620:2;26615:3;26556:67;:::i;:::-;26549:74;;26632:93;26721:3;26632:93;:::i;:::-;26750:2;26745:3;26741:12;26734:19;;26393:366;;;:::o;26765:419::-;26931:4;26969:2;26958:9;26954:18;26946:26;;27018:9;27012:4;27008:20;27004:1;26993:9;26989:17;26982:47;27046:131;27172:4;27046:131;:::i;:::-;27038:139;;26765:419;;;:::o;27190:191::-;27230:3;27249:20;27267:1;27249:20;:::i;:::-;27244:25;;27283:20;27301:1;27283:20;:::i;:::-;27278:25;;27326:1;27323;27319:9;27312:16;;27347:3;27344:1;27341:10;27338:36;;;27354:18;;:::i;:::-;27338:36;27190:191;;;;:::o;27387:225::-;27527:34;27523:1;27515:6;27511:14;27504:58;27596:8;27591:2;27583:6;27579:15;27572:33;27387:225;:::o;27618:366::-;27760:3;27781:67;27845:2;27840:3;27781:67;:::i;:::-;27774:74;;27857:93;27946:3;27857:93;:::i;:::-;27975:2;27970:3;27966:12;27959:19;;27618:366;;;:::o;27990:419::-;28156:4;28194:2;28183:9;28179:18;28171:26;;28243:9;28237:4;28233:20;28229:1;28218:9;28214:17;28207:47;28271:131;28397:4;28271:131;:::i;:::-;28263:139;;27990:419;;;:::o;28415:223::-;28555:34;28551:1;28543:6;28539:14;28532:58;28624:6;28619:2;28611:6;28607:15;28600:31;28415:223;:::o;28644:366::-;28786:3;28807:67;28871:2;28866:3;28807:67;:::i;:::-;28800:74;;28883:93;28972:3;28883:93;:::i;:::-;29001:2;28996:3;28992:12;28985:19;;28644:366;;;:::o;29016:419::-;29182:4;29220:2;29209:9;29205:18;29197:26;;29269:9;29263:4;29259:20;29255:1;29244:9;29240:17;29233:47;29297:131;29423:4;29297:131;:::i;:::-;29289:139;;29016:419;;;:::o;29441:221::-;29581:34;29577:1;29569:6;29565:14;29558:58;29650:4;29645:2;29637:6;29633:15;29626:29;29441:221;:::o;29668:366::-;29810:3;29831:67;29895:2;29890:3;29831:67;:::i;:::-;29824:74;;29907:93;29996:3;29907:93;:::i;:::-;30025:2;30020:3;30016:12;30009:19;;29668:366;;;:::o;30040:419::-;30206:4;30244:2;30233:9;30229:18;30221:26;;30293:9;30287:4;30283:20;30279:1;30268:9;30264:17;30257:47;30321:131;30447:4;30321:131;:::i;:::-;30313:139;;30040:419;;;:::o;30465:224::-;30605:34;30601:1;30593:6;30589:14;30582:58;30674:7;30669:2;30661:6;30657:15;30650:32;30465:224;:::o;30695:366::-;30837:3;30858:67;30922:2;30917:3;30858:67;:::i;:::-;30851:74;;30934:93;31023:3;30934:93;:::i;:::-;31052:2;31047:3;31043:12;31036:19;;30695:366;;;:::o;31067:419::-;31233:4;31271:2;31260:9;31256:18;31248:26;;31320:9;31314:4;31310:20;31306:1;31295:9;31291:17;31284:47;31348:131;31474:4;31348:131;:::i;:::-;31340:139;;31067:419;;;:::o;31492:222::-;31632:34;31628:1;31620:6;31616:14;31609:58;31701:5;31696:2;31688:6;31684:15;31677:30;31492:222;:::o;31720:366::-;31862:3;31883:67;31947:2;31942:3;31883:67;:::i;:::-;31876:74;;31959:93;32048:3;31959:93;:::i;:::-;32077:2;32072:3;32068:12;32061:19;;31720:366;;;:::o;32092:419::-;32258:4;32296:2;32285:9;32281:18;32273:26;;32345:9;32339:4;32335:20;32331:1;32320:9;32316:17;32309:47;32373:131;32499:4;32373:131;:::i;:::-;32365:139;;32092:419;;;:::o;32517:228::-;32657:34;32653:1;32645:6;32641:14;32634:58;32726:11;32721:2;32713:6;32709:15;32702:36;32517:228;:::o;32751:366::-;32893:3;32914:67;32978:2;32973:3;32914:67;:::i;:::-;32907:74;;32990:93;33079:3;32990:93;:::i;:::-;33108:2;33103:3;33099:12;33092:19;;32751:366;;;:::o;33123:419::-;33289:4;33327:2;33316:9;33312:18;33304:26;;33376:9;33370:4;33366:20;33362:1;33351:9;33347:17;33340:47;33404:131;33530:4;33404:131;:::i;:::-;33396:139;;33123:419;;;:::o;33548:234::-;33688:34;33684:1;33676:6;33672:14;33665:58;33757:17;33752:2;33744:6;33740:15;33733:42;33548:234;:::o;33788:366::-;33930:3;33951:67;34015:2;34010:3;33951:67;:::i;:::-;33944:74;;34027:93;34116:3;34027:93;:::i;:::-;34145:2;34140:3;34136:12;34129:19;;33788:366;;;:::o;34160:419::-;34326:4;34364:2;34353:9;34349:18;34341:26;;34413:9;34407:4;34403:20;34399:1;34388:9;34384:17;34377:47;34441:131;34567:4;34441:131;:::i;:::-;34433:139;;34160:419;;;:::o;34585:194::-;34625:4;34645:20;34663:1;34645:20;:::i;:::-;34640:25;;34679:20;34697:1;34679:20;:::i;:::-;34674:25;;34723:1;34720;34716:9;34708:17;;34747:1;34741:4;34738:11;34735:37;;;34752:18;;:::i;:::-;34735:37;34585:194;;;;:::o;34785:177::-;34925:29;34921:1;34913:6;34909:14;34902:53;34785:177;:::o;34968:366::-;35110:3;35131:67;35195:2;35190:3;35131:67;:::i;:::-;35124:74;;35207:93;35296:3;35207:93;:::i;:::-;35325:2;35320:3;35316:12;35309:19;;34968:366;;;:::o;35340:419::-;35506:4;35544:2;35533:9;35529:18;35521:26;;35593:9;35587:4;35583:20;35579:1;35568:9;35564:17;35557:47;35621:131;35747:4;35621:131;:::i;:::-;35613:139;;35340:419;;;:::o;35765:220::-;35905:34;35901:1;35893:6;35889:14;35882:58;35974:3;35969:2;35961:6;35957:15;35950:28;35765:220;:::o;35991:366::-;36133:3;36154:67;36218:2;36213:3;36154:67;:::i;:::-;36147:74;;36230:93;36319:3;36230:93;:::i;:::-;36348:2;36343:3;36339:12;36332:19;;35991:366;;;:::o;36363:419::-;36529:4;36567:2;36556:9;36552:18;36544:26;;36616:9;36610:4;36606:20;36602:1;36591:9;36587:17;36580:47;36644:131;36770:4;36644:131;:::i;:::-;36636:139;;36363:419;;;:::o;36788:442::-;36937:4;36975:2;36964:9;36960:18;36952:26;;36988:71;37056:1;37045:9;37041:17;37032:6;36988:71;:::i;:::-;37069:72;37137:2;37126:9;37122:18;37113:6;37069:72;:::i;:::-;37151;37219:2;37208:9;37204:18;37195:6;37151:72;:::i;:::-;36788:442;;;;;;:::o;37236:233::-;37275:3;37298:24;37316:5;37298:24;:::i;:::-;37289:33;;37344:66;37337:5;37334:77;37331:103;;37414:18;;:::i;:::-;37331:103;37461:1;37454:5;37450:13;37443:20;;37236:233;;;:::o;37475:181::-;37615:33;37611:1;37603:6;37599:14;37592:57;37475:181;:::o;37662:366::-;37804:3;37825:67;37889:2;37884:3;37825:67;:::i;:::-;37818:74;;37901:93;37990:3;37901:93;:::i;:::-;38019:2;38014:3;38010:12;38003:19;;37662:366;;;:::o;38034:419::-;38200:4;38238:2;38227:9;38223:18;38215:26;;38287:9;38281:4;38277:20;38273:1;38262:9;38258:17;38251:47;38315:131;38441:4;38315:131;:::i;:::-;38307:139;;38034:419;;;:::o;38459:180::-;38507:77;38504:1;38497:88;38604:4;38601:1;38594:15;38628:4;38625:1;38618:15;38645:185;38685:1;38702:20;38720:1;38702:20;:::i;:::-;38697:25;;38736:20;38754:1;38736:20;:::i;:::-;38731:25;;38775:1;38765:35;;38780:18;;:::i;:::-;38765:35;38822:1;38819;38815:9;38810:14;;38645:185;;;;:::o;38836:220::-;38976:34;38972:1;38964:6;38960:14;38953:58;39045:3;39040:2;39032:6;39028:15;39021:28;38836:220;:::o;39062:366::-;39204:3;39225:67;39289:2;39284:3;39225:67;:::i;:::-;39218:74;;39301:93;39390:3;39301:93;:::i;:::-;39419:2;39414:3;39410:12;39403:19;;39062:366;;;:::o;39434:419::-;39600:4;39638:2;39627:9;39623:18;39615:26;;39687:9;39681:4;39677:20;39673:1;39662:9;39658:17;39651:47;39715:131;39841:4;39715:131;:::i;:::-;39707:139;;39434:419;;;:::o;39859:85::-;39904:7;39933:5;39922:16;;39859:85;;;:::o;39950:158::-;40008:9;40041:61;40059:42;40068:32;40094:5;40068:32;:::i;:::-;40059:42;:::i;:::-;40041:61;:::i;:::-;40028:74;;39950:158;;;:::o;40114:147::-;40209:45;40248:5;40209:45;:::i;:::-;40204:3;40197:58;40114:147;;:::o;40267:831::-;40530:4;40568:3;40557:9;40553:19;40545:27;;40582:71;40650:1;40639:9;40635:17;40626:6;40582:71;:::i;:::-;40663:80;40739:2;40728:9;40724:18;40715:6;40663:80;:::i;:::-;40790:9;40784:4;40780:20;40775:2;40764:9;40760:18;40753:48;40818:108;40921:4;40912:6;40818:108;:::i;:::-;40810:116;;40936:72;41004:2;40993:9;40989:18;40980:6;40936:72;:::i;:::-;41018:73;41086:3;41075:9;41071:19;41062:6;41018:73;:::i;:::-;40267:831;;;;;;;;:::o;41104:807::-;41353:4;41391:3;41380:9;41376:19;41368:27;;41405:71;41473:1;41462:9;41458:17;41449:6;41405:71;:::i;:::-;41486:72;41554:2;41543:9;41539:18;41530:6;41486:72;:::i;:::-;41568:80;41644:2;41633:9;41629:18;41620:6;41568:80;:::i;:::-;41658;41734:2;41723:9;41719:18;41710:6;41658:80;:::i;:::-;41748:73;41816:3;41805:9;41801:19;41792:6;41748:73;:::i;:::-;41831;41899:3;41888:9;41884:19;41875:6;41831:73;:::i;:::-;41104:807;;;;;;;;;:::o;41917:663::-;42005:6;42013;42021;42070:2;42058:9;42049:7;42045:23;42041:32;42038:119;;;42076:79;;:::i;:::-;42038:119;42196:1;42221:64;42277:7;42268:6;42257:9;42253:22;42221:64;:::i;:::-;42211:74;;42167:128;42334:2;42360:64;42416:7;42407:6;42396:9;42392:22;42360:64;:::i;:::-;42350:74;;42305:129;42473:2;42499:64;42555:7;42546:6;42535:9;42531:22;42499:64;:::i;:::-;42489:74;;42444:129;41917:663;;;;;:::o

Swarm Source

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