ETH Price: $2,363.04 (+5.86%)
Gas: 0.71 Gwei

Token

Komugi-chan (KOMUGI)
 

Overview

Max Total Supply

420,690,000,000 KOMUGI

Holders

77

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,509,360,532.366517907 KOMUGI

Value
$0.00
0x6815C65315D51DD98745ED1965A66b95DB24b61e
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:
KOMUGI

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
https://t.me/komugichanerc20
https://x.com/komugierc20
https://komugi-chan.com
*/

pragma solidity 0.8.25;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        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(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

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

contract KOMUGI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isFree;
    mapping (address => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint256 private _reduceBuyTaxAt=35;

    uint256 private _reduceSellTaxAt=35;
    uint256 private _preventSwapBefore=35;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Komugi-chan";
    string private constant _symbol = unicode"KOMUGI";
    uint256 public _maxTxAmount =   4206900000 * 10**_decimals;
    uint256 public _maxWalletSize = 4206900000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 4206900000 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public caCount = 2;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caLimiter = true;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        isFree[owner()] = true;
        isFree[address(this)] = true;
        isFree[address(uniswapV2Pair)] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;
        isFree[address(uniswapV2Pair)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

    mapping (address => bool) public _isBlacklisted;

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function removeFromBlackList(address account) external onlyOwner {
    _isBlacklisted[account] = false;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require (!_isBlacklisted[from] && !_isBlacklisted[to], "To/from address is blacklisted");
        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 taxAmount=0;

        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(100);

            if (marketPair[from] && to != address(uniswapV2Router) && ! isFree[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (!marketPair[to] && ! isFree[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(marketPair[to] && from!= address(this) ){
                taxAmount = amount.mul((_buyCount> _reduceSellTaxAt)? _finalSellTax: _initialSellTax).div(100);
            }

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caLimiter && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < caCount, "CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function removeFromBlackListwallets(address[] calldata addresses) public onlyOwner(){
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = false;
        }
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }


    function addToBlackList(address[] calldata addresses) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
        _isBlacklisted[addresses[i]] = true;
        }
    }

    function isFree_AnyStuckETH() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function isFree_AnyERC20Tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

    function isFree_WalletRestrictions() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caLimiter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"isFree_AnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFree_AnyStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFree_WalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromBlackListwallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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"}]

6080604052601460075560146008555f6009555f600a556023600b556023600c556023600d555f600e555f600f555f6010556009600a61003f9190610afa565b63fac0332061004e9190610b44565b6011556009600a61005f9190610afa565b63fac0332061006e9190610b44565b6012556009600a61007f9190610afa565b63fac0332061008e9190610b44565b6013556009600a61009f9190610afa565b63fac033206100ae9190610b44565b60145560026017555f60185f6101000a81548160ff0219169083151502179055505f601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff02191690831515021790555034801561010f575f80fd5b505f61011f61079860201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101c961079860201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6102169190610afa565b6461f313f8806102269190610b44565b60015f61023761079860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61028761079f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104443060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6104299190610afa565b6461f313f8806104399190610b44565b6107c660201b60201c565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d29190610be3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610558573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057c9190610be3565b6040518363ffffffff1660e01b8152600401610599929190610c1d565b6020604051808303815f875af11580156105b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d99190610be3565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061071261079860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61076e9190610afa565b6461f313f88061077e9190610b44565b60405161078b9190610c53565b60405180910390a3610d98565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082b90610cec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990610d7a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161097c9190610c53565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610a0b578086048111156109e7576109e6610989565b5b60018516156109f65780820291505b8081029050610a04856109b6565b94506109cb565b94509492505050565b5f82610a235760019050610ade565b81610a30575f9050610ade565b8160018114610a465760028114610a5057610a7f565b6001915050610ade565b60ff841115610a6257610a61610989565b5b8360020a915084821115610a7957610a78610989565b5b50610ade565b5060208310610133831016604e8410600b8410161715610ab45782820a905083811115610aaf57610aae610989565b5b610ade565b610ac184848460016109c2565b92509050818404811115610ad857610ad7610989565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610b0482610ae5565b9150610b0f83610aee565b9250610b3c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610a14565b905092915050565b5f610b4e82610ae5565b9150610b5983610ae5565b9250828202610b6781610ae5565b91508282048414831517610b7e57610b7d610989565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bb282610b89565b9050919050565b610bc281610ba8565b8114610bcc575f80fd5b50565b5f81519050610bdd81610bb9565b92915050565b5f60208284031215610bf857610bf7610b85565b5b5f610c0584828501610bcf565b91505092915050565b610c1781610ba8565b82525050565b5f604082019050610c305f830185610c0e565b610c3d6020830184610c0e565b9392505050565b610c4d81610ae5565b82525050565b5f602082019050610c665f830184610c44565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610cd6602483610c6c565b9150610ce182610c7c565b604082019050919050565b5f6020820190508181035f830152610d0381610cca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610d64602283610c6c565b9150610d6f82610d0a565b604082019050919050565b5f6020820190508181035f830152610d9181610d58565b9050919050565b613a5580610da55f395ff3fe6080604052600436106101ba575f3560e01c8063715018a6116100eb578063b5ef226a11610089578063f2fde38b11610063578063f2fde38b146105cb578063f4ef1f42146105f3578063f5b3c3bf1461061d578063ff89757014610659576101c1565b8063b5ef226a1461053d578063bf474bed14610565578063dd62ed3e1461058f576101c1565b80638da5cb5b116100c55780638da5cb5b146104835780638f9a55c0146104ad57806395d89b41146104d7578063a9059cbb14610501576101c1565b8063715018a61461042d5780637d1db4a5146104435780638a8c523c1461046d576101c1565b806323b872dd11610158578063313ce56711610132578063313ce5671461037557806349bd5a5e1461039f5780634a49ac4c146103c957806370a08231146103f1576101c1565b806323b872dd1461030d57806324988e1b1461034957806330ef74251461035f576101c1565b80630e12062d116101945780630e12062d146102535780630faee56f1461027d57806318160ddd146102a75780631cdd3be3146102d1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630b91e5651461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610681565b6040516101e6919061299b565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612a50565b6106be565b6040516102229190612aa8565b60405180910390f35b348015610236575f80fd5b50610251600480360381019061024c9190612a50565b6106db565b005b34801561025e575f80fd5b50610267610810565b6040516102749190612ad0565b60405180910390f35b348015610288575f80fd5b50610291610816565b60405161029e9190612ad0565b60405180910390f35b3480156102b2575f80fd5b506102bb61081c565b6040516102c89190612ad0565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612ae9565b610840565b6040516103049190612aa8565b60405180910390f35b348015610318575f80fd5b50610333600480360381019061032e9190612b14565b61085d565b6040516103409190612aa8565b60405180910390f35b348015610354575f80fd5b5061035d610931565b005b34801561036a575f80fd5b50610373610a2c565b005b348015610380575f80fd5b50610389610b5e565b6040516103969190612b7f565b60405180910390f35b3480156103aa575f80fd5b506103b3610b66565b6040516103c09190612ba7565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612ae9565b610b8b565b005b3480156103fc575f80fd5b5061041760048036038101906104129190612ae9565b610c76565b6040516104249190612ad0565b60405180910390f35b348015610438575f80fd5b50610441610cbc565b005b34801561044e575f80fd5b50610457610e0a565b6040516104649190612ad0565b60405180910390f35b348015610478575f80fd5b50610481610e10565b005b34801561048e575f80fd5b506104976110c9565b6040516104a49190612ba7565b60405180910390f35b3480156104b8575f80fd5b506104c16110f0565b6040516104ce9190612ad0565b60405180910390f35b3480156104e2575f80fd5b506104eb6110f6565b6040516104f8919061299b565b60405180910390f35b34801561050c575f80fd5b5061052760048036038101906105229190612a50565b611133565b6040516105349190612aa8565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612c21565b611150565b005b348015610570575f80fd5b5061057961127c565b6040516105869190612ad0565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612c6c565b611282565b6040516105c29190612ad0565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190612ae9565b611304565b005b3480156105fe575f80fd5b506106076114c1565b6040516106149190612aa8565b60405180910390f35b348015610628575f80fd5b50610643600480360381019061063e9190612ae9565b6114d4565b6040516106509190612aa8565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190612c21565b6114f1565b005b60606040518060400160405280600b81526020017f4b6f6d7567692d6368616e000000000000000000000000000000000000000000815250905090565b5f6106d16106ca61161e565b8484611625565b6001905092915050565b6106e361161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690612cf4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016107cb929190612d6d565b6020604051808303815f875af11580156107e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080b9190612dbe565b505050565b60175481565b60145481565b5f6009600a61082b9190612f45565b6461f313f88061083b9190612f8f565b905090565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f6108698484846117e8565b6109268461087561161e565b610921856040518060600160405280602881526020016139f86028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108d861161e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124089092919063ffffffff16565b611625565b600190509392505050565b61093961161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90612cf4565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610a29573d5f803e3d5ffd5b50565b610a3461161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612cf4565b60405180910390fd5b6009600a610ace9190612f45565b6461f313f880610ade9190612f8f565b6011819055506009600a610af29190612f45565b6461f313f880610b029190612f8f565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b379190612f45565b6461f313f880610b479190612f8f565b604051610b549190612ad0565b60405180910390a1565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b9361161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690612cf4565b60405180910390fd5b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc461161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790612cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b610e1861161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b90612cf4565b60405180910390fd5b601660149054906101000a900460ff1615610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb9061301a565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f3c30610c76565b5f80610f466110c9565b426040518863ffffffff1660e01b8152600401610f6896959493929190613071565b60606040518083038185885af1158015610f84573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa991906130e4565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611049929190613134565b6020604051808303815f875af1158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190612dbe565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f4b4f4d5547490000000000000000000000000000000000000000000000000000815250905090565b5f61114661113f61161e565b84846117e8565b6001905092915050565b61115861161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612cf4565b60405180910390fd5b5f5b82829050811015611277575f60195f8585858181106112085761120761315b565b5b905060200201602081019061121d9190612ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506111e6565b505050565b60135481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61130c61161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90612cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd906131f8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860029054906101000a900460ff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b6114f961161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90612cf4565b60405180910390fd5b5f5b8282905081101561161957600160195f8585858181106115aa576115a961315b565b5b90506020020160208101906115bf9190612ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050611587565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90613286565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613314565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117db9190612ad0565b60405180910390a3505050565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611886575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc9061337c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a9061340a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890613498565b60405180910390fd5b5f81116119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613526565b60405180910390fd5b5f6119ec6110c9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a5a5750611a2a6110c9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561215857611a9b6064611a8d600b54600e5411611a7a57600754611a7e565b6009545b8561246a90919063ffffffff16565b6124e190919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611b40575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b93575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c7657601154821115611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd49061358e565b60405180910390fd5b60125482611bea85610c76565b611bf491906135ac565b1115611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613629565b60405180910390fd5b436003600654611c4591906135ac565b1115611c5e57611c548361252a565b15611c5d575f80fd5b5b600e5f815480929190611c7090613647565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d14575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d725760125482611d2685610c76565b611d3091906135ac565b1115611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890613629565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611df457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e3857611e356064611e27600c54600e5411611e1457600854611e18565b600a545b8561246a90919063ffffffff16565b6124e190919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ed6575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f0e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f17575f90505b5f611f2130610c76565b9050601860029054906101000a900460ff168015611f4b575060185f9054906101000a900460ff16155b8015611f9d575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611fb55750601860019054906101000a900460ff165b8015611fc2575060135481115b8015611fd15750600d54600e54115b1561208557601054431115611fe8575f600f819055505b601754600f541061202e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612025906136d8565b60405180910390fd5b61204b612046846120418460145461253b565b61253b565b612553565b5f4790505f81111561206157612060476127bc565b5b600f5f81548092919061207390613647565b91905055504360108190555050612156565b60185f9054906101000a900460ff161580156120e7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120ff5750601860019054906101000a900460ff165b801561210c575060135481115b801561211b5750600d54600e54115b156121555761213d612138846121338460145461253b565b61253b565b612553565b5f4790505f81111561215357612152476127bc565b5b505b5b505b5f811115612257576121b08160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161224e9190612ad0565b60405180910390a35b6122a78260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061234a6122fe828461288190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123ed848661288190919063ffffffff16565b6040516123fa9190612ad0565b60405180910390a350505050565b5f83831115829061244f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612446919061299b565b60405180910390fd5b505f838561245d91906136f6565b9050809150509392505050565b5f80830361247a575f90506124db565b5f82846124879190612f8f565b90508284826124969190613756565b146124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cd906137f6565b60405180910390fd5b809150505b92915050565b5f61252283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128ca565b905092915050565b5f80823b90505f8111915050919050565b5f818311612549578261254b565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561258957612588613814565b5b6040519080825280602002602001820160405280156125b75781602001602082028036833780820191505090505b50905030815f815181106125ce576125cd61315b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612672573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126969190613855565b816001815181106126aa576126a961315b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127103060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611625565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612772959493929190613937565b5f604051808303815f87803b158015612789575f80fd5b505af115801561279b573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612820573d5f803e3d5ffd5b5050565b5f80828461283291906135ac565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e906139d9565b60405180910390fd5b8091505092915050565b5f6128c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612408565b905092915050565b5f8083118290612910576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612907919061299b565b60405180910390fd5b505f838561291e9190613756565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61296d8261292b565b6129778185612935565b9350612987818560208601612945565b61299081612953565b840191505092915050565b5f6020820190508181035f8301526129b38184612963565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ec826129c3565b9050919050565b6129fc816129e2565b8114612a06575f80fd5b50565b5f81359050612a17816129f3565b92915050565b5f819050919050565b612a2f81612a1d565b8114612a39575f80fd5b50565b5f81359050612a4a81612a26565b92915050565b5f8060408385031215612a6657612a656129bb565b5b5f612a7385828601612a09565b9250506020612a8485828601612a3c565b9150509250929050565b5f8115159050919050565b612aa281612a8e565b82525050565b5f602082019050612abb5f830184612a99565b92915050565b612aca81612a1d565b82525050565b5f602082019050612ae35f830184612ac1565b92915050565b5f60208284031215612afe57612afd6129bb565b5b5f612b0b84828501612a09565b91505092915050565b5f805f60608486031215612b2b57612b2a6129bb565b5b5f612b3886828701612a09565b9350506020612b4986828701612a09565b9250506040612b5a86828701612a3c565b9150509250925092565b5f60ff82169050919050565b612b7981612b64565b82525050565b5f602082019050612b925f830184612b70565b92915050565b612ba1816129e2565b82525050565b5f602082019050612bba5f830184612b98565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612be157612be0612bc0565b5b8235905067ffffffffffffffff811115612bfe57612bfd612bc4565b5b602083019150836020820283011115612c1a57612c19612bc8565b5b9250929050565b5f8060208385031215612c3757612c366129bb565b5b5f83013567ffffffffffffffff811115612c5457612c536129bf565b5b612c6085828601612bcc565b92509250509250929050565b5f8060408385031215612c8257612c816129bb565b5b5f612c8f85828601612a09565b9250506020612ca085828601612a09565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612cde602083612935565b9150612ce982612caa565b602082019050919050565b5f6020820190508181035f830152612d0b81612cd2565b9050919050565b5f819050919050565b5f612d35612d30612d2b846129c3565b612d12565b6129c3565b9050919050565b5f612d4682612d1b565b9050919050565b5f612d5782612d3c565b9050919050565b612d6781612d4d565b82525050565b5f604082019050612d805f830185612d5e565b612d8d6020830184612ac1565b9392505050565b612d9d81612a8e565b8114612da7575f80fd5b50565b5f81519050612db881612d94565b92915050565b5f60208284031215612dd357612dd26129bb565b5b5f612de084828501612daa565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612e6b57808604811115612e4757612e46612de9565b5b6001851615612e565780820291505b8081029050612e6485612e16565b9450612e2b565b94509492505050565b5f82612e835760019050612f3e565b81612e90575f9050612f3e565b8160018114612ea65760028114612eb057612edf565b6001915050612f3e565b60ff841115612ec257612ec1612de9565b5b8360020a915084821115612ed957612ed8612de9565b5b50612f3e565b5060208310610133831016604e8410600b8410161715612f145782820a905083811115612f0f57612f0e612de9565b5b612f3e565b612f218484846001612e22565b92509050818404811115612f3857612f37612de9565b5b81810290505b9392505050565b5f612f4f82612a1d565b9150612f5a83612b64565b9250612f877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e74565b905092915050565b5f612f9982612a1d565b9150612fa483612a1d565b9250828202612fb281612a1d565b91508282048414831517612fc957612fc8612de9565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613004601783612935565b915061300f82612fd0565b602082019050919050565b5f6020820190508181035f83015261303181612ff8565b9050919050565b5f819050919050565b5f61305b61305661305184613038565b612d12565b612a1d565b9050919050565b61306b81613041565b82525050565b5f60c0820190506130845f830189612b98565b6130916020830188612ac1565b61309e6040830187613062565b6130ab6060830186613062565b6130b86080830185612b98565b6130c560a0830184612ac1565b979650505050505050565b5f815190506130de81612a26565b92915050565b5f805f606084860312156130fb576130fa6129bb565b5b5f613108868287016130d0565b9350506020613119868287016130d0565b925050604061312a868287016130d0565b9150509250925092565b5f6040820190506131475f830185612b98565b6131546020830184612ac1565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131e2602683612935565b91506131ed82613188565b604082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613270602483612935565b915061327b82613216565b604082019050919050565b5f6020820190508181035f83015261329d81613264565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132fe602283612935565b9150613309826132a4565b604082019050919050565b5f6020820190508181035f83015261332b816132f2565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c697374656400005f82015250565b5f613366601e83612935565b915061337182613332565b602082019050919050565b5f6020820190508181035f8301526133938161335a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133f4602583612935565b91506133ff8261339a565b604082019050919050565b5f6020820190508181035f830152613421816133e8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613482602383612935565b915061348d82613428565b604082019050919050565b5f6020820190508181035f8301526134af81613476565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613510602983612935565b915061351b826134b6565b604082019050919050565b5f6020820190508181035f83015261353d81613504565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613578601983612935565b915061358382613544565b602082019050919050565b5f6020820190508181035f8301526135a58161356c565b9050919050565b5f6135b682612a1d565b91506135c183612a1d565b92508282019050808211156135d9576135d8612de9565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613613601a83612935565b915061361e826135df565b602082019050919050565b5f6020820190508181035f83015261364081613607565b9050919050565b5f61365182612a1d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361368357613682612de9565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6136c2600f83612935565b91506136cd8261368e565b602082019050919050565b5f6020820190508181035f8301526136ef816136b6565b9050919050565b5f61370082612a1d565b915061370b83612a1d565b925082820390508181111561372357613722612de9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61376082612a1d565b915061376b83612a1d565b92508261377b5761377a613729565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137e0602183612935565b91506137eb82613786565b604082019050919050565b5f6020820190508181035f83015261380d816137d4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061384f816129f3565b92915050565b5f6020828403121561386a576138696129bb565b5b5f61387784828501613841565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138b2816129e2565b82525050565b5f6138c383836138a9565b60208301905092915050565b5f602082019050919050565b5f6138e582613880565b6138ef818561388a565b93506138fa8361389a565b805f5b8381101561392a57815161391188826138b8565b975061391c836138cf565b9250506001810190506138fd565b5085935050505092915050565b5f60a08201905061394a5f830188612ac1565b6139576020830187613062565b818103604083015261396981866138db565b90506139786060830185612b98565b6139856080830184612ac1565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6139c3601b83612935565b91506139ce8261398f565b602082019050919050565b5f6020820190508181035f8301526139f0816139b7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e061ea59b887c95ff4abb248b003fac7d8e884dfaa5e23062f3a3cb00914071064736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063715018a6116100eb578063b5ef226a11610089578063f2fde38b11610063578063f2fde38b146105cb578063f4ef1f42146105f3578063f5b3c3bf1461061d578063ff89757014610659576101c1565b8063b5ef226a1461053d578063bf474bed14610565578063dd62ed3e1461058f576101c1565b80638da5cb5b116100c55780638da5cb5b146104835780638f9a55c0146104ad57806395d89b41146104d7578063a9059cbb14610501576101c1565b8063715018a61461042d5780637d1db4a5146104435780638a8c523c1461046d576101c1565b806323b872dd11610158578063313ce56711610132578063313ce5671461037557806349bd5a5e1461039f5780634a49ac4c146103c957806370a08231146103f1576101c1565b806323b872dd1461030d57806324988e1b1461034957806330ef74251461035f576101c1565b80630e12062d116101945780630e12062d146102535780630faee56f1461027d57806318160ddd146102a75780631cdd3be3146102d1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630b91e5651461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610681565b6040516101e6919061299b565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612a50565b6106be565b6040516102229190612aa8565b60405180910390f35b348015610236575f80fd5b50610251600480360381019061024c9190612a50565b6106db565b005b34801561025e575f80fd5b50610267610810565b6040516102749190612ad0565b60405180910390f35b348015610288575f80fd5b50610291610816565b60405161029e9190612ad0565b60405180910390f35b3480156102b2575f80fd5b506102bb61081c565b6040516102c89190612ad0565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612ae9565b610840565b6040516103049190612aa8565b60405180910390f35b348015610318575f80fd5b50610333600480360381019061032e9190612b14565b61085d565b6040516103409190612aa8565b60405180910390f35b348015610354575f80fd5b5061035d610931565b005b34801561036a575f80fd5b50610373610a2c565b005b348015610380575f80fd5b50610389610b5e565b6040516103969190612b7f565b60405180910390f35b3480156103aa575f80fd5b506103b3610b66565b6040516103c09190612ba7565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612ae9565b610b8b565b005b3480156103fc575f80fd5b5061041760048036038101906104129190612ae9565b610c76565b6040516104249190612ad0565b60405180910390f35b348015610438575f80fd5b50610441610cbc565b005b34801561044e575f80fd5b50610457610e0a565b6040516104649190612ad0565b60405180910390f35b348015610478575f80fd5b50610481610e10565b005b34801561048e575f80fd5b506104976110c9565b6040516104a49190612ba7565b60405180910390f35b3480156104b8575f80fd5b506104c16110f0565b6040516104ce9190612ad0565b60405180910390f35b3480156104e2575f80fd5b506104eb6110f6565b6040516104f8919061299b565b60405180910390f35b34801561050c575f80fd5b5061052760048036038101906105229190612a50565b611133565b6040516105349190612aa8565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612c21565b611150565b005b348015610570575f80fd5b5061057961127c565b6040516105869190612ad0565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612c6c565b611282565b6040516105c29190612ad0565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190612ae9565b611304565b005b3480156105fe575f80fd5b506106076114c1565b6040516106149190612aa8565b60405180910390f35b348015610628575f80fd5b50610643600480360381019061063e9190612ae9565b6114d4565b6040516106509190612aa8565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190612c21565b6114f1565b005b60606040518060400160405280600b81526020017f4b6f6d7567692d6368616e000000000000000000000000000000000000000000815250905090565b5f6106d16106ca61161e565b8484611625565b6001905092915050565b6106e361161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690612cf4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016107cb929190612d6d565b6020604051808303815f875af11580156107e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080b9190612dbe565b505050565b60175481565b60145481565b5f6009600a61082b9190612f45565b6461f313f88061083b9190612f8f565b905090565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f6108698484846117e8565b6109268461087561161e565b610921856040518060600160405280602881526020016139f86028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108d861161e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124089092919063ffffffff16565b611625565b600190509392505050565b61093961161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90612cf4565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610a29573d5f803e3d5ffd5b50565b610a3461161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612cf4565b60405180910390fd5b6009600a610ace9190612f45565b6461f313f880610ade9190612f8f565b6011819055506009600a610af29190612f45565b6461f313f880610b029190612f8f565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b379190612f45565b6461f313f880610b479190612f8f565b604051610b549190612ad0565b60405180910390a1565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b9361161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690612cf4565b60405180910390fd5b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc461161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790612cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b610e1861161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b90612cf4565b60405180910390fd5b601660149054906101000a900460ff1615610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb9061301a565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f3c30610c76565b5f80610f466110c9565b426040518863ffffffff1660e01b8152600401610f6896959493929190613071565b60606040518083038185885af1158015610f84573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa991906130e4565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611049929190613134565b6020604051808303815f875af1158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190612dbe565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f4b4f4d5547490000000000000000000000000000000000000000000000000000815250905090565b5f61114661113f61161e565b84846117e8565b6001905092915050565b61115861161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612cf4565b60405180910390fd5b5f5b82829050811015611277575f60195f8585858181106112085761120761315b565b5b905060200201602081019061121d9190612ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506111e6565b505050565b60135481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61130c61161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90612cf4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd906131f8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860029054906101000a900460ff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b6114f961161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90612cf4565b60405180910390fd5b5f5b8282905081101561161957600160195f8585858181106115aa576115a961315b565b5b90506020020160208101906115bf9190612ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050611587565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90613286565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613314565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117db9190612ad0565b60405180910390a3505050565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611886575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc9061337c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a9061340a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890613498565b60405180910390fd5b5f81116119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613526565b60405180910390fd5b5f6119ec6110c9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a5a5750611a2a6110c9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561215857611a9b6064611a8d600b54600e5411611a7a57600754611a7e565b6009545b8561246a90919063ffffffff16565b6124e190919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611b40575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b93575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c7657601154821115611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd49061358e565b60405180910390fd5b60125482611bea85610c76565b611bf491906135ac565b1115611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613629565b60405180910390fd5b436003600654611c4591906135ac565b1115611c5e57611c548361252a565b15611c5d575f80fd5b5b600e5f815480929190611c7090613647565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d14575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d725760125482611d2685610c76565b611d3091906135ac565b1115611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890613629565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611df457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e3857611e356064611e27600c54600e5411611e1457600854611e18565b600a545b8561246a90919063ffffffff16565b6124e190919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ed6575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f0e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f17575f90505b5f611f2130610c76565b9050601860029054906101000a900460ff168015611f4b575060185f9054906101000a900460ff16155b8015611f9d575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611fb55750601860019054906101000a900460ff165b8015611fc2575060135481115b8015611fd15750600d54600e54115b1561208557601054431115611fe8575f600f819055505b601754600f541061202e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612025906136d8565b60405180910390fd5b61204b612046846120418460145461253b565b61253b565b612553565b5f4790505f81111561206157612060476127bc565b5b600f5f81548092919061207390613647565b91905055504360108190555050612156565b60185f9054906101000a900460ff161580156120e7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120ff5750601860019054906101000a900460ff165b801561210c575060135481115b801561211b5750600d54600e54115b156121555761213d612138846121338460145461253b565b61253b565b612553565b5f4790505f81111561215357612152476127bc565b5b505b5b505b5f811115612257576121b08160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161224e9190612ad0565b60405180910390a35b6122a78260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061234a6122fe828461288190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123ed848661288190919063ffffffff16565b6040516123fa9190612ad0565b60405180910390a350505050565b5f83831115829061244f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612446919061299b565b60405180910390fd5b505f838561245d91906136f6565b9050809150509392505050565b5f80830361247a575f90506124db565b5f82846124879190612f8f565b90508284826124969190613756565b146124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cd906137f6565b60405180910390fd5b809150505b92915050565b5f61252283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128ca565b905092915050565b5f80823b90505f8111915050919050565b5f818311612549578261254b565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561258957612588613814565b5b6040519080825280602002602001820160405280156125b75781602001602082028036833780820191505090505b50905030815f815181106125ce576125cd61315b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612672573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126969190613855565b816001815181106126aa576126a961315b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127103060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611625565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612772959493929190613937565b5f604051808303815f87803b158015612789575f80fd5b505af115801561279b573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612820573d5f803e3d5ffd5b5050565b5f80828461283291906135ac565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e906139d9565b60405180910390fd5b8091505092915050565b5f6128c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612408565b905092915050565b5f8083118290612910576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612907919061299b565b60405180910390fd5b505f838561291e9190613756565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61296d8261292b565b6129778185612935565b9350612987818560208601612945565b61299081612953565b840191505092915050565b5f6020820190508181035f8301526129b38184612963565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ec826129c3565b9050919050565b6129fc816129e2565b8114612a06575f80fd5b50565b5f81359050612a17816129f3565b92915050565b5f819050919050565b612a2f81612a1d565b8114612a39575f80fd5b50565b5f81359050612a4a81612a26565b92915050565b5f8060408385031215612a6657612a656129bb565b5b5f612a7385828601612a09565b9250506020612a8485828601612a3c565b9150509250929050565b5f8115159050919050565b612aa281612a8e565b82525050565b5f602082019050612abb5f830184612a99565b92915050565b612aca81612a1d565b82525050565b5f602082019050612ae35f830184612ac1565b92915050565b5f60208284031215612afe57612afd6129bb565b5b5f612b0b84828501612a09565b91505092915050565b5f805f60608486031215612b2b57612b2a6129bb565b5b5f612b3886828701612a09565b9350506020612b4986828701612a09565b9250506040612b5a86828701612a3c565b9150509250925092565b5f60ff82169050919050565b612b7981612b64565b82525050565b5f602082019050612b925f830184612b70565b92915050565b612ba1816129e2565b82525050565b5f602082019050612bba5f830184612b98565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612be157612be0612bc0565b5b8235905067ffffffffffffffff811115612bfe57612bfd612bc4565b5b602083019150836020820283011115612c1a57612c19612bc8565b5b9250929050565b5f8060208385031215612c3757612c366129bb565b5b5f83013567ffffffffffffffff811115612c5457612c536129bf565b5b612c6085828601612bcc565b92509250509250929050565b5f8060408385031215612c8257612c816129bb565b5b5f612c8f85828601612a09565b9250506020612ca085828601612a09565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612cde602083612935565b9150612ce982612caa565b602082019050919050565b5f6020820190508181035f830152612d0b81612cd2565b9050919050565b5f819050919050565b5f612d35612d30612d2b846129c3565b612d12565b6129c3565b9050919050565b5f612d4682612d1b565b9050919050565b5f612d5782612d3c565b9050919050565b612d6781612d4d565b82525050565b5f604082019050612d805f830185612d5e565b612d8d6020830184612ac1565b9392505050565b612d9d81612a8e565b8114612da7575f80fd5b50565b5f81519050612db881612d94565b92915050565b5f60208284031215612dd357612dd26129bb565b5b5f612de084828501612daa565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612e6b57808604811115612e4757612e46612de9565b5b6001851615612e565780820291505b8081029050612e6485612e16565b9450612e2b565b94509492505050565b5f82612e835760019050612f3e565b81612e90575f9050612f3e565b8160018114612ea65760028114612eb057612edf565b6001915050612f3e565b60ff841115612ec257612ec1612de9565b5b8360020a915084821115612ed957612ed8612de9565b5b50612f3e565b5060208310610133831016604e8410600b8410161715612f145782820a905083811115612f0f57612f0e612de9565b5b612f3e565b612f218484846001612e22565b92509050818404811115612f3857612f37612de9565b5b81810290505b9392505050565b5f612f4f82612a1d565b9150612f5a83612b64565b9250612f877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e74565b905092915050565b5f612f9982612a1d565b9150612fa483612a1d565b9250828202612fb281612a1d565b91508282048414831517612fc957612fc8612de9565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613004601783612935565b915061300f82612fd0565b602082019050919050565b5f6020820190508181035f83015261303181612ff8565b9050919050565b5f819050919050565b5f61305b61305661305184613038565b612d12565b612a1d565b9050919050565b61306b81613041565b82525050565b5f60c0820190506130845f830189612b98565b6130916020830188612ac1565b61309e6040830187613062565b6130ab6060830186613062565b6130b86080830185612b98565b6130c560a0830184612ac1565b979650505050505050565b5f815190506130de81612a26565b92915050565b5f805f606084860312156130fb576130fa6129bb565b5b5f613108868287016130d0565b9350506020613119868287016130d0565b925050604061312a868287016130d0565b9150509250925092565b5f6040820190506131475f830185612b98565b6131546020830184612ac1565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131e2602683612935565b91506131ed82613188565b604082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613270602483612935565b915061327b82613216565b604082019050919050565b5f6020820190508181035f83015261329d81613264565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132fe602283612935565b9150613309826132a4565b604082019050919050565b5f6020820190508181035f83015261332b816132f2565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c697374656400005f82015250565b5f613366601e83612935565b915061337182613332565b602082019050919050565b5f6020820190508181035f8301526133938161335a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133f4602583612935565b91506133ff8261339a565b604082019050919050565b5f6020820190508181035f830152613421816133e8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613482602383612935565b915061348d82613428565b604082019050919050565b5f6020820190508181035f8301526134af81613476565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613510602983612935565b915061351b826134b6565b604082019050919050565b5f6020820190508181035f83015261353d81613504565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613578601983612935565b915061358382613544565b602082019050919050565b5f6020820190508181035f8301526135a58161356c565b9050919050565b5f6135b682612a1d565b91506135c183612a1d565b92508282019050808211156135d9576135d8612de9565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613613601a83612935565b915061361e826135df565b602082019050919050565b5f6020820190508181035f83015261364081613607565b9050919050565b5f61365182612a1d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361368357613682612de9565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6136c2600f83612935565b91506136cd8261368e565b602082019050919050565b5f6020820190508181035f8301526136ef816136b6565b9050919050565b5f61370082612a1d565b915061370b83612a1d565b925082820390508181111561372357613722612de9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61376082612a1d565b915061376b83612a1d565b92508261377b5761377a613729565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137e0602183612935565b91506137eb82613786565b604082019050919050565b5f6020820190508181035f83015261380d816137d4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061384f816129f3565b92915050565b5f6020828403121561386a576138696129bb565b5b5f61387784828501613841565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138b2816129e2565b82525050565b5f6138c383836138a9565b60208301905092915050565b5f602082019050919050565b5f6138e582613880565b6138ef818561388a565b93506138fa8361389a565b805f5b8381101561392a57815161391188826138b8565b975061391c836138cf565b9250506001810190506138fd565b5085935050505092915050565b5f60a08201905061394a5f830188612ac1565b6139576020830187613062565b818103604083015261396981866138db565b90506139786060830185612b98565b6139856080830184612ac1565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6139c3601b83612935565b91506139ce8261398f565b602082019050919050565b5f6020820190508181035f8301526139f0816139b7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e061ea59b887c95ff4abb248b003fac7d8e884dfaa5e23062f3a3cb00914071064736f6c63430008190033

Deployed Bytecode Sourcemap

3815:9532:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6180:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7013:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12440:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5195:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5017:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6457:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7182:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7238:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12313:119;;;;;;;;;;;;;:::i;:::-;;12599:172;;;;;;;;;;;;;:::i;:::-;;6366:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5129:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7902:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6560:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2646:148;;;;;;;;;;;;;:::i;:::-;;4820:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12879:428;;;;;;;;;;;;;:::i;:::-;;2432:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4885:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6271:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6687:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11201:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4950:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6862:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2802:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5301:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4075:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12113:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6180:83;6217:13;6250:5;;;;;;;;;;;;;;;;;6243:12;;6180:83;:::o;7013:161::-;7088:4;7105:39;7114:12;:10;:12::i;:::-;7128:7;7137:6;7105:8;:39::i;:::-;7162:4;7155:11;;7013:161;;;;:::o;12440:151::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12542:10:::1;12535:27;;;12563:10;;;;;;;;;;;12575:7;12535:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12440:151:::0;;:::o;5195:26::-;;;;:::o;5017:54::-;;;;:::o;6457:95::-;6510:7;4627:1;4685:2;:13;;;;:::i;:::-;4670:12;:28;;;;:::i;:::-;6530:14;;6457:95;:::o;7182:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;7238:313::-;7336:4;7353:36;7363:6;7371:9;7382:6;7353:9;:36::i;:::-;7400:121;7409:6;7417:12;:10;:12::i;:::-;7431:89;7469:6;7431:89;;;;;;;;;;;;;;;;;:11;:19;7443:6;7431:19;;;;;;;;;;;;;;;:33;7451:12;:10;:12::i;:::-;7431:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7400:8;:121::i;:::-;7539:4;7532:11;;7238:313;;;;;:::o;12313:119::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12381:10:::1;;;;;;;;;;;12373:28;;:51;12402:21;12373:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12313:119::o:0;12599:172::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4627:1:::1;4685:2;:13;;;;:::i;:::-;4670:12;:28;;;;:::i;:::-;12665:12;:22;;;;4627:1;4685:2;:13;;;;:::i;:::-;4670:12;:28;;;;:::i;:::-;12698:14;:22;;;;12736:27;4627:1;4685:2;:13;;;;:::i;:::-;4670:12;:28;;;;:::i;:::-;12736:27;;;;;;:::i;:::-;;;;;;;;12599:172::o:0;6366:83::-;6407:5;4627:1;6425:16;;6366:83;:::o;5129:28::-;;;;;;;;;;;;;:::o;7902:111::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8000:5:::1;7974:14;:23;7989:7;7974:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;7902:111:::0;:::o;6560:119::-;6626:7;6653:9;:18;6663:7;6653:18;;;;;;;;;;;;;;;;6646:25;;6560:119;;;:::o;2646:148::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2753:1:::1;2716:40;;2737:6;::::0;::::1;;;;;;;;2716:40;;;;;;;;;;;;2784:1;2767:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2646:148::o:0;4820:58::-;;;;:::o;12879:428::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12945:11:::1;;;;;;;;;;;12944:12;12936:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12994:15;;;;;;;;;;;:31;;;13033:21;13064:4;13070:24;13088:4;13070:9;:24::i;:::-;13095:1;13097::::0;13099:7:::1;:5;:7::i;:::-;13107:15;12994:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13141:13;;;;;;;;;;;13134:29;;;13172:15;;;;;;;;;;;13190:14;13134:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13230:4;13216:11;;:18;;;;;;;;;;;;;;;;;;13259:4;13245:11;;:18;;;;;;;;;;;;;;;;;;13287:12;13274:10;:25;;;;12879:428::o:0;2432:79::-;2470:7;2497:6;;;;;;;;;;;2490:13;;2432:79;:::o;4885:58::-;;;;:::o;6271:87::-;6310:13;6343:7;;;;;;;;;;;;;;;;;6336:14;;6271:87;:::o;6687:167::-;6765:4;6782:42;6792:12;:10;:12::i;:::-;6806:9;6817:6;6782:9;:42::i;:::-;6842:4;6835:11;;6687:167;;;;:::o;11201:208::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11301:9:::1;11296:106;11316:9;;:16;;11312:1;:20;11296:106;;;11385:5;11354:14;:28;11369:9;;11379:1;11369:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11354:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;11334:3;;;;;11296:106;;;;11201:208:::0;;:::o;4950:60::-;;;;:::o;6862:143::-;6943:7;6970:11;:18;6982:5;6970:18;;;;;;;;;;;;;;;:27;6989:7;6970:27;;;;;;;;;;;;;;;;6963:34;;6862:143;;;;:::o;2802:244::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2911:1:::1;2891:22;;:8;:22;;::::0;2883:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3001:8;2972:38;;2993:6;::::0;::::1;;;;;;;;2972:38;;;;;;;;;;;;3030:8;3021:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2802:244:::0;:::o;5301:28::-;;;;;;;;;;;;;:::o;4075:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;12113:192::-;2569:12;:10;:12::i;:::-;2559:22;;:6;;;;;;;;;;:22;;;2551:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12202:9:::1;12197:101;12217:9;;:16;;12213:1;:20;12197:101;;;12282:4;12251:14;:28;12266:9;;12276:1;12266:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12251:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12235:3;;;;;12197:101;;;;12113:192:::0;;:::o;187:98::-;240:7;267:10;260:17;;187:98;:::o;7559:335::-;7669:1;7652:19;;:5;:19;;;7644:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7750:1;7731:21;;:7;:21;;;7723:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7832:6;7802:11;:18;7814:5;7802:18;;;;;;;;;;;;;;;:27;7821:7;7802:27;;;;;;;;;;;;;;;:36;;;;7870:7;7854:32;;7863:5;7854:32;;;7879:6;7854:32;;;;;;:::i;:::-;;;;;;;;7559:335;;;:::o;8021:3064::-;8111:14;:20;8126:4;8111:20;;;;;;;;;;;;;;;;;;;;;;;;;8110:21;:44;;;;;8136:14;:18;8151:2;8136:18;;;;;;;;;;;;;;;;;;;;;;;;;8135:19;8110:44;8101:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8224:1;8208:18;;:4;:18;;;8200:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8301:1;8287:16;;:2;:16;;;8279:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8371:1;8362:6;:10;8354:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8429:17;8473:7;:5;:7::i;:::-;8465:15;;:4;:15;;;;:32;;;;;8490:7;:5;:7::i;:::-;8484:13;;:2;:13;;;;8465:32;8461:2268;;;8526:79;8601:3;8526:70;8549:15;;8538:9;;:26;8537:58;;8581:14;;8537:58;;;8567:12;;8537:58;8526:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8514:91;;8626:10;:16;8637:4;8626:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8660:15;;;;;;;;;;;8646:30;;:2;:30;;;;8626:50;:66;;;;;8682:6;:10;8689:2;8682:10;;;;;;;;;;;;;;;;;;;;;;;;;8680:12;8626:66;8622:419;;;8732:12;;8722:6;:22;;8714:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8827:14;;8817:6;8801:13;8811:2;8801:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8793:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8915:12;8910:1;8897:10;;:14;;;;:::i;:::-;:30;8893:103;;;8961:14;8972:2;8961:10;:14::i;:::-;8960:15;8952:24;;;;;;8893:103;9014:9;;:11;;;;;;;;;:::i;:::-;;;;;;8622:419;9062:10;:14;9073:2;9062:14;;;;;;;;;;;;;;;;;;;;;;;;;9061:15;:31;;;;;9082:6;:10;9089:2;9082:10;;;;;;;;;;;;;;;;;;;;;;;;;9080:12;9061:31;9057:151;;;9147:14;;9137:6;9121:13;9131:2;9121:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9113:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9057:151;9227:10;:14;9238:2;9227:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;9260:4;9245:20;;:4;:20;;;;9227:38;9224:172;;;9298:82;9376:3;9298:73;9321:16;;9310:9;;:27;9309:61;;9355:15;;9309:61;;;9340:13;;9309:61;9298:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9286:94;;9224:172;9410:10;:16;9421:4;9410:16;;;;;;;;;;;;;;;;;;;;;;;;;9409:17;:36;;;;;9431:10;:14;9442:2;9431:14;;;;;;;;;;;;;;;;;;;;;;;;;9430:15;9409:36;:60;;;;;9464:4;9449:20;;:4;:20;;;;9409:60;9405:115;;;9503:1;9491:13;;9405:115;9536:28;9567:24;9585:4;9567:9;:24::i;:::-;9536:55;;9610:9;;;;;;;;;;;:20;;;;;9624:6;;;;;;;;;;;9623:7;9610:20;:38;;;;;9634:10;:14;9645:2;9634:14;;;;;;;;;;;;;;;;;;;;;;;;;9610:38;:53;;;;;9652:11;;;;;;;;;;;9610:53;:95;;;;;9688:17;;9667:20;:38;9610:95;:127;;;;;9719:18;;9709:9;;:28;9610:127;9606:1112;;;9777:13;;9762:12;:28;9758:90;;;9827:1;9815:9;:13;;;;9758:90;9886:7;;9874:9;;:19;9866:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9932:67;9949:49;9953:6;9960:37;9964:20;9985:11;;9960:3;:37::i;:::-;9949:3;:49::i;:::-;9932:16;:67::i;:::-;10018:26;10047:21;10018:50;;10111:1;10090:18;:22;10087:105;;;10137:35;10150:21;10137:12;:35::i;:::-;10087:105;10210:9;;:11;;;;;;;;;:::i;:::-;;;;;;10256:12;10240:13;:28;;;;9739:545;9606:1112;;;10309:6;;;;;;;;;;;10308:7;:25;;;;;10319:10;:14;10330:2;10319:14;;;;;;;;;;;;;;;;;;;;;;;;;10308:25;:40;;;;;10337:11;;;;;;;;;;;10308:40;:82;;;;;10373:17;;10352:20;:38;10308:82;:114;;;;;10404:18;;10394:9;;:28;10308:114;10305:413;;;10443:67;10460:49;10464:6;10471:37;10475:20;10496:11;;10471:3;:37::i;:::-;10460:3;:49::i;:::-;10443:16;:67::i;:::-;10529:26;10558:21;10529:50;;10622:1;10601:18;:22;10598:105;;;10648:35;10661:21;10648:12;:35::i;:::-;10598:105;10424:294;10305:413;9606:1112;8499:2230;8461:2268;10754:1;10744:9;:11;10741:161;;;10794:39;10823:9;10794;:24;10812:4;10794:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10769:9;:24;10787:4;10769:24;;;;;;;;;;;;;;;:64;;;;10874:4;10851:39;;10860:4;10851:39;;;10880:9;10851:39;;;;;;:::i;:::-;;;;;;;;10741:161;10928:27;10948:6;10928:9;:15;10938:4;10928:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10912:9;:15;10922:4;10912:15;;;;;;;;;;;;;;;:43;;;;10980:40;10998:21;11009:9;10998:6;:10;;:21;;;;:::i;:::-;10980:9;:13;10990:2;10980:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10966:9;:13;10976:2;10966:13;;;;;;;;;;;;;;;:54;;;;11051:2;11036:41;;11045:4;11036:41;;;11055:21;11066:9;11055:6;:10;;:21;;;;:::i;:::-;11036:41;;;;;;:::i;:::-;;;;;;;;8090:2995;8021:3064;;;:::o;1324:190::-;1410:7;1443:1;1438;:6;;1446:12;1430:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1470:9;1486:1;1482;:5;;;;:::i;:::-;1470:17;;1505:1;1498:8;;;1324:190;;;;;:::o;1522:246::-;1580:7;1609:1;1604;:6;1600:47;;1634:1;1627:8;;;;1600:47;1657:9;1673:1;1669;:5;;;;:::i;:::-;1657:17;;1702:1;1697;1693;:5;;;;:::i;:::-;:10;1685:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1759:1;1752:8;;;1522:246;;;;;:::o;1776:132::-;1834:7;1861:39;1865:1;1868;1861:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1854:46;;1776:132;;;;:::o;11417:195::-;11476:4;11493:12;11560:7;11548:20;11540:28;;11603:1;11596:4;:8;11589:15;;;11417:195;;;:::o;11095:98::-;11152:7;11179:1;11177;:3;11176:9;;11184:1;11176:9;;;11182:1;11176:9;11169:16;;11095:98;;;;:::o;11620:483::-;5429:4;5420:6;;:13;;;;;;;;;;;;;;;;;;11698:21:::1;11736:1;11722:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11698:40;;11767:4;11749;11754:1;11749:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11793:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11783:4;11788:1;11783:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11826:62;11843:4;11858:15;;;;;;;;;;;11876:11;11826:8;:62::i;:::-;11899:15;;;;;;;;;;;:66;;;11980:11;12006:1;12022:4;12049;12069:15;11899:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11687:416;5465:5:::0;5456:6;;:14;;;;;;;;;;;;;;;;;;11620:483;:::o;12779:92::-;12836:10;;;;;;;;;;;:19;;:27;12856:6;12836:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12779:92;:::o;993:179::-;1051:7;1071:9;1087:1;1083;:5;;;;:::i;:::-;1071:17;;1112:1;1107;:6;;1099:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1163:1;1156:8;;;993:179;;;;:::o;1180:136::-;1238:7;1265:43;1269:1;1272;1265:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1258:50;;1180:136;;;;:::o;1916:189::-;2002:7;2034:1;2030;:5;2037:12;2022:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2061:9;2077:1;2073;:5;;;;:::i;:::-;2061:17;;2096:1;2089:8;;;1916:189;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:117::-;5542:1;5539;5532:12;5556:117;5665:1;5662;5655:12;5679:117;5788:1;5785;5778:12;5819:568;5892:8;5902:6;5952:3;5945:4;5937:6;5933:17;5929:27;5919:122;;5960:79;;:::i;:::-;5919:122;6073:6;6060:20;6050:30;;6103:18;6095:6;6092:30;6089:117;;;6125:79;;:::i;:::-;6089:117;6239:4;6231:6;6227:17;6215:29;;6293:3;6285:4;6277:6;6273:17;6263:8;6259:32;6256:41;6253:128;;;6300:79;;:::i;:::-;6253:128;5819:568;;;;;:::o;6393:559::-;6479:6;6487;6536:2;6524:9;6515:7;6511:23;6507:32;6504:119;;;6542:79;;:::i;:::-;6504:119;6690:1;6679:9;6675:17;6662:31;6720:18;6712:6;6709:30;6706:117;;;6742:79;;:::i;:::-;6706:117;6855:80;6927:7;6918:6;6907:9;6903:22;6855:80;:::i;:::-;6837:98;;;;6633:312;6393:559;;;;;:::o;6958:474::-;7026:6;7034;7083:2;7071:9;7062:7;7058:23;7054:32;7051:119;;;7089:79;;:::i;:::-;7051:119;7209:1;7234:53;7279:7;7270:6;7259:9;7255:22;7234:53;:::i;:::-;7224:63;;7180:117;7336:2;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7307:118;6958:474;;;;;:::o;7438:182::-;7578:34;7574:1;7566:6;7562:14;7555:58;7438:182;:::o;7626:366::-;7768:3;7789:67;7853:2;7848:3;7789:67;:::i;:::-;7782:74;;7865:93;7954:3;7865:93;:::i;:::-;7983:2;7978:3;7974:12;7967:19;;7626:366;;;:::o;7998:419::-;8164:4;8202:2;8191:9;8187:18;8179:26;;8251:9;8245:4;8241:20;8237:1;8226:9;8222:17;8215:47;8279:131;8405:4;8279:131;:::i;:::-;8271:139;;7998:419;;;:::o;8423:60::-;8451:3;8472:5;8465:12;;8423:60;;;:::o;8489:142::-;8539:9;8572:53;8590:34;8599:24;8617:5;8599:24;:::i;:::-;8590:34;:::i;:::-;8572:53;:::i;:::-;8559:66;;8489:142;;;:::o;8637:126::-;8687:9;8720:37;8751:5;8720:37;:::i;:::-;8707:50;;8637:126;;;:::o;8769:134::-;8827:9;8860:37;8891:5;8860:37;:::i;:::-;8847:50;;8769:134;;;:::o;8909:147::-;9004:45;9043:5;9004:45;:::i;:::-;8999:3;8992:58;8909:147;;:::o;9062:348::-;9191:4;9229:2;9218:9;9214:18;9206:26;;9242:79;9318:1;9307:9;9303:17;9294:6;9242:79;:::i;:::-;9331:72;9399:2;9388:9;9384:18;9375:6;9331:72;:::i;:::-;9062:348;;;;;:::o;9416:116::-;9486:21;9501:5;9486:21;:::i;:::-;9479:5;9476:32;9466:60;;9522:1;9519;9512:12;9466:60;9416:116;:::o;9538:137::-;9592:5;9623:6;9617:13;9608:22;;9639:30;9663:5;9639:30;:::i;:::-;9538:137;;;;:::o;9681:345::-;9748:6;9797:2;9785:9;9776:7;9772:23;9768:32;9765:119;;;9803:79;;:::i;:::-;9765:119;9923:1;9948:61;10001:7;9992:6;9981:9;9977:22;9948:61;:::i;:::-;9938:71;;9894:125;9681:345;;;;:::o;10032:180::-;10080:77;10077:1;10070:88;10177:4;10174:1;10167:15;10201:4;10198:1;10191:15;10218:102;10260:8;10307:5;10304:1;10300:13;10279:34;;10218:102;;;:::o;10326:848::-;10387:5;10394:4;10418:6;10409:15;;10442:5;10433:14;;10456:712;10477:1;10467:8;10464:15;10456:712;;;10572:4;10567:3;10563:14;10557:4;10554:24;10551:50;;;10581:18;;:::i;:::-;10551:50;10631:1;10621:8;10617:16;10614:451;;;11046:4;11039:5;11035:16;11026:25;;10614:451;11096:4;11090;11086:15;11078:23;;11126:32;11149:8;11126:32;:::i;:::-;11114:44;;10456:712;;;10326:848;;;;;;;:::o;11180:1073::-;11234:5;11425:8;11415:40;;11446:1;11437:10;;11448:5;;11415:40;11474:4;11464:36;;11491:1;11482:10;;11493:5;;11464:36;11560:4;11608:1;11603:27;;;;11644:1;11639:191;;;;11553:277;;11603:27;11621:1;11612:10;;11623:5;;;11639:191;11684:3;11674:8;11671:17;11668:43;;;11691:18;;:::i;:::-;11668:43;11740:8;11737:1;11733:16;11724:25;;11775:3;11768:5;11765:14;11762:40;;;11782:18;;:::i;:::-;11762:40;11815:5;;;11553:277;;11939:2;11929:8;11926:16;11920:3;11914:4;11911:13;11907:36;11889:2;11879:8;11876:16;11871:2;11865:4;11862:12;11858:35;11842:111;11839:246;;;11995:8;11989:4;11985:19;11976:28;;12030:3;12023:5;12020:14;12017:40;;;12037:18;;:::i;:::-;12017:40;12070:5;;11839:246;12110:42;12148:3;12138:8;12132:4;12129:1;12110:42;:::i;:::-;12095:57;;;;12184:4;12179:3;12175:14;12168:5;12165:25;12162:51;;;12193:18;;:::i;:::-;12162:51;12242:4;12235:5;12231:16;12222:25;;11180:1073;;;;;;:::o;12259:281::-;12317:5;12341:23;12359:4;12341:23;:::i;:::-;12333:31;;12385:25;12401:8;12385:25;:::i;:::-;12373:37;;12429:104;12466:66;12456:8;12450:4;12429:104;:::i;:::-;12420:113;;12259:281;;;;:::o;12546:410::-;12586:7;12609:20;12627:1;12609:20;:::i;:::-;12604:25;;12643:20;12661:1;12643:20;:::i;:::-;12638:25;;12698:1;12695;12691:9;12720:30;12738:11;12720:30;:::i;:::-;12709:41;;12899:1;12890:7;12886:15;12883:1;12880:22;12860:1;12853:9;12833:83;12810:139;;12929:18;;:::i;:::-;12810:139;12594:362;12546:410;;;;:::o;12962:173::-;13102:25;13098:1;13090:6;13086:14;13079:49;12962:173;:::o;13141:366::-;13283:3;13304:67;13368:2;13363:3;13304:67;:::i;:::-;13297:74;;13380:93;13469:3;13380:93;:::i;:::-;13498:2;13493:3;13489:12;13482:19;;13141:366;;;:::o;13513:419::-;13679:4;13717:2;13706:9;13702:18;13694:26;;13766:9;13760:4;13756:20;13752:1;13741:9;13737:17;13730:47;13794:131;13920:4;13794:131;:::i;:::-;13786:139;;13513:419;;;:::o;13938:85::-;13983:7;14012:5;14001:16;;13938:85;;;:::o;14029:158::-;14087:9;14120:61;14138:42;14147:32;14173:5;14147:32;:::i;:::-;14138:42;:::i;:::-;14120:61;:::i;:::-;14107:74;;14029:158;;;:::o;14193:147::-;14288:45;14327:5;14288:45;:::i;:::-;14283:3;14276:58;14193:147;;:::o;14346:807::-;14595:4;14633:3;14622:9;14618:19;14610:27;;14647:71;14715:1;14704:9;14700:17;14691:6;14647:71;:::i;:::-;14728:72;14796:2;14785:9;14781:18;14772:6;14728:72;:::i;:::-;14810:80;14886:2;14875:9;14871:18;14862:6;14810:80;:::i;:::-;14900;14976:2;14965:9;14961:18;14952:6;14900:80;:::i;:::-;14990:73;15058:3;15047:9;15043:19;15034:6;14990:73;:::i;:::-;15073;15141:3;15130:9;15126:19;15117:6;15073:73;:::i;:::-;14346:807;;;;;;;;;:::o;15159:143::-;15216:5;15247:6;15241:13;15232:22;;15263:33;15290:5;15263:33;:::i;:::-;15159:143;;;;:::o;15308:663::-;15396:6;15404;15412;15461:2;15449:9;15440:7;15436:23;15432:32;15429:119;;;15467:79;;:::i;:::-;15429:119;15587:1;15612:64;15668:7;15659:6;15648:9;15644:22;15612:64;:::i;:::-;15602:74;;15558:128;15725:2;15751:64;15807:7;15798:6;15787:9;15783:22;15751:64;:::i;:::-;15741:74;;15696:129;15864:2;15890:64;15946:7;15937:6;15926:9;15922:22;15890:64;:::i;:::-;15880:74;;15835:129;15308:663;;;;;:::o;15977:332::-;16098:4;16136:2;16125:9;16121:18;16113:26;;16149:71;16217:1;16206:9;16202:17;16193:6;16149:71;:::i;:::-;16230:72;16298:2;16287:9;16283:18;16274:6;16230:72;:::i;:::-;15977:332;;;;;:::o;16315:180::-;16363:77;16360:1;16353:88;16460:4;16457:1;16450:15;16484:4;16481:1;16474:15;16501:225;16641:34;16637:1;16629:6;16625:14;16618:58;16710:8;16705:2;16697:6;16693:15;16686:33;16501:225;:::o;16732:366::-;16874:3;16895:67;16959:2;16954:3;16895:67;:::i;:::-;16888:74;;16971:93;17060:3;16971:93;:::i;:::-;17089:2;17084:3;17080:12;17073:19;;16732:366;;;:::o;17104:419::-;17270:4;17308:2;17297:9;17293:18;17285:26;;17357:9;17351:4;17347:20;17343:1;17332:9;17328:17;17321:47;17385:131;17511:4;17385:131;:::i;:::-;17377:139;;17104:419;;;:::o;17529:223::-;17669:34;17665:1;17657:6;17653:14;17646:58;17738:6;17733:2;17725:6;17721:15;17714:31;17529:223;:::o;17758:366::-;17900:3;17921:67;17985:2;17980:3;17921:67;:::i;:::-;17914:74;;17997:93;18086:3;17997:93;:::i;:::-;18115:2;18110:3;18106:12;18099:19;;17758:366;;;:::o;18130:419::-;18296:4;18334:2;18323:9;18319:18;18311:26;;18383:9;18377:4;18373:20;18369:1;18358:9;18354:17;18347:47;18411:131;18537:4;18411:131;:::i;:::-;18403:139;;18130:419;;;:::o;18555:221::-;18695:34;18691:1;18683:6;18679:14;18672:58;18764:4;18759:2;18751:6;18747:15;18740:29;18555:221;:::o;18782:366::-;18924:3;18945:67;19009:2;19004:3;18945:67;:::i;:::-;18938:74;;19021:93;19110:3;19021:93;:::i;:::-;19139:2;19134:3;19130:12;19123:19;;18782:366;;;:::o;19154:419::-;19320:4;19358:2;19347:9;19343:18;19335:26;;19407:9;19401:4;19397:20;19393:1;19382:9;19378:17;19371:47;19435:131;19561:4;19435:131;:::i;:::-;19427:139;;19154:419;;;:::o;19579:180::-;19719:32;19715:1;19707:6;19703:14;19696:56;19579:180;:::o;19765:366::-;19907:3;19928:67;19992:2;19987:3;19928:67;:::i;:::-;19921:74;;20004:93;20093:3;20004:93;:::i;:::-;20122:2;20117:3;20113:12;20106:19;;19765:366;;;:::o;20137:419::-;20303:4;20341:2;20330:9;20326:18;20318:26;;20390:9;20384:4;20380:20;20376:1;20365:9;20361:17;20354:47;20418:131;20544:4;20418:131;:::i;:::-;20410:139;;20137:419;;;:::o;20562:224::-;20702:34;20698:1;20690:6;20686:14;20679:58;20771:7;20766:2;20758:6;20754:15;20747:32;20562:224;:::o;20792:366::-;20934:3;20955:67;21019:2;21014:3;20955:67;:::i;:::-;20948:74;;21031:93;21120:3;21031:93;:::i;:::-;21149:2;21144:3;21140:12;21133:19;;20792:366;;;:::o;21164:419::-;21330:4;21368:2;21357:9;21353:18;21345:26;;21417:9;21411:4;21407:20;21403:1;21392:9;21388:17;21381:47;21445:131;21571:4;21445:131;:::i;:::-;21437:139;;21164:419;;;:::o;21589:222::-;21729:34;21725:1;21717:6;21713:14;21706:58;21798:5;21793:2;21785:6;21781:15;21774:30;21589:222;:::o;21817:366::-;21959:3;21980:67;22044:2;22039:3;21980:67;:::i;:::-;21973:74;;22056:93;22145:3;22056:93;:::i;:::-;22174:2;22169:3;22165:12;22158:19;;21817:366;;;:::o;22189:419::-;22355:4;22393:2;22382:9;22378:18;22370:26;;22442:9;22436:4;22432:20;22428:1;22417:9;22413:17;22406:47;22470:131;22596:4;22470:131;:::i;:::-;22462:139;;22189:419;;;:::o;22614:228::-;22754:34;22750:1;22742:6;22738:14;22731:58;22823:11;22818:2;22810:6;22806:15;22799:36;22614:228;:::o;22848:366::-;22990:3;23011:67;23075:2;23070:3;23011:67;:::i;:::-;23004:74;;23087:93;23176:3;23087:93;:::i;:::-;23205:2;23200:3;23196:12;23189:19;;22848:366;;;:::o;23220:419::-;23386:4;23424:2;23413:9;23409:18;23401:26;;23473:9;23467:4;23463:20;23459:1;23448:9;23444:17;23437:47;23501:131;23627:4;23501:131;:::i;:::-;23493:139;;23220:419;;;:::o;23645:175::-;23785:27;23781:1;23773:6;23769:14;23762:51;23645:175;:::o;23826:366::-;23968:3;23989:67;24053:2;24048:3;23989:67;:::i;:::-;23982:74;;24065:93;24154:3;24065:93;:::i;:::-;24183:2;24178:3;24174:12;24167:19;;23826:366;;;:::o;24198:419::-;24364:4;24402:2;24391:9;24387:18;24379:26;;24451:9;24445:4;24441:20;24437:1;24426:9;24422:17;24415:47;24479:131;24605:4;24479:131;:::i;:::-;24471:139;;24198:419;;;:::o;24623:191::-;24663:3;24682:20;24700:1;24682:20;:::i;:::-;24677:25;;24716:20;24734:1;24716:20;:::i;:::-;24711:25;;24759:1;24756;24752:9;24745:16;;24780:3;24777:1;24774:10;24771:36;;;24787:18;;:::i;:::-;24771:36;24623:191;;;;:::o;24820:176::-;24960:28;24956:1;24948:6;24944:14;24937:52;24820:176;:::o;25002:366::-;25144:3;25165:67;25229:2;25224:3;25165:67;:::i;:::-;25158:74;;25241:93;25330:3;25241:93;:::i;:::-;25359:2;25354:3;25350:12;25343:19;;25002:366;;;:::o;25374:419::-;25540:4;25578:2;25567:9;25563:18;25555:26;;25627:9;25621:4;25617:20;25613:1;25602:9;25598:17;25591:47;25655:131;25781:4;25655:131;:::i;:::-;25647:139;;25374:419;;;:::o;25799:233::-;25838:3;25861:24;25879:5;25861:24;:::i;:::-;25852:33;;25907:66;25900:5;25897:77;25894:103;;25977:18;;:::i;:::-;25894:103;26024:1;26017:5;26013:13;26006:20;;25799:233;;;:::o;26038:165::-;26178:17;26174:1;26166:6;26162:14;26155:41;26038:165;:::o;26209:366::-;26351:3;26372:67;26436:2;26431:3;26372:67;:::i;:::-;26365:74;;26448:93;26537:3;26448:93;:::i;:::-;26566:2;26561:3;26557:12;26550:19;;26209:366;;;:::o;26581:419::-;26747:4;26785:2;26774:9;26770:18;26762:26;;26834:9;26828:4;26824:20;26820:1;26809:9;26805:17;26798:47;26862:131;26988:4;26862:131;:::i;:::-;26854:139;;26581:419;;;:::o;27006:194::-;27046:4;27066:20;27084:1;27066:20;:::i;:::-;27061:25;;27100:20;27118:1;27100:20;:::i;:::-;27095:25;;27144:1;27141;27137:9;27129:17;;27168:1;27162:4;27159:11;27156:37;;;27173:18;;:::i;:::-;27156:37;27006:194;;;;:::o;27206:180::-;27254:77;27251:1;27244:88;27351:4;27348:1;27341:15;27375:4;27372:1;27365:15;27392:185;27432:1;27449:20;27467:1;27449:20;:::i;:::-;27444:25;;27483:20;27501:1;27483:20;:::i;:::-;27478:25;;27522:1;27512:35;;27527:18;;:::i;:::-;27512:35;27569:1;27566;27562:9;27557:14;;27392:185;;;;:::o;27583:220::-;27723:34;27719:1;27711:6;27707:14;27700:58;27792:3;27787:2;27779:6;27775:15;27768:28;27583:220;:::o;27809:366::-;27951:3;27972:67;28036:2;28031:3;27972:67;:::i;:::-;27965:74;;28048:93;28137:3;28048:93;:::i;:::-;28166:2;28161:3;28157:12;28150:19;;27809:366;;;:::o;28181:419::-;28347:4;28385:2;28374:9;28370:18;28362:26;;28434:9;28428:4;28424:20;28420:1;28409:9;28405:17;28398:47;28462:131;28588:4;28462:131;:::i;:::-;28454:139;;28181:419;;;:::o;28606:180::-;28654:77;28651:1;28644:88;28751:4;28748:1;28741:15;28775:4;28772:1;28765:15;28792:143;28849:5;28880:6;28874:13;28865:22;;28896:33;28923:5;28896:33;:::i;:::-;28792:143;;;;:::o;28941:351::-;29011:6;29060:2;29048:9;29039:7;29035:23;29031:32;29028:119;;;29066:79;;:::i;:::-;29028:119;29186:1;29211:64;29267:7;29258:6;29247:9;29243:22;29211:64;:::i;:::-;29201:74;;29157:128;28941:351;;;;:::o;29298:114::-;29365:6;29399:5;29393:12;29383:22;;29298:114;;;:::o;29418:184::-;29517:11;29551:6;29546:3;29539:19;29591:4;29586:3;29582:14;29567:29;;29418:184;;;;:::o;29608:132::-;29675:4;29698:3;29690:11;;29728:4;29723:3;29719:14;29711:22;;29608:132;;;:::o;29746:108::-;29823:24;29841:5;29823:24;:::i;:::-;29818:3;29811:37;29746:108;;:::o;29860:179::-;29929:10;29950:46;29992:3;29984:6;29950:46;:::i;:::-;30028:4;30023:3;30019:14;30005:28;;29860:179;;;;:::o;30045:113::-;30115:4;30147;30142:3;30138:14;30130:22;;30045:113;;;:::o;30194:732::-;30313:3;30342:54;30390:5;30342:54;:::i;:::-;30412:86;30491:6;30486:3;30412:86;:::i;:::-;30405:93;;30522:56;30572:5;30522:56;:::i;:::-;30601:7;30632:1;30617:284;30642:6;30639:1;30636:13;30617:284;;;30718:6;30712:13;30745:63;30804:3;30789:13;30745:63;:::i;:::-;30738:70;;30831:60;30884:6;30831:60;:::i;:::-;30821:70;;30677:224;30664:1;30661;30657:9;30652:14;;30617:284;;;30621:14;30917:3;30910:10;;30318:608;;;30194:732;;;;:::o;30932:831::-;31195:4;31233:3;31222:9;31218:19;31210:27;;31247:71;31315:1;31304:9;31300:17;31291:6;31247:71;:::i;:::-;31328:80;31404:2;31393:9;31389:18;31380:6;31328:80;:::i;:::-;31455:9;31449:4;31445:20;31440:2;31429:9;31425:18;31418:48;31483:108;31586:4;31577:6;31483:108;:::i;:::-;31475:116;;31601:72;31669:2;31658:9;31654:18;31645:6;31601:72;:::i;:::-;31683:73;31751:3;31740:9;31736:19;31727:6;31683:73;:::i;:::-;30932:831;;;;;;;;:::o;31769:177::-;31909:29;31905:1;31897:6;31893:14;31886:53;31769:177;:::o;31952:366::-;32094:3;32115:67;32179:2;32174:3;32115:67;:::i;:::-;32108:74;;32191:93;32280:3;32191:93;:::i;:::-;32309:2;32304:3;32300:12;32293:19;;31952:366;;;:::o;32324:419::-;32490:4;32528:2;32517:9;32513:18;32505:26;;32577:9;32571:4;32567:20;32563:1;32552:9;32548:17;32541:47;32605:131;32731:4;32605:131;:::i;:::-;32597:139;;32324:419;;;:::o

Swarm Source

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