ETH Price: $3,349.56 (-1.16%)

Token

Tornado AI (TORNAI)
 

Overview

Max Total Supply

1,000,000,000 TORNAI

Holders

1,217

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
warningtones.eth
Balance
101,632.769644627094076314 TORNAI

Value
$0.00
0x13bc311b10653f454d3b624e5422ac1745c7d3e7
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TornadoAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-15
*/

//https://tornadoai.cash/
//https://twitter.com/tornadoaierc20
//https://t.me/tornadoaierc20

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, " multiplication overflow");
        return c;
    }

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

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

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(), "caller is not the owner");
        _;
    }

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

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

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

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

contract TornadoAI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedWallet;
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = "Tornado AI";
    string private constant _symbol = "TORNAI";

    uint256 private constant onePercent = _totalSupply / 100; //1%

    uint256 public buyFee = 0;
    uint256 public sellFee = 0;
    uint256 public maxAmountPerTx = 0;
    uint256 public maxAmountPerWallet = 0;

    uint256 private maxSwapTokenAmount = 0;

    IUniswapV2Router02 private constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;

    address[] public holders;

    address payable private taxWallet;

    bool private swapEnabled = false;
    bool private inSwapAndLiquify = false;

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

    constructor() {
        taxWallet = payable(0x4090920054FdF644D721dcef49bA3EbFd2C78d22);

        _isExcludedWallet[_msgSender()] = true;
        _isExcludedWallet[address(this)] = true;
        _isExcludedWallet[taxWallet] = true;

        _allowances[address(this)][address(uniswapV2Router)] = type(uint).max;
        _allowances[_msgSender()][address(uniswapV2Router)] = type(uint).max;

        _balance[_msgSender()] = onePercent * 8;   // 8%
        _balance[address(this)] = onePercent * 92;  // 92%

        emit Transfer(address(0), _msgSender(), onePercent * 8);
        emit Transfer(address(0), address(this), onePercent * 92);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balance[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, "low allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0) && spender != address(0), "approve 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");

        uint256 _tax = 0;
        if (!_isExcludedWallet[from] && !_isExcludedWallet[to]) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to) + amount <= maxAmountPerWallet || maxAmountPerWallet == 0, "Exceed max amount per wallet");
                require(amount <= maxAmountPerTx || maxAmountPerTx == 0, "Exceed max amount per tx");
                _tax = buyFee;
            } else if (to == uniswapV2Pair) {
                require(amount <= maxAmountPerTx || maxAmountPerTx == 0, "Exceed max amount per tx");
                _tax = sellFee;
            } else {
                _tax = 0;
            }
        }

        uint256 taxAmount = (amount * _tax) / 100;
        uint256 transferAmount = amount - taxAmount;

        _balance[from] = _balance[from] - amount;
        _balance[address(this)] = _balance[address(this)] + taxAmount;

        uint256 cAmount = _balance[address(this)];
        if (!inSwapAndLiquify && from != uniswapV2Pair && to == uniswapV2Pair && swapEnabled) {
            if (cAmount >= maxSwapTokenAmount) {
                swapTokensForEth(cAmount);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {
                    sendETHToFee(ethBalance);
                }
            }
        }

        if (!_isExcludedWallet[to] && to != uniswapV2Pair && _balance[to] == 0) {
            holders.push(to);
        }

        _balance[to] = _balance[to] + transferAmount;

        if (taxAmount > 0) {
            emit Transfer(from, address(this), taxAmount);
        }

        if (!_isExcludedWallet[from] && from != uniswapV2Pair && _balance[from] == 0) {
            for (uint256 i = 0; i < holders.length; i ++) {
                if (holders[i] == from) {
                    holders[i] = holders[holders.length - 1];
                    holders.pop();
                    break;
                }
            }
        }

        emit Transfer(from, to, transferAmount);
    }

    function swapTokensForEth(uint256 _tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 _amount) private {
        uint256 feeAmount = _amount;
        taxWallet.transfer(feeAmount);
    }

    function manualSwap() external {
        require(_msgSender() == owner() || _msgSender() == taxWallet, "Invalid permission");

        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    function _setFee(uint256 _buyFee, uint256 _sellFee) private {
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function _setMaxAmountPerTx(uint256 _maxAmountPerTx) private {
        maxAmountPerTx = _maxAmountPerTx;
    }

    function _setMaxAmountPerWallet(uint256 _maxAmountPerWallet) private {
        maxAmountPerWallet = _maxAmountPerWallet;
    }

    function _setMaxSwapTokenAmount(uint256 _maxSwapTokenAmount) private {
        maxSwapTokenAmount = _maxSwapTokenAmount;
    }

    function openTrade(
        uint256 _buyFee,
        uint256 _sellFee,
        uint256 _maxAmountPerTx,
        uint256 _maxAmountPerWallet,
        uint256 _maxSwapTokenAmount
    ) external payable onlyOwner {
        require(!swapEnabled, "token is already enabled for trading");

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        _setFee(_buyFee, _sellFee);
        _setMaxAmountPerTx(_maxAmountPerTx);
        _setMaxAmountPerWallet(_maxAmountPerWallet);
        _setMaxSwapTokenAmount(_maxSwapTokenAmount);

        swapEnabled = true;
    }

    function setFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        _setFee(_buyFee, _sellFee);
    }

    function setLimits(uint256 _maxAmountPerTx, uint256 _maxAmountPerWallet) external onlyOwner {
        _setMaxAmountPerTx(_maxAmountPerTx);
        _setMaxAmountPerWallet(_maxAmountPerWallet);
    }

    function setMaxSwapTokenAmount(uint256 _maxSwapTokenAmount) external onlyOwner {
        _setMaxSwapTokenAmount(_maxSwapTokenAmount);
    }

    function setTaxWallet(address _taxWallet) external onlyOwner {
        taxWallet = payable(_taxWallet);
    }

    function getHoldersCount() public view returns(uint256) {
        return holders.length;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getHoldersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerTx","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerWallet","type":"uint256"},{"internalType":"uint256","name":"_maxSwapTokenAmount","type":"uint256"}],"name":"openTrade","outputs":[],"stateMutability":"payable","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":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAmountPerTx","type":"uint256"},{"internalType":"uint256","name":"_maxAmountPerWallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSwapTokenAmount","type":"uint256"}],"name":"setMaxSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060045560006005556000600655600060075560006008556000600b60146101000a81548160ff0219169083151502179055506000600b60156101000a81548160ff0219169083151502179055503480156200006057600080fd5b506000620000736200068460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350734090920054fdf644d721dcef49ba3ebfd2c78d22600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006200017c6200068460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60026000620003896200068460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860646012600a6200042c919062000826565b633b9aca006200043d919062000877565b620004499190620008f1565b62000455919062000877565b60016000620004696200068460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550605c60646012600a620004bb919062000826565b633b9aca00620004cc919062000877565b620004d89190620008f1565b620004e4919062000877565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620005376200068460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600860646012600a6200059a919062000826565b633b9aca00620005ab919062000877565b620005b79190620008f1565b620005c3919062000877565b604051620005d291906200093a565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef605c60646012600a6200063e919062000826565b633b9aca006200064f919062000877565b6200065b9190620008f1565b62000667919062000877565b6040516200067691906200093a565b60405180910390a362000957565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200071a57808604811115620006f257620006f16200068c565b5b6001851615620007025780820291505b80810290506200071285620006bb565b9450620006d2565b94509492505050565b60008262000735576001905062000808565b8162000745576000905062000808565b81600181146200075e576002811462000769576200079f565b600191505062000808565b60ff8411156200077e576200077d6200068c565b5b8360020a9150848211156200079857620007976200068c565b5b5062000808565b5060208310610133831016604e8410600b8410161715620007d95782820a905083811115620007d357620007d26200068c565b5b62000808565b620007e88484846001620006c8565b925090508184048111156200080257620008016200068c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000833826200080f565b9150620008408362000819565b92506200086f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000723565b905092915050565b600062000884826200080f565b915062000891836200080f565b9250828202620008a1816200080f565b91508282048414831517620008bb57620008ba6200068c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008fe826200080f565b91506200090b836200080f565b9250826200091e576200091d620008c2565b5b828204905092915050565b62000934816200080f565b82525050565b600060208201905062000951600083018462000929565b92915050565b6134cd80620009676000396000f3fe60806040526004361061016a5760003560e01c806364998def116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e14610529578063e21bbe6b14610566578063ea414b2814610582578063f2fde38b146105ab57610171565b806395d89b4114610498578063a9059cbb146104c3578063c4590d3f1461050057610171565b806364998def1461039a57806370a08231146103c3578063715018a61461040057806373889f4a1461041757806385b27c85146104425780638da5cb5b1461046d57610171565b8063313ce56711610123578063313ce567146102ae57806336db7129146102d9578063470624021461030457806349bd5a5e1461032f57806351bc3c851461035a57806352f7c9881461037157610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd146102095780632a11ced0146102465780632b14ca561461028357610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105d4565b60405161019891906125c4565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061267f565b610611565b6040516101d591906126da565b60405180910390f35b3480156101ea57600080fd5b506101f361062f565b6040516102009190612704565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b919061271f565b610653565b60405161023d91906126da565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190612772565b610749565b60405161027a91906127ae565b60405180910390f35b34801561028f57600080fd5b50610298610788565b6040516102a59190612704565b60405180910390f35b3480156102ba57600080fd5b506102c361078e565b6040516102d091906127e5565b60405180910390f35b3480156102e557600080fd5b506102ee610797565b6040516102fb9190612704565b60405180910390f35b34801561031057600080fd5b5061031961079d565b6040516103269190612704565b60405180910390f35b34801561033b57600080fd5b506103446107a3565b60405161035191906127ae565b60405180910390f35b34801561036657600080fd5b5061036f6107c9565b005b34801561037d57600080fd5b5061039860048036038101906103939190612800565b6108e0565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190612772565b610983565b005b3480156103cf57600080fd5b506103ea60048036038101906103e59190612840565b610a24565b6040516103f79190612704565b60405180910390f35b34801561040c57600080fd5b50610415610a6d565b005b34801561042357600080fd5b5061042c610bc0565b6040516104399190612704565b60405180910390f35b34801561044e57600080fd5b50610457610bcd565b6040516104649190612704565b60405180910390f35b34801561047957600080fd5b50610482610bd3565b60405161048f91906127ae565b60405180910390f35b3480156104a457600080fd5b506104ad610bfc565b6040516104ba91906125c4565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061267f565b610c39565b6040516104f791906126da565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190612800565b610c57565b005b34801561053557600080fd5b50610550600480360381019061054b919061286d565b610d02565b60405161055d9190612704565b60405180910390f35b610580600480360381019061057b91906128ad565b610d89565b005b34801561058e57600080fd5b506105a960048036038101906105a49190612840565b6111fa565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190612840565b6112d3565b005b60606040518060400160405280600a81526020017f546f726e61646f20414900000000000000000000000000000000000000000000815250905090565b600061062561061e611494565b848461149c565b6001905092915050565b60006012600a61063f9190612a8a565b633b9aca0061064e9190612ad5565b905090565b6000610660848484611630565b61073e8461066c611494565b610739856040518060400160405280600d81526020017f6c6f7720616c6c6f77616e636500000000000000000000000000000000000000815250600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106ef611494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fe9092919063ffffffff16565b61149c565b600190509392505050565b600a818154811061075957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60006012905090565b60075481565b60045481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107d1610bd3565b73ffffffffffffffffffffffffffffffffffffffff166107ef611494565b73ffffffffffffffffffffffffffffffffffffffff1614806108655750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084d611494565b73ffffffffffffffffffffffffffffffffffffffff16145b6108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90612b63565b60405180910390fd5b60006108af30610a24565b905060008111156108c4576108c381612262565b5b600047905060008111156108dc576108db81612492565b5b5050565b6108e8611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c90612bcf565b60405180910390fd5b61097f8282612504565b5050565b61098b611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90612bcf565b60405180910390fd5b610a2181612516565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a75611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af990612bcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a80549050905090565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f544f524e41490000000000000000000000000000000000000000000000000000815250905090565b6000610c4d610c46611494565b8484611630565b6001905092915050565b610c5f611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce390612bcf565b60405180910390fd5b610cf582612520565b610cfe8161252a565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d91611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590612bcf565b60405180910390fd5b600b60149054906101000a900460ff1615610e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6590612c61565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612c96565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190612c96565b6040518363ffffffff1660e01b8152600401610fad929190612cc3565b6020604051808303816000875af1158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff09190612c96565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719343061106b30610a24565b600080611076610bd3565b426040518863ffffffff1660e01b815260040161109896959493929190612d31565b60606040518083038185885af11580156110b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110db9190612da7565b505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161116f929190612dfa565b6020604051808303816000875af115801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190612e4f565b506111bd8585612504565b6111c683612520565b6111cf8261252a565b6111d881612516565b6001600b60146101000a81548160ff0219169083151502179055505050505050565b611202611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690612bcf565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112db611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90612bcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90612ec8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115065750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c90612f34565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116239190612704565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690612fc6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613058565b60405180910390fd5b60008111611751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611748906130ea565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117f75750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a1757600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118995750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561195f57600754826118ab85610a24565b6118b5919061310a565b1115806118c457506000600754145b611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061318a565b60405180910390fd5b6006548211158061191657506000600654145b611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906131f6565b60405180910390fd5b6004549050611a16565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a1057600654821115806119c757506000600654145b611a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fd906131f6565b60405180910390fd5b6005549050611a15565b600090505b5b5b600060648284611a279190612ad5565b611a319190613245565b905060008184611a419190613276565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9190613276565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b1c919061310a565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600b60159054906101000a900460ff16158015611c0e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015611c675750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611c7f5750600b60149054906101000a900460ff165b15611cb1576008548110611cb057611c9681612262565b60004790506000811115611cae57611cad81612492565b5b505b5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d595750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015611da457506000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15611e0d57600a869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e58919061310a565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000831115611f0a573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f019190612704565b60405180910390a35b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fb25750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015611ffd57506000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156121905760005b600a8054905081101561218e578773ffffffffffffffffffffffffffffffffffffffff16600a828154811061203d5761203c6132aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361217b57600a6001600a805490506120979190613276565b815481106120a8576120a76132aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106120e7576120e66132aa565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a805480612141576121406132d9565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561218e565b808061218690613308565b915050612005565b505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121ed9190612704565b60405180910390a350505050505050565b6000838311158290612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d91906125c4565b60405180910390fd5b50600083856122559190613276565b9050809150509392505050565b6001600b60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561229a57612299613350565b5b6040519080825280602002602001820160405280156122c85781602001602082028036833780820191505090505b50905030816000815181106122e0576122df6132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239d9190612c96565b816001815181106123b1576123b06132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161244195949392919061343d565b600060405180830381600087803b15801561245b57600080fd5b505af115801561246f573d6000803e3d6000fd5b50505050506000600b60156101000a81548160ff02191690831515021790555050565b6000819050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124ff573d6000803e3d6000fd5b505050565b81600481905550806005819055505050565b8060088190555050565b8060068190555050565b8060078190555050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561256e578082015181840152602081019050612553565b60008484015250505050565b6000601f19601f8301169050919050565b600061259682612534565b6125a0818561253f565b93506125b0818560208601612550565b6125b98161257a565b840191505092915050565b600060208201905081810360008301526125de818461258b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612616826125eb565b9050919050565b6126268161260b565b811461263157600080fd5b50565b6000813590506126438161261d565b92915050565b6000819050919050565b61265c81612649565b811461266757600080fd5b50565b60008135905061267981612653565b92915050565b60008060408385031215612696576126956125e6565b5b60006126a485828601612634565b92505060206126b58582860161266a565b9150509250929050565b60008115159050919050565b6126d4816126bf565b82525050565b60006020820190506126ef60008301846126cb565b92915050565b6126fe81612649565b82525050565b600060208201905061271960008301846126f5565b92915050565b600080600060608486031215612738576127376125e6565b5b600061274686828701612634565b935050602061275786828701612634565b92505060406127688682870161266a565b9150509250925092565b600060208284031215612788576127876125e6565b5b60006127968482850161266a565b91505092915050565b6127a88161260b565b82525050565b60006020820190506127c3600083018461279f565b92915050565b600060ff82169050919050565b6127df816127c9565b82525050565b60006020820190506127fa60008301846127d6565b92915050565b60008060408385031215612817576128166125e6565b5b60006128258582860161266a565b92505060206128368582860161266a565b9150509250929050565b600060208284031215612856576128556125e6565b5b600061286484828501612634565b91505092915050565b60008060408385031215612884576128836125e6565b5b600061289285828601612634565b92505060206128a385828601612634565b9150509250929050565b600080600080600060a086880312156128c9576128c86125e6565b5b60006128d78882890161266a565b95505060206128e88882890161266a565b94505060406128f98882890161266a565b935050606061290a8882890161266a565b925050608061291b8882890161266a565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129ae5780860481111561298a57612989612928565b5b60018516156129995780820291505b80810290506129a785612957565b945061296e565b94509492505050565b6000826129c75760019050612a83565b816129d55760009050612a83565b81600181146129eb57600281146129f557612a24565b6001915050612a83565b60ff841115612a0757612a06612928565b5b8360020a915084821115612a1e57612a1d612928565b5b50612a83565b5060208310610133831016604e8410600b8410161715612a595782820a905083811115612a5457612a53612928565b5b612a83565b612a668484846001612964565b92509050818404811115612a7d57612a7c612928565b5b81810290505b9392505050565b6000612a9582612649565b9150612aa0836127c9565b9250612acd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129b7565b905092915050565b6000612ae082612649565b9150612aeb83612649565b9250828202612af981612649565b91508282048414831517612b1057612b0f612928565b5b5092915050565b7f496e76616c6964207065726d697373696f6e0000000000000000000000000000600082015250565b6000612b4d60128361253f565b9150612b5882612b17565b602082019050919050565b60006020820190508181036000830152612b7c81612b40565b9050919050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000612bb960178361253f565b9150612bc482612b83565b602082019050919050565b60006020820190508181036000830152612be881612bac565b9050919050565b7f746f6b656e20697320616c726561647920656e61626c656420666f722074726160008201527f64696e6700000000000000000000000000000000000000000000000000000000602082015250565b6000612c4b60248361253f565b9150612c5682612bef565b604082019050919050565b60006020820190508181036000830152612c7a81612c3e565b9050919050565b600081519050612c908161261d565b92915050565b600060208284031215612cac57612cab6125e6565b5b6000612cba84828501612c81565b91505092915050565b6000604082019050612cd8600083018561279f565b612ce5602083018461279f565b9392505050565b6000819050919050565b6000819050919050565b6000612d1b612d16612d1184612cec565b612cf6565b612649565b9050919050565b612d2b81612d00565b82525050565b600060c082019050612d46600083018961279f565b612d5360208301886126f5565b612d606040830187612d22565b612d6d6060830186612d22565b612d7a608083018561279f565b612d8760a08301846126f5565b979650505050505050565b600081519050612da181612653565b92915050565b600080600060608486031215612dc057612dbf6125e6565b5b6000612dce86828701612d92565b9350506020612ddf86828701612d92565b9250506040612df086828701612d92565b9150509250925092565b6000604082019050612e0f600083018561279f565b612e1c60208301846126f5565b9392505050565b612e2c816126bf565b8114612e3757600080fd5b50565b600081519050612e4981612e23565b92915050565b600060208284031215612e6557612e646125e6565b5b6000612e7384828501612e3a565b91505092915050565b7f6e6577206f776e6572206973207a65726f206164647265737300000000000000600082015250565b6000612eb260198361253f565b9150612ebd82612e7c565b602082019050919050565b60006020820190508181036000830152612ee181612ea5565b9050919050565b7f617070726f7665207a65726f2061646472657373000000000000000000000000600082015250565b6000612f1e60148361253f565b9150612f2982612ee8565b602082019050919050565b60006020820190508181036000830152612f4d81612f11565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fb060258361253f565b9150612fbb82612f54565b604082019050919050565b60006020820190508181036000830152612fdf81612fa3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061304260238361253f565b915061304d82612fe6565b604082019050919050565b6000602082019050818103600083015261307181613035565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130d460298361253f565b91506130df82613078565b604082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b600061311582612649565b915061312083612649565b925082820190508082111561313857613137612928565b5b92915050565b7f457863656564206d617820616d6f756e74207065722077616c6c657400000000600082015250565b6000613174601c8361253f565b915061317f8261313e565b602082019050919050565b600060208201905081810360008301526131a381613167565b9050919050565b7f457863656564206d617820616d6f756e74207065722074780000000000000000600082015250565b60006131e060188361253f565b91506131eb826131aa565b602082019050919050565b6000602082019050818103600083015261320f816131d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061325082612649565b915061325b83612649565b92508261326b5761326a613216565b5b828204905092915050565b600061328182612649565b915061328c83612649565b92508282039050818111156132a4576132a3612928565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061331382612649565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361334557613344612928565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133b48161260b565b82525050565b60006133c683836133ab565b60208301905092915050565b6000602082019050919050565b60006133ea8261337f565b6133f4818561338a565b93506133ff8361339b565b8060005b8381101561343057815161341788826133ba565b9750613422836133d2565b925050600181019050613403565b5085935050505092915050565b600060a08201905061345260008301886126f5565b61345f6020830187612d22565b818103604083015261347181866133df565b9050613480606083018561279f565b61348d60808301846126f5565b969550505050505056fea2646970667358221220d25a415400612ac9b063fb7a693d0ace9c8d3e3bd3c4ba83a1ac2fafa21f3fc964736f6c63430008130033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806364998def116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e14610529578063e21bbe6b14610566578063ea414b2814610582578063f2fde38b146105ab57610171565b806395d89b4114610498578063a9059cbb146104c3578063c4590d3f1461050057610171565b806364998def1461039a57806370a08231146103c3578063715018a61461040057806373889f4a1461041757806385b27c85146104425780638da5cb5b1461046d57610171565b8063313ce56711610123578063313ce567146102ae57806336db7129146102d9578063470624021461030457806349bd5a5e1461032f57806351bc3c851461035a57806352f7c9881461037157610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd146102095780632a11ced0146102465780632b14ca561461028357610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105d4565b60405161019891906125c4565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061267f565b610611565b6040516101d591906126da565b60405180910390f35b3480156101ea57600080fd5b506101f361062f565b6040516102009190612704565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b919061271f565b610653565b60405161023d91906126da565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190612772565b610749565b60405161027a91906127ae565b60405180910390f35b34801561028f57600080fd5b50610298610788565b6040516102a59190612704565b60405180910390f35b3480156102ba57600080fd5b506102c361078e565b6040516102d091906127e5565b60405180910390f35b3480156102e557600080fd5b506102ee610797565b6040516102fb9190612704565b60405180910390f35b34801561031057600080fd5b5061031961079d565b6040516103269190612704565b60405180910390f35b34801561033b57600080fd5b506103446107a3565b60405161035191906127ae565b60405180910390f35b34801561036657600080fd5b5061036f6107c9565b005b34801561037d57600080fd5b5061039860048036038101906103939190612800565b6108e0565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190612772565b610983565b005b3480156103cf57600080fd5b506103ea60048036038101906103e59190612840565b610a24565b6040516103f79190612704565b60405180910390f35b34801561040c57600080fd5b50610415610a6d565b005b34801561042357600080fd5b5061042c610bc0565b6040516104399190612704565b60405180910390f35b34801561044e57600080fd5b50610457610bcd565b6040516104649190612704565b60405180910390f35b34801561047957600080fd5b50610482610bd3565b60405161048f91906127ae565b60405180910390f35b3480156104a457600080fd5b506104ad610bfc565b6040516104ba91906125c4565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061267f565b610c39565b6040516104f791906126da565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190612800565b610c57565b005b34801561053557600080fd5b50610550600480360381019061054b919061286d565b610d02565b60405161055d9190612704565b60405180910390f35b610580600480360381019061057b91906128ad565b610d89565b005b34801561058e57600080fd5b506105a960048036038101906105a49190612840565b6111fa565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190612840565b6112d3565b005b60606040518060400160405280600a81526020017f546f726e61646f20414900000000000000000000000000000000000000000000815250905090565b600061062561061e611494565b848461149c565b6001905092915050565b60006012600a61063f9190612a8a565b633b9aca0061064e9190612ad5565b905090565b6000610660848484611630565b61073e8461066c611494565b610739856040518060400160405280600d81526020017f6c6f7720616c6c6f77616e636500000000000000000000000000000000000000815250600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106ef611494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fe9092919063ffffffff16565b61149c565b600190509392505050565b600a818154811061075957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60006012905090565b60075481565b60045481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107d1610bd3565b73ffffffffffffffffffffffffffffffffffffffff166107ef611494565b73ffffffffffffffffffffffffffffffffffffffff1614806108655750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084d611494565b73ffffffffffffffffffffffffffffffffffffffff16145b6108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90612b63565b60405180910390fd5b60006108af30610a24565b905060008111156108c4576108c381612262565b5b600047905060008111156108dc576108db81612492565b5b5050565b6108e8611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c90612bcf565b60405180910390fd5b61097f8282612504565b5050565b61098b611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90612bcf565b60405180910390fd5b610a2181612516565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a75611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af990612bcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a80549050905090565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f544f524e41490000000000000000000000000000000000000000000000000000815250905090565b6000610c4d610c46611494565b8484611630565b6001905092915050565b610c5f611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce390612bcf565b60405180910390fd5b610cf582612520565b610cfe8161252a565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d91611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590612bcf565b60405180910390fd5b600b60149054906101000a900460ff1615610e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6590612c61565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef19190612c96565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190612c96565b6040518363ffffffff1660e01b8152600401610fad929190612cc3565b6020604051808303816000875af1158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff09190612c96565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719343061106b30610a24565b600080611076610bd3565b426040518863ffffffff1660e01b815260040161109896959493929190612d31565b60606040518083038185885af11580156110b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110db9190612da7565b505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161116f929190612dfa565b6020604051808303816000875af115801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190612e4f565b506111bd8585612504565b6111c683612520565b6111cf8261252a565b6111d881612516565b6001600b60146101000a81548160ff0219169083151502179055505050505050565b611202611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690612bcf565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112db611494565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90612bcf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90612ec8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115065750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c90612f34565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116239190612704565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690612fc6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613058565b60405180910390fd5b60008111611751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611748906130ea565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117f75750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a1757600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118995750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561195f57600754826118ab85610a24565b6118b5919061310a565b1115806118c457506000600754145b611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061318a565b60405180910390fd5b6006548211158061191657506000600654145b611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906131f6565b60405180910390fd5b6004549050611a16565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a1057600654821115806119c757506000600654145b611a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fd906131f6565b60405180910390fd5b6005549050611a15565b600090505b5b5b600060648284611a279190612ad5565b611a319190613245565b905060008184611a419190613276565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8e9190613276565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b1c919061310a565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600b60159054906101000a900460ff16158015611c0e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015611c675750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611c7f5750600b60149054906101000a900460ff165b15611cb1576008548110611cb057611c9681612262565b60004790506000811115611cae57611cad81612492565b5b505b5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d595750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015611da457506000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15611e0d57600a869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e58919061310a565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000831115611f0a573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f019190612704565b60405180910390a35b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fb25750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015611ffd57506000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156121905760005b600a8054905081101561218e578773ffffffffffffffffffffffffffffffffffffffff16600a828154811061203d5761203c6132aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361217b57600a6001600a805490506120979190613276565b815481106120a8576120a76132aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106120e7576120e66132aa565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a805480612141576121406132d9565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561218e565b808061218690613308565b915050612005565b505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121ed9190612704565b60405180910390a350505050505050565b6000838311158290612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d91906125c4565b60405180910390fd5b50600083856122559190613276565b9050809150509392505050565b6001600b60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561229a57612299613350565b5b6040519080825280602002602001820160405280156122c85781602001602082028036833780820191505090505b50905030816000815181106122e0576122df6132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239d9190612c96565b816001815181106123b1576123b06132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161244195949392919061343d565b600060405180830381600087803b15801561245b57600080fd5b505af115801561246f573d6000803e3d6000fd5b50505050506000600b60156101000a81548160ff02191690831515021790555050565b6000819050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124ff573d6000803e3d6000fd5b505050565b81600481905550806005819055505050565b8060088190555050565b8060068190555050565b8060078190555050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561256e578082015181840152602081019050612553565b60008484015250505050565b6000601f19601f8301169050919050565b600061259682612534565b6125a0818561253f565b93506125b0818560208601612550565b6125b98161257a565b840191505092915050565b600060208201905081810360008301526125de818461258b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612616826125eb565b9050919050565b6126268161260b565b811461263157600080fd5b50565b6000813590506126438161261d565b92915050565b6000819050919050565b61265c81612649565b811461266757600080fd5b50565b60008135905061267981612653565b92915050565b60008060408385031215612696576126956125e6565b5b60006126a485828601612634565b92505060206126b58582860161266a565b9150509250929050565b60008115159050919050565b6126d4816126bf565b82525050565b60006020820190506126ef60008301846126cb565b92915050565b6126fe81612649565b82525050565b600060208201905061271960008301846126f5565b92915050565b600080600060608486031215612738576127376125e6565b5b600061274686828701612634565b935050602061275786828701612634565b92505060406127688682870161266a565b9150509250925092565b600060208284031215612788576127876125e6565b5b60006127968482850161266a565b91505092915050565b6127a88161260b565b82525050565b60006020820190506127c3600083018461279f565b92915050565b600060ff82169050919050565b6127df816127c9565b82525050565b60006020820190506127fa60008301846127d6565b92915050565b60008060408385031215612817576128166125e6565b5b60006128258582860161266a565b92505060206128368582860161266a565b9150509250929050565b600060208284031215612856576128556125e6565b5b600061286484828501612634565b91505092915050565b60008060408385031215612884576128836125e6565b5b600061289285828601612634565b92505060206128a385828601612634565b9150509250929050565b600080600080600060a086880312156128c9576128c86125e6565b5b60006128d78882890161266a565b95505060206128e88882890161266a565b94505060406128f98882890161266a565b935050606061290a8882890161266a565b925050608061291b8882890161266a565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129ae5780860481111561298a57612989612928565b5b60018516156129995780820291505b80810290506129a785612957565b945061296e565b94509492505050565b6000826129c75760019050612a83565b816129d55760009050612a83565b81600181146129eb57600281146129f557612a24565b6001915050612a83565b60ff841115612a0757612a06612928565b5b8360020a915084821115612a1e57612a1d612928565b5b50612a83565b5060208310610133831016604e8410600b8410161715612a595782820a905083811115612a5457612a53612928565b5b612a83565b612a668484846001612964565b92509050818404811115612a7d57612a7c612928565b5b81810290505b9392505050565b6000612a9582612649565b9150612aa0836127c9565b9250612acd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129b7565b905092915050565b6000612ae082612649565b9150612aeb83612649565b9250828202612af981612649565b91508282048414831517612b1057612b0f612928565b5b5092915050565b7f496e76616c6964207065726d697373696f6e0000000000000000000000000000600082015250565b6000612b4d60128361253f565b9150612b5882612b17565b602082019050919050565b60006020820190508181036000830152612b7c81612b40565b9050919050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000612bb960178361253f565b9150612bc482612b83565b602082019050919050565b60006020820190508181036000830152612be881612bac565b9050919050565b7f746f6b656e20697320616c726561647920656e61626c656420666f722074726160008201527f64696e6700000000000000000000000000000000000000000000000000000000602082015250565b6000612c4b60248361253f565b9150612c5682612bef565b604082019050919050565b60006020820190508181036000830152612c7a81612c3e565b9050919050565b600081519050612c908161261d565b92915050565b600060208284031215612cac57612cab6125e6565b5b6000612cba84828501612c81565b91505092915050565b6000604082019050612cd8600083018561279f565b612ce5602083018461279f565b9392505050565b6000819050919050565b6000819050919050565b6000612d1b612d16612d1184612cec565b612cf6565b612649565b9050919050565b612d2b81612d00565b82525050565b600060c082019050612d46600083018961279f565b612d5360208301886126f5565b612d606040830187612d22565b612d6d6060830186612d22565b612d7a608083018561279f565b612d8760a08301846126f5565b979650505050505050565b600081519050612da181612653565b92915050565b600080600060608486031215612dc057612dbf6125e6565b5b6000612dce86828701612d92565b9350506020612ddf86828701612d92565b9250506040612df086828701612d92565b9150509250925092565b6000604082019050612e0f600083018561279f565b612e1c60208301846126f5565b9392505050565b612e2c816126bf565b8114612e3757600080fd5b50565b600081519050612e4981612e23565b92915050565b600060208284031215612e6557612e646125e6565b5b6000612e7384828501612e3a565b91505092915050565b7f6e6577206f776e6572206973207a65726f206164647265737300000000000000600082015250565b6000612eb260198361253f565b9150612ebd82612e7c565b602082019050919050565b60006020820190508181036000830152612ee181612ea5565b9050919050565b7f617070726f7665207a65726f2061646472657373000000000000000000000000600082015250565b6000612f1e60148361253f565b9150612f2982612ee8565b602082019050919050565b60006020820190508181036000830152612f4d81612f11565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fb060258361253f565b9150612fbb82612f54565b604082019050919050565b60006020820190508181036000830152612fdf81612fa3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061304260238361253f565b915061304d82612fe6565b604082019050919050565b6000602082019050818103600083015261307181613035565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130d460298361253f565b91506130df82613078565b604082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b600061311582612649565b915061312083612649565b925082820190508082111561313857613137612928565b5b92915050565b7f457863656564206d617820616d6f756e74207065722077616c6c657400000000600082015250565b6000613174601c8361253f565b915061317f8261313e565b602082019050919050565b600060208201905081810360008301526131a381613167565b9050919050565b7f457863656564206d617820616d6f756e74207065722074780000000000000000600082015250565b60006131e060188361253f565b91506131eb826131aa565b602082019050919050565b6000602082019050818103600083015261320f816131d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061325082612649565b915061325b83612649565b92508261326b5761326a613216565b5b828204905092915050565b600061328182612649565b915061328c83612649565b92508282039050818111156132a4576132a3612928565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061331382612649565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361334557613344612928565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133b48161260b565b82525050565b60006133c683836133ab565b60208301905092915050565b6000602082019050919050565b60006133ea8261337f565b6133f4818561338a565b93506133ff8361339b565b8060005b8381101561343057815161341788826133ba565b9750613422836133d2565b925050600181019050613403565b5085935050505092915050565b600060a08201905061345260008301886126f5565b61345f6020830187612d22565b818103604083015261347181866133df565b9050613480606083018561279f565b61348d60808301846126f5565b969550505050505056fea2646970667358221220d25a415400612ac9b063fb7a693d0ace9c8d3e3bd3c4ba83a1ac2fafa21f3fc964736f6c63430008130033

Deployed Bytecode Sourcemap

3802:9034:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5671:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6506:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5948:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6674:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4725:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4399:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5857:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4472:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4367:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4688:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10196:418;;;;;;;;;;;;;:::i;:::-;;12101:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12432:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6056:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2180:148;;;;;;;;;;;;;:::i;:::-;;12700:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4432:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1744:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5762:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6182:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12224:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6356:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11146:947;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12581:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1949:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5671:83;5708:13;5741:5;;;;;;;;;;;;;;;;;5734:12;;5671:83;:::o;6506:160::-;6581:4;6597:39;6606:12;:10;:12::i;:::-;6620:7;6629:6;6597:8;:39::i;:::-;6654:4;6647:11;;6506:160;;;;:::o;5948:100::-;6001:7;4108:2;4173;:15;;;;:::i;:::-;4157:13;:31;;;;:::i;:::-;6021:19;;5948:100;:::o;6674:286::-;6772:4;6789:36;6799:6;6807:9;6818:6;6789:9;:36::i;:::-;6836:94;6845:6;6853:12;:10;:12::i;:::-;6867:62;6905:6;6867:62;;;;;;;;;;;;;;;;;:11;:19;6879:6;6867:19;;;;;;;;;;;;;;;:33;6887:12;:10;:12::i;:::-;6867:33;;;;;;;;;;;;;;;;:37;;:62;;;;;:::i;:::-;6836:8;:94::i;:::-;6948:4;6941:11;;6674:286;;;;;:::o;4725:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4399:26::-;;;;:::o;5857:83::-;5898:5;4108:2;5916:16;;5857:83;:::o;4472:37::-;;;;:::o;4367:25::-;;;;:::o;4688:28::-;;;;;;;;;;;;;:::o;10196:418::-;10262:7;:5;:7::i;:::-;10246:23;;:12;:10;:12::i;:::-;:23;;;:52;;;;10289:9;;;;;;;;;;;10273:25;;:12;:10;:12::i;:::-;:25;;;10246:52;10238:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;10334:20;10357:24;10375:4;10357:9;:24::i;:::-;10334:47;;10411:1;10396:12;:16;10392:79;;;10429:30;10446:12;10429:16;:30::i;:::-;10392:79;10483:18;10504:21;10483:42;;10553:1;10540:10;:14;10536:71;;;10571:24;10584:10;10571:12;:24::i;:::-;10536:71;10227:387;;10196:418::o;12101:115::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12182:26:::1;12190:7;12199:8;12182:7;:26::i;:::-;12101:115:::0;;:::o;12432:141::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12522:43:::1;12545:19;12522:22;:43::i;:::-;12432:141:::0;:::o;6056:118::-;6122:7;6149:8;:17;6158:7;6149:17;;;;;;;;;;;;;;;;6142:24;;6056:118;;;:::o;2180:148::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;2287:1:::1;2250:40;;2271:6;::::0;::::1;;;;;;;;2250:40;;;;;;;;;;;;2318:1;2301:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2180:148::o:0;12700:96::-;12747:7;12774;:14;;;;12767:21;;12700:96;:::o;4432:33::-;;;;:::o;1744:79::-;1782:7;1809:6;;;;;;;;;;;1802:13;;1744:79;:::o;5762:87::-;5801:13;5834:7;;;;;;;;;;;;;;;;;5827:14;;5762:87;:::o;6182:166::-;6260:4;6276:42;6286:12;:10;:12::i;:::-;6300:9;6311:6;6276:9;:42::i;:::-;6336:4;6329:11;;6182:166;;;;:::o;12224:200::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12327:35:::1;12346:15;12327:18;:35::i;:::-;12373:43;12396:19;12373:22;:43::i;:::-;12224:200:::0;;:::o;6356:142::-;6437:7;6463:11;:18;6475:5;6463:18;;;;;;;;;;;;;;;:27;6482:7;6463:27;;;;;;;;;;;;;;;;6456:34;;6356:142;;;;:::o;11146:947::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;11382:11:::1;;;;;;;;;;;11381:12;11373:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4638:42;11481:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11463:55;;;11527:4;4638:42;11534:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11463:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11447:13;;:110;;;;;;;;;;;;;;;;;;4638:42;11568:31;;;11607:9;11640:4;11660:24;11678:4;11660:9;:24::i;:::-;11699:1;11715::::0;11731:7:::1;:5;:7::i;:::-;11753:15;11568:211;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11797:13;;;;;;;;;;;11790:29;;;4638:42;11846:14;11790:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11874:26;11882:7;11891:8;11874:7;:26::i;:::-;11911:35;11930:15;11911:18;:35::i;:::-;11957:43;11980:19;11957:22;:43::i;:::-;12011;12034:19;12011:22;:43::i;:::-;12081:4;12067:11;;:18;;;;;;;;;;;;;;;;;;11146:947:::0;;;;;:::o;12581:111::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12673:10:::1;12653:9;;:31;;;;;;;;;;;;;;;;;;12581:111:::0;:::o;1949:223::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;2050:1:::1;2030:22;;:8;:22;;::::0;2022:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2102:8;2093:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2155:8;2126:38;;2147:6;::::0;::::1;;;;;;;;2126:38;;;;;;;;;;;;1949:223:::0;:::o;191:98::-;244:7;271:10;264:17;;191:98;:::o;6968:265::-;7078:1;7061:19;;:5;:19;;;;:44;;;;;7103:1;7084:21;;:7;:21;;;;7061:44;7053:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;7171:6;7141:11;:18;7153:5;7141:18;;;;;;;;;;;;;;;:27;7160:7;7141:27;;;;;;;;;;;;;;;:36;;;;7209:7;7193:32;;7202:5;7193:32;;;7218:6;7193:32;;;;;;:::i;:::-;;;;;;;;6968:265;;;:::o;7241:2378::-;7345:1;7329:18;;:4;:18;;;7321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7422:1;7408:16;;:2;:16;;;7400:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7492:1;7483:6;:10;7475:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7552:12;7584:17;:23;7602:4;7584:23;;;;;;;;;;;;;;;;;;;;;;;;;7583:24;:50;;;;;7612:17;:21;7630:2;7612:21;;;;;;;;;;;;;;;;;;;;;;;;;7611:22;7583:50;7579:657;;;7662:13;;;;;;;;;;;7654:21;;:4;:21;;;:55;;;;;4638:42;7679:30;;:2;:30;;;;7654:55;7650:575;;;7764:18;;7754:6;7738:13;7748:2;7738:9;:13::i;:::-;:22;;;;:::i;:::-;:44;;:71;;;;7808:1;7786:18;;:23;7738:71;7730:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;7879:14;;7869:6;:24;;:47;;;;7915:1;7897:14;;:19;7869:47;7861:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7971:6;;7964:13;;7650:575;;;8009:13;;;;;;;;;;;8003:19;;:2;:19;;;7999:226;;8061:14;;8051:6;:24;;:47;;;;8097:1;8079:14;;:19;8051:47;8043:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;8153:7;;8146:14;;7999:226;;;8208:1;8201:8;;7999:226;7650:575;7579:657;8248:17;8286:3;8278:4;8269:6;:13;;;;:::i;:::-;8268:21;;;;:::i;:::-;8248:41;;8300:22;8334:9;8325:6;:18;;;;:::i;:::-;8300:43;;8390:6;8373:8;:14;8382:4;8373:14;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;8356:8;:14;8365:4;8356:14;;;;;;;;;;;;;;;:40;;;;8459:9;8433:8;:23;8450:4;8433:23;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;8407:8;:23;8424:4;8407:23;;;;;;;;;;;;;;;:61;;;;8481:15;8499:8;:23;8516:4;8499:23;;;;;;;;;;;;;;;;8481:41;;8538:16;;;;;;;;;;;8537:17;:42;;;;;8566:13;;;;;;;;;;;8558:21;;:4;:21;;;;8537:42;:65;;;;;8589:13;;;;;;;;;;;8583:19;;:2;:19;;;8537:65;:80;;;;;8606:11;;;;;;;;;;;8537:80;8533:373;;;8649:18;;8638:7;:29;8634:261;;8688:25;8705:7;8688:16;:25::i;:::-;8732:18;8753:21;8732:42;;8810:1;8797:10;:14;8793:87;;;8836:24;8849:10;8836:12;:24::i;:::-;8793:87;8669:226;8634:261;8533:373;8923:17;:21;8941:2;8923:21;;;;;;;;;;;;;;;;;;;;;;;;;8922:22;:45;;;;;8954:13;;;;;;;;;;;8948:19;;:2;:19;;;;8922:45;:66;;;;;8987:1;8971:8;:12;8980:2;8971:12;;;;;;;;;;;;;;;;:17;8922:66;8918:115;;;9005:7;9018:2;9005:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8918:115;9075:14;9060:8;:12;9069:2;9060:12;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;9045:8;:12;9054:2;9045:12;;;;;;;;;;;;;;;:44;;;;9118:1;9106:9;:13;9102:91;;;9164:4;9141:40;;9150:4;9141:40;;;9171:9;9141:40;;;;;;:::i;:::-;;;;;;;;9102:91;9210:17;:23;9228:4;9210:23;;;;;;;;;;;;;;;;;;;;;;;;;9209:24;:49;;;;;9245:13;;;;;;;;;;;9237:21;;:4;:21;;;;9209:49;:72;;;;;9280:1;9262:8;:14;9271:4;9262:14;;;;;;;;;;;;;;;;:19;9209:72;9205:355;;;9303:9;9298:251;9322:7;:14;;;;9318:1;:18;9298:251;;;9381:4;9367:18;;:7;9375:1;9367:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:18;;;9363:171;;9423:7;9448:1;9431:7;:14;;;;:18;;;;:::i;:::-;9423:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9410:7;9418:1;9410:10;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;9473:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;9509:5;;9363:171;9338:4;;;;;:::i;:::-;;;;9298:251;;;;9205:355;9592:2;9577:34;;9586:4;9577:34;;;9596:14;9577:34;;;;;;:::i;:::-;;;;;;;;7310:2309;;;;7241:2378;;;:::o;631:190::-;717:7;750:1;745;:6;;753:12;737:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;777:9;793:1;789;:5;;;;:::i;:::-;777:17;;812:1;805:8;;;631:190;;;;;:::o;9627:412::-;4936:4;4917:16;;:23;;;;;;;;;;;;;;;;;;9706:21:::1;9744:1;9730:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9706:40;;9775:4;9757;9762:1;9757:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;4638:42;9801:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9791:4;9796:1;9791:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;4638:42;9834:66;;;9915:12;9942:1;9958:4;9985;10005:15;9834:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9695:344;4982:5:::0;4963:16;;:24;;;;;;;;;;;;;;;;;;9627:412;:::o;10055:133::-;10113:17;10133:7;10113:27;;10151:9;;;;;;;;;;;:18;;:29;10170:9;10151:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10102:86;10055:133;:::o;10622:124::-;10702:7;10693:6;:16;;;;10730:8;10720:7;:18;;;;10622:124;;:::o;11010:128::-;11111:19;11090:18;:40;;;;11010:128;:::o;10754:112::-;10843:15;10826:14;:32;;;;10754:112;:::o;10874:128::-;10975:19;10954:18;:40;;;;10874:128;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:118::-;4845:24;4863:5;4845:24;:::i;:::-;4840:3;4833:37;4758:118;;:::o;4882:222::-;4975:4;5013:2;5002:9;4998:18;4990:26;;5026:71;5094:1;5083:9;5079:17;5070:6;5026:71;:::i;:::-;4882:222;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:329::-;6079:6;6128:2;6116:9;6107:7;6103:23;6099:32;6096:119;;;6134:79;;:::i;:::-;6096:119;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6020:329;;;;:::o;6355:474::-;6423:6;6431;6480:2;6468:9;6459:7;6455:23;6451:32;6448:119;;;6486:79;;:::i;:::-;6448:119;6606:1;6631:53;6676:7;6667:6;6656:9;6652:22;6631:53;:::i;:::-;6621:63;;6577:117;6733:2;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6704:118;6355:474;;;;;:::o;6835:911::-;6930:6;6938;6946;6954;6962;7011:3;6999:9;6990:7;6986:23;6982:33;6979:120;;;7018:79;;:::i;:::-;6979:120;7138:1;7163:53;7208:7;7199:6;7188:9;7184:22;7163:53;:::i;:::-;7153:63;;7109:117;7265:2;7291:53;7336:7;7327:6;7316:9;7312:22;7291:53;:::i;:::-;7281:63;;7236:118;7393:2;7419:53;7464:7;7455:6;7444:9;7440:22;7419:53;:::i;:::-;7409:63;;7364:118;7521:2;7547:53;7592:7;7583:6;7572:9;7568:22;7547:53;:::i;:::-;7537:63;;7492:118;7649:3;7676:53;7721:7;7712:6;7701:9;7697:22;7676:53;:::i;:::-;7666:63;;7620:119;6835:911;;;;;;;;:::o;7752:180::-;7800:77;7797:1;7790:88;7897:4;7894:1;7887:15;7921:4;7918:1;7911:15;7938:102;7980:8;8027:5;8024:1;8020:13;7999:34;;7938:102;;;:::o;8046:848::-;8107:5;8114:4;8138:6;8129:15;;8162:5;8153:14;;8176:712;8197:1;8187:8;8184:15;8176:712;;;8292:4;8287:3;8283:14;8277:4;8274:24;8271:50;;;8301:18;;:::i;:::-;8271:50;8351:1;8341:8;8337:16;8334:451;;;8766:4;8759:5;8755:16;8746:25;;8334:451;8816:4;8810;8806:15;8798:23;;8846:32;8869:8;8846:32;:::i;:::-;8834:44;;8176:712;;;8046:848;;;;;;;:::o;8900:1073::-;8954:5;9145:8;9135:40;;9166:1;9157:10;;9168:5;;9135:40;9194:4;9184:36;;9211:1;9202:10;;9213:5;;9184:36;9280:4;9328:1;9323:27;;;;9364:1;9359:191;;;;9273:277;;9323:27;9341:1;9332:10;;9343:5;;;9359:191;9404:3;9394:8;9391:17;9388:43;;;9411:18;;:::i;:::-;9388:43;9460:8;9457:1;9453:16;9444:25;;9495:3;9488:5;9485:14;9482:40;;;9502:18;;:::i;:::-;9482:40;9535:5;;;9273:277;;9659:2;9649:8;9646:16;9640:3;9634:4;9631:13;9627:36;9609:2;9599:8;9596:16;9591:2;9585:4;9582:12;9578:35;9562:111;9559:246;;;9715:8;9709:4;9705:19;9696:28;;9750:3;9743:5;9740:14;9737:40;;;9757:18;;:::i;:::-;9737:40;9790:5;;9559:246;9830:42;9868:3;9858:8;9852:4;9849:1;9830:42;:::i;:::-;9815:57;;;;9904:4;9899:3;9895:14;9888:5;9885:25;9882:51;;;9913:18;;:::i;:::-;9882:51;9962:4;9955:5;9951:16;9942:25;;8900:1073;;;;;;:::o;9979:281::-;10037:5;10061:23;10079:4;10061:23;:::i;:::-;10053:31;;10105:25;10121:8;10105:25;:::i;:::-;10093:37;;10149:104;10186:66;10176:8;10170:4;10149:104;:::i;:::-;10140:113;;9979:281;;;;:::o;10266:410::-;10306:7;10329:20;10347:1;10329:20;:::i;:::-;10324:25;;10363:20;10381:1;10363:20;:::i;:::-;10358:25;;10418:1;10415;10411:9;10440:30;10458:11;10440:30;:::i;:::-;10429:41;;10619:1;10610:7;10606:15;10603:1;10600:22;10580:1;10573:9;10553:83;10530:139;;10649:18;;:::i;:::-;10530:139;10314:362;10266:410;;;;:::o;10682:168::-;10822:20;10818:1;10810:6;10806:14;10799:44;10682:168;:::o;10856:366::-;10998:3;11019:67;11083:2;11078:3;11019:67;:::i;:::-;11012:74;;11095:93;11184:3;11095:93;:::i;:::-;11213:2;11208:3;11204:12;11197:19;;10856:366;;;:::o;11228:419::-;11394:4;11432:2;11421:9;11417:18;11409:26;;11481:9;11475:4;11471:20;11467:1;11456:9;11452:17;11445:47;11509:131;11635:4;11509:131;:::i;:::-;11501:139;;11228:419;;;:::o;11653:173::-;11793:25;11789:1;11781:6;11777:14;11770:49;11653:173;:::o;11832:366::-;11974:3;11995:67;12059:2;12054:3;11995:67;:::i;:::-;11988:74;;12071:93;12160:3;12071:93;:::i;:::-;12189:2;12184:3;12180:12;12173:19;;11832:366;;;:::o;12204:419::-;12370:4;12408:2;12397:9;12393:18;12385:26;;12457:9;12451:4;12447:20;12443:1;12432:9;12428:17;12421:47;12485:131;12611:4;12485:131;:::i;:::-;12477:139;;12204:419;;;:::o;12629:223::-;12769:34;12765:1;12757:6;12753:14;12746:58;12838:6;12833:2;12825:6;12821:15;12814:31;12629:223;:::o;12858:366::-;13000:3;13021:67;13085:2;13080:3;13021:67;:::i;:::-;13014:74;;13097:93;13186:3;13097:93;:::i;:::-;13215:2;13210:3;13206:12;13199:19;;12858:366;;;:::o;13230:419::-;13396:4;13434:2;13423:9;13419:18;13411:26;;13483:9;13477:4;13473:20;13469:1;13458:9;13454:17;13447:47;13511:131;13637:4;13511:131;:::i;:::-;13503:139;;13230:419;;;:::o;13655:143::-;13712:5;13743:6;13737:13;13728:22;;13759:33;13786:5;13759:33;:::i;:::-;13655:143;;;;:::o;13804:351::-;13874:6;13923:2;13911:9;13902:7;13898:23;13894:32;13891:119;;;13929:79;;:::i;:::-;13891:119;14049:1;14074:64;14130:7;14121:6;14110:9;14106:22;14074:64;:::i;:::-;14064:74;;14020:128;13804:351;;;;:::o;14161:332::-;14282:4;14320:2;14309:9;14305:18;14297:26;;14333:71;14401:1;14390:9;14386:17;14377:6;14333:71;:::i;:::-;14414:72;14482:2;14471:9;14467:18;14458:6;14414:72;:::i;:::-;14161:332;;;;;:::o;14499:85::-;14544:7;14573:5;14562:16;;14499:85;;;:::o;14590:60::-;14618:3;14639:5;14632:12;;14590:60;;;:::o;14656:158::-;14714:9;14747:61;14765:42;14774:32;14800:5;14774:32;:::i;:::-;14765:42;:::i;:::-;14747:61;:::i;:::-;14734:74;;14656:158;;;:::o;14820:147::-;14915:45;14954:5;14915:45;:::i;:::-;14910:3;14903:58;14820:147;;:::o;14973:807::-;15222:4;15260:3;15249:9;15245:19;15237:27;;15274:71;15342:1;15331:9;15327:17;15318:6;15274:71;:::i;:::-;15355:72;15423:2;15412:9;15408:18;15399:6;15355:72;:::i;:::-;15437:80;15513:2;15502:9;15498:18;15489:6;15437:80;:::i;:::-;15527;15603:2;15592:9;15588:18;15579:6;15527:80;:::i;:::-;15617:73;15685:3;15674:9;15670:19;15661:6;15617:73;:::i;:::-;15700;15768:3;15757:9;15753:19;15744:6;15700:73;:::i;:::-;14973:807;;;;;;;;;:::o;15786:143::-;15843:5;15874:6;15868:13;15859:22;;15890:33;15917:5;15890:33;:::i;:::-;15786:143;;;;:::o;15935:663::-;16023:6;16031;16039;16088:2;16076:9;16067:7;16063:23;16059:32;16056:119;;;16094:79;;:::i;:::-;16056:119;16214:1;16239:64;16295:7;16286:6;16275:9;16271:22;16239:64;:::i;:::-;16229:74;;16185:128;16352:2;16378:64;16434:7;16425:6;16414:9;16410:22;16378:64;:::i;:::-;16368:74;;16323:129;16491:2;16517:64;16573:7;16564:6;16553:9;16549:22;16517:64;:::i;:::-;16507:74;;16462:129;15935:663;;;;;:::o;16604:332::-;16725:4;16763:2;16752:9;16748:18;16740:26;;16776:71;16844:1;16833:9;16829:17;16820:6;16776:71;:::i;:::-;16857:72;16925:2;16914:9;16910:18;16901:6;16857:72;:::i;:::-;16604:332;;;;;:::o;16942:116::-;17012:21;17027:5;17012:21;:::i;:::-;17005:5;17002:32;16992:60;;17048:1;17045;17038:12;16992:60;16942:116;:::o;17064:137::-;17118:5;17149:6;17143:13;17134:22;;17165:30;17189:5;17165:30;:::i;:::-;17064:137;;;;:::o;17207:345::-;17274:6;17323:2;17311:9;17302:7;17298:23;17294:32;17291:119;;;17329:79;;:::i;:::-;17291:119;17449:1;17474:61;17527:7;17518:6;17507:9;17503:22;17474:61;:::i;:::-;17464:71;;17420:125;17207:345;;;;:::o;17558:175::-;17698:27;17694:1;17686:6;17682:14;17675:51;17558:175;:::o;17739:366::-;17881:3;17902:67;17966:2;17961:3;17902:67;:::i;:::-;17895:74;;17978:93;18067:3;17978:93;:::i;:::-;18096:2;18091:3;18087:12;18080:19;;17739:366;;;:::o;18111:419::-;18277:4;18315:2;18304:9;18300:18;18292:26;;18364:9;18358:4;18354:20;18350:1;18339:9;18335:17;18328:47;18392:131;18518:4;18392:131;:::i;:::-;18384:139;;18111:419;;;:::o;18536:170::-;18676:22;18672:1;18664:6;18660:14;18653:46;18536:170;:::o;18712:366::-;18854:3;18875:67;18939:2;18934:3;18875:67;:::i;:::-;18868:74;;18951:93;19040:3;18951:93;:::i;:::-;19069:2;19064:3;19060:12;19053:19;;18712:366;;;:::o;19084:419::-;19250:4;19288:2;19277:9;19273:18;19265:26;;19337:9;19331:4;19327:20;19323:1;19312:9;19308:17;19301:47;19365:131;19491:4;19365:131;:::i;:::-;19357:139;;19084:419;;;:::o;19509:224::-;19649:34;19645:1;19637:6;19633:14;19626:58;19718:7;19713:2;19705:6;19701:15;19694:32;19509:224;:::o;19739:366::-;19881:3;19902:67;19966:2;19961:3;19902:67;:::i;:::-;19895:74;;19978:93;20067:3;19978:93;:::i;:::-;20096:2;20091:3;20087:12;20080:19;;19739:366;;;:::o;20111:419::-;20277:4;20315:2;20304:9;20300:18;20292:26;;20364:9;20358:4;20354:20;20350:1;20339:9;20335:17;20328:47;20392:131;20518:4;20392:131;:::i;:::-;20384:139;;20111:419;;;:::o;20536:222::-;20676:34;20672:1;20664:6;20660:14;20653:58;20745:5;20740:2;20732:6;20728:15;20721:30;20536:222;:::o;20764:366::-;20906:3;20927:67;20991:2;20986:3;20927:67;:::i;:::-;20920:74;;21003:93;21092:3;21003:93;:::i;:::-;21121:2;21116:3;21112:12;21105:19;;20764:366;;;:::o;21136:419::-;21302:4;21340:2;21329:9;21325:18;21317:26;;21389:9;21383:4;21379:20;21375:1;21364:9;21360:17;21353:47;21417:131;21543:4;21417:131;:::i;:::-;21409:139;;21136:419;;;:::o;21561:228::-;21701:34;21697:1;21689:6;21685:14;21678:58;21770:11;21765:2;21757:6;21753:15;21746:36;21561:228;:::o;21795:366::-;21937:3;21958:67;22022:2;22017:3;21958:67;:::i;:::-;21951:74;;22034:93;22123:3;22034:93;:::i;:::-;22152:2;22147:3;22143:12;22136:19;;21795:366;;;:::o;22167:419::-;22333:4;22371:2;22360:9;22356:18;22348:26;;22420:9;22414:4;22410:20;22406:1;22395:9;22391:17;22384:47;22448:131;22574:4;22448:131;:::i;:::-;22440:139;;22167:419;;;:::o;22592:191::-;22632:3;22651:20;22669:1;22651:20;:::i;:::-;22646:25;;22685:20;22703:1;22685:20;:::i;:::-;22680:25;;22728:1;22725;22721:9;22714:16;;22749:3;22746:1;22743:10;22740:36;;;22756:18;;:::i;:::-;22740:36;22592:191;;;;:::o;22789:178::-;22929:30;22925:1;22917:6;22913:14;22906:54;22789:178;:::o;22973:366::-;23115:3;23136:67;23200:2;23195:3;23136:67;:::i;:::-;23129:74;;23212:93;23301:3;23212:93;:::i;:::-;23330:2;23325:3;23321:12;23314:19;;22973:366;;;:::o;23345:419::-;23511:4;23549:2;23538:9;23534:18;23526:26;;23598:9;23592:4;23588:20;23584:1;23573:9;23569:17;23562:47;23626:131;23752:4;23626:131;:::i;:::-;23618:139;;23345:419;;;:::o;23770:174::-;23910:26;23906:1;23898:6;23894:14;23887:50;23770:174;:::o;23950:366::-;24092:3;24113:67;24177:2;24172:3;24113:67;:::i;:::-;24106:74;;24189:93;24278:3;24189:93;:::i;:::-;24307:2;24302:3;24298:12;24291:19;;23950:366;;;:::o;24322:419::-;24488:4;24526:2;24515:9;24511:18;24503:26;;24575:9;24569:4;24565:20;24561:1;24550:9;24546:17;24539:47;24603:131;24729:4;24603:131;:::i;:::-;24595:139;;24322:419;;;:::o;24747:180::-;24795:77;24792:1;24785:88;24892:4;24889:1;24882:15;24916:4;24913:1;24906:15;24933:185;24973:1;24990:20;25008:1;24990:20;:::i;:::-;24985:25;;25024:20;25042:1;25024:20;:::i;:::-;25019:25;;25063:1;25053:35;;25068:18;;:::i;:::-;25053:35;25110:1;25107;25103:9;25098:14;;24933:185;;;;:::o;25124:194::-;25164:4;25184:20;25202:1;25184:20;:::i;:::-;25179:25;;25218:20;25236:1;25218:20;:::i;:::-;25213:25;;25262:1;25259;25255:9;25247:17;;25286:1;25280:4;25277:11;25274:37;;;25291:18;;:::i;:::-;25274:37;25124:194;;;;:::o;25324:180::-;25372:77;25369:1;25362:88;25469:4;25466:1;25459:15;25493:4;25490:1;25483:15;25510:180;25558:77;25555:1;25548:88;25655:4;25652:1;25645:15;25679:4;25676:1;25669:15;25696:233;25735:3;25758:24;25776:5;25758:24;:::i;:::-;25749:33;;25804:66;25797:5;25794:77;25791:103;;25874:18;;:::i;:::-;25791:103;25921:1;25914:5;25910:13;25903:20;;25696:233;;;:::o;25935:180::-;25983:77;25980:1;25973:88;26080:4;26077:1;26070:15;26104:4;26101:1;26094:15;26121:114;26188:6;26222:5;26216:12;26206:22;;26121:114;;;:::o;26241:184::-;26340:11;26374:6;26369:3;26362:19;26414:4;26409:3;26405:14;26390:29;;26241:184;;;;:::o;26431:132::-;26498:4;26521:3;26513:11;;26551:4;26546:3;26542:14;26534:22;;26431:132;;;:::o;26569:108::-;26646:24;26664:5;26646:24;:::i;:::-;26641:3;26634:37;26569:108;;:::o;26683:179::-;26752:10;26773:46;26815:3;26807:6;26773:46;:::i;:::-;26851:4;26846:3;26842:14;26828:28;;26683:179;;;;:::o;26868:113::-;26938:4;26970;26965:3;26961:14;26953:22;;26868:113;;;:::o;27017:732::-;27136:3;27165:54;27213:5;27165:54;:::i;:::-;27235:86;27314:6;27309:3;27235:86;:::i;:::-;27228:93;;27345:56;27395:5;27345:56;:::i;:::-;27424:7;27455:1;27440:284;27465:6;27462:1;27459:13;27440:284;;;27541:6;27535:13;27568:63;27627:3;27612:13;27568:63;:::i;:::-;27561:70;;27654:60;27707:6;27654:60;:::i;:::-;27644:70;;27500:224;27487:1;27484;27480:9;27475:14;;27440:284;;;27444:14;27740:3;27733:10;;27141:608;;;27017:732;;;;:::o;27755:831::-;28018:4;28056:3;28045:9;28041:19;28033:27;;28070:71;28138:1;28127:9;28123:17;28114:6;28070:71;:::i;:::-;28151:80;28227:2;28216:9;28212:18;28203:6;28151:80;:::i;:::-;28278:9;28272:4;28268:20;28263:2;28252:9;28248:18;28241:48;28306:108;28409:4;28400:6;28306:108;:::i;:::-;28298:116;;28424:72;28492:2;28481:9;28477:18;28468:6;28424:72;:::i;:::-;28506:73;28574:3;28563:9;28559:19;28550:6;28506:73;:::i;:::-;27755:831;;;;;;;;:::o

Swarm Source

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