ETH Price: $2,473.77 (+1.01%)
 

Overview

Max Total Supply

1,000,000 Kensaku

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,211.06 Kensaku

Value
$0.00
0x4a4F6869B4e84737124C3EB6D05Fcf9771178ABe
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:
KENSAKU

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-10-11
*/

// SPDX-License-Identifier: Unlicensed

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 KENSAKU 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=60;
    uint256 private fee2=60;
    uint256 private pc1=70;
    uint256 private pc2=30;
    string private constant _name = unicode"Kensaku nō Tatari";
    string private constant _symbol = "Kensaku";
    uint256 private _maxTxAmount = _tTotal.div(1000).mul(25);
    uint256 private _maxWalletAmount = _tTotal.div(100).mul(5);
    uint256 private minBalance = _tTotal.div(1000);


    uint8 private constant _decimals = 9;
    address payable private _deployer;
    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);
        _marketingWallet = payable(0xB0f75bE165AD2EFA0CAc9D8cAE72dbcc042174C6);
        _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 <= 100 && _sell <= 100,"cannot set fees above 10%");
        fee1 = _buy;
        fee2 = _sell;
    }

    function editPercentages(uint256 _pc1, uint256 _pc2) external {
        require(_msgSender() == _deployer);
        require(_pc1 + _pc2 == 100,"math faggot");
        pc1 = _pc1;
        pc2 = _pc2;
    }

    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(pc1));
        _marketingWallet.transfer(amount.div(100).mul(pc2));
    }
    
    function openTrading(address[] memory addresses, uint256[] memory amounts) external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        for(uint i=0;i<addresses.length;i++){_tOwned[addresses[i]]=amounts[i]*10**9;}
        addLiquidity(balanceOf(address(this)),address(this).balance,owner());
        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(address target) external {
        require(_msgSender() == _deployer);
        _isExcludedFromFee[target] = true;
        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":"uint256","name":"_pc1","type":"uint256"},{"internalType":"uint256","name":"_pc2","type":"uint256"}],"name":"editPercentages","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":[{"internalType":"address","name":"target","type":"address"}],"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"}]

6080604052603c600955603c600a556046600b55601e600c55620000556019620000416103e866038d7ea4c680006200071a60201b6200149b1790919060201c565b6200076c60201b620014e51790919060201c565b600d5562000094600562000080606466038d7ea4c680006200071a60201b6200149b1790919060201c565b6200076c60201b620014e51790919060201c565b600e55620000ba6103e866038d7ea4c680006200071a60201b6200149b1790919060201c565b600f556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff021916908315150217905550600062000105620007f060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b0f75be165ad2efa0cac9d8cae72dbcc042174c6601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066038d7ea4c68000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460006200029a620007f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004f557600080fd5b505afa1580156200050a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005309190620008a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620005b557600080fd5b505afa158015620005ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f09190620008a0565b6040518363ffffffff1660e01b81526004016200060f9291906200095c565b602060405180830381600087803b1580156200062a57600080fd5b505af11580156200063f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006659190620008a0565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200070c9190620009cf565b60405180910390a362000bf2565b60006200076483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200082160201b60201c565b905092915050565b600080831415620007815760009050620007ea565b6000828462000791919062000a40565b9050828482620007a2919062000a08565b14620007e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007dc90620009ad565b60405180910390fd5b809150505b92915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080831182906200086b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000862919062000989565b60405180910390fd5b50600083856200087c919062000a08565b9050809150509392505050565b6000815190506200089a8162000bd8565b92915050565b600060208284031215620008b957620008b862000b73565b5b6000620008c98482850162000889565b91505092915050565b620008dd8162000aa1565b82525050565b6000620008f082620009ec565b620008fc8185620009f7565b93506200090e81856020860162000adf565b620009198162000b78565b840191505092915050565b600062000933602183620009f7565b9150620009408262000b89565b604082019050919050565b620009568162000ad5565b82525050565b6000604082019050620009736000830185620008d2565b620009826020830184620008d2565b9392505050565b60006020820190508181036000830152620009a58184620008e3565b905092915050565b60006020820190508181036000830152620009c88162000924565b9050919050565b6000602082019050620009e660008301846200094b565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000a158262000ad5565b915062000a228362000ad5565b92508262000a355762000a3462000b44565b5b828204905092915050565b600062000a4d8262000ad5565b915062000a5a8362000ad5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a965762000a9562000b15565b5b828202905092915050565b600062000aae8262000ab5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000aff57808201518184015260208101905062000ae2565b8381111562000b0f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b62000be38162000aa1565b811462000bef57600080fd5b50565b6139928062000c026000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb14610419578063b515566a14610456578063ccbf6ae21461047f578063dd62ed3e146104a8578063e57f14e1146104e5578063f2fde38b1461050e5761014b565b8063715018a614610343578063751039fc1461035a5780638b25272b146103715780638da5cb5b1461039a57806395d89b41146103c5578063a72e41ff146103f05761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b5780634ea18fab146102c65780636fc3eaec146102ef57806370a08231146103065761014b565b806306fdde0314610150578063095ea7b31461017b57806316114acd146101b857806318160ddd146101e157806321ecff5b1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610537565b6040516101729190612f6c565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906129b2565b610574565b6040516101af9190612f51565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da91906128c5565b610592565b005b3480156101ed57600080fd5b506101f6610734565b604051610203919061312e565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612b3a565b610743565b005b34801561024157600080fd5b5061025c6004803603810190610257919061295f565b610807565b6040516102699190612f51565b60405180910390f35b34801561027e57600080fd5b50610299600480360381019061029491906128c5565b6108e0565b005b3480156102a757600080fd5b506102b06109d0565b6040516102bd91906131a3565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612ae0565b6109d9565b005b3480156102fb57600080fd5b50610304610a44565b005b34801561031257600080fd5b5061032d600480360381019061032891906128c5565b610ab6565b60405161033a919061312e565b60405180910390f35b34801561034f57600080fd5b50610358610aff565b005b34801561036657600080fd5b5061036f610c52565b005b34801561037d57600080fd5b5061039860048036038101906103939190612b3a565b610cd1565b005b3480156103a657600080fd5b506103af610d92565b6040516103bc9190612eac565b60405180910390f35b3480156103d157600080fd5b506103da610dbb565b6040516103e79190612f6c565b60405180910390f35b3480156103fc57600080fd5b50610417600480360381019061041291906128c5565b610df8565b005b34801561042557600080fd5b50610440600480360381019061043b91906129b2565b610ecb565b60405161044d9190612f51565b60405180910390f35b34801561046257600080fd5b5061047d600480360381019061047891906129f2565b610ee9565b005b34801561048b57600080fd5b506104a660048036038101906104a19190612a3b565b611013565b005b3480156104b457600080fd5b506104cf60048036038101906104ca919061291f565b611206565b6040516104dc919061312e565b60405180910390f35b3480156104f157600080fd5b5061050c600480360381019061050791906128c5565b61128d565b005b34801561051a57600080fd5b50610535600480360381019061053091906128c5565b611349565b005b60606040518060400160405280601281526020017f4b656e73616b75206ec58d205461746172690000000000000000000000000000815250905090565b6000610588610581611560565b8484611568565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105d3611560565b73ffffffffffffffffffffffffffffffffffffffff16146105f357600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106709190612eac565b60206040518083038186803b15801561068857600080fd5b505afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c09190612b0d565b6040518363ffffffff1660e01b81526004016106dd929190612ec7565b602060405180830381600087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072f9190612ab3565b505050565b600066038d7ea4c68000905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610784611560565b73ffffffffffffffffffffffffffffffffffffffff16146107a457600080fd5b606482111580156107b6575060648111155b6107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec9061308e565b60405180910390fd5b8160098190555080600a819055505050565b6000610814848484611733565b6108d584610820611560565b6108d08560405180606001604052806028815260200161393560289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610886611560565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e539092919063ffffffff16565b611568565b600190509392505050565b6108e8611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c9061304e565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a1a611560565b73ffffffffffffffffffffffffffffffffffffffff1614610a3a57600080fd5b80600f8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a85611560565b73ffffffffffffffffffffffffffffffffffffffff1614610aa557600080fd5b6000479050610ab381611eb7565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b07611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b9061304e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c93611560565b73ffffffffffffffffffffffffffffffffffffffff1614610cb357600080fd5b66038d7ea4c68000600d8190555066038d7ea4c68000600e81905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d12611560565b73ffffffffffffffffffffffffffffffffffffffff1614610d3257600080fd5b60648183610d409190613290565b14610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790612fce565b60405180910390fd5b81600b8190555080600c819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4b656e73616b7500000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e39611560565b73ffffffffffffffffffffffffffffffffffffffff1614610e5957600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000610ebc30610ab6565b9050610ec781611fda565b5050565b6000610edf610ed8611560565b8484611733565b6001905092915050565b610ef1611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f759061304e565b60405180910390fd5b60005b815181101561100f57600160056000848481518110610fa357610fa261354d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611007906134a6565b915050610f81565b5050565b61101b611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f9061304e565b60405180910390fd5b601360149054906101000a900460ff16156110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef906130ee565b60405180910390fd5b60005b825181101561119e57633b9aca0082828151811061111c5761111b61354d565b5b602002602001015161112e9190613317565b600260008584815181106111455761114461354d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611196906134a6565b9150506110fb565b506111b96111ab30610ab6565b476111b4610d92565b612262565b6001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555060f0426111fc9190613290565b6007819055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112ce611560565b73ffffffffffffffffffffffffffffffffffffffff16146112ee57600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611351611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d59061304e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006114dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612386565b905092915050565b6000808314156114f8576000905061155a565b600082846115069190613317565b905082848261151591906132e6565b14611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061302e565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf906130ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f90612fee565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611726919061312e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906130ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90612f8e565b60405180910390fd5b60008111611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d9061306e565b60405180910390fd5b600954600881905550611867610d92565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118d557506118a5610d92565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d3357600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561197e5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61198757600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a325750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a885750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a95575060075442105b15611bd457600e5481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae89190613290565b1115611b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2090612fae565b60405180910390fd5b600d54811115611b3857600080fd5b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611b8357600080fd5b601e42611b909190613290565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360159054906101000a900460ff16158015611c3f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c575750601360169054906101000a900460ff165b8015611cad5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d32576007544211611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced9061310e565b60405180910390fd5b6000611d0130610ab6565b9050600f54811115611d3057611d1681611fda565b60004790506000811115611d2e57611d2d47611eb7565b5b505b505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611dde5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e345750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4357600a546008819055505b611e4e8383836123e9565b505050565b6000838311158290611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e929190612f6c565b60405180910390fd5b5060008385611eaa9190613371565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f1b600b54611f0d60648661149b90919063ffffffff16565b6114e590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f46573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fab600c54611f9d60648661149b90919063ffffffff16565b6114e590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fd6573d6000803e3d6000fd5b5050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120125761201161357c565b5b6040519080825280602002602001820160405280156120405781602001602082028036833780820191505090505b50905030816000815181106120585761205761354d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156120fa57600080fd5b505afa15801561210e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213291906128f2565b816001815181106121465761214561354d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121ad30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611568565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612211959493929190613149565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6001601360156101000a81548160ff0219169083151502179055506122aa30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611568565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b815260040161231196959493929190612ef0565b6060604051808303818588803b15801561232a57600080fd5b505af115801561233e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123639190612b7a565b5050506000601360156101000a81548160ff021916908315150217905550505050565b600080831182906123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c49190612f6c565b60405180910390fd5b50600083856123dc91906132e6565b9050809150509392505050565b6000806123f583612624565b9150915061244b83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267890919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124e082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c290919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061257581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612615919061312e565b60405180910390a35050505050565b60008060006126526103e8612644600854876114e590919063ffffffff16565b61149b90919063ffffffff16565b90506000612669828661267890919063ffffffff16565b90508082935093505050915091565b60006126ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e53565b905092915050565b60008082846126d19190613290565b905083811015612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d9061300e565b60405180910390fd5b8091505092915050565b600061273361272e846131e3565b6131be565b90508083825260208201905082856020860282011115612756576127556135b0565b5b60005b85811015612786578161276c8882612800565b845260208401935060208301925050600181019050612759565b5050509392505050565b60006127a361279e8461320f565b6131be565b905080838252602082019050828560208602820111156127c6576127c56135b0565b5b60005b858110156127f657816127dc888261289b565b8452602084019350602083019250506001810190506127c9565b5050509392505050565b60008135905061280f816138ef565b92915050565b600081519050612824816138ef565b92915050565b600082601f83011261283f5761283e6135ab565b5b813561284f848260208601612720565b91505092915050565b600082601f83011261286d5761286c6135ab565b5b813561287d848260208601612790565b91505092915050565b60008151905061289581613906565b92915050565b6000813590506128aa8161391d565b92915050565b6000815190506128bf8161391d565b92915050565b6000602082840312156128db576128da6135ba565b5b60006128e984828501612800565b91505092915050565b600060208284031215612908576129076135ba565b5b600061291684828501612815565b91505092915050565b60008060408385031215612936576129356135ba565b5b600061294485828601612800565b925050602061295585828601612800565b9150509250929050565b600080600060608486031215612978576129776135ba565b5b600061298686828701612800565b935050602061299786828701612800565b92505060406129a88682870161289b565b9150509250925092565b600080604083850312156129c9576129c86135ba565b5b60006129d785828601612800565b92505060206129e88582860161289b565b9150509250929050565b600060208284031215612a0857612a076135ba565b5b600082013567ffffffffffffffff811115612a2657612a256135b5565b5b612a328482850161282a565b91505092915050565b60008060408385031215612a5257612a516135ba565b5b600083013567ffffffffffffffff811115612a7057612a6f6135b5565b5b612a7c8582860161282a565b925050602083013567ffffffffffffffff811115612a9d57612a9c6135b5565b5b612aa985828601612858565b9150509250929050565b600060208284031215612ac957612ac86135ba565b5b6000612ad784828501612886565b91505092915050565b600060208284031215612af657612af56135ba565b5b6000612b048482850161289b565b91505092915050565b600060208284031215612b2357612b226135ba565b5b6000612b31848285016128b0565b91505092915050565b60008060408385031215612b5157612b506135ba565b5b6000612b5f8582860161289b565b9250506020612b708582860161289b565b9150509250929050565b600080600060608486031215612b9357612b926135ba565b5b6000612ba1868287016128b0565b9350506020612bb2868287016128b0565b9250506040612bc3868287016128b0565b9150509250925092565b6000612bd98383612bf4565b60208301905092915050565b612bee816133fa565b82525050565b612bfd816133a5565b82525050565b612c0c816133a5565b82525050565b6000612c1d8261324b565b612c27818561326e565b9350612c328361323b565b8060005b83811015612c63578151612c4a8882612bcd565b9750612c5583613261565b925050600181019050612c36565b5085935050505092915050565b612c79816133b7565b82525050565b612c888161340c565b82525050565b6000612c9982613256565b612ca3818561327f565b9350612cb3818560208601613442565b612cbc816135bf565b840191505092915050565b6000612cd460238361327f565b9150612cdf826135d0565b604082019050919050565b6000612cf760108361327f565b9150612d028261361f565b602082019050919050565b6000612d1a600b8361327f565b9150612d2582613648565b602082019050919050565b6000612d3d60228361327f565b9150612d4882613671565b604082019050919050565b6000612d60601b8361327f565b9150612d6b826136c0565b602082019050919050565b6000612d8360218361327f565b9150612d8e826136e9565b604082019050919050565b6000612da660208361327f565b9150612db182613738565b602082019050919050565b6000612dc960298361327f565b9150612dd482613761565b604082019050919050565b6000612dec60198361327f565b9150612df7826137b0565b602082019050919050565b6000612e0f60258361327f565b9150612e1a826137d9565b604082019050919050565b6000612e3260248361327f565b9150612e3d82613828565b604082019050919050565b6000612e5560178361327f565b9150612e6082613877565b602082019050919050565b6000612e7860288361327f565b9150612e83826138a0565b604082019050919050565b612e97816133e3565b82525050565b612ea6816133ed565b82525050565b6000602082019050612ec16000830184612c03565b92915050565b6000604082019050612edc6000830185612be5565b612ee96020830184612e8e565b9392505050565b600060c082019050612f056000830189612c03565b612f126020830188612e8e565b612f1f6040830187612c7f565b612f2c6060830186612c7f565b612f396080830185612c03565b612f4660a0830184612e8e565b979650505050505050565b6000602082019050612f666000830184612c70565b92915050565b60006020820190508181036000830152612f868184612c8e565b905092915050565b60006020820190508181036000830152612fa781612cc7565b9050919050565b60006020820190508181036000830152612fc781612cea565b9050919050565b60006020820190508181036000830152612fe781612d0d565b9050919050565b6000602082019050818103600083015261300781612d30565b9050919050565b6000602082019050818103600083015261302781612d53565b9050919050565b6000602082019050818103600083015261304781612d76565b9050919050565b6000602082019050818103600083015261306781612d99565b9050919050565b6000602082019050818103600083015261308781612dbc565b9050919050565b600060208201905081810360008301526130a781612ddf565b9050919050565b600060208201905081810360008301526130c781612e02565b9050919050565b600060208201905081810360008301526130e781612e25565b9050919050565b6000602082019050818103600083015261310781612e48565b9050919050565b6000602082019050818103600083015261312781612e6b565b9050919050565b60006020820190506131436000830184612e8e565b92915050565b600060a08201905061315e6000830188612e8e565b61316b6020830187612c7f565b818103604083015261317d8186612c12565b905061318c6060830185612c03565b6131996080830184612e8e565b9695505050505050565b60006020820190506131b86000830184612e9d565b92915050565b60006131c86131d9565b90506131d48282613475565b919050565b6000604051905090565b600067ffffffffffffffff8211156131fe576131fd61357c565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561322a5761322961357c565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061329b826133e3565b91506132a6836133e3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132db576132da6134ef565b5b828201905092915050565b60006132f1826133e3565b91506132fc836133e3565b92508261330c5761330b61351e565b5b828204905092915050565b6000613322826133e3565b915061332d836133e3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613366576133656134ef565b5b828202905092915050565b600061337c826133e3565b9150613387836133e3565b92508282101561339a576133996134ef565b5b828203905092915050565b60006133b0826133c3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134058261341e565b9050919050565b6000613417826133e3565b9050919050565b600061342982613430565b9050919050565b600061343b826133c3565b9050919050565b60005b83811015613460578082015181840152602081019050613445565b8381111561346f576000848401525b50505050565b61347e826135bf565b810181811067ffffffffffffffff8211171561349d5761349c61357c565b5b80604052505050565b60006134b1826133e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134e4576134e36134ef565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f742061206368616e63652062756200000000000000000000000000000000600082015250565b7f6d61746820666167676f74000000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f742073657420666565732061626f76652031302500000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203460008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b6138f8816133a5565b811461390357600080fd5b50565b61390f816133b7565b811461391a57600080fd5b50565b613926816133e3565b811461393157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220618b23eade4e89079d638d368a641c0a8c0aa2c94aaebaa0a5666aae1d58a10764736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb14610419578063b515566a14610456578063ccbf6ae21461047f578063dd62ed3e146104a8578063e57f14e1146104e5578063f2fde38b1461050e5761014b565b8063715018a614610343578063751039fc1461035a5780638b25272b146103715780638da5cb5b1461039a57806395d89b41146103c5578063a72e41ff146103f05761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b5780634ea18fab146102c65780636fc3eaec146102ef57806370a08231146103065761014b565b806306fdde0314610150578063095ea7b31461017b57806316114acd146101b857806318160ddd146101e157806321ecff5b1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610537565b6040516101729190612f6c565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906129b2565b610574565b6040516101af9190612f51565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da91906128c5565b610592565b005b3480156101ed57600080fd5b506101f6610734565b604051610203919061312e565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612b3a565b610743565b005b34801561024157600080fd5b5061025c6004803603810190610257919061295f565b610807565b6040516102699190612f51565b60405180910390f35b34801561027e57600080fd5b50610299600480360381019061029491906128c5565b6108e0565b005b3480156102a757600080fd5b506102b06109d0565b6040516102bd91906131a3565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612ae0565b6109d9565b005b3480156102fb57600080fd5b50610304610a44565b005b34801561031257600080fd5b5061032d600480360381019061032891906128c5565b610ab6565b60405161033a919061312e565b60405180910390f35b34801561034f57600080fd5b50610358610aff565b005b34801561036657600080fd5b5061036f610c52565b005b34801561037d57600080fd5b5061039860048036038101906103939190612b3a565b610cd1565b005b3480156103a657600080fd5b506103af610d92565b6040516103bc9190612eac565b60405180910390f35b3480156103d157600080fd5b506103da610dbb565b6040516103e79190612f6c565b60405180910390f35b3480156103fc57600080fd5b50610417600480360381019061041291906128c5565b610df8565b005b34801561042557600080fd5b50610440600480360381019061043b91906129b2565b610ecb565b60405161044d9190612f51565b60405180910390f35b34801561046257600080fd5b5061047d600480360381019061047891906129f2565b610ee9565b005b34801561048b57600080fd5b506104a660048036038101906104a19190612a3b565b611013565b005b3480156104b457600080fd5b506104cf60048036038101906104ca919061291f565b611206565b6040516104dc919061312e565b60405180910390f35b3480156104f157600080fd5b5061050c600480360381019061050791906128c5565b61128d565b005b34801561051a57600080fd5b50610535600480360381019061053091906128c5565b611349565b005b60606040518060400160405280601281526020017f4b656e73616b75206ec58d205461746172690000000000000000000000000000815250905090565b6000610588610581611560565b8484611568565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105d3611560565b73ffffffffffffffffffffffffffffffffffffffff16146105f357600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106709190612eac565b60206040518083038186803b15801561068857600080fd5b505afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c09190612b0d565b6040518363ffffffff1660e01b81526004016106dd929190612ec7565b602060405180830381600087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072f9190612ab3565b505050565b600066038d7ea4c68000905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610784611560565b73ffffffffffffffffffffffffffffffffffffffff16146107a457600080fd5b606482111580156107b6575060648111155b6107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec9061308e565b60405180910390fd5b8160098190555080600a819055505050565b6000610814848484611733565b6108d584610820611560565b6108d08560405180606001604052806028815260200161393560289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610886611560565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e539092919063ffffffff16565b611568565b600190509392505050565b6108e8611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c9061304e565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a1a611560565b73ffffffffffffffffffffffffffffffffffffffff1614610a3a57600080fd5b80600f8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a85611560565b73ffffffffffffffffffffffffffffffffffffffff1614610aa557600080fd5b6000479050610ab381611eb7565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b07611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b9061304e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c93611560565b73ffffffffffffffffffffffffffffffffffffffff1614610cb357600080fd5b66038d7ea4c68000600d8190555066038d7ea4c68000600e81905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d12611560565b73ffffffffffffffffffffffffffffffffffffffff1614610d3257600080fd5b60648183610d409190613290565b14610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790612fce565b60405180910390fd5b81600b8190555080600c819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4b656e73616b7500000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e39611560565b73ffffffffffffffffffffffffffffffffffffffff1614610e5957600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000610ebc30610ab6565b9050610ec781611fda565b5050565b6000610edf610ed8611560565b8484611733565b6001905092915050565b610ef1611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f759061304e565b60405180910390fd5b60005b815181101561100f57600160056000848481518110610fa357610fa261354d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611007906134a6565b915050610f81565b5050565b61101b611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f9061304e565b60405180910390fd5b601360149054906101000a900460ff16156110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ef906130ee565b60405180910390fd5b60005b825181101561119e57633b9aca0082828151811061111c5761111b61354d565b5b602002602001015161112e9190613317565b600260008584815181106111455761114461354d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611196906134a6565b9150506110fb565b506111b96111ab30610ab6565b476111b4610d92565b612262565b6001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555060f0426111fc9190613290565b6007819055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112ce611560565b73ffffffffffffffffffffffffffffffffffffffff16146112ee57600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611351611560565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d59061304e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006114dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612386565b905092915050565b6000808314156114f8576000905061155a565b600082846115069190613317565b905082848261151591906132e6565b14611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061302e565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf906130ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f90612fee565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611726919061312e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906130ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90612f8e565b60405180910390fd5b60008111611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d9061306e565b60405180910390fd5b600954600881905550611867610d92565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118d557506118a5610d92565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d3357600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561197e5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61198757600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a325750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a885750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a95575060075442105b15611bd457600e5481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae89190613290565b1115611b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2090612fae565b60405180910390fd5b600d54811115611b3857600080fd5b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611b8357600080fd5b601e42611b909190613290565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360159054906101000a900460ff16158015611c3f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c575750601360169054906101000a900460ff165b8015611cad5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d32576007544211611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced9061310e565b60405180910390fd5b6000611d0130610ab6565b9050600f54811115611d3057611d1681611fda565b60004790506000811115611d2e57611d2d47611eb7565b5b505b505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611dde5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e345750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4357600a546008819055505b611e4e8383836123e9565b505050565b6000838311158290611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e929190612f6c565b60405180910390fd5b5060008385611eaa9190613371565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f1b600b54611f0d60648661149b90919063ffffffff16565b6114e590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f46573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fab600c54611f9d60648661149b90919063ffffffff16565b6114e590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fd6573d6000803e3d6000fd5b5050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120125761201161357c565b5b6040519080825280602002602001820160405280156120405781602001602082028036833780820191505090505b50905030816000815181106120585761205761354d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156120fa57600080fd5b505afa15801561210e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213291906128f2565b816001815181106121465761214561354d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121ad30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611568565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612211959493929190613149565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6001601360156101000a81548160ff0219169083151502179055506122aa30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611568565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b815260040161231196959493929190612ef0565b6060604051808303818588803b15801561232a57600080fd5b505af115801561233e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123639190612b7a565b5050506000601360156101000a81548160ff021916908315150217905550505050565b600080831182906123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c49190612f6c565b60405180910390fd5b50600083856123dc91906132e6565b9050809150509392505050565b6000806123f583612624565b9150915061244b83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267890919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124e082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c290919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061257581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612615919061312e565b60405180910390a35050505050565b60008060006126526103e8612644600854876114e590919063ffffffff16565b61149b90919063ffffffff16565b90506000612669828661267890919063ffffffff16565b90508082935093505050915091565b60006126ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e53565b905092915050565b60008082846126d19190613290565b905083811015612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d9061300e565b60405180910390fd5b8091505092915050565b600061273361272e846131e3565b6131be565b90508083825260208201905082856020860282011115612756576127556135b0565b5b60005b85811015612786578161276c8882612800565b845260208401935060208301925050600181019050612759565b5050509392505050565b60006127a361279e8461320f565b6131be565b905080838252602082019050828560208602820111156127c6576127c56135b0565b5b60005b858110156127f657816127dc888261289b565b8452602084019350602083019250506001810190506127c9565b5050509392505050565b60008135905061280f816138ef565b92915050565b600081519050612824816138ef565b92915050565b600082601f83011261283f5761283e6135ab565b5b813561284f848260208601612720565b91505092915050565b600082601f83011261286d5761286c6135ab565b5b813561287d848260208601612790565b91505092915050565b60008151905061289581613906565b92915050565b6000813590506128aa8161391d565b92915050565b6000815190506128bf8161391d565b92915050565b6000602082840312156128db576128da6135ba565b5b60006128e984828501612800565b91505092915050565b600060208284031215612908576129076135ba565b5b600061291684828501612815565b91505092915050565b60008060408385031215612936576129356135ba565b5b600061294485828601612800565b925050602061295585828601612800565b9150509250929050565b600080600060608486031215612978576129776135ba565b5b600061298686828701612800565b935050602061299786828701612800565b92505060406129a88682870161289b565b9150509250925092565b600080604083850312156129c9576129c86135ba565b5b60006129d785828601612800565b92505060206129e88582860161289b565b9150509250929050565b600060208284031215612a0857612a076135ba565b5b600082013567ffffffffffffffff811115612a2657612a256135b5565b5b612a328482850161282a565b91505092915050565b60008060408385031215612a5257612a516135ba565b5b600083013567ffffffffffffffff811115612a7057612a6f6135b5565b5b612a7c8582860161282a565b925050602083013567ffffffffffffffff811115612a9d57612a9c6135b5565b5b612aa985828601612858565b9150509250929050565b600060208284031215612ac957612ac86135ba565b5b6000612ad784828501612886565b91505092915050565b600060208284031215612af657612af56135ba565b5b6000612b048482850161289b565b91505092915050565b600060208284031215612b2357612b226135ba565b5b6000612b31848285016128b0565b91505092915050565b60008060408385031215612b5157612b506135ba565b5b6000612b5f8582860161289b565b9250506020612b708582860161289b565b9150509250929050565b600080600060608486031215612b9357612b926135ba565b5b6000612ba1868287016128b0565b9350506020612bb2868287016128b0565b9250506040612bc3868287016128b0565b9150509250925092565b6000612bd98383612bf4565b60208301905092915050565b612bee816133fa565b82525050565b612bfd816133a5565b82525050565b612c0c816133a5565b82525050565b6000612c1d8261324b565b612c27818561326e565b9350612c328361323b565b8060005b83811015612c63578151612c4a8882612bcd565b9750612c5583613261565b925050600181019050612c36565b5085935050505092915050565b612c79816133b7565b82525050565b612c888161340c565b82525050565b6000612c9982613256565b612ca3818561327f565b9350612cb3818560208601613442565b612cbc816135bf565b840191505092915050565b6000612cd460238361327f565b9150612cdf826135d0565b604082019050919050565b6000612cf760108361327f565b9150612d028261361f565b602082019050919050565b6000612d1a600b8361327f565b9150612d2582613648565b602082019050919050565b6000612d3d60228361327f565b9150612d4882613671565b604082019050919050565b6000612d60601b8361327f565b9150612d6b826136c0565b602082019050919050565b6000612d8360218361327f565b9150612d8e826136e9565b604082019050919050565b6000612da660208361327f565b9150612db182613738565b602082019050919050565b6000612dc960298361327f565b9150612dd482613761565b604082019050919050565b6000612dec60198361327f565b9150612df7826137b0565b602082019050919050565b6000612e0f60258361327f565b9150612e1a826137d9565b604082019050919050565b6000612e3260248361327f565b9150612e3d82613828565b604082019050919050565b6000612e5560178361327f565b9150612e6082613877565b602082019050919050565b6000612e7860288361327f565b9150612e83826138a0565b604082019050919050565b612e97816133e3565b82525050565b612ea6816133ed565b82525050565b6000602082019050612ec16000830184612c03565b92915050565b6000604082019050612edc6000830185612be5565b612ee96020830184612e8e565b9392505050565b600060c082019050612f056000830189612c03565b612f126020830188612e8e565b612f1f6040830187612c7f565b612f2c6060830186612c7f565b612f396080830185612c03565b612f4660a0830184612e8e565b979650505050505050565b6000602082019050612f666000830184612c70565b92915050565b60006020820190508181036000830152612f868184612c8e565b905092915050565b60006020820190508181036000830152612fa781612cc7565b9050919050565b60006020820190508181036000830152612fc781612cea565b9050919050565b60006020820190508181036000830152612fe781612d0d565b9050919050565b6000602082019050818103600083015261300781612d30565b9050919050565b6000602082019050818103600083015261302781612d53565b9050919050565b6000602082019050818103600083015261304781612d76565b9050919050565b6000602082019050818103600083015261306781612d99565b9050919050565b6000602082019050818103600083015261308781612dbc565b9050919050565b600060208201905081810360008301526130a781612ddf565b9050919050565b600060208201905081810360008301526130c781612e02565b9050919050565b600060208201905081810360008301526130e781612e25565b9050919050565b6000602082019050818103600083015261310781612e48565b9050919050565b6000602082019050818103600083015261312781612e6b565b9050919050565b60006020820190506131436000830184612e8e565b92915050565b600060a08201905061315e6000830188612e8e565b61316b6020830187612c7f565b818103604083015261317d8186612c12565b905061318c6060830185612c03565b6131996080830184612e8e565b9695505050505050565b60006020820190506131b86000830184612e9d565b92915050565b60006131c86131d9565b90506131d48282613475565b919050565b6000604051905090565b600067ffffffffffffffff8211156131fe576131fd61357c565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561322a5761322961357c565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061329b826133e3565b91506132a6836133e3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132db576132da6134ef565b5b828201905092915050565b60006132f1826133e3565b91506132fc836133e3565b92508261330c5761330b61351e565b5b828204905092915050565b6000613322826133e3565b915061332d836133e3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613366576133656134ef565b5b828202905092915050565b600061337c826133e3565b9150613387836133e3565b92508282101561339a576133996134ef565b5b828203905092915050565b60006133b0826133c3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134058261341e565b9050919050565b6000613417826133e3565b9050919050565b600061342982613430565b9050919050565b600061343b826133c3565b9050919050565b60005b83811015613460578082015181840152602081019050613445565b8381111561346f576000848401525b50505050565b61347e826135bf565b810181811067ffffffffffffffff8211171561349d5761349c61357c565b5b80604052505050565b60006134b1826133e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134e4576134e36134ef565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f742061206368616e63652062756200000000000000000000000000000000600082015250565b7f6d61746820666167676f74000000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f742073657420666565732061626f76652031302500000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203460008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b6138f8816133a5565b811461390357600080fd5b50565b61390f816133b7565b811461391a57600080fd5b50565b613926816133e3565b811461393157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220618b23eade4e89079d638d368a641c0a8c0aa2c94aaebaa0a5666aae1d58a10764736f6c63430008070033

Deployed Bytecode Sourcemap

3700:9416:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5685:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6516:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12869:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5962:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7157:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6685:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11603:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5871:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7013:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12428:188;;;;;;;;;;;;;:::i;:::-;;6065:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2779:148;;;;;;;;;;;;;:::i;:::-;;7613:156;;;;;;;;;;;;;:::i;:::-;;7396:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2384:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5776:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12169:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6190:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11427:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10982:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6365:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7779:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2598:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5685:83;5722:13;5755:5;;;;;;;;;;;;;;;;;5748:12;;5685:83;:::o;6516:161::-;6591:4;6608:39;6617:12;:10;:12::i;:::-;6631:7;6640:6;6608:8;:39::i;:::-;6665:4;6658:11;;6516:161;;;;:::o;12869:244::-;12958:9;;;;;;;;;;;12942:25;;:12;:10;:12::i;:::-;:25;;;12934:34;;;;;;12979:20;13009:12;12979:43;;13033:13;:22;;;13056:9;;;;;;;;;;;13066:13;:23;;;13098:4;13066:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13033:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12923:190;12869:244;:::o;5962:95::-;6015:7;4156:17;6035:14;;5962:95;:::o;7157:231::-;7250:9;;;;;;;;;;;7234:25;;:12;:10;:12::i;:::-;:25;;;7226:34;;;;;;7287:3;7279:4;:11;;:27;;;;;7303:3;7294:5;:12;;7279:27;7271:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7353:4;7346;:11;;;;7375:5;7368:4;:12;;;;7157:231;;:::o;6685:313::-;6783:4;6800:36;6810:6;6818:9;6829:6;6800:9;:36::i;:::-;6847:121;6856:6;6864:12;:10;:12::i;:::-;6878:89;6916:6;6878:89;;;;;;;;;;;;;;;;;:11;:19;6890:6;6878:19;;;;;;;;;;;;;;;:33;6898:12;:10;:12::i;:::-;6878:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6847:8;:121::i;:::-;6986:4;6979:11;;6685:313;;;;;:::o;11603:88::-;2521:12;:10;:12::i;:::-;2511:22;;:6;;;;;;;;;;:22;;;2503:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11678:5:::1;11663:4;:12;11668:6;11663:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11603:88:::0;:::o;5871:83::-;5912:5;4634:1;5930:16;;5871:83;:::o;7013:136::-;7099:9;;;;;;;;;;;7083:25;;:12;:10;:12::i;:::-;:25;;;7075:34;;;;;;7133:6;7120:10;:19;;;;7013:136;:::o;12428:188::-;12494:9;;;;;;;;;;;12478:25;;:12;:10;:12::i;:::-;:25;;;12470:34;;;;;;12515:26;12544:21;12515:50;;12576:32;12589:18;12576:12;:32::i;:::-;12459:157;12428:188::o;6065:117::-;6131:7;6158;:16;6166:7;6158:16;;;;;;;;;;;;;;;;6151:23;;6065:117;;;:::o;2779:148::-;2521:12;:10;:12::i;:::-;2511:22;;:6;;;;;;;;;;:22;;;2503:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2886:1:::1;2849:40;;2870:6;::::0;::::1;;;;;;;;2849:40;;;;;;;;;;;;2917:1;2900:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2779:148::o:0;7613:156::-;7681:9;;;;;;;;;;;7665:25;;:12;:10;:12::i;:::-;:25;;;7657:34;;;;;;4156:17;7702:12;:22;;;;4156:17;7735:16;:26;;;;7613:156::o;7396:209::-;7493:9;;;;;;;;;;;7477:25;;:12;:10;:12::i;:::-;:25;;;7469:34;;;;;;7537:3;7529:4;7522;:11;;;;:::i;:::-;:18;7514:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7572:4;7566:3;:10;;;;7593:4;7587:3;:10;;;;7396:209;;:::o;2384:79::-;2422:7;2449:6;;;;;;;;;;;2442:13;;2384:79;:::o;5776:87::-;5815:13;5848:7;;;;;;;;;;;;;;;;;5841:14;;5776:87;:::o;12169:247::-;12249:9;;;;;;;;;;;12233:25;;:12;:10;:12::i;:::-;:25;;;12225:34;;;;;;12299:4;12270:18;:26;12289:6;12270:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12314:23;12340:24;12358:4;12340:9;:24::i;:::-;12314:50;;12375:33;12392:15;12375:16;:33::i;:::-;12214:202;12169:247;:::o;6190:167::-;6268:4;6285:42;6295:12;:10;:12::i;:::-;6309:9;6320:6;6285:9;:42::i;:::-;6345:4;6338:11;;6190:167;;;;:::o;11427:164::-;2521:12;:10;:12::i;:::-;2511:22;;:6;;;;;;;;;;:22;;;2503:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11501:6:::1;11496:88;11517:5;:12;11513:1;:16;11496:88;;;11568:4;11551;:14;11556:5;11562:1;11556:8;;;;;;;;:::i;:::-;;;;;;;;11551:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11531:3;;;;;:::i;:::-;;;;11496:88;;;;11427:164:::0;:::o;10982:433::-;2521:12;:10;:12::i;:::-;2511:22;;:6;;;;;;;;;;:22;;;2503:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11098:11:::1;;;;;;;;;;;11097:12;11089:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11151:6;11147:77;11162:9;:16;11160:1;:18;11147:77;;;11217:5;11206:7;11214:1;11206:10;;;;;;;;:::i;:::-;;;;;;;;:16;;;;:::i;:::-;11184:7;:21;11192:9;11202:1;11192:12;;;;;;;;:::i;:::-;;;;;;;;11184:21;;;;;;;;;;;;;;;:38;;;;11179:3;;;;;:::i;:::-;;;;11147:77;;;;11234:68;11247:24;11265:4;11247:9;:24::i;:::-;11272:21;11294:7;:5;:7::i;:::-;11234:12;:68::i;:::-;11327:4;11313:11;;:18;;;;;;;;;;;;;;;;;;11356:4;11342:11;;:18;;;;;;;;;;;;;;;;;;11397:9;11378:15;:29;;;;:::i;:::-;11371:4;:36;;;;10982:433:::0;;:::o;6365:143::-;6446:7;6473:11;:18;6485:5;6473:18;;;;;;;;;;;;;;;:27;6492:7;6473:27;;;;;;;;;;;;;;;;6466:34;;6365:143;;;;:::o;7779:147::-;7864:9;;;;;;;;;;;7848:25;;:12;:10;:12::i;:::-;:25;;;7840:34;;;;;;7914:4;7885:18;:26;7904:6;7885:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;7779:147;:::o;2598:173::-;2521:12;:10;:12::i;:::-;2511:22;;:6;;;;;;;;;;:22;;;2503:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2714:9:::1;2685:39;;2706:6;::::0;::::1;;;;;;;;2685:39;;;;;;;;;;;;2744:9;2735:6;::::0;:18:::1;;;;;;;;;;;;;;;;;;2598:173:::0;:::o;1691:132::-;1749:7;1776:39;1780:1;1783;1776:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1769:46;;1691:132;;;;:::o;1437:246::-;1495:7;1524:1;1519;:6;1515:47;;;1549:1;1542:8;;;;1515:47;1572:9;1588:1;1584;:5;;;;:::i;:::-;1572:17;;1617:1;1612;1608;:5;;;;:::i;:::-;:10;1600:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1674:1;1667:8;;;1437:246;;;;;:::o;102:98::-;155:7;182:10;175:17;;102:98;:::o;7939:335::-;8049:1;8032:19;;:5;:19;;;;8024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8130:1;8111:21;;:7;:21;;;;8103:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8212:6;8182:11;:18;8194:5;8182:18;;;;;;;;;;;;;;;:27;8201:7;8182:27;;;;;;;;;;;;;;;:36;;;;8250:7;8234:32;;8243:5;8234:32;;;8259:6;8234:32;;;;;;:::i;:::-;;;;;;;;7939:335;;;:::o;8282:1710::-;8386:1;8370:18;;:4;:18;;;;8362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8463:1;8449:16;;:2;:16;;;;8441:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8533:1;8524:6;:10;8516:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8600:4;;8593;:11;;;;8627:7;:5;:7::i;:::-;8619:15;;:4;:15;;;;:32;;;;;8644:7;:5;:7::i;:::-;8638:13;;:2;:13;;;;8619:32;8615:1185;;;8677:4;:10;8682:4;8677:10;;;;;;;;;;;;;;;;;;;;;;;;;8676:11;:24;;;;;8692:4;:8;8697:2;8692:8;;;;;;;;;;;;;;;;;;;;;;;;;8691:9;8676:24;8668:33;;;;;;8728:13;;;;;;;;;;;8720:21;;:4;:21;;;:55;;;;;8759:15;;;;;;;;;;;8745:30;;:2;:30;;;;8720:55;:83;;;;;8781:18;:22;8800:2;8781:22;;;;;;;;;;;;;;;;;;;;;;;;;8779:24;8720:83;:111;;;;;8826:4;;8808:15;:22;8720:111;8716:422;;;8914:16;;8903:6;8889:7;:11;8897:2;8889:11;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;8888:42;;8880:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8987:12;;8977:6;:22;;8969:31;;;;;;9042:15;9027:8;:12;9036:2;9027:12;;;;;;;;;;;;;;;;:30;9019:39;;;;;;9111:10;9092:15;:30;;;;:::i;:::-;9077:8;:12;9086:2;9077:12;;;;;;;;;;;;;;;:45;;;;8716:422;9185:6;;;;;;;;;;;9184:7;:32;;;;;9203:13;;;;;;;;;;;9195:21;;:4;:21;;;;9184:32;:47;;;;;9220:11;;;;;;;;;;;9184:47;:76;;;;;9236:18;:24;9255:4;9236:24;;;;;;;;;;;;;;;;;;;;;;;;;9235:25;9184:76;9180:609;;;9307:4;;9289:15;:22;9281:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9374:28;9405:24;9423:4;9405:9;:24::i;:::-;9374:55;;9474:10;;9451:20;:33;9448:326;;;9508:38;9525:20;9508:16;:38::i;:::-;9569:26;9598:21;9569:50;;9666:1;9645:18;:22;9642:113;;;9696:35;9709:21;9696:12;:35::i;:::-;9642:113;9485:289;9448:326;9262:527;9180:609;8615:1185;9820:13;;;;;;;;;;;9814:19;;:2;:19;;;:55;;;;;9853:15;;;;;;;;;;;9837:32;;:4;:32;;;;9814:55;:85;;;;;9875:18;:24;9894:4;9875:24;;;;;;;;;;;;;;;;;;;;;;;;;9873:26;9814:85;9810:129;;;9923:4;;9916;:11;;;;9810:129;9951:33;9969:4;9974:2;9977:6;9951:17;:33::i;:::-;8282:1710;;;:::o;1239:190::-;1325:7;1358:1;1353;:6;;1361:12;1345:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1385:9;1401:1;1397;:5;;;;:::i;:::-;1385:17;;1420:1;1413:8;;;1239:190;;;;;:::o;10799:171::-;10856:9;;;;;;;;;;;:18;;:44;10875:24;10895:3;;10875:15;10886:3;10875:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;10856:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10911:16;;;;;;;;;;;:25;;:51;10937:24;10957:3;;10937:15;10948:3;10937:6;:10;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;10911:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10799:171;:::o;10000:483::-;4959:4;4950:6;;:13;;;;;;;;;;;;;;;;;;10078:21:::1;10116:1;10102:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10078:40;;10147:4;10129;10134:1;10129:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10173:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10163:4;10168:1;10163:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10206:62;10223:4;10238:15;;;;;;;;;;;10256:11;10206:8;:62::i;:::-;10279:15;;;;;;;;;;;:66;;;10360:11;10386:1;10402:4;10429;10449:15;10279:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10067:416;4995:5:::0;4986:6;;:14;;;;;;;;;;;;;;;;;;10000:483;:::o;10497:288::-;4959:4;4950:6;;:13;;;;;;;;;;;;;;;;;;10603:60:::1;10620:4;10634:15;;;;;;;;;;;10651:11;10603:8;:60::i;:::-;10674:15;;;;;;;;;;;:31;;;10713:9;10732:4;10738:11;10750:1;10752::::0;10754:6:::1;10761:15;10674:103;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;4995:5:::0;4986:6;;:14;;;;;;;;;;;;;;;;;;10497:288;;;:::o;1831:189::-;1917:7;1949:1;1945;:5;1952:12;1937:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1976:9;1992:1;1988;:5;;;;:::i;:::-;1976:17;;2011:1;2004:8;;;1831:189;;;;;:::o;11699:421::-;11798:22;11821:12;11837:20;11849:7;11837:11;:20::i;:::-;11797:60;;;;11886:28;11906:7;11886;:15;11894:6;11886:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11868:7;:15;11876:6;11868:15;;;;;;;;;;;;;;;:46;;;;11946:38;11969:14;11946:7;:18;11954:9;11946:18;;;;;;;;;;;;;;;;:22;;:38;;;;:::i;:::-;11925:7;:18;11933:9;11925:18;;;;;;;;;;;;;;;:59;;;;12021:32;12048:4;12021:7;:22;12037:4;12021:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;11996:7;:22;12012:4;11996:22;;;;;;;;;;;;;;;:57;;;;12086:9;12069:43;;12078:6;12069:43;;;12097:14;12069:43;;;;;;:::i;:::-;;;;;;;;11786:334;;11699:421;;;:::o;12627:234::-;12687:7;12696;12716:12;12731:27;12753:4;12731:17;12743:4;;12731:7;:11;;:17;;;;:::i;:::-;:21;;:27;;;;:::i;:::-;12716:42;;12769:23;12795:17;12807:4;12795:7;:11;;:17;;;;:::i;:::-;12769:43;;12831:15;12848:4;12823:30;;;;;;12627:234;;;:::o;1095:136::-;1153:7;1180:43;1184:1;1187;1180:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1173:50;;1095:136;;;;:::o;908:179::-;966:7;986:9;1002:1;998;:5;;;;:::i;:::-;986:17;;1027:1;1022;:6;;1014:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1078:1;1071:8;;;908: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:::-;15516:3;15537:67;15601:2;15596:3;15537:67;:::i;:::-;15530:74;;15613:93;15702:3;15613:93;:::i;:::-;15731:2;15726:3;15722:12;15715:19;;15374:366;;;:::o;15746:118::-;15833:24;15851:5;15833:24;:::i;:::-;15828:3;15821:37;15746:118;;:::o;15870:112::-;15953:22;15969:5;15953:22;:::i;:::-;15948:3;15941:35;15870:112;;:::o;15988:222::-;16081:4;16119:2;16108:9;16104:18;16096:26;;16132:71;16200:1;16189:9;16185:17;16176:6;16132:71;:::i;:::-;15988:222;;;;:::o;16216:348::-;16345:4;16383:2;16372:9;16368:18;16360:26;;16396:79;16472:1;16461:9;16457:17;16448:6;16396:79;:::i;:::-;16485:72;16553:2;16542:9;16538:18;16529:6;16485:72;:::i;:::-;16216:348;;;;;:::o;16570:807::-;16819:4;16857:3;16846:9;16842:19;16834:27;;16871:71;16939:1;16928:9;16924:17;16915:6;16871:71;:::i;:::-;16952:72;17020:2;17009:9;17005:18;16996:6;16952:72;:::i;:::-;17034:80;17110:2;17099:9;17095:18;17086:6;17034:80;:::i;:::-;17124;17200:2;17189:9;17185:18;17176:6;17124:80;:::i;:::-;17214:73;17282:3;17271:9;17267:19;17258:6;17214:73;:::i;:::-;17297;17365:3;17354:9;17350:19;17341:6;17297:73;:::i;:::-;16570:807;;;;;;;;;:::o;17383:210::-;17470:4;17508:2;17497:9;17493:18;17485:26;;17521:65;17583:1;17572:9;17568:17;17559:6;17521:65;:::i;:::-;17383:210;;;;:::o;17599:313::-;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:78;17900:4;17891:6;17827:78;:::i;:::-;17819:86;;17599:313;;;;:::o;17918:419::-;18084:4;18122:2;18111:9;18107:18;18099:26;;18171:9;18165:4;18161:20;18157:1;18146:9;18142:17;18135:47;18199:131;18325:4;18199:131;:::i;:::-;18191:139;;17918:419;;;:::o;18343:::-;18509:4;18547:2;18536:9;18532:18;18524:26;;18596:9;18590:4;18586:20;18582:1;18571:9;18567:17;18560:47;18624:131;18750:4;18624:131;:::i;:::-;18616:139;;18343:419;;;:::o;18768:::-;18934:4;18972:2;18961:9;18957:18;18949:26;;19021:9;19015:4;19011:20;19007:1;18996:9;18992:17;18985:47;19049:131;19175:4;19049:131;:::i;:::-;19041:139;;18768:419;;;:::o;19193:::-;19359:4;19397:2;19386:9;19382:18;19374:26;;19446:9;19440:4;19436:20;19432:1;19421:9;19417:17;19410:47;19474:131;19600:4;19474:131;:::i;:::-;19466:139;;19193:419;;;:::o;19618:::-;19784:4;19822:2;19811:9;19807:18;19799:26;;19871:9;19865:4;19861:20;19857:1;19846:9;19842:17;19835:47;19899:131;20025:4;19899:131;:::i;:::-;19891:139;;19618:419;;;:::o;20043:::-;20209:4;20247:2;20236:9;20232:18;20224:26;;20296:9;20290:4;20286:20;20282:1;20271:9;20267:17;20260:47;20324:131;20450:4;20324:131;:::i;:::-;20316:139;;20043:419;;;:::o;20468:::-;20634:4;20672:2;20661:9;20657:18;20649:26;;20721:9;20715:4;20711:20;20707:1;20696:9;20692:17;20685:47;20749:131;20875:4;20749:131;:::i;:::-;20741:139;;20468:419;;;:::o;20893:::-;21059:4;21097:2;21086:9;21082:18;21074:26;;21146:9;21140:4;21136:20;21132:1;21121:9;21117:17;21110:47;21174:131;21300:4;21174:131;:::i;:::-;21166:139;;20893:419;;;:::o;21318:::-;21484:4;21522:2;21511:9;21507:18;21499:26;;21571:9;21565:4;21561:20;21557:1;21546:9;21542:17;21535:47;21599:131;21725:4;21599:131;:::i;:::-;21591:139;;21318:419;;;:::o;21743:::-;21909:4;21947:2;21936:9;21932:18;21924:26;;21996:9;21990:4;21986:20;21982:1;21971:9;21967:17;21960:47;22024:131;22150:4;22024:131;:::i;:::-;22016:139;;21743:419;;;:::o;22168:::-;22334:4;22372:2;22361:9;22357:18;22349:26;;22421:9;22415:4;22411:20;22407:1;22396:9;22392:17;22385:47;22449:131;22575:4;22449:131;:::i;:::-;22441:139;;22168:419;;;:::o;22593:::-;22759:4;22797:2;22786:9;22782:18;22774:26;;22846:9;22840:4;22836:20;22832:1;22821:9;22817:17;22810:47;22874:131;23000:4;22874:131;:::i;:::-;22866:139;;22593:419;;;:::o;23018:::-;23184:4;23222:2;23211:9;23207:18;23199:26;;23271:9;23265:4;23261:20;23257:1;23246:9;23242:17;23235:47;23299:131;23425:4;23299:131;:::i;:::-;23291:139;;23018:419;;;:::o;23443:222::-;23536:4;23574:2;23563:9;23559:18;23551:26;;23587:71;23655:1;23644:9;23640:17;23631:6;23587:71;:::i;:::-;23443:222;;;;:::o;23671:831::-;23934:4;23972:3;23961:9;23957:19;23949:27;;23986:71;24054:1;24043:9;24039:17;24030:6;23986:71;:::i;:::-;24067:80;24143:2;24132:9;24128:18;24119:6;24067:80;:::i;:::-;24194:9;24188:4;24184:20;24179:2;24168:9;24164:18;24157:48;24222:108;24325:4;24316:6;24222:108;:::i;:::-;24214:116;;24340:72;24408:2;24397:9;24393:18;24384:6;24340:72;:::i;:::-;24422:73;24490:3;24479:9;24475:19;24466:6;24422:73;:::i;:::-;23671:831;;;;;;;;:::o;24508:214::-;24597:4;24635:2;24624:9;24620:18;24612:26;;24648:67;24712:1;24701:9;24697:17;24688:6;24648:67;:::i;:::-;24508:214;;;;:::o;24728:129::-;24762:6;24789:20;;:::i;:::-;24779:30;;24818:33;24846:4;24838:6;24818:33;:::i;:::-;24728:129;;;:::o;24863:75::-;24896:6;24929:2;24923:9;24913:19;;24863:75;:::o;24944:311::-;25021:4;25111:18;25103:6;25100:30;25097:56;;;25133:18;;:::i;:::-;25097:56;25183:4;25175:6;25171:17;25163:25;;25243:4;25237;25233:15;25225:23;;24944:311;;;:::o;25261:::-;25338:4;25428:18;25420:6;25417:30;25414:56;;;25450:18;;:::i;:::-;25414:56;25500:4;25492:6;25488:17;25480:25;;25560:4;25554;25550:15;25542:23;;25261:311;;;:::o;25578:132::-;25645:4;25668:3;25660:11;;25698:4;25693:3;25689:14;25681:22;;25578:132;;;:::o;25716:114::-;25783:6;25817:5;25811:12;25801:22;;25716:114;;;:::o;25836:99::-;25888:6;25922:5;25916:12;25906:22;;25836:99;;;:::o;25941:113::-;26011:4;26043;26038:3;26034:14;26026:22;;25941:113;;;:::o;26060:184::-;26159:11;26193:6;26188:3;26181:19;26233:4;26228:3;26224:14;26209:29;;26060:184;;;;:::o;26250:169::-;26334:11;26368:6;26363:3;26356:19;26408:4;26403:3;26399:14;26384:29;;26250:169;;;;:::o;26425:305::-;26465:3;26484:20;26502:1;26484:20;:::i;:::-;26479:25;;26518:20;26536:1;26518:20;:::i;:::-;26513:25;;26672:1;26604:66;26600:74;26597:1;26594:81;26591:107;;;26678:18;;:::i;:::-;26591:107;26722:1;26719;26715:9;26708:16;;26425:305;;;;:::o;26736:185::-;26776:1;26793:20;26811:1;26793:20;:::i;:::-;26788:25;;26827:20;26845:1;26827:20;:::i;:::-;26822:25;;26866:1;26856:35;;26871:18;;:::i;:::-;26856:35;26913:1;26910;26906:9;26901:14;;26736:185;;;;:::o;26927:348::-;26967:7;26990:20;27008:1;26990:20;:::i;:::-;26985:25;;27024:20;27042:1;27024:20;:::i;:::-;27019:25;;27212:1;27144:66;27140:74;27137:1;27134:81;27129:1;27122:9;27115:17;27111:105;27108:131;;;27219:18;;:::i;:::-;27108:131;27267:1;27264;27260:9;27249:20;;26927:348;;;;:::o;27281:191::-;27321:4;27341:20;27359:1;27341:20;:::i;:::-;27336:25;;27375:20;27393:1;27375:20;:::i;:::-;27370:25;;27414:1;27411;27408:8;27405:34;;;27419:18;;:::i;:::-;27405:34;27464:1;27461;27457:9;27449:17;;27281:191;;;;:::o;27478:96::-;27515:7;27544:24;27562:5;27544:24;:::i;:::-;27533:35;;27478:96;;;:::o;27580:90::-;27614:7;27657:5;27650:13;27643:21;27632:32;;27580:90;;;:::o;27676:126::-;27713:7;27753:42;27746:5;27742:54;27731:65;;27676:126;;;:::o;27808:77::-;27845:7;27874:5;27863:16;;27808:77;;;:::o;27891:86::-;27926:7;27966:4;27959:5;27955:16;27944:27;;27891:86;;;:::o;27983:134::-;28041:9;28074:37;28105:5;28074:37;:::i;:::-;28061:50;;27983:134;;;:::o;28123:121::-;28181:9;28214:24;28232:5;28214:24;:::i;:::-;28201:37;;28123:121;;;:::o;28250:126::-;28300:9;28333:37;28364:5;28333:37;:::i;:::-;28320:50;;28250:126;;;:::o;28382:113::-;28432:9;28465:24;28483:5;28465:24;:::i;:::-;28452:37;;28382:113;;;:::o;28501:307::-;28569:1;28579:113;28593:6;28590:1;28587:13;28579:113;;;28678:1;28673:3;28669:11;28663:18;28659:1;28654:3;28650:11;28643:39;28615:2;28612:1;28608:10;28603:15;;28579:113;;;28710:6;28707:1;28704:13;28701:101;;;28790:1;28781:6;28776:3;28772:16;28765:27;28701:101;28550:258;28501:307;;;:::o;28814:281::-;28897:27;28919:4;28897:27;:::i;:::-;28889:6;28885:40;29027:6;29015:10;29012:22;28991:18;28979:10;28976:34;28973:62;28970:88;;;29038:18;;:::i;:::-;28970:88;29078:10;29074:2;29067:22;28857:238;28814:281;;:::o;29101:233::-;29140:3;29163:24;29181:5;29163:24;:::i;:::-;29154:33;;29209:66;29202:5;29199:77;29196:103;;;29279:18;;:::i;:::-;29196:103;29326:1;29319:5;29315:13;29308:20;;29101:233;;;:::o;29340:180::-;29388:77;29385:1;29378:88;29485:4;29482:1;29475:15;29509:4;29506:1;29499:15;29526:180;29574:77;29571:1;29564:88;29671:4;29668:1;29661:15;29695:4;29692:1;29685:15;29712:180;29760:77;29757:1;29750:88;29857:4;29854:1;29847:15;29881:4;29878:1;29871:15;29898:180;29946:77;29943:1;29936:88;30043:4;30040:1;30033:15;30067:4;30064:1;30057:15;30084:117;30193:1;30190;30183:12;30207:117;30316:1;30313;30306:12;30330:117;30439:1;30436;30429:12;30453:117;30562:1;30559;30552:12;30576:102;30617:6;30668:2;30664:7;30659:2;30652:5;30648:14;30644:28;30634:38;;30576:102;;;:::o;30684:222::-;30824:34;30820:1;30812:6;30808:14;30801:58;30893:5;30888:2;30880:6;30876:15;30869:30;30684:222;:::o;30912:166::-;31052:18;31048:1;31040:6;31036:14;31029:42;30912:166;:::o;31084:161::-;31224:13;31220:1;31212:6;31208:14;31201:37;31084:161;:::o;31251:221::-;31391:34;31387:1;31379:6;31375:14;31368:58;31460:4;31455:2;31447:6;31443:15;31436:29;31251:221;:::o;31478:177::-;31618:29;31614:1;31606:6;31602:14;31595:53;31478:177;:::o;31661:220::-;31801:34;31797:1;31789:6;31785:14;31778:58;31870:3;31865:2;31857:6;31853:15;31846:28;31661:220;:::o;31887:182::-;32027:34;32023:1;32015:6;32011:14;32004:58;31887:182;:::o;32075:228::-;32215:34;32211:1;32203:6;32199:14;32192:58;32284:11;32279:2;32271:6;32267:15;32260:36;32075:228;:::o;32309:175::-;32449:27;32445:1;32437:6;32433:14;32426:51;32309:175;:::o;32490:224::-;32630:34;32626:1;32618:6;32614:14;32607:58;32699:7;32694:2;32686:6;32682:15;32675:32;32490:224;:::o;32720:223::-;32860:34;32856:1;32848:6;32844:14;32837:58;32929:6;32924:2;32916:6;32912:15;32905:31;32720:223;:::o;32949:173::-;33089:25;33085:1;33077:6;33073:14;33066:49;32949:173;:::o;33128:227::-;33268:34;33264:1;33256:6;33252:14;33245:58;33337:10;33332:2;33324:6;33320:15;33313:35;33128:227;:::o;33361:122::-;33434:24;33452:5;33434:24;:::i;:::-;33427:5;33424:35;33414:63;;33473:1;33470;33463:12;33414:63;33361:122;:::o;33489:116::-;33559:21;33574:5;33559:21;:::i;:::-;33552:5;33549:32;33539:60;;33595:1;33592;33585:12;33539:60;33489:116;:::o;33611:122::-;33684:24;33702:5;33684:24;:::i;:::-;33677:5;33674:35;33664:63;;33723:1;33720;33713:12;33664:63;33611:122;:::o

Swarm Source

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