ETH Price: $2,617.71 (-2.91%)

Token

Kanpeki Chojin (CHOJIN)
 

Overview

Max Total Supply

1,000,000 CHOJIN

Holders

75

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
34,584.485554361 CHOJIN

Value
$0.00
0xc94a6f08dc6a6e5a4635c80df586c8b2a9f2219e
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:
CHOJIN

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

// https://t.me/kanpekichojin

pragma solidity ^0.8.4;

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;
    address private _previousOwner;
    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 transferOwnership(address _newOwner) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, _newOwner);
        _owner = _newOwner;
        
    }

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

}  

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 CHOJIN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private time;
    uint256 private _tax;

    uint256 private constant _tTotal = 1 * 10**6 * 10**9;
    uint256 private fee1=40;
    uint256 private fee2=40;
    string private constant _name = "Kanpeki Chojin";
    string private constant _symbol = "CHOJIN";
    uint256 private _maxTxAmount = _tTotal.div(50);
    uint256 private _maxWalletAmount = _tTotal.div(50);
    uint256 private minBalance = _tTotal.div(1000);


    uint8 private constant _decimals = 9;
    address payable private _deployer;
    address payable private _buyBackWallet;
    address payable private _marketingWallet;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () payable {
        _deployer = payable(msg.sender);
        _buyBackWallet = payable(0x404Fb98FF07913fdE432325e6297853e209a9DE8);
        _marketingWallet = payable(0x1b5B33951CbD4e5571961BdA20dC955484d2552f);
        _tOwned[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_deployer] = true;
        _isExcludedFromFee[uniswapV2Pair] = true;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        emit Transfer(address(0),address(this),_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 _tOwned[account];
    }

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

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

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

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

    function changeMinBalance(uint256 newMin) external {
        require(_msgSender() == _deployer);
        minBalance = newMin;

    }

    function changeFees(uint256 _buy, uint256 _sell) external {
        require(_msgSender() == _deployer);
        require(_buy <= 40 && _sell <= 40,"cannot set fees above 4%");
        fee1 = _buy;
        fee2 = _sell;
    }

    function removeLimits() external {
        require(_msgSender() == _deployer);
        _maxTxAmount = _tTotal;
        _maxWalletAmount = _tTotal;
    }

    function excludeFromFees(address target) external {
        require(_msgSender() == _deployer);
        _isExcludedFromFee[target] = 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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        _tax = fee1;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && (block.timestamp < time)){
                // Cooldown
                require((_tOwned[to] + amount) <= _maxWalletAmount,"not a chance bub");
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            
            if (!inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from]) {
                require(block.timestamp > time,"Sells prohibited for the first 4 minutes");
                uint256 contractTokenBalance = balanceOf(address(this));
                if(contractTokenBalance > minBalance){
                    swapTokensForEth(contractTokenBalance);
                    uint256 contractETHBalance = address(this).balance;
                    if(contractETHBalance > 0) {
                        sendETHToFee(address(this).balance);
                    }
                }
            }
        }
        if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
            _tax = fee2;
        }		
        _transferStandard(from,to,amount);
    }

    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 addLiquidity(uint256 tokenAmount,uint256 ethAmount,address target) private lockTheSwap{
        _approve(address(this),address(uniswapV2Router),tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,target,block.timestamp);
    }

    
    function sendETHToFee(uint256 amount) private {
        _deployer.transfer(amount.div(100).mul(45));
        _buyBackWallet.transfer(amount.div(100).mul(45));
        _marketingWallet.transfer(amount.div(10));
    }
    
    function openTrading(address[] memory addresses, uint256[] memory amounts) external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        addLiquidity(balanceOf(address(this)),address(this).balance,owner());
        for(uint i=0;i<addresses.length;i++){_tOwned[addresses[i]]=amounts[i]*10**9;}
        swapEnabled = true;
        tradingOpen = true;
        time = block.timestamp + (4 minutes);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 transferAmount,uint256 tfee) = _getTValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _tOwned[recipient] = _tOwned[recipient].add(transferAmount); 
        _tOwned[address(this)] = _tOwned[address(this)].add(tfee);
        emit Transfer(sender, recipient, transferAmount);
    }

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _deployer);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _deployer);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
   
    function _getTValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tFee = tAmount.mul(_tax).div(1000);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

    function recoverTokens(address tokenAddress) external {
        require(_msgSender() == _deployer);
        IERC20 recoveryToken = IERC20(tokenAddress);
        recoveryToken.transfer(_deployer,recoveryToken.balanceOf(address(this)));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMin","type":"uint256"}],"name":"changeMinBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","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"},{"stateMutability":"payable","type":"receive"}]

608060405260286009556028600a5562000030603266038d7ea4c680006200073060201b6200133b1790919060201c565b600b5562000055603266038d7ea4c680006200073060201b6200133b1790919060201c565b600c556200007b6103e866038d7ea4c680006200073060201b6200133b1790919060201c565b600d556000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506000620000c66200078260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073404fb98ff07913fde432325e6297853e209a9de8600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731b5b33951cbd4e5571961bda20dc955484d2552f601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066038d7ea4c68000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620002b06200078a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200050b57600080fd5b505afa15801562000520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000546919062000832565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620005cb57600080fd5b505afa158015620005e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000606919062000832565b6040518363ffffffff1660e01b815260040162000625929190620008c7565b602060405180830381600087803b1580156200064057600080fd5b505af115801562000655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067b919062000832565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c6800060405162000722919062000918565b60405180910390a362000a5c565b60006200077a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007b360201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620007fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f49190620008f4565b60405180910390fd5b50600083856200080e919062000951565b9050809150509392505050565b6000815190506200082c8162000a42565b92915050565b6000602082840312156200084b576200084a62000a2c565b5b60006200085b848285016200081b565b91505092915050565b6200086f8162000989565b82525050565b6000620008828262000935565b6200088e818562000940565b9350620008a0818560208601620009c7565b620008ab8162000a31565b840191505092915050565b620008c181620009bd565b82525050565b6000604082019050620008de600083018562000864565b620008ed602083018462000864565b9392505050565b6000602082019050818103600083015262000910818462000875565b905092915050565b60006020820190506200092f6000830184620008b6565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200095e82620009bd565b91506200096b83620009bd565b9250826200097e576200097d620009fd565b5b828204905092915050565b600062000996826200099d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620009e7578082015181840152602081019050620009ca565b83811115620009f7576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b62000a4d8162000989565b811462000a5957600080fd5b50565b6138408062000a6c6000396000f3fe6080604052600436106101395760003560e01c8063715018a6116100ab578063b515566a1161006f578063b515566a146103f9578063c3c8cd8014610422578063ccbf6ae214610439578063dd62ed3e14610462578063e57f14e11461049f578063f2fde38b146104c857610140565b8063715018a614610338578063751039fc1461034f5780638da5cb5b1461036657806395d89b4114610391578063a9059cbb146103bc57610140565b806323b872dd116100fd57806323b872dd1461022a578063273123b714610267578063313ce567146102905780634ea18fab146102bb5780636fc3eaec146102e457806370a08231146102fb57610140565b806306fdde0314610145578063095ea7b31461017057806316114acd146101ad57806318160ddd146101d657806321ecff5b1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a6104f1565b6040516101679190612e63565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906128cc565b61052e565b6040516101a49190612e48565b60405180910390f35b3480156101b957600080fd5b506101d460048036038101906101cf91906127df565b61054c565b005b3480156101e257600080fd5b506101eb6106ee565b6040516101f89190613005565b60405180910390f35b34801561020d57600080fd5b5061022860048036038101906102239190612a54565b6106fd565b005b34801561023657600080fd5b50610251600480360381019061024c9190612879565b6107c1565b60405161025e9190612e48565b60405180910390f35b34801561027357600080fd5b5061028e600480360381019061028991906127df565b61089a565b005b34801561029c57600080fd5b506102a561098a565b6040516102b2919061307a565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906129fa565b610993565b005b3480156102f057600080fd5b506102f96109fe565b005b34801561030757600080fd5b50610322600480360381019061031d91906127df565b610a70565b60405161032f9190613005565b60405180910390f35b34801561034457600080fd5b5061034d610ab9565b005b34801561035b57600080fd5b50610364610c0c565b005b34801561037257600080fd5b5061037b610c8b565b6040516103889190612da3565b60405180910390f35b34801561039d57600080fd5b506103a6610cb4565b6040516103b39190612e63565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de91906128cc565b610cf1565b6040516103f09190612e48565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b919061290c565b610d0f565b005b34801561042e57600080fd5b50610437610e39565b005b34801561044557600080fd5b50610460600480360381019061045b9190612955565b610eb3565b005b34801561046e57600080fd5b5061048960048036038101906104849190612839565b6110a6565b6040516104969190613005565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c191906127df565b61112d565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906127df565b6111e9565b005b60606040518060400160405280600e81526020017f4b616e70656b692043686f6a696e000000000000000000000000000000000000815250905090565b600061054261053b611385565b848461138d565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661058d611385565b73ffffffffffffffffffffffffffffffffffffffff16146105ad57600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161062a9190612da3565b60206040518083038186803b15801561064257600080fd5b505afa158015610656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067a9190612a27565b6040518363ffffffff1660e01b8152600401610697929190612dbe565b602060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e991906129cd565b505050565b600066038d7ea4c68000905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661073e611385565b73ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b60288211158015610770575060288111155b6107af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a690612f05565b60405180910390fd5b8160098190555080600a819055505050565b60006107ce848484611558565b61088f846107da611385565b61088a856040518060600160405280602881526020016137e360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610840611385565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c789092919063ffffffff16565b61138d565b600190509392505050565b6108a2611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092690612f45565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109d4611385565b73ffffffffffffffffffffffffffffffffffffffff16146109f457600080fd5b80600d8190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a3f611385565b73ffffffffffffffffffffffffffffffffffffffff1614610a5f57600080fd5b6000479050610a6d81611cdc565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ac1611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612f45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c4d611385565b73ffffffffffffffffffffffffffffffffffffffff1614610c6d57600080fd5b66038d7ea4c68000600b8190555066038d7ea4c68000600c81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f43484f4a494e0000000000000000000000000000000000000000000000000000815250905090565b6000610d05610cfe611385565b8484611558565b6001905092915050565b610d17611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90612f45565b60405180910390fd5b60005b8151811015610e3557600160056000848481518110610dc957610dc8613424565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e2d9061337d565b915050610da7565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e7a611385565b73ffffffffffffffffffffffffffffffffffffffff1614610e9a57600080fd5b6000610ea530610a70565b9050610eb081611e79565b50565b610ebb611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f90612f45565b60405180910390fd5b601260149054906101000a900460ff1615610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90612fc5565b60405180910390fd5b610fb2610fa430610a70565b47610fad610c8b565b612101565b60005b825181101561105857633b9aca00828281518110610fd657610fd5613424565b5b6020026020010151610fe891906131ee565b60026000858481518110610fff57610ffe613424565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806110509061337d565b915050610fb5565b506001601260166101000a81548160ff0219169083151502179055506001601260146101000a81548160ff02191690831515021790555060f04261109c9190613167565b6007819055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661116e611385565b73ffffffffffffffffffffffffffffffffffffffff161461118e57600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6111f1611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590612f45565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061137d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612225565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490612fa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490612ec5565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161154b9190613005565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90612f85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612e85565b60405180910390fd5b6000811161167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612f65565b60405180910390fd5b60095460088190555061168c610c8b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116fa57506116ca610c8b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b5857600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117a35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6117ac57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118575750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118ad5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118ba575060075442105b156119f957600c5481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461190d9190613167565b111561194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194590612ea5565b60405180910390fd5b600b5481111561195d57600080fd5b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106119a857600080fd5b601e426119b59190613167565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260159054906101000a900460ff16158015611a645750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a7c5750601260169054906101000a900460ff165b8015611ad25750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b57576007544211611b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1290612fe5565b60405180910390fd5b6000611b2630610a70565b9050600d54811115611b5557611b3b81611e79565b60004790506000811115611b5357611b5247611cdc565b5b505b505b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c035750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c595750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6857600a546008819055505b611c73838383612288565b505050565b6000838311158290611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb79190612e63565b60405180910390fd5b5060008385611ccf9190613248565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d3f602d611d3160648661133b90919063ffffffff16565b6124c390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d6a573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611dce602d611dc060648661133b90919063ffffffff16565b6124c390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611df9573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611e4a600a8461133b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611e75573d6000803e3d6000fd5b5050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611eb157611eb0613453565b5b604051908082528060200260200182016040528015611edf5781602001602082028036833780820191505090505b5090503081600081518110611ef757611ef6613424565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9957600080fd5b505afa158015611fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd1919061280c565b81600181518110611fe557611fe4613424565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204c30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461138d565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120b0959493929190613020565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b6001601260156101000a81548160ff02191690831515021790555061214930601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168561138d565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b81526004016121b096959493929190612de7565b6060604051808303818588803b1580156121c957600080fd5b505af11580156121dd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122029190612a94565b5050506000601260156101000a81548160ff021916908315150217905550505050565b6000808311829061226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639190612e63565b60405180910390fd5b506000838561227b91906131bd565b9050809150509392505050565b6000806122948361253e565b915091506122ea83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259290919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061241481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124b49190613005565b60405180910390a35050505050565b6000808314156124d65760009050612538565b600082846124e491906131ee565b90508284826124f391906131bd565b14612533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252a90612f25565b60405180910390fd5b809150505b92915050565b600080600061256c6103e861255e600854876124c390919063ffffffff16565b61133b90919063ffffffff16565b90506000612583828661259290919063ffffffff16565b90508082935093505050915091565b60006125d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c78565b905092915050565b60008082846125eb9190613167565b905083811015612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790612ee5565b60405180910390fd5b8091505092915050565b600061264d612648846130ba565b613095565b905080838252602082019050828560208602820111156126705761266f613487565b5b60005b858110156126a05781612686888261271a565b845260208401935060208301925050600181019050612673565b5050509392505050565b60006126bd6126b8846130e6565b613095565b905080838252602082019050828560208602820111156126e0576126df613487565b5b60005b8581101561271057816126f688826127b5565b8452602084019350602083019250506001810190506126e3565b5050509392505050565b6000813590506127298161379d565b92915050565b60008151905061273e8161379d565b92915050565b600082601f83011261275957612758613482565b5b813561276984826020860161263a565b91505092915050565b600082601f83011261278757612786613482565b5b81356127978482602086016126aa565b91505092915050565b6000815190506127af816137b4565b92915050565b6000813590506127c4816137cb565b92915050565b6000815190506127d9816137cb565b92915050565b6000602082840312156127f5576127f4613491565b5b60006128038482850161271a565b91505092915050565b60006020828403121561282257612821613491565b5b60006128308482850161272f565b91505092915050565b600080604083850312156128505761284f613491565b5b600061285e8582860161271a565b925050602061286f8582860161271a565b9150509250929050565b60008060006060848603121561289257612891613491565b5b60006128a08682870161271a565b93505060206128b18682870161271a565b92505060406128c2868287016127b5565b9150509250925092565b600080604083850312156128e3576128e2613491565b5b60006128f18582860161271a565b9250506020612902858286016127b5565b9150509250929050565b60006020828403121561292257612921613491565b5b600082013567ffffffffffffffff8111156129405761293f61348c565b5b61294c84828501612744565b91505092915050565b6000806040838503121561296c5761296b613491565b5b600083013567ffffffffffffffff81111561298a5761298961348c565b5b61299685828601612744565b925050602083013567ffffffffffffffff8111156129b7576129b661348c565b5b6129c385828601612772565b9150509250929050565b6000602082840312156129e3576129e2613491565b5b60006129f1848285016127a0565b91505092915050565b600060208284031215612a1057612a0f613491565b5b6000612a1e848285016127b5565b91505092915050565b600060208284031215612a3d57612a3c613491565b5b6000612a4b848285016127ca565b91505092915050565b60008060408385031215612a6b57612a6a613491565b5b6000612a79858286016127b5565b9250506020612a8a858286016127b5565b9150509250929050565b600080600060608486031215612aad57612aac613491565b5b6000612abb868287016127ca565b9350506020612acc868287016127ca565b9250506040612add868287016127ca565b9150509250925092565b6000612af38383612b0e565b60208301905092915050565b612b08816132d1565b82525050565b612b178161327c565b82525050565b612b268161327c565b82525050565b6000612b3782613122565b612b418185613145565b9350612b4c83613112565b8060005b83811015612b7d578151612b648882612ae7565b9750612b6f83613138565b925050600181019050612b50565b5085935050505092915050565b612b938161328e565b82525050565b612ba2816132e3565b82525050565b6000612bb38261312d565b612bbd8185613156565b9350612bcd818560208601613319565b612bd681613496565b840191505092915050565b6000612bee602383613156565b9150612bf9826134a7565b604082019050919050565b6000612c11601083613156565b9150612c1c826134f6565b602082019050919050565b6000612c34602283613156565b9150612c3f8261351f565b604082019050919050565b6000612c57601b83613156565b9150612c628261356e565b602082019050919050565b6000612c7a601883613156565b9150612c8582613597565b602082019050919050565b6000612c9d602183613156565b9150612ca8826135c0565b604082019050919050565b6000612cc0602083613156565b9150612ccb8261360f565b602082019050919050565b6000612ce3602983613156565b9150612cee82613638565b604082019050919050565b6000612d06602583613156565b9150612d1182613687565b604082019050919050565b6000612d29602483613156565b9150612d34826136d6565b604082019050919050565b6000612d4c601783613156565b9150612d5782613725565b602082019050919050565b6000612d6f602883613156565b9150612d7a8261374e565b604082019050919050565b612d8e816132ba565b82525050565b612d9d816132c4565b82525050565b6000602082019050612db86000830184612b1d565b92915050565b6000604082019050612dd36000830185612aff565b612de06020830184612d85565b9392505050565b600060c082019050612dfc6000830189612b1d565b612e096020830188612d85565b612e166040830187612b99565b612e236060830186612b99565b612e306080830185612b1d565b612e3d60a0830184612d85565b979650505050505050565b6000602082019050612e5d6000830184612b8a565b92915050565b60006020820190508181036000830152612e7d8184612ba8565b905092915050565b60006020820190508181036000830152612e9e81612be1565b9050919050565b60006020820190508181036000830152612ebe81612c04565b9050919050565b60006020820190508181036000830152612ede81612c27565b9050919050565b60006020820190508181036000830152612efe81612c4a565b9050919050565b60006020820190508181036000830152612f1e81612c6d565b9050919050565b60006020820190508181036000830152612f3e81612c90565b9050919050565b60006020820190508181036000830152612f5e81612cb3565b9050919050565b60006020820190508181036000830152612f7e81612cd6565b9050919050565b60006020820190508181036000830152612f9e81612cf9565b9050919050565b60006020820190508181036000830152612fbe81612d1c565b9050919050565b60006020820190508181036000830152612fde81612d3f565b9050919050565b60006020820190508181036000830152612ffe81612d62565b9050919050565b600060208201905061301a6000830184612d85565b92915050565b600060a0820190506130356000830188612d85565b6130426020830187612b99565b81810360408301526130548186612b2c565b90506130636060830185612b1d565b6130706080830184612d85565b9695505050505050565b600060208201905061308f6000830184612d94565b92915050565b600061309f6130b0565b90506130ab828261334c565b919050565b6000604051905090565b600067ffffffffffffffff8211156130d5576130d4613453565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561310157613100613453565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613172826132ba565b915061317d836132ba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131b2576131b16133c6565b5b828201905092915050565b60006131c8826132ba565b91506131d3836132ba565b9250826131e3576131e26133f5565b5b828204905092915050565b60006131f9826132ba565b9150613204836132ba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561323d5761323c6133c6565b5b828202905092915050565b6000613253826132ba565b915061325e836132ba565b925082821015613271576132706133c6565b5b828203905092915050565b60006132878261329a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132dc826132f5565b9050919050565b60006132ee826132ba565b9050919050565b600061330082613307565b9050919050565b60006133128261329a565b9050919050565b60005b8381101561333757808201518184015260208101905061331c565b83811115613346576000848401525b50505050565b61335582613496565b810181811067ffffffffffffffff8211171561337457613373613453565b5b80604052505050565b6000613388826132ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133bb576133ba6133c6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f742061206368616e63652062756200000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f63616e6e6f742073657420666565732061626f76652034250000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203460008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b6137a68161327c565b81146137b157600080fd5b50565b6137bd8161328e565b81146137c857600080fd5b50565b6137d4816132ba565b81146137df57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122015a608cea44e446f8e3becceaea7c34bf316bcd20c750827e159996ea934779f64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101395760003560e01c8063715018a6116100ab578063b515566a1161006f578063b515566a146103f9578063c3c8cd8014610422578063ccbf6ae214610439578063dd62ed3e14610462578063e57f14e11461049f578063f2fde38b146104c857610140565b8063715018a614610338578063751039fc1461034f5780638da5cb5b1461036657806395d89b4114610391578063a9059cbb146103bc57610140565b806323b872dd116100fd57806323b872dd1461022a578063273123b714610267578063313ce567146102905780634ea18fab146102bb5780636fc3eaec146102e457806370a08231146102fb57610140565b806306fdde0314610145578063095ea7b31461017057806316114acd146101ad57806318160ddd146101d657806321ecff5b1461020157610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a6104f1565b6040516101679190612e63565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906128cc565b61052e565b6040516101a49190612e48565b60405180910390f35b3480156101b957600080fd5b506101d460048036038101906101cf91906127df565b61054c565b005b3480156101e257600080fd5b506101eb6106ee565b6040516101f89190613005565b60405180910390f35b34801561020d57600080fd5b5061022860048036038101906102239190612a54565b6106fd565b005b34801561023657600080fd5b50610251600480360381019061024c9190612879565b6107c1565b60405161025e9190612e48565b60405180910390f35b34801561027357600080fd5b5061028e600480360381019061028991906127df565b61089a565b005b34801561029c57600080fd5b506102a561098a565b6040516102b2919061307a565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906129fa565b610993565b005b3480156102f057600080fd5b506102f96109fe565b005b34801561030757600080fd5b50610322600480360381019061031d91906127df565b610a70565b60405161032f9190613005565b60405180910390f35b34801561034457600080fd5b5061034d610ab9565b005b34801561035b57600080fd5b50610364610c0c565b005b34801561037257600080fd5b5061037b610c8b565b6040516103889190612da3565b60405180910390f35b34801561039d57600080fd5b506103a6610cb4565b6040516103b39190612e63565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de91906128cc565b610cf1565b6040516103f09190612e48565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b919061290c565b610d0f565b005b34801561042e57600080fd5b50610437610e39565b005b34801561044557600080fd5b50610460600480360381019061045b9190612955565b610eb3565b005b34801561046e57600080fd5b5061048960048036038101906104849190612839565b6110a6565b6040516104969190613005565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c191906127df565b61112d565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906127df565b6111e9565b005b60606040518060400160405280600e81526020017f4b616e70656b692043686f6a696e000000000000000000000000000000000000815250905090565b600061054261053b611385565b848461138d565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661058d611385565b73ffffffffffffffffffffffffffffffffffffffff16146105ad57600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161062a9190612da3565b60206040518083038186803b15801561064257600080fd5b505afa158015610656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067a9190612a27565b6040518363ffffffff1660e01b8152600401610697929190612dbe565b602060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e991906129cd565b505050565b600066038d7ea4c68000905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661073e611385565b73ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b60288211158015610770575060288111155b6107af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a690612f05565b60405180910390fd5b8160098190555080600a819055505050565b60006107ce848484611558565b61088f846107da611385565b61088a856040518060600160405280602881526020016137e360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610840611385565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c789092919063ffffffff16565b61138d565b600190509392505050565b6108a2611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092690612f45565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109d4611385565b73ffffffffffffffffffffffffffffffffffffffff16146109f457600080fd5b80600d8190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a3f611385565b73ffffffffffffffffffffffffffffffffffffffff1614610a5f57600080fd5b6000479050610a6d81611cdc565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ac1611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612f45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c4d611385565b73ffffffffffffffffffffffffffffffffffffffff1614610c6d57600080fd5b66038d7ea4c68000600b8190555066038d7ea4c68000600c81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f43484f4a494e0000000000000000000000000000000000000000000000000000815250905090565b6000610d05610cfe611385565b8484611558565b6001905092915050565b610d17611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90612f45565b60405180910390fd5b60005b8151811015610e3557600160056000848481518110610dc957610dc8613424565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e2d9061337d565b915050610da7565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e7a611385565b73ffffffffffffffffffffffffffffffffffffffff1614610e9a57600080fd5b6000610ea530610a70565b9050610eb081611e79565b50565b610ebb611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f90612f45565b60405180910390fd5b601260149054906101000a900460ff1615610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90612fc5565b60405180910390fd5b610fb2610fa430610a70565b47610fad610c8b565b612101565b60005b825181101561105857633b9aca00828281518110610fd657610fd5613424565b5b6020026020010151610fe891906131ee565b60026000858481518110610fff57610ffe613424565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806110509061337d565b915050610fb5565b506001601260166101000a81548160ff0219169083151502179055506001601260146101000a81548160ff02191690831515021790555060f04261109c9190613167565b6007819055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661116e611385565b73ffffffffffffffffffffffffffffffffffffffff161461118e57600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6111f1611385565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590612f45565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061137d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612225565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490612fa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490612ec5565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161154b9190613005565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90612f85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612e85565b60405180910390fd5b6000811161167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612f65565b60405180910390fd5b60095460088190555061168c610c8b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116fa57506116ca610c8b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b5857600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117a35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6117ac57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118575750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118ad5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118ba575060075442105b156119f957600c5481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461190d9190613167565b111561194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194590612ea5565b60405180910390fd5b600b5481111561195d57600080fd5b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106119a857600080fd5b601e426119b59190613167565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260159054906101000a900460ff16158015611a645750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a7c5750601260169054906101000a900460ff165b8015611ad25750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b57576007544211611b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1290612fe5565b60405180910390fd5b6000611b2630610a70565b9050600d54811115611b5557611b3b81611e79565b60004790506000811115611b5357611b5247611cdc565b5b505b505b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c035750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c595750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6857600a546008819055505b611c73838383612288565b505050565b6000838311158290611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb79190612e63565b60405180910390fd5b5060008385611ccf9190613248565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d3f602d611d3160648661133b90919063ffffffff16565b6124c390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d6a573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611dce602d611dc060648661133b90919063ffffffff16565b6124c390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611df9573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611e4a600a8461133b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611e75573d6000803e3d6000fd5b5050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611eb157611eb0613453565b5b604051908082528060200260200182016040528015611edf5781602001602082028036833780820191505090505b5090503081600081518110611ef757611ef6613424565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9957600080fd5b505afa158015611fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd1919061280c565b81600181518110611fe557611fe4613424565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204c30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461138d565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120b0959493929190613020565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b6001601260156101000a81548160ff02191690831515021790555061214930601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168561138d565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b81526004016121b096959493929190612de7565b6060604051808303818588803b1580156121c957600080fd5b505af11580156121dd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122029190612a94565b5050506000601260156101000a81548160ff021916908315150217905550505050565b6000808311829061226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639190612e63565b60405180910390fd5b506000838561227b91906131bd565b9050809150509392505050565b6000806122948361253e565b915091506122ea83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259290919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061241481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dc90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124b49190613005565b60405180910390a35050505050565b6000808314156124d65760009050612538565b600082846124e491906131ee565b90508284826124f391906131bd565b14612533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252a90612f25565b60405180910390fd5b809150505b92915050565b600080600061256c6103e861255e600854876124c390919063ffffffff16565b61133b90919063ffffffff16565b90506000612583828661259290919063ffffffff16565b90508082935093505050915091565b60006125d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c78565b905092915050565b60008082846125eb9190613167565b905083811015612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790612ee5565b60405180910390fd5b8091505092915050565b600061264d612648846130ba565b613095565b905080838252602082019050828560208602820111156126705761266f613487565b5b60005b858110156126a05781612686888261271a565b845260208401935060208301925050600181019050612673565b5050509392505050565b60006126bd6126b8846130e6565b613095565b905080838252602082019050828560208602820111156126e0576126df613487565b5b60005b8581101561271057816126f688826127b5565b8452602084019350602083019250506001810190506126e3565b5050509392505050565b6000813590506127298161379d565b92915050565b60008151905061273e8161379d565b92915050565b600082601f83011261275957612758613482565b5b813561276984826020860161263a565b91505092915050565b600082601f83011261278757612786613482565b5b81356127978482602086016126aa565b91505092915050565b6000815190506127af816137b4565b92915050565b6000813590506127c4816137cb565b92915050565b6000815190506127d9816137cb565b92915050565b6000602082840312156127f5576127f4613491565b5b60006128038482850161271a565b91505092915050565b60006020828403121561282257612821613491565b5b60006128308482850161272f565b91505092915050565b600080604083850312156128505761284f613491565b5b600061285e8582860161271a565b925050602061286f8582860161271a565b9150509250929050565b60008060006060848603121561289257612891613491565b5b60006128a08682870161271a565b93505060206128b18682870161271a565b92505060406128c2868287016127b5565b9150509250925092565b600080604083850312156128e3576128e2613491565b5b60006128f18582860161271a565b9250506020612902858286016127b5565b9150509250929050565b60006020828403121561292257612921613491565b5b600082013567ffffffffffffffff8111156129405761293f61348c565b5b61294c84828501612744565b91505092915050565b6000806040838503121561296c5761296b613491565b5b600083013567ffffffffffffffff81111561298a5761298961348c565b5b61299685828601612744565b925050602083013567ffffffffffffffff8111156129b7576129b661348c565b5b6129c385828601612772565b9150509250929050565b6000602082840312156129e3576129e2613491565b5b60006129f1848285016127a0565b91505092915050565b600060208284031215612a1057612a0f613491565b5b6000612a1e848285016127b5565b91505092915050565b600060208284031215612a3d57612a3c613491565b5b6000612a4b848285016127ca565b91505092915050565b60008060408385031215612a6b57612a6a613491565b5b6000612a79858286016127b5565b9250506020612a8a858286016127b5565b9150509250929050565b600080600060608486031215612aad57612aac613491565b5b6000612abb868287016127ca565b9350506020612acc868287016127ca565b9250506040612add868287016127ca565b9150509250925092565b6000612af38383612b0e565b60208301905092915050565b612b08816132d1565b82525050565b612b178161327c565b82525050565b612b268161327c565b82525050565b6000612b3782613122565b612b418185613145565b9350612b4c83613112565b8060005b83811015612b7d578151612b648882612ae7565b9750612b6f83613138565b925050600181019050612b50565b5085935050505092915050565b612b938161328e565b82525050565b612ba2816132e3565b82525050565b6000612bb38261312d565b612bbd8185613156565b9350612bcd818560208601613319565b612bd681613496565b840191505092915050565b6000612bee602383613156565b9150612bf9826134a7565b604082019050919050565b6000612c11601083613156565b9150612c1c826134f6565b602082019050919050565b6000612c34602283613156565b9150612c3f8261351f565b604082019050919050565b6000612c57601b83613156565b9150612c628261356e565b602082019050919050565b6000612c7a601883613156565b9150612c8582613597565b602082019050919050565b6000612c9d602183613156565b9150612ca8826135c0565b604082019050919050565b6000612cc0602083613156565b9150612ccb8261360f565b602082019050919050565b6000612ce3602983613156565b9150612cee82613638565b604082019050919050565b6000612d06602583613156565b9150612d1182613687565b604082019050919050565b6000612d29602483613156565b9150612d34826136d6565b604082019050919050565b6000612d4c601783613156565b9150612d5782613725565b602082019050919050565b6000612d6f602883613156565b9150612d7a8261374e565b604082019050919050565b612d8e816132ba565b82525050565b612d9d816132c4565b82525050565b6000602082019050612db86000830184612b1d565b92915050565b6000604082019050612dd36000830185612aff565b612de06020830184612d85565b9392505050565b600060c082019050612dfc6000830189612b1d565b612e096020830188612d85565b612e166040830187612b99565b612e236060830186612b99565b612e306080830185612b1d565b612e3d60a0830184612d85565b979650505050505050565b6000602082019050612e5d6000830184612b8a565b92915050565b60006020820190508181036000830152612e7d8184612ba8565b905092915050565b60006020820190508181036000830152612e9e81612be1565b9050919050565b60006020820190508181036000830152612ebe81612c04565b9050919050565b60006020820190508181036000830152612ede81612c27565b9050919050565b60006020820190508181036000830152612efe81612c4a565b9050919050565b60006020820190508181036000830152612f1e81612c6d565b9050919050565b60006020820190508181036000830152612f3e81612c90565b9050919050565b60006020820190508181036000830152612f5e81612cb3565b9050919050565b60006020820190508181036000830152612f7e81612cd6565b9050919050565b60006020820190508181036000830152612f9e81612cf9565b9050919050565b60006020820190508181036000830152612fbe81612d1c565b9050919050565b60006020820190508181036000830152612fde81612d3f565b9050919050565b60006020820190508181036000830152612ffe81612d62565b9050919050565b600060208201905061301a6000830184612d85565b92915050565b600060a0820190506130356000830188612d85565b6130426020830187612b99565b81810360408301526130548186612b2c565b90506130636060830185612b1d565b6130706080830184612d85565b9695505050505050565b600060208201905061308f6000830184612d94565b92915050565b600061309f6130b0565b90506130ab828261334c565b919050565b6000604051905090565b600067ffffffffffffffff8211156130d5576130d4613453565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561310157613100613453565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613172826132ba565b915061317d836132ba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131b2576131b16133c6565b5b828201905092915050565b60006131c8826132ba565b91506131d3836132ba565b9250826131e3576131e26133f5565b5b828204905092915050565b60006131f9826132ba565b9150613204836132ba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561323d5761323c6133c6565b5b828202905092915050565b6000613253826132ba565b915061325e836132ba565b925082821015613271576132706133c6565b5b828203905092915050565b60006132878261329a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132dc826132f5565b9050919050565b60006132ee826132ba565b9050919050565b600061330082613307565b9050919050565b60006133128261329a565b9050919050565b60005b8381101561333757808201518184015260208101905061331c565b83811115613346576000848401525b50505050565b61335582613496565b810181811067ffffffffffffffff8211171561337457613373613453565b5b80604052505050565b6000613388826132ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133bb576133ba6133c6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f742061206368616e63652062756200000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f63616e6e6f742073657420666565732061626f76652034250000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203460008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b6137a68161327c565b81146137b157600080fd5b50565b6137bd8161328e565b81146137c857600080fd5b50565b6137d4816132ba565b81146137df57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122015a608cea44e446f8e3becceaea7c34bf316bcd20c750827e159996ea934779f64736f6c63430008070033

Deployed Bytecode Sourcemap

3733:9217:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5753:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6584:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12703:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6030:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7223:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6753:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11495:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5939:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7079:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12262:188;;;;;;;;;;;;;:::i;:::-;;6133:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2812:148;;;;;;;;;;;;;:::i;:::-;;7459:156;;;;;;;;;;;;;:::i;:::-;;2417:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5844:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6258:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11319:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12061:189;;;;;;;;;;;;;:::i;:::-;;10874:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6433:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7623:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2631:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5753:83;5790:13;5823:5;;;;;;;;;;;;;;;;;5816:12;;5753:83;:::o;6584:161::-;6659:4;6676:39;6685:12;:10;:12::i;:::-;6699:7;6708:6;6676:8;:39::i;:::-;6733:4;6726:11;;6584:161;;;;:::o;12703:244::-;12792:9;;;;;;;;;;;12776:25;;:12;:10;:12::i;:::-;:25;;;12768:34;;;;;;12813:20;12843:12;12813:43;;12867:13;:22;;;12890:9;;;;;;;;;;;12900:13;:23;;;12932:4;12900:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12867:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12757:190;12703:244;:::o;6030:95::-;6083:7;4188:17;6103:14;;6030:95;:::o;7223:228::-;7316:9;;;;;;;;;;;7300:25;;:12;:10;:12::i;:::-;:25;;;7292:34;;;;;;7353:2;7345:4;:10;;:25;;;;;7368:2;7359:5;:11;;7345:25;7337:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;7416:4;7409;:11;;;;7438:5;7431:4;:12;;;;7223:228;;:::o;6753:313::-;6851:4;6868:36;6878:6;6886:9;6897:6;6868:9;:36::i;:::-;6915:121;6924:6;6932:12;:10;:12::i;:::-;6946:89;6984:6;6946:89;;;;;;;;;;;;;;;;;:11;:19;6958:6;6946:19;;;;;;;;;;;;;;;:33;6966:12;:10;:12::i;:::-;6946:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6915:8;:121::i;:::-;7054:4;7047:11;;6753:313;;;;;:::o;11495:88::-;2554:12;:10;:12::i;:::-;2544:22;;:6;;;;;;;;;;:22;;;2536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11570:5:::1;11555:4;:12;11560:6;11555:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11495:88:::0;:::o;5939:83::-;5980:5;4578:1;5998:16;;5939:83;:::o;7079:136::-;7165:9;;;;;;;;;;;7149:25;;:12;:10;:12::i;:::-;:25;;;7141:34;;;;;;7199:6;7186:10;:19;;;;7079:136;:::o;12262:188::-;12328:9;;;;;;;;;;;12312:25;;:12;:10;:12::i;:::-;:25;;;12304:34;;;;;;12349:26;12378:21;12349:50;;12410:32;12423:18;12410:12;:32::i;:::-;12293:157;12262:188::o;6133:117::-;6199:7;6226;:16;6234:7;6226:16;;;;;;;;;;;;;;;;6219:23;;6133:117;;;:::o;2812:148::-;2554:12;:10;:12::i;:::-;2544:22;;:6;;;;;;;;;;:22;;;2536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2919:1:::1;2882:40;;2903:6;::::0;::::1;;;;;;;;2882:40;;;;;;;;;;;;2950:1;2933:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2812:148::o:0;7459:156::-;7527:9;;;;;;;;;;;7511:25;;:12;:10;:12::i;:::-;:25;;;7503:34;;;;;;4188:17;7548:12;:22;;;;4188:17;7581:16;:26;;;;7459:156::o;2417:79::-;2455:7;2482:6;;;;;;;;;;;2475:13;;2417:79;:::o;5844:87::-;5883:13;5916:7;;;;;;;;;;;;;;;;;5909:14;;5844:87;:::o;6258:167::-;6336:4;6353:42;6363:12;:10;:12::i;:::-;6377:9;6388:6;6353:9;:42::i;:::-;6413:4;6406:11;;6258:167;;;;:::o;11319:164::-;2554:12;:10;:12::i;:::-;2544:22;;:6;;;;;;;;;;:22;;;2536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11393:6:::1;11388:88;11409:5;:12;11405:1;:16;11388:88;;;11460:4;11443;:14;11448:5;11454:1;11448:8;;;;;;;;:::i;:::-;;;;;;;;11443:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11423:3;;;;;:::i;:::-;;;;11388:88;;;;11319:164:::0;:::o;12061:189::-;12127:9;;;;;;;;;;;12111:25;;:12;:10;:12::i;:::-;:25;;;12103:34;;;;;;12148:23;12174:24;12192:4;12174:9;:24::i;:::-;12148:50;;12209:33;12226:15;12209:16;:33::i;:::-;12092:158;12061:189::o;10874:433::-;2554:12;:10;:12::i;:::-;2544:22;;:6;;;;;;;;;;:22;;;2536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10990:11:::1;;;;;;;;;;;10989:12;10981:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11039:68;11052:24;11070:4;11052:9;:24::i;:::-;11077:21;11099:7;:5;:7::i;:::-;11039:12;:68::i;:::-;11122:6;11118:77;11133:9;:16;11131:1;:18;11118:77;;;11188:5;11177:7;11185:1;11177:10;;;;;;;;:::i;:::-;;;;;;;;:16;;;;:::i;:::-;11155:7;:21;11163:9;11173:1;11163:12;;;;;;;;:::i;:::-;;;;;;;;11155:21;;;;;;;;;;;;;;;:38;;;;11150:3;;;;;:::i;:::-;;;;11118:77;;;;11219:4;11205:11;;:18;;;;;;;;;;;;;;;;;;11248:4;11234:11;;:18;;;;;;;;;;;;;;;;;;11289:9;11270:15;:29;;;;:::i;:::-;11263:4;:36;;;;10874:433:::0;;:::o;6433:143::-;6514:7;6541:11;:18;6553:5;6541:18;;;;;;;;;;;;;;;:27;6560:7;6541:27;;;;;;;;;;;;;;;;6534:34;;6433:143;;;;:::o;7623:147::-;7708:9;;;;;;;;;;;7692:25;;:12;:10;:12::i;:::-;:25;;;7684:34;;;;;;7758:4;7729:18;:26;7748:6;7729:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;7623:147;:::o;2631:173::-;2554:12;:10;:12::i;:::-;2544:22;;:6;;;;;;;;;;:22;;;2536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2747:9:::1;2718:39;;2739:6;::::0;::::1;;;;;;;;2718:39;;;;;;;;;;;;2777:9;2768:6;::::0;:18:::1;;;;;;;;;;;;;;;;;;2631:173:::0;:::o;1724:132::-;1782:7;1809:39;1813:1;1816;1809:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1802:46;;1724:132;;;;:::o;135:98::-;188:7;215:10;208:17;;135:98;:::o;7783:335::-;7893:1;7876:19;;:5;:19;;;;7868:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7974:1;7955:21;;:7;:21;;;;7947:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8056:6;8026:11;:18;8038:5;8026:18;;;;;;;;;;;;;;;:27;8045:7;8026:27;;;;;;;;;;;;;;;:36;;;;8094:7;8078:32;;8087:5;8078:32;;;8103:6;8078:32;;;;;;:::i;:::-;;;;;;;;7783:335;;;:::o;8126:1710::-;8230:1;8214:18;;:4;:18;;;;8206:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8307:1;8293:16;;:2;:16;;;;8285:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8377:1;8368:6;:10;8360:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8444:4;;8437;:11;;;;8471:7;:5;:7::i;:::-;8463:15;;:4;:15;;;;:32;;;;;8488:7;:5;:7::i;:::-;8482:13;;:2;:13;;;;8463:32;8459:1185;;;8521:4;:10;8526:4;8521:10;;;;;;;;;;;;;;;;;;;;;;;;;8520:11;:24;;;;;8536:4;:8;8541:2;8536:8;;;;;;;;;;;;;;;;;;;;;;;;;8535:9;8520:24;8512:33;;;;;;8572:13;;;;;;;;;;;8564:21;;:4;:21;;;:55;;;;;8603:15;;;;;;;;;;;8589:30;;:2;:30;;;;8564:55;:83;;;;;8625:18;:22;8644:2;8625:22;;;;;;;;;;;;;;;;;;;;;;;;;8623:24;8564:83;:111;;;;;8670:4;;8652:15;:22;8564:111;8560:422;;;8758:16;;8747:6;8733:7;:11;8741:2;8733:11;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;8732:42;;8724:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8831:12;;8821:6;:22;;8813:31;;;;;;8886:15;8871:8;:12;8880:2;8871:12;;;;;;;;;;;;;;;;:30;8863:39;;;;;;8955:10;8936:15;:30;;;;:::i;:::-;8921:8;:12;8930:2;8921:12;;;;;;;;;;;;;;;:45;;;;8560:422;9029:6;;;;;;;;;;;9028:7;:32;;;;;9047:13;;;;;;;;;;;9039:21;;:4;:21;;;;9028:32;:47;;;;;9064:11;;;;;;;;;;;9028:47;:76;;;;;9080:18;:24;9099:4;9080:24;;;;;;;;;;;;;;;;;;;;;;;;;9079:25;9028:76;9024:609;;;9151:4;;9133:15;:22;9125:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9218:28;9249:24;9267:4;9249:9;:24::i;:::-;9218:55;;9318:10;;9295:20;:33;9292:326;;;9352:38;9369:20;9352:16;:38::i;:::-;9413:26;9442:21;9413:50;;9510:1;9489:18;:22;9486:113;;;9540:35;9553:21;9540:12;:35::i;:::-;9486:113;9329:289;9292:326;9106:527;9024:609;8459:1185;9664:13;;;;;;;;;;;9658:19;;:2;:19;;;:55;;;;;9697:15;;;;;;;;;;;9681:32;;:4;:32;;;;9658:55;:85;;;;;9719:18;:24;9738:4;9719:24;;;;;;;;;;;;;;;;;;;;;;;;;9717:26;9658:85;9654:129;;;9767:4;;9760;:11;;;;9654:129;9795:33;9813:4;9818:2;9821:6;9795:17;:33::i;:::-;8126:1710;;;:::o;1272:190::-;1358:7;1391:1;1386;:6;;1394:12;1378:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1418:9;1434:1;1430;:5;;;;:::i;:::-;1418:17;;1453:1;1446:8;;;1272:190;;;;;:::o;10643:219::-;10700:9;;;;;;;;;;;:18;;:43;10719:23;10739:2;10719:15;10730:3;10719:6;:10;;:15;;;;:::i;:::-;:19;;:23;;;;:::i;:::-;10700:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10754:14;;;;;;;;;;;:23;;:48;10778:23;10798:2;10778:15;10789:3;10778:6;:10;;:15;;;;:::i;:::-;:19;;:23;;;;:::i;:::-;10754:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10813:16;;;;;;;;;;;:25;;:41;10839:14;10850:2;10839:6;:10;;:14;;;;:::i;:::-;10813:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10643:219;:::o;9844:483::-;4948:4;4939:6;;:13;;;;;;;;;;;;;;;;;;9922:21:::1;9960:1;9946:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9922:40;;9991:4;9973;9978:1;9973:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10017:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10007:4;10012:1;10007:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10050:62;10067:4;10082:15;;;;;;;;;;;10100:11;10050:8;:62::i;:::-;10123:15;;;;;;;;;;;:66;;;10204:11;10230:1;10246:4;10273;10293:15;10123:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9911:416;4984:5:::0;4975:6;;:14;;;;;;;;;;;;;;;;;;9844:483;:::o;10341:288::-;4948:4;4939:6;;:13;;;;;;;;;;;;;;;;;;10447:60:::1;10464:4;10478:15;;;;;;;;;;;10495:11;10447:8;:60::i;:::-;10518:15;;;;;;;;;;;:31;;;10557:9;10576:4;10582:11;10594:1;10596::::0;10598:6:::1;10605:15;10518:103;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;4984:5:::0;4975:6;;:14;;;;;;;;;;;;;;;;;;10341:288;;;:::o;1864:189::-;1950:7;1982:1;1978;:5;1985:12;1970:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2009:9;2025:1;2021;:5;;;;:::i;:::-;2009:17;;2044:1;2037:8;;;1864:189;;;;;:::o;11591:421::-;11690:22;11713:12;11729:20;11741:7;11729:11;:20::i;:::-;11689:60;;;;11778:28;11798:7;11778;:15;11786:6;11778:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11760:7;:15;11768:6;11760:15;;;;;;;;;;;;;;;:46;;;;11838:38;11861:14;11838:7;:18;11846:9;11838:18;;;;;;;;;;;;;;;;:22;;:38;;;;:::i;:::-;11817:7;:18;11825:9;11817:18;;;;;;;;;;;;;;;:59;;;;11913:32;11940:4;11913:7;:22;11929:4;11913:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;11888:7;:22;11904:4;11888:22;;;;;;;;;;;;;;;:57;;;;11978:9;11961:43;;11970:6;11961:43;;;11989:14;11961:43;;;;;;:::i;:::-;;;;;;;;11678:334;;11591:421;;;:::o;1470:246::-;1528:7;1557:1;1552;:6;1548:47;;;1582:1;1575:8;;;;1548:47;1605:9;1621:1;1617;:5;;;;:::i;:::-;1605:17;;1650:1;1645;1641;:5;;;;:::i;:::-;:10;1633:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1707:1;1700:8;;;1470:246;;;;;:::o;12461:234::-;12521:7;12530;12550:12;12565:27;12587:4;12565:17;12577:4;;12565:7;:11;;:17;;;;:::i;:::-;:21;;:27;;;;:::i;:::-;12550:42;;12603:23;12629:17;12641:4;12629:7;:11;;:17;;;;:::i;:::-;12603:43;;12665:15;12682:4;12657:30;;;;;;12461:234;;;:::o;1128:136::-;1186:7;1213:43;1217:1;1220;1213:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1206:50;;1128:136;;;;:::o;941:179::-;999:7;1019:9;1035:1;1031;:5;;;;:::i;:::-;1019:17;;1060:1;1055;:6;;1047:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1111:1;1104:8;;;941:179;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:139::-;1543:5;1581:6;1568:20;1559:29;;1597:33;1624:5;1597:33;:::i;:::-;1497:139;;;;:::o;1642:143::-;1699:5;1730:6;1724:13;1715:22;;1746:33;1773:5;1746:33;:::i;:::-;1642:143;;;;:::o;1808:370::-;1879:5;1928:3;1921:4;1913:6;1909:17;1905:27;1895:122;;1936:79;;:::i;:::-;1895:122;2053:6;2040:20;2078:94;2168:3;2160:6;2153:4;2145:6;2141:17;2078:94;:::i;:::-;2069:103;;1885:293;1808:370;;;;:::o;2201:::-;2272:5;2321:3;2314:4;2306:6;2302:17;2298:27;2288:122;;2329:79;;:::i;:::-;2288:122;2446:6;2433:20;2471:94;2561:3;2553:6;2546:4;2538:6;2534:17;2471:94;:::i;:::-;2462:103;;2278:293;2201:370;;;;:::o;2577:137::-;2631:5;2662:6;2656:13;2647:22;;2678:30;2702:5;2678:30;:::i;:::-;2577:137;;;;:::o;2720:139::-;2766:5;2804:6;2791:20;2782:29;;2820:33;2847:5;2820:33;:::i;:::-;2720:139;;;;:::o;2865:143::-;2922:5;2953:6;2947:13;2938:22;;2969:33;2996:5;2969:33;:::i;:::-;2865:143;;;;:::o;3014:329::-;3073:6;3122:2;3110:9;3101:7;3097:23;3093:32;3090:119;;;3128:79;;:::i;:::-;3090:119;3248:1;3273:53;3318:7;3309:6;3298:9;3294:22;3273:53;:::i;:::-;3263:63;;3219:117;3014:329;;;;:::o;3349:351::-;3419:6;3468:2;3456:9;3447:7;3443:23;3439:32;3436:119;;;3474:79;;:::i;:::-;3436:119;3594:1;3619:64;3675:7;3666:6;3655:9;3651:22;3619:64;:::i;:::-;3609:74;;3565:128;3349:351;;;;:::o;3706:474::-;3774:6;3782;3831:2;3819:9;3810:7;3806:23;3802:32;3799:119;;;3837:79;;:::i;:::-;3799:119;3957:1;3982:53;4027:7;4018:6;4007:9;4003:22;3982:53;:::i;:::-;3972:63;;3928:117;4084:2;4110:53;4155:7;4146:6;4135:9;4131:22;4110:53;:::i;:::-;4100:63;;4055:118;3706:474;;;;;:::o;4186:619::-;4263:6;4271;4279;4328:2;4316:9;4307:7;4303:23;4299:32;4296:119;;;4334:79;;:::i;:::-;4296:119;4454:1;4479:53;4524:7;4515:6;4504:9;4500:22;4479:53;:::i;:::-;4469:63;;4425:117;4581:2;4607:53;4652:7;4643:6;4632:9;4628:22;4607:53;:::i;:::-;4597:63;;4552:118;4709:2;4735:53;4780:7;4771:6;4760:9;4756:22;4735:53;:::i;:::-;4725:63;;4680:118;4186:619;;;;;:::o;4811:474::-;4879:6;4887;4936:2;4924:9;4915:7;4911:23;4907:32;4904:119;;;4942:79;;:::i;:::-;4904:119;5062:1;5087:53;5132:7;5123:6;5112:9;5108:22;5087:53;:::i;:::-;5077:63;;5033:117;5189:2;5215:53;5260:7;5251:6;5240:9;5236:22;5215:53;:::i;:::-;5205:63;;5160:118;4811:474;;;;;:::o;5291:539::-;5375:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:119;;;5430:79;;:::i;:::-;5392:119;5578:1;5567:9;5563:17;5550:31;5608:18;5600:6;5597:30;5594:117;;;5630:79;;:::i;:::-;5594:117;5735:78;5805:7;5796:6;5785:9;5781:22;5735:78;:::i;:::-;5725:88;;5521:302;5291:539;;;;:::o;5836:894::-;5954:6;5962;6011:2;5999:9;5990:7;5986:23;5982:32;5979:119;;;6017:79;;:::i;:::-;5979:119;6165:1;6154:9;6150:17;6137:31;6195:18;6187:6;6184:30;6181:117;;;6217:79;;:::i;:::-;6181:117;6322:78;6392:7;6383:6;6372:9;6368:22;6322:78;:::i;:::-;6312:88;;6108:302;6477:2;6466:9;6462:18;6449:32;6508:18;6500:6;6497:30;6494:117;;;6530:79;;:::i;:::-;6494:117;6635:78;6705:7;6696:6;6685:9;6681:22;6635:78;:::i;:::-;6625:88;;6420:303;5836:894;;;;;:::o;6736:345::-;6803:6;6852:2;6840:9;6831:7;6827:23;6823:32;6820:119;;;6858:79;;:::i;:::-;6820:119;6978:1;7003:61;7056:7;7047:6;7036:9;7032:22;7003:61;:::i;:::-;6993:71;;6949:125;6736:345;;;;:::o;7087:329::-;7146:6;7195:2;7183:9;7174:7;7170:23;7166:32;7163:119;;;7201:79;;:::i;:::-;7163:119;7321:1;7346:53;7391:7;7382:6;7371:9;7367:22;7346:53;:::i;:::-;7336:63;;7292:117;7087:329;;;;:::o;7422:351::-;7492:6;7541:2;7529:9;7520:7;7516:23;7512:32;7509:119;;;7547:79;;:::i;:::-;7509:119;7667:1;7692:64;7748:7;7739:6;7728:9;7724:22;7692:64;:::i;:::-;7682:74;;7638:128;7422:351;;;;:::o;7779:474::-;7847:6;7855;7904:2;7892:9;7883:7;7879:23;7875:32;7872:119;;;7910:79;;:::i;:::-;7872:119;8030:1;8055:53;8100:7;8091:6;8080:9;8076:22;8055:53;:::i;:::-;8045:63;;8001:117;8157:2;8183:53;8228:7;8219:6;8208:9;8204:22;8183:53;:::i;:::-;8173:63;;8128:118;7779:474;;;;;:::o;8259:663::-;8347:6;8355;8363;8412:2;8400:9;8391:7;8387:23;8383:32;8380:119;;;8418:79;;:::i;:::-;8380:119;8538:1;8563:64;8619:7;8610:6;8599:9;8595:22;8563:64;:::i;:::-;8553:74;;8509:128;8676:2;8702:64;8758:7;8749:6;8738:9;8734:22;8702:64;:::i;:::-;8692:74;;8647:129;8815:2;8841:64;8897:7;8888:6;8877:9;8873:22;8841:64;:::i;:::-;8831:74;;8786:129;8259:663;;;;;:::o;8928:179::-;8997:10;9018:46;9060:3;9052:6;9018:46;:::i;:::-;9096:4;9091:3;9087:14;9073:28;;8928:179;;;;:::o;9113:147::-;9208:45;9247:5;9208:45;:::i;:::-;9203:3;9196:58;9113:147;;:::o;9266:108::-;9343:24;9361:5;9343:24;:::i;:::-;9338:3;9331:37;9266:108;;:::o;9380:118::-;9467:24;9485:5;9467:24;:::i;:::-;9462:3;9455:37;9380:118;;:::o;9534:732::-;9653:3;9682:54;9730:5;9682:54;:::i;:::-;9752:86;9831:6;9826:3;9752:86;:::i;:::-;9745:93;;9862:56;9912:5;9862:56;:::i;:::-;9941:7;9972:1;9957:284;9982:6;9979:1;9976:13;9957:284;;;10058:6;10052:13;10085:63;10144:3;10129:13;10085:63;:::i;:::-;10078:70;;10171:60;10224:6;10171:60;:::i;:::-;10161:70;;10017:224;10004:1;10001;9997:9;9992:14;;9957:284;;;9961:14;10257:3;10250:10;;9658:608;;;9534:732;;;;:::o;10272:109::-;10353:21;10368:5;10353:21;:::i;:::-;10348:3;10341:34;10272:109;;:::o;10387:147::-;10482:45;10521:5;10482:45;:::i;:::-;10477:3;10470:58;10387:147;;:::o;10540:364::-;10628:3;10656:39;10689:5;10656:39;:::i;:::-;10711:71;10775:6;10770:3;10711:71;:::i;:::-;10704:78;;10791:52;10836:6;10831:3;10824:4;10817:5;10813:16;10791:52;:::i;:::-;10868:29;10890:6;10868:29;:::i;:::-;10863:3;10859:39;10852:46;;10632:272;10540:364;;;;:::o;10910:366::-;11052:3;11073:67;11137:2;11132:3;11073:67;:::i;:::-;11066:74;;11149:93;11238:3;11149:93;:::i;:::-;11267:2;11262:3;11258:12;11251:19;;10910:366;;;:::o;11282:::-;11424:3;11445:67;11509:2;11504:3;11445:67;:::i;:::-;11438:74;;11521:93;11610:3;11521:93;:::i;:::-;11639:2;11634:3;11630:12;11623:19;;11282:366;;;:::o;11654:::-;11796:3;11817:67;11881:2;11876:3;11817:67;:::i;:::-;11810:74;;11893:93;11982:3;11893:93;:::i;:::-;12011:2;12006:3;12002:12;11995:19;;11654:366;;;:::o;12026:::-;12168:3;12189:67;12253:2;12248:3;12189:67;:::i;:::-;12182:74;;12265:93;12354:3;12265:93;:::i;:::-;12383:2;12378:3;12374:12;12367:19;;12026:366;;;:::o;12398:::-;12540:3;12561:67;12625:2;12620:3;12561:67;:::i;:::-;12554:74;;12637:93;12726:3;12637:93;:::i;:::-;12755:2;12750:3;12746:12;12739:19;;12398:366;;;:::o;12770:::-;12912:3;12933:67;12997:2;12992:3;12933:67;:::i;:::-;12926:74;;13009:93;13098:3;13009:93;:::i;:::-;13127:2;13122:3;13118:12;13111:19;;12770:366;;;:::o;13142:::-;13284:3;13305:67;13369:2;13364:3;13305:67;:::i;:::-;13298:74;;13381:93;13470:3;13381:93;:::i;:::-;13499:2;13494:3;13490:12;13483:19;;13142:366;;;:::o;13514:::-;13656:3;13677:67;13741:2;13736:3;13677:67;:::i;:::-;13670:74;;13753:93;13842:3;13753:93;:::i;:::-;13871:2;13866:3;13862:12;13855:19;;13514:366;;;:::o;13886:::-;14028:3;14049:67;14113:2;14108:3;14049:67;:::i;:::-;14042:74;;14125:93;14214:3;14125:93;:::i;:::-;14243:2;14238:3;14234:12;14227:19;;13886:366;;;:::o;14258:::-;14400:3;14421:67;14485:2;14480:3;14421:67;:::i;:::-;14414:74;;14497:93;14586:3;14497:93;:::i;:::-;14615:2;14610:3;14606:12;14599:19;;14258:366;;;:::o;14630:::-;14772:3;14793:67;14857:2;14852:3;14793:67;:::i;:::-;14786:74;;14869:93;14958:3;14869:93;:::i;:::-;14987:2;14982:3;14978:12;14971:19;;14630:366;;;:::o;15002:::-;15144:3;15165:67;15229:2;15224:3;15165:67;:::i;:::-;15158:74;;15241:93;15330:3;15241:93;:::i;:::-;15359:2;15354:3;15350:12;15343:19;;15002:366;;;:::o;15374:118::-;15461:24;15479:5;15461:24;:::i;:::-;15456:3;15449:37;15374:118;;:::o;15498:112::-;15581:22;15597:5;15581:22;:::i;:::-;15576:3;15569:35;15498:112;;:::o;15616:222::-;15709:4;15747:2;15736:9;15732:18;15724:26;;15760:71;15828:1;15817:9;15813:17;15804:6;15760:71;:::i;:::-;15616:222;;;;:::o;15844:348::-;15973:4;16011:2;16000:9;15996:18;15988:26;;16024:79;16100:1;16089:9;16085:17;16076:6;16024:79;:::i;:::-;16113:72;16181:2;16170:9;16166:18;16157:6;16113:72;:::i;:::-;15844:348;;;;;:::o;16198:807::-;16447:4;16485:3;16474:9;16470:19;16462:27;;16499:71;16567:1;16556:9;16552:17;16543:6;16499:71;:::i;:::-;16580:72;16648:2;16637:9;16633:18;16624:6;16580:72;:::i;:::-;16662:80;16738:2;16727:9;16723:18;16714:6;16662:80;:::i;:::-;16752;16828:2;16817:9;16813:18;16804:6;16752:80;:::i;:::-;16842:73;16910:3;16899:9;16895:19;16886:6;16842:73;:::i;:::-;16925;16993:3;16982:9;16978:19;16969:6;16925:73;:::i;:::-;16198:807;;;;;;;;;:::o;17011:210::-;17098:4;17136:2;17125:9;17121:18;17113:26;;17149:65;17211:1;17200:9;17196:17;17187:6;17149:65;:::i;:::-;17011:210;;;;:::o;17227:313::-;17340:4;17378:2;17367:9;17363:18;17355:26;;17427:9;17421:4;17417:20;17413:1;17402:9;17398:17;17391:47;17455:78;17528:4;17519:6;17455:78;:::i;:::-;17447:86;;17227:313;;;;:::o;17546:419::-;17712:4;17750:2;17739:9;17735:18;17727:26;;17799:9;17793:4;17789:20;17785:1;17774:9;17770:17;17763:47;17827:131;17953:4;17827:131;:::i;:::-;17819:139;;17546:419;;;:::o;17971:::-;18137:4;18175:2;18164:9;18160:18;18152:26;;18224:9;18218:4;18214:20;18210:1;18199:9;18195:17;18188:47;18252:131;18378:4;18252:131;:::i;:::-;18244:139;;17971:419;;;:::o;18396:::-;18562:4;18600:2;18589:9;18585:18;18577:26;;18649:9;18643:4;18639:20;18635:1;18624:9;18620:17;18613:47;18677:131;18803:4;18677:131;:::i;:::-;18669:139;;18396:419;;;:::o;18821:::-;18987:4;19025:2;19014:9;19010:18;19002:26;;19074:9;19068:4;19064:20;19060:1;19049:9;19045:17;19038:47;19102:131;19228:4;19102:131;:::i;:::-;19094:139;;18821:419;;;:::o;19246:::-;19412:4;19450:2;19439:9;19435:18;19427:26;;19499:9;19493:4;19489:20;19485:1;19474:9;19470:17;19463:47;19527:131;19653:4;19527:131;:::i;:::-;19519:139;;19246:419;;;:::o;19671:::-;19837:4;19875:2;19864:9;19860:18;19852:26;;19924:9;19918:4;19914:20;19910:1;19899:9;19895:17;19888:47;19952:131;20078:4;19952:131;:::i;:::-;19944:139;;19671:419;;;:::o;20096:::-;20262:4;20300:2;20289:9;20285:18;20277:26;;20349:9;20343:4;20339:20;20335:1;20324:9;20320:17;20313:47;20377:131;20503:4;20377:131;:::i;:::-;20369:139;;20096:419;;;:::o;20521:::-;20687:4;20725:2;20714:9;20710:18;20702:26;;20774:9;20768:4;20764:20;20760:1;20749:9;20745:17;20738:47;20802:131;20928:4;20802:131;:::i;:::-;20794:139;;20521:419;;;:::o;20946:::-;21112:4;21150:2;21139:9;21135:18;21127:26;;21199:9;21193:4;21189:20;21185:1;21174:9;21170:17;21163:47;21227:131;21353:4;21227:131;:::i;:::-;21219:139;;20946:419;;;:::o;21371:::-;21537:4;21575:2;21564:9;21560:18;21552:26;;21624:9;21618:4;21614:20;21610:1;21599:9;21595:17;21588:47;21652:131;21778:4;21652:131;:::i;:::-;21644:139;;21371:419;;;:::o;21796:::-;21962:4;22000:2;21989:9;21985:18;21977:26;;22049:9;22043:4;22039:20;22035:1;22024:9;22020:17;22013:47;22077:131;22203:4;22077:131;:::i;:::-;22069:139;;21796:419;;;:::o;22221:::-;22387:4;22425:2;22414:9;22410:18;22402:26;;22474:9;22468:4;22464:20;22460:1;22449:9;22445:17;22438:47;22502:131;22628:4;22502:131;:::i;:::-;22494:139;;22221:419;;;:::o;22646:222::-;22739:4;22777:2;22766:9;22762:18;22754:26;;22790:71;22858:1;22847:9;22843:17;22834:6;22790:71;:::i;:::-;22646:222;;;;:::o;22874:831::-;23137:4;23175:3;23164:9;23160:19;23152:27;;23189:71;23257:1;23246:9;23242:17;23233:6;23189:71;:::i;:::-;23270:80;23346:2;23335:9;23331:18;23322:6;23270:80;:::i;:::-;23397:9;23391:4;23387:20;23382:2;23371:9;23367:18;23360:48;23425:108;23528:4;23519:6;23425:108;:::i;:::-;23417:116;;23543:72;23611:2;23600:9;23596:18;23587:6;23543:72;:::i;:::-;23625:73;23693:3;23682:9;23678:19;23669:6;23625:73;:::i;:::-;22874:831;;;;;;;;:::o;23711:214::-;23800:4;23838:2;23827:9;23823:18;23815:26;;23851:67;23915:1;23904:9;23900:17;23891:6;23851:67;:::i;:::-;23711:214;;;;:::o;23931:129::-;23965:6;23992:20;;:::i;:::-;23982:30;;24021:33;24049:4;24041:6;24021:33;:::i;:::-;23931:129;;;:::o;24066:75::-;24099:6;24132:2;24126:9;24116:19;;24066:75;:::o;24147:311::-;24224:4;24314:18;24306:6;24303:30;24300:56;;;24336:18;;:::i;:::-;24300:56;24386:4;24378:6;24374:17;24366:25;;24446:4;24440;24436:15;24428:23;;24147:311;;;:::o;24464:::-;24541:4;24631:18;24623:6;24620:30;24617:56;;;24653:18;;:::i;:::-;24617:56;24703:4;24695:6;24691:17;24683:25;;24763:4;24757;24753:15;24745:23;;24464:311;;;:::o;24781:132::-;24848:4;24871:3;24863:11;;24901:4;24896:3;24892:14;24884:22;;24781:132;;;:::o;24919:114::-;24986:6;25020:5;25014:12;25004:22;;24919:114;;;:::o;25039:99::-;25091:6;25125:5;25119:12;25109:22;;25039:99;;;:::o;25144:113::-;25214:4;25246;25241:3;25237:14;25229:22;;25144:113;;;:::o;25263:184::-;25362:11;25396:6;25391:3;25384:19;25436:4;25431:3;25427:14;25412:29;;25263:184;;;;:::o;25453:169::-;25537:11;25571:6;25566:3;25559:19;25611:4;25606:3;25602:14;25587:29;;25453:169;;;;:::o;25628:305::-;25668:3;25687:20;25705:1;25687:20;:::i;:::-;25682:25;;25721:20;25739:1;25721:20;:::i;:::-;25716:25;;25875:1;25807:66;25803:74;25800:1;25797:81;25794:107;;;25881:18;;:::i;:::-;25794:107;25925:1;25922;25918:9;25911:16;;25628:305;;;;:::o;25939:185::-;25979:1;25996:20;26014:1;25996:20;:::i;:::-;25991:25;;26030:20;26048:1;26030:20;:::i;:::-;26025:25;;26069:1;26059:35;;26074:18;;:::i;:::-;26059:35;26116:1;26113;26109:9;26104:14;;25939:185;;;;:::o;26130:348::-;26170:7;26193:20;26211:1;26193:20;:::i;:::-;26188:25;;26227:20;26245:1;26227:20;:::i;:::-;26222:25;;26415:1;26347:66;26343:74;26340:1;26337:81;26332:1;26325:9;26318:17;26314:105;26311:131;;;26422:18;;:::i;:::-;26311:131;26470:1;26467;26463:9;26452:20;;26130:348;;;;:::o;26484:191::-;26524:4;26544:20;26562:1;26544:20;:::i;:::-;26539:25;;26578:20;26596:1;26578:20;:::i;:::-;26573:25;;26617:1;26614;26611:8;26608:34;;;26622:18;;:::i;:::-;26608:34;26667:1;26664;26660:9;26652:17;;26484:191;;;;:::o;26681:96::-;26718:7;26747:24;26765:5;26747:24;:::i;:::-;26736:35;;26681:96;;;:::o;26783:90::-;26817:7;26860:5;26853:13;26846:21;26835:32;;26783:90;;;:::o;26879:126::-;26916:7;26956:42;26949:5;26945:54;26934:65;;26879:126;;;:::o;27011:77::-;27048:7;27077:5;27066:16;;27011:77;;;:::o;27094:86::-;27129:7;27169:4;27162:5;27158:16;27147:27;;27094:86;;;:::o;27186:134::-;27244:9;27277:37;27308:5;27277:37;:::i;:::-;27264:50;;27186:134;;;:::o;27326:121::-;27384:9;27417:24;27435:5;27417:24;:::i;:::-;27404:37;;27326:121;;;:::o;27453:126::-;27503:9;27536:37;27567:5;27536:37;:::i;:::-;27523:50;;27453:126;;;:::o;27585:113::-;27635:9;27668:24;27686:5;27668:24;:::i;:::-;27655:37;;27585:113;;;:::o;27704:307::-;27772:1;27782:113;27796:6;27793:1;27790:13;27782:113;;;27881:1;27876:3;27872:11;27866:18;27862:1;27857:3;27853:11;27846:39;27818:2;27815:1;27811:10;27806:15;;27782:113;;;27913:6;27910:1;27907:13;27904:101;;;27993:1;27984:6;27979:3;27975:16;27968:27;27904:101;27753:258;27704:307;;;:::o;28017:281::-;28100:27;28122:4;28100:27;:::i;:::-;28092:6;28088:40;28230:6;28218:10;28215:22;28194:18;28182:10;28179:34;28176:62;28173:88;;;28241:18;;:::i;:::-;28173:88;28281:10;28277:2;28270:22;28060:238;28017:281;;:::o;28304:233::-;28343:3;28366:24;28384:5;28366:24;:::i;:::-;28357:33;;28412:66;28405:5;28402:77;28399:103;;;28482:18;;:::i;:::-;28399:103;28529:1;28522:5;28518:13;28511:20;;28304:233;;;:::o;28543:180::-;28591:77;28588:1;28581:88;28688:4;28685:1;28678:15;28712:4;28709:1;28702:15;28729:180;28777:77;28774:1;28767:88;28874:4;28871:1;28864:15;28898:4;28895:1;28888:15;28915:180;28963:77;28960:1;28953:88;29060:4;29057:1;29050:15;29084:4;29081:1;29074:15;29101:180;29149:77;29146:1;29139:88;29246:4;29243:1;29236:15;29270:4;29267:1;29260:15;29287:117;29396:1;29393;29386:12;29410:117;29519:1;29516;29509:12;29533:117;29642:1;29639;29632:12;29656:117;29765:1;29762;29755:12;29779:102;29820:6;29871:2;29867:7;29862:2;29855:5;29851:14;29847:28;29837:38;;29779:102;;;:::o;29887:222::-;30027:34;30023:1;30015:6;30011:14;30004:58;30096:5;30091:2;30083:6;30079:15;30072:30;29887:222;:::o;30115:166::-;30255:18;30251:1;30243:6;30239:14;30232:42;30115:166;:::o;30287:221::-;30427:34;30423:1;30415:6;30411:14;30404:58;30496:4;30491:2;30483:6;30479:15;30472:29;30287:221;:::o;30514:177::-;30654:29;30650:1;30642:6;30638:14;30631:53;30514:177;:::o;30697:174::-;30837:26;30833:1;30825:6;30821:14;30814:50;30697:174;:::o;30877:220::-;31017:34;31013:1;31005:6;31001:14;30994:58;31086:3;31081:2;31073:6;31069:15;31062:28;30877:220;:::o;31103:182::-;31243:34;31239:1;31231:6;31227:14;31220:58;31103:182;:::o;31291:228::-;31431:34;31427:1;31419:6;31415:14;31408:58;31500:11;31495:2;31487:6;31483:15;31476:36;31291:228;:::o;31525:224::-;31665:34;31661:1;31653:6;31649:14;31642:58;31734:7;31729:2;31721:6;31717:15;31710:32;31525:224;:::o;31755:223::-;31895:34;31891:1;31883:6;31879:14;31872:58;31964:6;31959:2;31951:6;31947:15;31940:31;31755:223;:::o;31984:173::-;32124:25;32120:1;32112:6;32108:14;32101:49;31984:173;:::o;32163:227::-;32303:34;32299:1;32291:6;32287:14;32280:58;32372:10;32367:2;32359:6;32355:15;32348:35;32163:227;:::o;32396:122::-;32469:24;32487:5;32469:24;:::i;:::-;32462:5;32459:35;32449:63;;32508:1;32505;32498:12;32449:63;32396:122;:::o;32524:116::-;32594:21;32609:5;32594:21;:::i;:::-;32587:5;32584:32;32574:60;;32630:1;32627;32620:12;32574:60;32524:116;:::o;32646:122::-;32719:24;32737:5;32719:24;:::i;:::-;32712:5;32709:35;32699:63;;32758:1;32755;32748:12;32699:63;32646:122;:::o

Swarm Source

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