ETH Price: $2,523.09 (-0.05%)

Token

ChickyInu (CHICKY)
 

Overview

Max Total Supply

1,000,000 CHICKY

Holders

173

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 CHICKY

Value
$0.00
0xf02df97ea80e4b00f4ad077cef7e349202686a8f
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:
Chickyinu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-10
*/

/*
From Pibull 
Made Chicky to became the biggest community bird meme 2023 
hope chicky get in hands to same community like pitbull which pushed us to a billion mc
*/
pragma solidity 0.8.17;

//SPDX-License-Identifier: MIT


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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Chickyinu is IERC20 , Auth {
    using SafeMath for uint256;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    
    string constant _name = "ChickyInu";
    string constant _symbol = "CHICKY";
    uint8 constant _decimals = 9;
    
    uint256 _totalSupply = 1 * (10**6) * (10 ** _decimals);
    
    uint256 public _maxTxAmount = _totalSupply.mul(10).div(1000); //
    uint256 public _maxWalletToken =  _totalSupply.mul(10).div(1000); //

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    //fees are set with a 10x multiplier to allow for 2.5 etc. Denominator of 1000
    uint256 marketingBuyFee = 70;
    uint256 liquidityBuyFee = 30;
    uint256 devBuyFee = 20;
    uint256 public totalBuyFee = marketingBuyFee.add(liquidityBuyFee).add(devBuyFee);

    uint256 marketingSellFee = 70;
    uint256 liquiditySellFee = 30;
    uint256 devSellFee = 20;
    uint256 public totalSellFee = marketingSellFee.add(liquiditySellFee).add(devSellFee);

    uint256 marketingFee = marketingBuyFee.add(marketingSellFee);
    uint256 liquidityFee = liquidityBuyFee.add(liquiditySellFee);
    uint256 devFee = devBuyFee.add(devSellFee);

    uint256 totalFee = liquidityFee.add(marketingFee).add(devFee);

    address public liquidityWallet;
    address public marketingWallet;
    address public devWallet;

    //one time trade lock
    bool lockTilStart = true;
    bool lockUsed = false;

    //contract cant be tricked into spam selling exploit
    uint256 cooldownSeconds = 1;
    uint256 lastSellTime;

    event LockTilStartUpdated(bool enabled);

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply.mul(10).div(100000);
    uint256 swapRatio = 40;
    bool ratioSell = true;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, address(this));
        _allowances[address(this)][address(router)] = _totalSupply;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

    liquidityWallet = 0x3695a987428522157E6884Eaf085fD6EA3a0Ca3F;
    marketingWallet = 0x50C31E1a422f620B18F12EFF6Dd22424FD5b0f74;
    devWallet = 0xC1B96367D84C7747D76Fec8ff8Ecabc2EBC7e22b;

        approve(address(router), _totalSupply);
        approve(address(pair), _totalSupply);
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function getPair() external view returns (address){return pair;}

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee, 
                    uint256 _devFee) external authorized{
        require((_marketingFee.add(_liquidityFee).add(_devFee)) <= 150);
        marketingBuyFee = _marketingFee;
        liquidityBuyFee = _liquidityFee;
        devBuyFee = _devFee;

        marketingFee = marketingSellFee.add(_marketingFee);
        liquidityFee = liquiditySellFee.add(_liquidityFee);
        devFee = devSellFee.add(_devFee);

        totalBuyFee = _marketingFee.add(_liquidityFee).add(_devFee);
        totalFee = liquidityFee.add(marketingFee).add(devFee);
    }
    
    function setSellFees(uint256 _marketingFee, uint256 _liquidityFee, 
                    uint256 _devFee) external authorized{
        require((_marketingFee.add(_liquidityFee).add(_devFee)) <= 150);
        marketingSellFee = _marketingFee;
        liquiditySellFee = _liquidityFee;
        devSellFee = _devFee;

        marketingFee = marketingBuyFee.add(_marketingFee);
        liquidityFee = liquidityBuyFee.add(_liquidityFee);
        devFee = devBuyFee.add(_devFee);

        totalSellFee = _marketingFee.add(_liquidityFee).add(_devFee);
        totalFee = liquidityFee.add(marketingFee).add(devFee);
    }

    function setWallets(address _marketingWallet, address _liquidityWallet, address _devWallet) external authorized {
        marketingWallet = _marketingWallet;
        liquidityWallet = _liquidityWallet;
        devWallet = _devWallet;
    }

    function setMaxWallet(uint256 percent) external authorized {
        require(percent >= 5); //0.5% of supply, no lower
        _maxWalletToken = ( _totalSupply * percent ) / 1000;
    }

    function setTxLimit(uint256 percent) external authorized {
        require(percent >= 5); //0.5% of supply, no lower
        _maxTxAmount = ( _totalSupply * percent ) / 1000;
    }
    
    function clearStuckBalance(uint256 amountPercentage) external  {
        uint256 amountETH = address(this).balance;
        payable(marketingWallet).transfer(amountETH * amountPercentage / 100);
    }

    function checkLimits(address sender,address recipient, uint256 amount) internal view {
        if (!authorizations[sender] && recipient != address(this) && sender != address(this)  
            && recipient != address(DEAD) && recipient != pair && recipient != marketingWallet && recipient != liquidityWallet){
                uint256 heldTokens = balanceOf(recipient);
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded");
    }

    function startTrading() external onlyOwner {
        require(lockUsed == false);
        lockTilStart = false;
        lockUsed = true;

        emit LockTilStartUpdated(lockTilStart);
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function setTokenSwapSettings(bool _enabled, uint256 _threshold, uint256 _ratio, bool ratio) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _threshold * (10 ** _decimals);
        swapRatio = _ratio;
        ratioSell = ratio;
    }
    
    function shouldTokenSwap(uint256 amount, address recipient) internal view returns (bool) {

        bool timeToSell = lastSellTime.add(cooldownSeconds) < block.timestamp;

        return recipient == pair
        && timeToSell
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold
        && _balances[address(this)] >= amount.mul(swapRatio).div(100);
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 _totalFee;

        _totalFee = (recipient == pair) ? totalSellFee : totalBuyFee;

        uint256 feeAmount = amount.mul(_totalFee).div(1000);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);

        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function tokenSwap(uint256 _amount) internal swapping {

        uint256 amount = (ratioSell) ? _amount.mul(swapRatio).div(100) : swapThreshold;

        (amount > swapThreshold) ? amount : amount = swapThreshold;

        uint256 amountToLiquify = (liquidityFee > 0) ? amount.mul(liquidityFee).div(totalFee).div(2) : 0;

        uint256 amountToSwap = amount.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        bool tmpSuccess;

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = (liquidityFee > 0) ? totalFee.sub(liquidityFee.div(2)) : totalFee;

        if (devFee > 0){
            uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);
            
            (tmpSuccess,) = payable(devWallet).call{value: amountETHdev, gas: 100000}("");
            tmpSuccess = false;
        }

        if(amountToLiquify > 0){
            uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
        if (marketingFee > 0){
            uint256 amountETHMarketing = address(this).balance;

            (tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 100000}("");
            tmpSuccess = false;
        }

        lastSellTime = block.timestamp;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        if (owner == msg.sender){
            return _basicTransfer(msg.sender, recipient, amount);
        }
        else {
            return _transferFrom(msg.sender, recipient, amount);
        }
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(_allowances[sender][msg.sender] != _totalSupply){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");


        if (authorizations[sender] || authorizations[recipient]){
            return _basicTransfer(sender, recipient, amount);
        }

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(lockTilStart != true,"Trading not open yet");
        }

        checkLimits(sender, recipient, amount);

        if(shouldTokenSwap(amount, recipient)){ tokenSwap(amount); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount;
        
        _balances[recipient] = _balances[recipient].add(amountReceived);
        
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    event AutoLiquify(uint256 amountETH, uint256 amountCoin);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountCoin","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"LockTilStartUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"uint256","name":"_ratio","type":"uint256"},{"internalType":"bool","name":"ratio","type":"bool"}],"name":"setTokenSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000d15565b620f4240620000a9919062000d66565b600455620000e46103e8620000d0600a600454620008e760201b6200191d1790919060201c565b6200096a60201b620019971790919060201c565b6005556200011f6103e86200010b600a600454620008e760201b6200191d1790919060201c565b6200096a60201b620019971790919060201c565b6006556046600b55601e600c556014600d556200016a600d5462000156600c54600b54620009bc60201b620019e11790919060201c565b620009bc60201b620019e11790919060201c565b600e556046600f55601e6010556014601155620001b5601154620001a1601054600f54620009bc60201b620019e11790919060201c565b620009bc60201b620019e11790919060201c565b601255620001d6600f54600b54620009bc60201b620019e11790919060201c565b601355620001f7601054600c54620009bc60201b620019e11790919060201c565b60145562000218601154600d54620009bc60201b620019e11790919060201c565b6015556200025460155462000240601354601454620009bc60201b620019e11790919060201c565b620009bc60201b620019e11790919060201c565b6016556001601960146101000a81548160ff0219169083151502179055506000601960156101000a81548160ff0219169083151502179055506001601a556001601d60146101000a81548160ff021916908315150217905550620002e6620186a0620002d2600a600454620008e760201b6200191d1790919060201c565b6200096a60201b620019971790919060201c565b601e556028601f556001602060006101000a81548160ff0219169083151502179055503480156200031657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000499919062000e1b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306040518363ffffffff1660e01b8152600401620004e992919062000e5e565b6020604051808303816000875af115801562000509573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052f919062000e1b565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550733695a987428522157e6884eaf085fd6ea3a0ca3f601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507350c31e1a422f620b18f12eff6dd22424fd5b0f74601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c1b96367d84c7747d76fec8ff8ecabc2ebc7e22b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620007f9601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045462000a1f60201b60201c565b5062000830601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045462000a1f60201b60201c565b50600454600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620008d9919062000e9c565b60405180910390a362001123565b6000808303620008fb576000905062000964565b600082846200090b919062000d66565b90508284826200091c919062000ee8565b146200095f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009569062000fa7565b60405180910390fd5b809150505b92915050565b6000620009b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b1360201b60201c565b905092915050565b6000808284620009cd919062000fc9565b90508381101562000a15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a0c9062001054565b60405180910390fd5b8091505092915050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000b01919062000e9c565b60405180910390a36001905092915050565b6000808311829062000b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b549190620010ff565b60405180910390fd5b506000838562000b6e919062000ee8565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c095780860481111562000be15762000be062000b7b565b5b600185161562000bf15780820291505b808102905062000c018562000baa565b945062000bc1565b94509492505050565b60008262000c24576001905062000cf7565b8162000c34576000905062000cf7565b816001811462000c4d576002811462000c585762000c8e565b600191505062000cf7565b60ff84111562000c6d5762000c6c62000b7b565b5b8360020a91508482111562000c875762000c8662000b7b565b5b5062000cf7565b5060208310610133831016604e8410600b841016171562000cc85782820a90508381111562000cc25762000cc162000b7b565b5b62000cf7565b62000cd7848484600162000bb7565b9250905081840481111562000cf15762000cf062000b7b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d228262000cfe565b915062000d2f8362000d08565b925062000d5e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c12565b905092915050565b600062000d738262000cfe565b915062000d808362000cfe565b925082820262000d908162000cfe565b9150828204841483151762000daa5762000da962000b7b565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000de38262000db6565b9050919050565b62000df58162000dd6565b811462000e0157600080fd5b50565b60008151905062000e158162000dea565b92915050565b60006020828403121562000e345762000e3362000db1565b5b600062000e448482850162000e04565b91505092915050565b62000e588162000dd6565b82525050565b600060408201905062000e75600083018562000e4d565b62000e84602083018462000e4d565b9392505050565b62000e968162000cfe565b82525050565b600060208201905062000eb3600083018462000e8b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ef58262000cfe565b915062000f028362000cfe565b92508262000f155762000f1462000eb9565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000f8f60218362000f20565b915062000f9c8262000f31565b604082019050919050565b6000602082019050818103600083015262000fc28162000f80565b9050919050565b600062000fd68262000cfe565b915062000fe38362000cfe565b925082820190508082111562000ffe5762000ffd62000b7b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200103c601b8362000f20565b9150620010498262001004565b602082019050919050565b600060208201905081810360008301526200106f816200102d565b9050919050565b600081519050919050565b60005b83811015620010a157808201518184015260208101905062001084565b60008484015250505050565b6000601f19601f8301169050919050565b6000620010cb8262001076565b620010d7818562000f20565b9350620010e981856020860162001081565b620010f481620010ad565b840191505092915050565b600060208201905081810360008301526200111b8184620010be565b905092915050565b613ecc80620011336000396000f3fe6080604052600436106102135760003560e01c806375f0a87411610118578063b6a5d7de116100a0578063f0b37c041161006f578063f0b37c04146107b0578063f2fde38b146107d9578063f887ea4014610802578063fb1116021461082d578063fe9fbb80146108565761021a565b8063b6a5d7de146106f4578063c1f1b1b51461071d578063d469801614610748578063dd62ed3e146107735761021a565b80638ea5220f116100e75780638ea5220f1461060b57806395d89b41146106365780639d9241ec14610661578063a8aa1b311461068c578063a9059cbb146106b75761021a565b806375f0a8741461055f57806378109e541461058a5780637d1db4a5146105b5578063893d20e8146105e05761021a565b80632f54bf6e1161019b5780635c85974f1161016a5780635c85974f1461047c5780635d0044ca146104a55780636ddd1713146104ce57806370a08231146104f957806375cb1bd1146105365761021a565b80632f54bf6e146103ac578063313ce567146103e9578063571ac8b01461041457806359b107b9146104515761021a565b80630f683e90116101e25780630f683e90146102db57806318160ddd146103045780631da1db5e1461032f57806323b872dd14610358578063293230b8146103955761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780630d075d9c146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610893565b6040516102419190612f18565b60405180910390f35b34801561025657600080fd5b5061025f610899565b60405161026c9190612fc3565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190613074565b6108d6565b6040516102a991906130cf565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d491906130ea565b6109c8565b005b3480156102e757600080fd5b5061030260048036038101906102fd91906130ea565b610b09565b005b34801561031057600080fd5b50610319610c4a565b6040516103269190612f18565b60405180910390f35b34801561033b57600080fd5b506103566004803603810190610351919061313d565b610c54565b005b34801561036457600080fd5b5061037f600480360381019061037a919061316a565b610cdd565b60405161038c91906130cf565b60405180910390f35b3480156103a157600080fd5b506103aa610f9c565b005b3480156103b857600080fd5b506103d360048036038101906103ce91906131bd565b611082565b6040516103e091906130cf565b60405180910390f35b3480156103f557600080fd5b506103fe6110db565b60405161040b9190613206565b60405180910390f35b34801561042057600080fd5b5061043b600480360381019061043691906131bd565b6110e4565b60405161044891906130cf565b60405180910390f35b34801561045d57600080fd5b506104666110f9565b6040516104739190612f18565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e919061313d565b6110ff565b005b3480156104b157600080fd5b506104cc60048036038101906104c7919061313d565b611179565b005b3480156104da57600080fd5b506104e36111f3565b6040516104f091906130cf565b60405180910390f35b34801561050557600080fd5b50610520600480360381019061051b91906131bd565b611206565b60405161052d9190612f18565b60405180910390f35b34801561054257600080fd5b5061055d60048036038101906105589190613221565b61124f565b005b34801561056b57600080fd5b5061057461135f565b6040516105819190613283565b60405180910390f35b34801561059657600080fd5b5061059f611385565b6040516105ac9190612f18565b60405180910390f35b3480156105c157600080fd5b506105ca61138b565b6040516105d79190612f18565b60405180910390f35b3480156105ec57600080fd5b506105f5611391565b6040516106029190613283565b60405180910390f35b34801561061757600080fd5b506106206113ba565b60405161062d9190613283565b60405180910390f35b34801561064257600080fd5b5061064b6113e0565b6040516106589190612fc3565b60405180910390f35b34801561066d57600080fd5b5061067661141d565b6040516106839190612f18565b60405180910390f35b34801561069857600080fd5b506106a1611423565b6040516106ae9190613283565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613074565b611449565b6040516106eb91906130cf565b60405180910390f35b34801561070057600080fd5b5061071b600480360381019061071691906131bd565b6114c4565b005b34801561072957600080fd5b50610732611566565b60405161073f9190613283565b60405180910390f35b34801561075457600080fd5b5061075d611590565b60405161076a9190613283565b60405180910390f35b34801561077f57600080fd5b5061079a6004803603810190610795919061329e565b6115b6565b6040516107a79190612f18565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906131bd565b61163d565b005b3480156107e557600080fd5b5061080060048036038101906107fb919061331c565b6116e0565b005b34801561080e57600080fd5b506108176117f9565b60405161082491906133a8565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f91906133ef565b61181f565b005b34801561086257600080fd5b5061087d600480360381019061087891906131bd565b6118c7565b60405161088a91906130cf565b60405180910390f35b601e5481565b60606040518060400160405280600981526020017f436869636b79496e750000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109b69190612f18565b60405180910390a36001905092915050565b6109d1336118c7565b610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a07906134a2565b60405180910390fd5b6096610a3782610a2985876119e190919063ffffffff16565b6119e190919063ffffffff16565b1115610a4257600080fd5b82600b8190555081600c8190555080600d81905550610a6c83600f546119e190919063ffffffff16565b601381905550610a87826010546119e190919063ffffffff16565b601481905550610aa2816011546119e190919063ffffffff16565b601581905550610acd81610abf84866119e190919063ffffffff16565b6119e190919063ffffffff16565b600e81905550610afe601554610af06013546014546119e190919063ffffffff16565b6119e190919063ffffffff16565b601681905550505050565b610b12336118c7565b610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b48906134a2565b60405180910390fd5b6096610b7882610b6a85876119e190919063ffffffff16565b6119e190919063ffffffff16565b1115610b8357600080fd5b82600f819055508160108190555080601181905550610bad83600b546119e190919063ffffffff16565b601381905550610bc882600c546119e190919063ffffffff16565b601481905550610be381600d546119e190919063ffffffff16565b601581905550610c0e81610c0084866119e190919063ffffffff16565b6119e190919063ffffffff16565b601281905550610c3f601554610c316013546014546119e190919063ffffffff16565b6119e190919063ffffffff16565b601681905550505050565b6000600454905090565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484610ca391906134f1565b610cad9190613562565b9081150290604051600060405180830381858888f19350505050158015610cd8573d6000803e3d6000fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490613605565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db390613697565b60405180910390fd5b600454600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f8857610f07826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3f9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f93848484611aa3565b90509392505050565b610fa533611082565b610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb90613703565b60405180910390fd5b60001515601960159054906101000a900460ff1615151461100457600080fd5b6000601960146101000a81548160ff0219169083151502179055506001601960156101000a81548160ff0219169083151502179055507f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f34601960149054906101000a900460ff1660405161107891906130cf565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60006110f2826004546108d6565b9050919050565b600e5481565b611108336118c7565b611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e906134a2565b60405180910390fd5b600581101561115557600080fd5b6103e88160045461116691906134f1565b6111709190613562565b60058190555050565b611182336118c7565b6111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b8906134a2565b60405180910390fd5b60058110156111cf57600080fd5b6103e8816004546111e091906134f1565b6111ea9190613562565b60068190555050565b601d60149054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611258336118c7565b611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e906134a2565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f434849434b590000000000000000000000000000000000000000000000000000815250905090565b60125481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114b0576114a933848461201b565b90506114be565b6114bb338484611aa3565b90505b92915050565b6114cd33611082565b61150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150390613703565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164633611082565b611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90613703565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116e933611082565b611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90613703565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516117ee9190613744565b60405180910390a150565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611828336118c7565b611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e906134a2565b60405180910390fd5b83601d60146101000a81548160ff0219169083151502179055506009600a61188f9190613892565b8361189a91906134f1565b601e8190555081601f8190555080602060006101000a81548160ff02191690831515021790555050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080830361192f5760009050611991565b6000828461193d91906134f1565b905082848261194c9190613562565b1461198c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119839061394f565b60405180910390fd5b809150505b92915050565b60006119d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121ee565b905092915050565b60008082846119f0919061396f565b905083811015611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c906139ef565b60405180910390fd5b8091505092915050565b6000838311158290611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9190612fc3565b60405180910390fd5b5060008385611a969190613a0f565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90613605565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7990613697565b60405180910390fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c235750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c3a57611c3384848461201b565b9050612014565b602060019054906101000a900460ff1615611c6157611c5a84848461201b565b9050612014565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d055750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d615760011515601960149054906101000a900460ff16151503611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790613a8f565b60405180910390fd5b5b611d6c848484612251565b611d7682846125cd565b15611d8557611d848261273e565b5b611e0e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611efc5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b611f065782611f12565b611f11858585612d0c565b5b9050611f6681600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119e190919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120069190612f18565b60405180910390a360019150505b9392505050565b60006120a6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061213b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119e190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121db9190612f18565b60405180910390a3600190509392505050565b60008083118290612235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222c9190612fc3565b60405180910390fd5b50600083856122449190613562565b9050809150509392505050565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561230f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123695750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123c35750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561241d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124775750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124db57600061248783611206565b90506006548282612498919061396f565b11156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d090613b21565b60405180910390fd5b505b600554811115806125355750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125895750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bf90613b8d565b60405180910390fd5b505050565b600080426125e8601a54601b546119e190919063ffffffff16565b109050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126455750805b801561265e5750602060019054906101000a900460ff16155b80156126765750601d60149054906101000a900460ff165b80156126c35750601e54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561273557506126f260646126e4601f548761191d90919063ffffffff16565b61199790919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b91505092915050565b6001602060016101000a81548160ff0219169083151502179055506000602060009054906101000a900460ff1661277757601e546127a0565b61279f6064612791601f548561191d90919063ffffffff16565b61199790919063ffffffff16565b5b9050601e5481116127b657601e549050806127b8565b805b50600080601454116127cb576000612808565b61280760026127f96016546127eb6014548761191d90919063ffffffff16565b61199790919063ffffffff16565b61199790919063ffffffff16565b5b9050600061281f8284612eb590919063ffffffff16565b90506000600267ffffffffffffffff81111561283e5761283d613bad565b5b60405190808252806020026020018201604052801561286c5781602001602082028036833780820191505090505b509050308160008151811061288457612883613bdc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106128e7576128e6613bdc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161298a959493929190613d04565b600060405180830381600087803b1580156129a457600080fd5b505af11580156129b8573d6000803e3d6000fd5b505050506000806129d28347612eb590919063ffffffff16565b9050600080601454116129e757601654612a12565b612a11612a00600260145461199790919063ffffffff16565b601654612eb590919063ffffffff16565b5b905060006015541115612ae4576000612a4882612a3a6015548661191d90919063ffffffff16565b61199790919063ffffffff16565b9050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681620186a090604051612a9590613d8f565b600060405180830381858888f193505050503d8060008114612ad3576040519150601f19603f3d011682016040523d82523d6000602084013e612ad8565b606091505b50508094505060009350505b6000871115612c35576000612b296002612b1b84612b0d6014548861191d90919063ffffffff16565b61199790919063ffffffff16565b61199790919063ffffffff16565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308b600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612bb496959493929190613da4565b60606040518083038185885af1158015612bd2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bf79190613e1a565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068189604051612c2b929190613e6d565b60405180910390a1505b60006013541115612cdf576000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681620186a090604051612c9090613d8f565b600060405180830381858888f193505050503d8060008114612cce576040519150601f19603f3d011682016040523d82523d6000602084013e612cd3565b606091505b50508094505060009350505b42601b8190555050505050505050506000602060016101000a81548160ff02191690831515021790555050565b600080601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d6c57600e54612d70565b6012545b90506000612d9b6103e8612d8d848761191d90919063ffffffff16565b61199790919063ffffffff16565b9050612def81600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119e190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e8f9190612f18565b60405180910390a3612eaa8185612eb590919063ffffffff16565b925050509392505050565b6000612ef783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a3f565b905092915050565b6000819050919050565b612f1281612eff565b82525050565b6000602082019050612f2d6000830184612f09565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f6d578082015181840152602081019050612f52565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f9582612f33565b612f9f8185612f3e565b9350612faf818560208601612f4f565b612fb881612f79565b840191505092915050565b60006020820190508181036000830152612fdd8184612f8a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301582612fea565b9050919050565b6130258161300a565b811461303057600080fd5b50565b6000813590506130428161301c565b92915050565b61305181612eff565b811461305c57600080fd5b50565b60008135905061306e81613048565b92915050565b6000806040838503121561308b5761308a612fe5565b5b600061309985828601613033565b92505060206130aa8582860161305f565b9150509250929050565b60008115159050919050565b6130c9816130b4565b82525050565b60006020820190506130e460008301846130c0565b92915050565b60008060006060848603121561310357613102612fe5565b5b60006131118682870161305f565b93505060206131228682870161305f565b92505060406131338682870161305f565b9150509250925092565b60006020828403121561315357613152612fe5565b5b60006131618482850161305f565b91505092915050565b60008060006060848603121561318357613182612fe5565b5b600061319186828701613033565b93505060206131a286828701613033565b92505060406131b38682870161305f565b9150509250925092565b6000602082840312156131d3576131d2612fe5565b5b60006131e184828501613033565b91505092915050565b600060ff82169050919050565b613200816131ea565b82525050565b600060208201905061321b60008301846131f7565b92915050565b60008060006060848603121561323a57613239612fe5565b5b600061324886828701613033565b935050602061325986828701613033565b925050604061326a86828701613033565b9150509250925092565b61327d8161300a565b82525050565b60006020820190506132986000830184613274565b92915050565b600080604083850312156132b5576132b4612fe5565b5b60006132c385828601613033565b92505060206132d485828601613033565b9150509250929050565b60006132e982612fea565b9050919050565b6132f9816132de565b811461330457600080fd5b50565b600081359050613316816132f0565b92915050565b60006020828403121561333257613331612fe5565b5b600061334084828501613307565b91505092915050565b6000819050919050565b600061336e61336961336484612fea565b613349565b612fea565b9050919050565b600061338082613353565b9050919050565b600061339282613375565b9050919050565b6133a281613387565b82525050565b60006020820190506133bd6000830184613399565b92915050565b6133cc816130b4565b81146133d757600080fd5b50565b6000813590506133e9816133c3565b92915050565b6000806000806080858703121561340957613408612fe5565b5b6000613417878288016133da565b94505060206134288782880161305f565b93505060406134398782880161305f565b925050606061344a878288016133da565b91505092959194509250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b600061348c600b83612f3e565b915061349782613456565b602082019050919050565b600060208201905081810360008301526134bb8161347f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134fc82612eff565b915061350783612eff565b925082820261351581612eff565b9150828204841483151761352c5761352b6134c2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061356d82612eff565b915061357883612eff565b92508261358857613587613533565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135ef602583612f3e565b91506135fa82613593565b604082019050919050565b6000602082019050818103600083015261361e816135e2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613681602383612f3e565b915061368c82613625565b604082019050919050565b600060208201905081810360008301526136b081613674565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006136ed600683612f3e565b91506136f8826136b7565b602082019050919050565b6000602082019050818103600083015261371c816136e0565b9050919050565b600061372e82613375565b9050919050565b61373e81613723565b82525050565b60006020820190506137596000830184613735565b92915050565b60008160011c9050919050565b6000808291508390505b60018511156137b657808604811115613792576137916134c2565b5b60018516156137a15780820291505b80810290506137af8561375f565b9450613776565b94509492505050565b6000826137cf576001905061388b565b816137dd576000905061388b565b81600181146137f357600281146137fd5761382c565b600191505061388b565b60ff84111561380f5761380e6134c2565b5b8360020a915084821115613826576138256134c2565b5b5061388b565b5060208310610133831016604e8410600b84101617156138615782820a90508381111561385c5761385b6134c2565b5b61388b565b61386e848484600161376c565b92509050818404811115613885576138846134c2565b5b81810290505b9392505050565b600061389d82612eff565b91506138a8836131ea565b92506138d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137bf565b905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613939602183612f3e565b9150613944826138dd565b604082019050919050565b600060208201905081810360008301526139688161392c565b9050919050565b600061397a82612eff565b915061398583612eff565b925082820190508082111561399d5761399c6134c2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139d9601b83612f3e565b91506139e4826139a3565b602082019050919050565b60006020820190508181036000830152613a08816139cc565b9050919050565b6000613a1a82612eff565b9150613a2583612eff565b9250828203905081811115613a3d57613a3c6134c2565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613a79601483612f3e565b9150613a8482613a43565b602082019050919050565b60006020820190508181036000830152613aa881613a6c565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000613b0b603e83612f3e565b9150613b1682613aaf565b604082019050919050565b60006020820190508181036000830152613b3a81613afe565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613b77601183612f3e565b9150613b8282613b41565b602082019050919050565b60006020820190508181036000830152613ba681613b6a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613c30613c2b613c2684613c0b565b613349565b612eff565b9050919050565b613c4081613c15565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c7b8161300a565b82525050565b6000613c8d8383613c72565b60208301905092915050565b6000602082019050919050565b6000613cb182613c46565b613cbb8185613c51565b9350613cc683613c62565b8060005b83811015613cf7578151613cde8882613c81565b9750613ce983613c99565b925050600181019050613cca565b5085935050505092915050565b600060a082019050613d196000830188612f09565b613d266020830187613c37565b8181036040830152613d388186613ca6565b9050613d476060830185613274565b613d546080830184612f09565b9695505050505050565b600081905092915050565b50565b6000613d79600083613d5e565b9150613d8482613d69565b600082019050919050565b6000613d9a82613d6c565b9150819050919050565b600060c082019050613db96000830189613274565b613dc66020830188612f09565b613dd36040830187613c37565b613de06060830186613c37565b613ded6080830185613274565b613dfa60a0830184612f09565b979650505050505050565b600081519050613e1481613048565b92915050565b600080600060608486031215613e3357613e32612fe5565b5b6000613e4186828701613e05565b9350506020613e5286828701613e05565b9250506040613e6386828701613e05565b9150509250925092565b6000604082019050613e826000830185612f09565b613e8f6020830184612f09565b939250505056fea2646970667358221220de15f56e13456560fb00ee5a241529770c3a30b089539a75e529531a1fc2a55264736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102135760003560e01c806375f0a87411610118578063b6a5d7de116100a0578063f0b37c041161006f578063f0b37c04146107b0578063f2fde38b146107d9578063f887ea4014610802578063fb1116021461082d578063fe9fbb80146108565761021a565b8063b6a5d7de146106f4578063c1f1b1b51461071d578063d469801614610748578063dd62ed3e146107735761021a565b80638ea5220f116100e75780638ea5220f1461060b57806395d89b41146106365780639d9241ec14610661578063a8aa1b311461068c578063a9059cbb146106b75761021a565b806375f0a8741461055f57806378109e541461058a5780637d1db4a5146105b5578063893d20e8146105e05761021a565b80632f54bf6e1161019b5780635c85974f1161016a5780635c85974f1461047c5780635d0044ca146104a55780636ddd1713146104ce57806370a08231146104f957806375cb1bd1146105365761021a565b80632f54bf6e146103ac578063313ce567146103e9578063571ac8b01461041457806359b107b9146104515761021a565b80630f683e90116101e25780630f683e90146102db57806318160ddd146103045780631da1db5e1461032f57806323b872dd14610358578063293230b8146103955761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780630d075d9c146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610893565b6040516102419190612f18565b60405180910390f35b34801561025657600080fd5b5061025f610899565b60405161026c9190612fc3565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190613074565b6108d6565b6040516102a991906130cf565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d491906130ea565b6109c8565b005b3480156102e757600080fd5b5061030260048036038101906102fd91906130ea565b610b09565b005b34801561031057600080fd5b50610319610c4a565b6040516103269190612f18565b60405180910390f35b34801561033b57600080fd5b506103566004803603810190610351919061313d565b610c54565b005b34801561036457600080fd5b5061037f600480360381019061037a919061316a565b610cdd565b60405161038c91906130cf565b60405180910390f35b3480156103a157600080fd5b506103aa610f9c565b005b3480156103b857600080fd5b506103d360048036038101906103ce91906131bd565b611082565b6040516103e091906130cf565b60405180910390f35b3480156103f557600080fd5b506103fe6110db565b60405161040b9190613206565b60405180910390f35b34801561042057600080fd5b5061043b600480360381019061043691906131bd565b6110e4565b60405161044891906130cf565b60405180910390f35b34801561045d57600080fd5b506104666110f9565b6040516104739190612f18565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e919061313d565b6110ff565b005b3480156104b157600080fd5b506104cc60048036038101906104c7919061313d565b611179565b005b3480156104da57600080fd5b506104e36111f3565b6040516104f091906130cf565b60405180910390f35b34801561050557600080fd5b50610520600480360381019061051b91906131bd565b611206565b60405161052d9190612f18565b60405180910390f35b34801561054257600080fd5b5061055d60048036038101906105589190613221565b61124f565b005b34801561056b57600080fd5b5061057461135f565b6040516105819190613283565b60405180910390f35b34801561059657600080fd5b5061059f611385565b6040516105ac9190612f18565b60405180910390f35b3480156105c157600080fd5b506105ca61138b565b6040516105d79190612f18565b60405180910390f35b3480156105ec57600080fd5b506105f5611391565b6040516106029190613283565b60405180910390f35b34801561061757600080fd5b506106206113ba565b60405161062d9190613283565b60405180910390f35b34801561064257600080fd5b5061064b6113e0565b6040516106589190612fc3565b60405180910390f35b34801561066d57600080fd5b5061067661141d565b6040516106839190612f18565b60405180910390f35b34801561069857600080fd5b506106a1611423565b6040516106ae9190613283565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613074565b611449565b6040516106eb91906130cf565b60405180910390f35b34801561070057600080fd5b5061071b600480360381019061071691906131bd565b6114c4565b005b34801561072957600080fd5b50610732611566565b60405161073f9190613283565b60405180910390f35b34801561075457600080fd5b5061075d611590565b60405161076a9190613283565b60405180910390f35b34801561077f57600080fd5b5061079a6004803603810190610795919061329e565b6115b6565b6040516107a79190612f18565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906131bd565b61163d565b005b3480156107e557600080fd5b5061080060048036038101906107fb919061331c565b6116e0565b005b34801561080e57600080fd5b506108176117f9565b60405161082491906133a8565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f91906133ef565b61181f565b005b34801561086257600080fd5b5061087d600480360381019061087891906131bd565b6118c7565b60405161088a91906130cf565b60405180910390f35b601e5481565b60606040518060400160405280600981526020017f436869636b79496e750000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109b69190612f18565b60405180910390a36001905092915050565b6109d1336118c7565b610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a07906134a2565b60405180910390fd5b6096610a3782610a2985876119e190919063ffffffff16565b6119e190919063ffffffff16565b1115610a4257600080fd5b82600b8190555081600c8190555080600d81905550610a6c83600f546119e190919063ffffffff16565b601381905550610a87826010546119e190919063ffffffff16565b601481905550610aa2816011546119e190919063ffffffff16565b601581905550610acd81610abf84866119e190919063ffffffff16565b6119e190919063ffffffff16565b600e81905550610afe601554610af06013546014546119e190919063ffffffff16565b6119e190919063ffffffff16565b601681905550505050565b610b12336118c7565b610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b48906134a2565b60405180910390fd5b6096610b7882610b6a85876119e190919063ffffffff16565b6119e190919063ffffffff16565b1115610b8357600080fd5b82600f819055508160108190555080601181905550610bad83600b546119e190919063ffffffff16565b601381905550610bc882600c546119e190919063ffffffff16565b601481905550610be381600d546119e190919063ffffffff16565b601581905550610c0e81610c0084866119e190919063ffffffff16565b6119e190919063ffffffff16565b601281905550610c3f601554610c316013546014546119e190919063ffffffff16565b6119e190919063ffffffff16565b601681905550505050565b6000600454905090565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484610ca391906134f1565b610cad9190613562565b9081150290604051600060405180830381858888f19350505050158015610cd8573d6000803e3d6000fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4490613605565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db390613697565b60405180910390fd5b600454600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f8857610f07826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3f9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f93848484611aa3565b90509392505050565b610fa533611082565b610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb90613703565b60405180910390fd5b60001515601960159054906101000a900460ff1615151461100457600080fd5b6000601960146101000a81548160ff0219169083151502179055506001601960156101000a81548160ff0219169083151502179055507f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f34601960149054906101000a900460ff1660405161107891906130cf565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60006110f2826004546108d6565b9050919050565b600e5481565b611108336118c7565b611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e906134a2565b60405180910390fd5b600581101561115557600080fd5b6103e88160045461116691906134f1565b6111709190613562565b60058190555050565b611182336118c7565b6111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b8906134a2565b60405180910390fd5b60058110156111cf57600080fd5b6103e8816004546111e091906134f1565b6111ea9190613562565b60068190555050565b601d60149054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611258336118c7565b611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e906134a2565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600681526020017f434849434b590000000000000000000000000000000000000000000000000000815250905090565b60125481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114b0576114a933848461201b565b90506114be565b6114bb338484611aa3565b90505b92915050565b6114cd33611082565b61150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150390613703565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164633611082565b611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90613703565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116e933611082565b611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90613703565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516117ee9190613744565b60405180910390a150565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611828336118c7565b611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e906134a2565b60405180910390fd5b83601d60146101000a81548160ff0219169083151502179055506009600a61188f9190613892565b8361189a91906134f1565b601e8190555081601f8190555080602060006101000a81548160ff02191690831515021790555050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080830361192f5760009050611991565b6000828461193d91906134f1565b905082848261194c9190613562565b1461198c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119839061394f565b60405180910390fd5b809150505b92915050565b60006119d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121ee565b905092915050565b60008082846119f0919061396f565b905083811015611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c906139ef565b60405180910390fd5b8091505092915050565b6000838311158290611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9190612fc3565b60405180910390fd5b5060008385611a969190613a0f565b9050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90613605565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7990613697565b60405180910390fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c235750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c3a57611c3384848461201b565b9050612014565b602060019054906101000a900460ff1615611c6157611c5a84848461201b565b9050612014565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d055750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d615760011515601960149054906101000a900460ff16151503611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790613a8f565b60405180910390fd5b5b611d6c848484612251565b611d7682846125cd565b15611d8557611d848261273e565b5b611e0e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611efc5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b611f065782611f12565b611f11858585612d0c565b5b9050611f6681600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119e190919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120069190612f18565b60405180910390a360019150505b9392505050565b60006120a6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061213b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119e190919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121db9190612f18565b60405180910390a3600190509392505050565b60008083118290612235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222c9190612fc3565b60405180910390fd5b50600083856122449190613562565b9050809150509392505050565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561230f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123695750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123c35750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561241d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124775750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124db57600061248783611206565b90506006548282612498919061396f565b11156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d090613b21565b60405180910390fd5b505b600554811115806125355750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125895750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bf90613b8d565b60405180910390fd5b505050565b600080426125e8601a54601b546119e190919063ffffffff16565b109050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126455750805b801561265e5750602060019054906101000a900460ff16155b80156126765750601d60149054906101000a900460ff165b80156126c35750601e54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561273557506126f260646126e4601f548761191d90919063ffffffff16565b61199790919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b91505092915050565b6001602060016101000a81548160ff0219169083151502179055506000602060009054906101000a900460ff1661277757601e546127a0565b61279f6064612791601f548561191d90919063ffffffff16565b61199790919063ffffffff16565b5b9050601e5481116127b657601e549050806127b8565b805b50600080601454116127cb576000612808565b61280760026127f96016546127eb6014548761191d90919063ffffffff16565b61199790919063ffffffff16565b61199790919063ffffffff16565b5b9050600061281f8284612eb590919063ffffffff16565b90506000600267ffffffffffffffff81111561283e5761283d613bad565b5b60405190808252806020026020018201604052801561286c5781602001602082028036833780820191505090505b509050308160008151811061288457612883613bdc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106128e7576128e6613bdc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161298a959493929190613d04565b600060405180830381600087803b1580156129a457600080fd5b505af11580156129b8573d6000803e3d6000fd5b505050506000806129d28347612eb590919063ffffffff16565b9050600080601454116129e757601654612a12565b612a11612a00600260145461199790919063ffffffff16565b601654612eb590919063ffffffff16565b5b905060006015541115612ae4576000612a4882612a3a6015548661191d90919063ffffffff16565b61199790919063ffffffff16565b9050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681620186a090604051612a9590613d8f565b600060405180830381858888f193505050503d8060008114612ad3576040519150601f19603f3d011682016040523d82523d6000602084013e612ad8565b606091505b50508094505060009350505b6000871115612c35576000612b296002612b1b84612b0d6014548861191d90919063ffffffff16565b61199790919063ffffffff16565b61199790919063ffffffff16565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308b600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612bb496959493929190613da4565b60606040518083038185885af1158015612bd2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bf79190613e1a565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068189604051612c2b929190613e6d565b60405180910390a1505b60006013541115612cdf576000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681620186a090604051612c9090613d8f565b600060405180830381858888f193505050503d8060008114612cce576040519150601f19603f3d011682016040523d82523d6000602084013e612cd3565b606091505b50508094505060009350505b42601b8190555050505050505050506000602060016101000a81548160ff02191690831515021790555050565b600080601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d6c57600e54612d70565b6012545b90506000612d9b6103e8612d8d848761191d90919063ffffffff16565b61199790919063ffffffff16565b9050612def81600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119e190919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e8f9190612f18565b60405180910390a3612eaa8185612eb590919063ffffffff16565b925050509392505050565b6000612ef783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a3f565b905092915050565b6000819050919050565b612f1281612eff565b82525050565b6000602082019050612f2d6000830184612f09565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f6d578082015181840152602081019050612f52565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f9582612f33565b612f9f8185612f3e565b9350612faf818560208601612f4f565b612fb881612f79565b840191505092915050565b60006020820190508181036000830152612fdd8184612f8a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301582612fea565b9050919050565b6130258161300a565b811461303057600080fd5b50565b6000813590506130428161301c565b92915050565b61305181612eff565b811461305c57600080fd5b50565b60008135905061306e81613048565b92915050565b6000806040838503121561308b5761308a612fe5565b5b600061309985828601613033565b92505060206130aa8582860161305f565b9150509250929050565b60008115159050919050565b6130c9816130b4565b82525050565b60006020820190506130e460008301846130c0565b92915050565b60008060006060848603121561310357613102612fe5565b5b60006131118682870161305f565b93505060206131228682870161305f565b92505060406131338682870161305f565b9150509250925092565b60006020828403121561315357613152612fe5565b5b60006131618482850161305f565b91505092915050565b60008060006060848603121561318357613182612fe5565b5b600061319186828701613033565b93505060206131a286828701613033565b92505060406131b38682870161305f565b9150509250925092565b6000602082840312156131d3576131d2612fe5565b5b60006131e184828501613033565b91505092915050565b600060ff82169050919050565b613200816131ea565b82525050565b600060208201905061321b60008301846131f7565b92915050565b60008060006060848603121561323a57613239612fe5565b5b600061324886828701613033565b935050602061325986828701613033565b925050604061326a86828701613033565b9150509250925092565b61327d8161300a565b82525050565b60006020820190506132986000830184613274565b92915050565b600080604083850312156132b5576132b4612fe5565b5b60006132c385828601613033565b92505060206132d485828601613033565b9150509250929050565b60006132e982612fea565b9050919050565b6132f9816132de565b811461330457600080fd5b50565b600081359050613316816132f0565b92915050565b60006020828403121561333257613331612fe5565b5b600061334084828501613307565b91505092915050565b6000819050919050565b600061336e61336961336484612fea565b613349565b612fea565b9050919050565b600061338082613353565b9050919050565b600061339282613375565b9050919050565b6133a281613387565b82525050565b60006020820190506133bd6000830184613399565b92915050565b6133cc816130b4565b81146133d757600080fd5b50565b6000813590506133e9816133c3565b92915050565b6000806000806080858703121561340957613408612fe5565b5b6000613417878288016133da565b94505060206134288782880161305f565b93505060406134398782880161305f565b925050606061344a878288016133da565b91505092959194509250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b600061348c600b83612f3e565b915061349782613456565b602082019050919050565b600060208201905081810360008301526134bb8161347f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134fc82612eff565b915061350783612eff565b925082820261351581612eff565b9150828204841483151761352c5761352b6134c2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061356d82612eff565b915061357883612eff565b92508261358857613587613533565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135ef602583612f3e565b91506135fa82613593565b604082019050919050565b6000602082019050818103600083015261361e816135e2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613681602383612f3e565b915061368c82613625565b604082019050919050565b600060208201905081810360008301526136b081613674565b9050919050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006136ed600683612f3e565b91506136f8826136b7565b602082019050919050565b6000602082019050818103600083015261371c816136e0565b9050919050565b600061372e82613375565b9050919050565b61373e81613723565b82525050565b60006020820190506137596000830184613735565b92915050565b60008160011c9050919050565b6000808291508390505b60018511156137b657808604811115613792576137916134c2565b5b60018516156137a15780820291505b80810290506137af8561375f565b9450613776565b94509492505050565b6000826137cf576001905061388b565b816137dd576000905061388b565b81600181146137f357600281146137fd5761382c565b600191505061388b565b60ff84111561380f5761380e6134c2565b5b8360020a915084821115613826576138256134c2565b5b5061388b565b5060208310610133831016604e8410600b84101617156138615782820a90508381111561385c5761385b6134c2565b5b61388b565b61386e848484600161376c565b92509050818404811115613885576138846134c2565b5b81810290505b9392505050565b600061389d82612eff565b91506138a8836131ea565b92506138d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137bf565b905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613939602183612f3e565b9150613944826138dd565b604082019050919050565b600060208201905081810360008301526139688161392c565b9050919050565b600061397a82612eff565b915061398583612eff565b925082820190508082111561399d5761399c6134c2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139d9601b83612f3e565b91506139e4826139a3565b602082019050919050565b60006020820190508181036000830152613a08816139cc565b9050919050565b6000613a1a82612eff565b9150613a2583612eff565b9250828203905081811115613a3d57613a3c6134c2565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613a79601483612f3e565b9150613a8482613a43565b602082019050919050565b60006020820190508181036000830152613aa881613a6c565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000613b0b603e83612f3e565b9150613b1682613aaf565b604082019050919050565b60006020820190508181036000830152613b3a81613afe565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613b77601183612f3e565b9150613b8282613b41565b602082019050919050565b60006020820190508181036000830152613ba681613b6a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613c30613c2b613c2684613c0b565b613349565b612eff565b9050919050565b613c4081613c15565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c7b8161300a565b82525050565b6000613c8d8383613c72565b60208301905092915050565b6000602082019050919050565b6000613cb182613c46565b613cbb8185613c51565b9350613cc683613c62565b8060005b83811015613cf7578151613cde8882613c81565b9750613ce983613c99565b925050600181019050613cca565b5085935050505092915050565b600060a082019050613d196000830188612f09565b613d266020830187613c37565b8181036040830152613d388186613ca6565b9050613d476060830185613274565b613d546080830184612f09565b9695505050505050565b600081905092915050565b50565b6000613d79600083613d5e565b9150613d8482613d69565b600082019050919050565b6000613d9a82613d6c565b9150819050919050565b600060c082019050613db96000830189613274565b613dc66020830188612f09565b613dd36040830187613c37565b613de06060830186613c37565b613ded6080830185613274565b613dfa60a0830184612f09565b979650505050505050565b600081519050613e1481613048565b92915050565b600080600060608486031215613e3357613e32612fe5565b5b6000613e4186828701613e05565b9350506020613e5286828701613e05565b9250506040613e6386828701613e05565b9150509250925092565b6000604082019050613e826000830185612f09565b613e8f6020830184612f09565b939250505056fea2646970667358221220de15f56e13456560fb00ee5a241529770c3a30b089539a75e529531a1fc2a55264736f6c63430008110033

Deployed Bytecode Sourcemap

4999:12962:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6939:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8261:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8753:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9444:623;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10079:625;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7991:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11354:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16207:528;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12222:196;;;;;;;;;;;;;:::i;:::-;;3068:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8085:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8977:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5940:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11159:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10963:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6902:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8431:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10712:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6516:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5472:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5402:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8347:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6553:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8171:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6131;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6874:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15899:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2861:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8681:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6479:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8542:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2963:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3294:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6843:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12726:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3179:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6939:63;;;;:::o;8261:80::-;8309:13;8333:5;;;;;;;;;;;;;;;;;8326:12;;8261:80;:::o;8753:216::-;8828:4;8880:6;8845:11;:23;8857:10;8845:23;;;;;;;;;;;;;;;:32;8869:7;8845:32;;;;;;;;;;;;;;;:41;;;;8923:7;8902:37;;8911:10;8902:37;;;8932:6;8902:37;;;;;;:::i;:::-;;;;;;;;8957:4;8950:11;;8753:216;;;;:::o;9444:623::-;2802:24;2815:10;2802:12;:24::i;:::-;2794:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9638:3:::1;9588:45;9625:7;9588:32;9606:13;9588;:17;;:32;;;;:::i;:::-;:36;;:45;;;;:::i;:::-;9587:54;;9579:63;;;::::0;::::1;;9671:13;9653:15;:31;;;;9713:13;9695:15;:31;;;;9749:7;9737:9;:19;;;;9784:35;9805:13;9784:16;;:20;;:35;;;;:::i;:::-;9769:12;:50;;;;9845:35;9866:13;9845:16;;:20;;:35;;;;:::i;:::-;9830:12;:50;;;;9900:23;9915:7;9900:10;;:14;;:23;;;;:::i;:::-;9891:6;:32;;;;9950:45;9987:7;9950:32;9968:13;9950;:17;;:32;;;;:::i;:::-;:36;;:45;;;;:::i;:::-;9936:11;:59;;;;10017:42;10052:6;;10017:30;10034:12;;10017;;:16;;:30;;;;:::i;:::-;:34;;:42;;;;:::i;:::-;10006:8;:53;;;;9444:623:::0;;;:::o;10079:625::-;2802:24;2815:10;2802:12;:24::i;:::-;2794:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10274:3:::1;10224:45;10261:7;10224:32;10242:13;10224;:17;;:32;;;;:::i;:::-;:36;;:45;;;;:::i;:::-;10223:54;;10215:63;;;::::0;::::1;;10308:13;10289:16;:32;;;;10351:13;10332:16;:32;;;;10388:7;10375:10;:20;;;;10423:34;10443:13;10423:15;;:19;;:34;;;;:::i;:::-;10408:12;:49;;;;10483:34;10503:13;10483:15;;:19;;:34;;;;:::i;:::-;10468:12;:49;;;;10537:22;10551:7;10537:9;;:13;;:22;;;;:::i;:::-;10528:6;:31;;;;10587:45;10624:7;10587:32;10605:13;10587;:17;;:32;;;;:::i;:::-;:36;;:45;;;;:::i;:::-;10572:12;:60;;;;10654:42;10689:6;;10654:30;10671:12;;10654;;:16;;:30;;;;:::i;:::-;:34;;:42;;;;:::i;:::-;10643:8;:53;;;;10079:625:::0;;;:::o;7991:88::-;8046:7;8064:12;;8057:19;;7991:88;:::o;11354:203::-;11428:17;11448:21;11428:41;;11488:15;;;;;;;;;;;11480:33;;:69;11545:3;11526:16;11514:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;11480:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11417:140;11354:203;:::o;16207:528::-;16307:4;16350:1;16332:20;;:6;:20;;;16324:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16434:1;16413:23;;:9;:23;;;16405:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16525:12;;16490:11;:19;16502:6;16490:19;;;;;;;;;;;;;;;:31;16510:10;16490:31;;;;;;;;;;;;;;;;:47;16487:181;;16587:69;16623:6;16587:69;;;;;;;;;;;;;;;;;:11;:19;16599:6;16587:19;;;;;;;;;;;;;;;:31;16607:10;16587:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;16553:11;:19;16565:6;16553:19;;;;;;;;;;;;;;;:31;16573:10;16553:31;;;;;;;;;;;;;;;:103;;;;16487:181;16687:40;16701:6;16709:9;16720:6;16687:13;:40::i;:::-;16680:47;;16207:528;;;;;:::o;12222:196::-;2712:19;2720:10;2712:7;:19::i;:::-;2704:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12296:5:::1;12284:17;;:8;;;;;;;;;;;:17;;;12276:26;;;::::0;::::1;;12328:5;12313:12;;:20;;;;;;;;;;;;;;;;;;12355:4;12344:8;;:15;;;;;;;;;;;;;;;;;;12377:33;12397:12;;;;;;;;;;;12377:33;;;;;;:::i;:::-;;;;;;;;12222:196::o:0;3068:103::-;3123:4;3158:5;;;;;;;;;;;3147:16;;:7;:16;;;3140:23;;3068:103;;;:::o;8085:80::-;8137:5;5321:1;8146:16;;8085:80;:::o;8977:117::-;9032:4;9056:30;9064:7;9073:12;;9056:7;:30::i;:::-;9049:37;;8977:117;;;:::o;5940:80::-;;;;:::o;11159:183::-;2802:24;2815:10;2802:12;:24::i;:::-;2794:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11246:1:::1;11235:7;:12;;11227:21;;;::::0;::::1;;11330:4;11318:7;11303:12;;:22;;;;:::i;:::-;11301:33;;;;:::i;:::-;11286:12;:48;;;;11159:183:::0;:::o;10963:188::-;2802:24;2815:10;2802:12;:24::i;:::-;2794:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11052:1:::1;11041:7;:12;;11033:21;;;::::0;::::1;;11139:4;11127:7;11112:12;;:22;;;;:::i;:::-;11110:33;;;;:::i;:::-;11092:15;:51;;;;10963:188:::0;:::o;6902:30::-;;;;;;;;;;;;;:::o;8431:105::-;8497:7;8515:9;:18;8525:7;8515:18;;;;;;;;;;;;;;;;8508:25;;8431:105;;;:::o;10712:243::-;2802:24;2815:10;2802:12;:24::i;:::-;2794:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10853:16:::1;10835:15;;:34;;;;;;;;;;;;;;;;;;10898:16;10880:15;;:34;;;;;;;;;;;;;;;;;;10937:10;10925:9;;:22;;;;;;;;;;;;;;;;;;10712:243:::0;;;:::o;6516:30::-;;;;;;;;;;;;;:::o;5472:64::-;;;;:::o;5402:60::-;;;;:::o;8347:78::-;8399:7;8417:5;;;;;;;;;;;8410:12;;8347:78;:::o;6553:24::-;;;;;;;;;;;;;:::o;8171:84::-;8221:13;8245:7;;;;;;;;;;;;;;;;;8238:14;;8171:84;:::o;6131:::-;;;;:::o;6874:19::-;;;;;;;;;;;;;:::o;15899:300::-;15979:4;16009:10;16000:19;;:5;;;;;;;;;;:19;;;15996:196;;16042:45;16057:10;16069:9;16080:6;16042:14;:45::i;:::-;16035:52;;;;15996:196;16136:44;16150:10;16162:9;16173:6;16136:13;:44::i;:::-;16129:51;;15899:300;;;;;:::o;2861:94::-;2712:19;2720:10;2712:7;:19::i;:::-;2704:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2943:4:::1;2921:14:::0;:19:::1;2936:3;2921:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2861:94:::0;:::o;8681:64::-;8723:7;8739:4;;;;;;;;;;;8732:11;;8681:64;:::o;6479:30::-;;;;;;;;;;;;;:::o;8542:133::-;8626:7;8644:11;:19;8656:6;8644:19;;;;;;;;;;;;;;;:28;8664:7;8644:28;;;;;;;;;;;;;;;;8637:35;;8542:133;;;;:::o;2963:97::-;2712:19;2720:10;2712:7;:19::i;:::-;2704:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3047:5:::1;3025:14;:19;3040:3;3025:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2963:97:::0;:::o;3294:173::-;2712:19;2720:10;2712:7;:19::i;:::-;2704:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3378:3:::1;3370:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3414:4;3392:14:::0;:19:::1;3407:3;3392:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3434:25;3455:3;3434:25;;;;;;:::i;:::-;;;;;;;;3294:173:::0;:::o;6843:24::-;;;;;;;;;;;;;:::o;12726:268::-;2802:24;2815:10;2802:12;:24::i;:::-;2794:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12864:8:::1;12850:11;;:22;;;;;;;;;;;;;;;;;;5321:1;12913:2;:15;;;;:::i;:::-;12899:10;:30;;;;:::i;:::-;12883:13;:46;;;;12952:6;12940:9;:18;;;;12981:5;12969:9;;:17;;;;;;;;;;;;;;;;;;12726:268:::0;;;;:::o;3179:107::-;3235:4;3259:14;:19;3274:3;3259:19;;;;;;;;;;;;;;;;;;;;;;;;;3252:26;;3179:107;;;:::o;786:250::-;844:7;873:1;868;:6;864:47;;898:1;891:8;;;;864:47;923:9;939:1;935;:5;;;;:::i;:::-;923:17;;968:1;963;959;:5;;;;:::i;:::-;:10;951:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1027:1;1020:8;;;786:250;;;;;:::o;1042:132::-;1100:7;1127:39;1131:1;1134;1127:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1120:46;;1042:132;;;;:::o;259:181::-;317:7;337:9;353:1;349;:5;;;;:::i;:::-;337:17;;378:1;373;:6;;365:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;431:1;424:8;;;259:181;;;;:::o;588:192::-;674:7;707:1;702;:6;;710:12;694:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;734:9;750:1;746;:5;;;;:::i;:::-;734:17;;771:1;764:8;;;588:192;;;;;:::o;16743:1150::-;16835:4;16880:1;16862:20;;:6;:20;;;16854:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16964:1;16943:23;;:9;:23;;;16935:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17025:14;:22;17040:6;17025:22;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;17051:14;:25;17066:9;17051:25;;;;;;;;;;;;;;;;;;;;;;;;;17025:51;17021:131;;;17099:41;17114:6;17122:9;17133:6;17099:14;:41::i;:::-;17092:48;;;;17021:131;17167:6;;;;;;;;;;;17164:63;;;17183:41;17198:6;17206:9;17217:6;17183:14;:41::i;:::-;17176:48;;;;17164:63;17243:14;:22;17258:6;17243:22;;;;;;;;;;;;;;;;;;;;;;;;;17242:23;:53;;;;;17270:14;:25;17285:9;17270:25;;;;;;;;;;;;;;;;;;;;;;;;;17269:26;17242:53;17239:136;;;17335:4;17319:20;;:12;;;;;;;;;;;:20;;;17311:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17239:136;17387:38;17399:6;17407:9;17418:6;17387:11;:38::i;:::-;17441:34;17457:6;17465:9;17441:15;:34::i;:::-;17438:60;;;17478:17;17488:6;17478:9;:17::i;:::-;17438:60;17538:53;17560:6;17538:53;;;;;;;;;;;;;;;;;:9;:17;17548:6;17538:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17518:9;:17;17528:6;17518:17;;;;;;;;;;;;;;;:73;;;;17602:22;17641:4;;;;;;;;;;;17628:17;;:9;:17;;;:35;;;;17659:4;;;;;;;;;;;17649:14;;:6;:14;;;17628:35;17627:83;;17704:6;17627:83;;;17667:34;17675:6;17683:9;17694:6;17667:7;:34::i;:::-;17627:83;17602:108;;17754:40;17779:14;17754:9;:20;17764:9;17754:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;17731:9;:20;17741:9;17731:20;;;;;;;;;;;;;;;:63;;;;17837:9;17820:43;;17829:6;17820:43;;;17848:14;17820:43;;;;;;:::i;:::-;;;;;;;;17881:4;17874:11;;;16743:1150;;;;;;:::o;9106:330::-;9199:4;9236:53;9258:6;9236:53;;;;;;;;;;;;;;;;;:9;:17;9246:6;9236:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9216:9;:17;9226:6;9216:17;;;;;;;;;;;;;;;:73;;;;9323:32;9348:6;9323:9;:20;9333:9;9323:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9300:9;:20;9310:9;9300:20;;;;;;;;;;;;;;;:55;;;;9388:9;9371:35;;9380:6;9371:35;;;9399:6;9371:35;;;;;;:::i;:::-;;;;;;;;9424:4;9417:11;;9106:330;;;;;:::o;1180:345::-;1266:7;1365:1;1361;:5;1368:12;1353:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1392:9;1408:1;1404;:5;;;;:::i;:::-;1392:17;;1516:1;1509:8;;;1180:345;;;;;:::o;11565:649::-;11666:14;:22;11681:6;11666:22;;;;;;;;;;;;;;;;;;;;;;;;;11665:23;:53;;;;;11713:4;11692:26;;:9;:26;;;;11665:53;:80;;;;;11740:4;11722:23;;:6;:23;;;;11665:80;:125;;;;;11785:4;;;;;;;;;;;11764:26;;:9;:26;;;;11665:125;:146;;;;;11807:4;;;;;;;;;;;11794:17;;:9;:17;;;;11665:146;:178;;;;;11828:15;;;;;;;;;;;11815:28;;:9;:28;;;;11665:178;:210;;;;;11860:15;;;;;;;;;;;11847:28;;:9;:28;;;;11665:210;11661:424;;;11895:18;11916:20;11926:9;11916;:20::i;:::-;11895:41;;11988:15;;11977:6;11964:10;:19;;;;:::i;:::-;11963:40;;11955:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;11876:209;11661:424;12115:12;;12105:6;:22;;:49;;;;12131:15;:23;12147:6;12131:23;;;;;;;;;;;;;;;;;;;;;;;;;12105:49;:79;;;;12158:15;:26;12174:9;12158:26;;;;;;;;;;;;;;;;;;;;;;;;;12105:79;12097:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11565:649;;;:::o;13006:408::-;13089:4;13108:15;13162;13126:33;13143:15;;13126:12;;:16;;:33;;;;:::i;:::-;:51;13108:69;;13210:4;;;;;;;;;;;13197:17;;:9;:17;;;:40;;;;;13227:10;13197:40;:60;;;;;13251:6;;;;;;;;;;;13250:7;13197:60;:84;;;;;13270:11;;;;;;;;;;;13197:84;:138;;;;;13322:13;;13294:9;:24;13312:4;13294:24;;;;;;;;;;;;;;;;:41;;13197:138;:209;;;;;13376:30;13402:3;13376:21;13387:9;;13376:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;13348:9;:24;13366:4;13348:24;;;;;;;;;;;;;;;;:58;;13197:209;13190:216;;;13006:408;;;;:::o;13880:2011::-;7117:4;7108:6;;:13;;;;;;;;;;;;;;;;;;13947:14:::1;13965:9;;;;;;;;;;;13964:61;;14012:13;;13964:61;;;13978:31;14005:3;13978:22;13990:9;;13978:7;:11;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;13964:61;13947:78;;14048:13;;14039:6;:22;14038:58;;14083:13;;14074:22;;;14038:58;;;14065:6;14038:58;;14109:23;14151:1:::0;14136:12:::1;;:16;14135:70;;14204:1;14135:70;;;14156:45;14199:1;14156:38;14185:8;;14156:24;14167:12;;14156:6;:10;;:24;;;;:::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;14135:70;14109:96;;14218:20;14241:27;14252:15;14241:6;:10;;:27;;;;:::i;:::-;14218:50;;14281:21;14319:1;14305:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14281:40;;14350:4;14332;14337:1;14332:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14376:42;14366:4;14371:1;14366:7;;;;;;;;:::i;:::-;;;;;;;:52;;;;;;;;;::::0;::::1;14431:21;14455;14431:45;;14489:6;;;;;;;;;;;:57;;;14561:12;14588:1;14604:4;14631;14651:15;14489:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14690:15;14718:17:::0;14738:40:::1;14764:13;14738:21;:25;;:40;;;;:::i;:::-;14718:60;;14789:19;14827:1:::0;14812:12:::1;;:16;14811:65;;14868:8;;14811:65;;;14832:33;14845:19;14862:1;14845:12;;:16;;:19;;;;:::i;:::-;14832:8;;:12;;:33;;;;:::i;:::-;14811:65;14789:87;;14902:1;14893:6;;:10;14889:242;;;14919:20;14942:38;14968:11;14942:21;14956:6;;14942:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;14919:61;;15033:9;;;;;;;;;;;15025:23;;15056:12;15075:6;15025:61;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15009:77;;;;;15114:5;15101:18;;14904:227;14889:242;15164:1;15146:15;:19;15143:451;;;15181:26;15210:51;15259:1;15210:44;15242:11;15210:27;15224:12;;15210:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;15181:80;;15276:6;;;;;;;;;;;:22;;;15306:18;15352:4;15376:15;15410:1;15430::::0;15450:15:::1;;;;;;;;;;;15484;15276:238;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15534:48;15546:18;15566:15;15534:48;;;;;;;:::i;:::-;;;;;;;;15166:428;15143:451;15623:1;15608:12;;:16;15604:237;;;15640:26;15669:21;15640:50;;15731:15;;;;;;;;;;;15723:29;;15760:18;15785:6;15723:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15707:89;;;;;15824:5;15811:18;;15625:216;15604:237;15868:15;15853:12;:30;;;;13934:1957;;;;;;;;7135:5:::0;7126:6;;:14;;;;;;;;;;;;;;;;;;13880:2011;:::o;13422:450::-;13508:7;13530:17;13586:4;;;;;;;;;;;13573:17;;:9;:17;;;13572:48;;13609:11;;13572:48;;;13594:12;;13572:48;13560:60;;13633:17;13653:31;13679:4;13653:21;13664:9;13653:6;:10;;:21;;;;:::i;:::-;:25;;:31;;;;:::i;:::-;13633:51;;13724:39;13753:9;13724;:24;13742:4;13724:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13697:9;:24;13715:4;13697:24;;;;;;;;;;;;;;;:66;;;;13806:4;13781:42;;13790:6;13781:42;;;13813:9;13781:42;;;;;;:::i;:::-;;;;;;;;13843:21;13854:9;13843:6;:10;;:21;;;;:::i;:::-;13836:28;;;;13422:450;;;;;:::o;446:136::-;504:7;531:43;535:1;538;531:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;524:50;;446:136;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:619::-;4835:6;4843;4851;4900:2;4888:9;4879:7;4875:23;4871:32;4868:119;;;4906:79;;:::i;:::-;4868:119;5026:1;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4997:117;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;5281:2;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5252:118;4758:619;;;;;:::o;5383:329::-;5442:6;5491:2;5479:9;5470:7;5466:23;5462:32;5459:119;;;5497:79;;:::i;:::-;5459:119;5617:1;5642:53;5687:7;5678:6;5667:9;5663:22;5642:53;:::i;:::-;5632:63;;5588:117;5383:329;;;;:::o;5718:86::-;5753:7;5793:4;5786:5;5782:16;5771:27;;5718:86;;;:::o;5810:112::-;5893:22;5909:5;5893:22;:::i;:::-;5888:3;5881:35;5810:112;;:::o;5928:214::-;6017:4;6055:2;6044:9;6040:18;6032:26;;6068:67;6132:1;6121:9;6117:17;6108:6;6068:67;:::i;:::-;5928:214;;;;:::o;6148:619::-;6225:6;6233;6241;6290:2;6278:9;6269:7;6265:23;6261:32;6258:119;;;6296:79;;:::i;:::-;6258:119;6416:1;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;:::i;:::-;6431:63;;6387:117;6543:2;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6514:118;6671:2;6697:53;6742:7;6733:6;6722:9;6718:22;6697:53;:::i;:::-;6687:63;;6642:118;6148:619;;;;;:::o;6773:118::-;6860:24;6878:5;6860:24;:::i;:::-;6855:3;6848:37;6773:118;;:::o;6897:222::-;6990:4;7028:2;7017:9;7013:18;7005:26;;7041:71;7109:1;7098:9;7094:17;7085:6;7041:71;:::i;:::-;6897:222;;;;:::o;7125:474::-;7193:6;7201;7250:2;7238:9;7229:7;7225:23;7221:32;7218:119;;;7256:79;;:::i;:::-;7218:119;7376:1;7401:53;7446:7;7437:6;7426:9;7422:22;7401:53;:::i;:::-;7391:63;;7347:117;7503:2;7529:53;7574:7;7565:6;7554:9;7550:22;7529:53;:::i;:::-;7519:63;;7474:118;7125:474;;;;;:::o;7605:104::-;7650:7;7679:24;7697:5;7679:24;:::i;:::-;7668:35;;7605:104;;;:::o;7715:138::-;7796:32;7822:5;7796:32;:::i;:::-;7789:5;7786:43;7776:71;;7843:1;7840;7833:12;7776:71;7715:138;:::o;7859:155::-;7913:5;7951:6;7938:20;7929:29;;7967:41;8002:5;7967:41;:::i;:::-;7859:155;;;;:::o;8020:345::-;8087:6;8136:2;8124:9;8115:7;8111:23;8107:32;8104:119;;;8142:79;;:::i;:::-;8104:119;8262:1;8287:61;8340:7;8331:6;8320:9;8316:22;8287:61;:::i;:::-;8277:71;;8233:125;8020:345;;;;:::o;8371:60::-;8399:3;8420:5;8413:12;;8371:60;;;:::o;8437:142::-;8487:9;8520:53;8538:34;8547:24;8565:5;8547:24;:::i;:::-;8538:34;:::i;:::-;8520:53;:::i;:::-;8507:66;;8437:142;;;:::o;8585:126::-;8635:9;8668:37;8699:5;8668:37;:::i;:::-;8655:50;;8585:126;;;:::o;8717:144::-;8785:9;8818:37;8849:5;8818:37;:::i;:::-;8805:50;;8717:144;;;:::o;8867:167::-;8972:55;9021:5;8972:55;:::i;:::-;8967:3;8960:68;8867:167;;:::o;9040:258::-;9151:4;9189:2;9178:9;9174:18;9166:26;;9202:89;9288:1;9277:9;9273:17;9264:6;9202:89;:::i;:::-;9040:258;;;;:::o;9304:116::-;9374:21;9389:5;9374:21;:::i;:::-;9367:5;9364:32;9354:60;;9410:1;9407;9400:12;9354:60;9304:116;:::o;9426:133::-;9469:5;9507:6;9494:20;9485:29;;9523:30;9547:5;9523:30;:::i;:::-;9426:133;;;;:::o;9565:753::-;9645:6;9653;9661;9669;9718:3;9706:9;9697:7;9693:23;9689:33;9686:120;;;9725:79;;:::i;:::-;9686:120;9845:1;9870:50;9912:7;9903:6;9892:9;9888:22;9870:50;:::i;:::-;9860:60;;9816:114;9969:2;9995:53;10040:7;10031:6;10020:9;10016:22;9995:53;:::i;:::-;9985:63;;9940:118;10097:2;10123:53;10168:7;10159:6;10148:9;10144:22;10123:53;:::i;:::-;10113:63;;10068:118;10225:2;10251:50;10293:7;10284:6;10273:9;10269:22;10251:50;:::i;:::-;10241:60;;10196:115;9565:753;;;;;;;:::o;10324:161::-;10464:13;10460:1;10452:6;10448:14;10441:37;10324:161;:::o;10491:366::-;10633:3;10654:67;10718:2;10713:3;10654:67;:::i;:::-;10647:74;;10730:93;10819:3;10730:93;:::i;:::-;10848:2;10843:3;10839:12;10832:19;;10491:366;;;:::o;10863:419::-;11029:4;11067:2;11056:9;11052:18;11044:26;;11116:9;11110:4;11106:20;11102:1;11091:9;11087:17;11080:47;11144:131;11270:4;11144:131;:::i;:::-;11136:139;;10863:419;;;:::o;11288:180::-;11336:77;11333:1;11326:88;11433:4;11430:1;11423:15;11457:4;11454:1;11447:15;11474:410;11514:7;11537:20;11555:1;11537:20;:::i;:::-;11532:25;;11571:20;11589:1;11571:20;:::i;:::-;11566:25;;11626:1;11623;11619:9;11648:30;11666:11;11648:30;:::i;:::-;11637:41;;11827:1;11818:7;11814:15;11811:1;11808:22;11788:1;11781:9;11761:83;11738:139;;11857:18;;:::i;:::-;11738:139;11522:362;11474:410;;;;:::o;11890:180::-;11938:77;11935:1;11928:88;12035:4;12032:1;12025:15;12059:4;12056:1;12049:15;12076:185;12116:1;12133:20;12151:1;12133:20;:::i;:::-;12128:25;;12167:20;12185:1;12167:20;:::i;:::-;12162:25;;12206:1;12196:35;;12211:18;;:::i;:::-;12196:35;12253:1;12250;12246:9;12241:14;;12076:185;;;;:::o;12267:224::-;12407:34;12403:1;12395:6;12391:14;12384:58;12476:7;12471:2;12463:6;12459:15;12452:32;12267:224;:::o;12497:366::-;12639:3;12660:67;12724:2;12719:3;12660:67;:::i;:::-;12653:74;;12736:93;12825:3;12736:93;:::i;:::-;12854:2;12849:3;12845:12;12838:19;;12497:366;;;:::o;12869:419::-;13035:4;13073:2;13062:9;13058:18;13050:26;;13122:9;13116:4;13112:20;13108:1;13097:9;13093:17;13086:47;13150:131;13276:4;13150:131;:::i;:::-;13142:139;;12869:419;;;:::o;13294:222::-;13434:34;13430:1;13422:6;13418:14;13411:58;13503:5;13498:2;13490:6;13486:15;13479:30;13294:222;:::o;13522:366::-;13664:3;13685:67;13749:2;13744:3;13685:67;:::i;:::-;13678:74;;13761:93;13850:3;13761:93;:::i;:::-;13879:2;13874:3;13870:12;13863:19;;13522:366;;;:::o;13894:419::-;14060:4;14098:2;14087:9;14083:18;14075:26;;14147:9;14141:4;14137:20;14133:1;14122:9;14118:17;14111:47;14175:131;14301:4;14175:131;:::i;:::-;14167:139;;13894:419;;;:::o;14319:156::-;14459:8;14455:1;14447:6;14443:14;14436:32;14319:156;:::o;14481:365::-;14623:3;14644:66;14708:1;14703:3;14644:66;:::i;:::-;14637:73;;14719:93;14808:3;14719:93;:::i;:::-;14837:2;14832:3;14828:12;14821:19;;14481:365;;;:::o;14852:419::-;15018:4;15056:2;15045:9;15041:18;15033:26;;15105:9;15099:4;15095:20;15091:1;15080:9;15076:17;15069:47;15133:131;15259:4;15133:131;:::i;:::-;15125:139;;14852:419;;;:::o;15277:134::-;15335:9;15368:37;15399:5;15368:37;:::i;:::-;15355:50;;15277:134;;;:::o;15417:147::-;15512:45;15551:5;15512:45;:::i;:::-;15507:3;15500:58;15417:147;;:::o;15570:238::-;15671:4;15709:2;15698:9;15694:18;15686:26;;15722:79;15798:1;15787:9;15783:17;15774:6;15722:79;:::i;:::-;15570:238;;;;:::o;15814:102::-;15856:8;15903:5;15900:1;15896:13;15875:34;;15814:102;;;:::o;15922:848::-;15983:5;15990:4;16014:6;16005:15;;16038:5;16029:14;;16052:712;16073:1;16063:8;16060:15;16052:712;;;16168:4;16163:3;16159:14;16153:4;16150:24;16147:50;;;16177:18;;:::i;:::-;16147:50;16227:1;16217:8;16213:16;16210:451;;;16642:4;16635:5;16631:16;16622:25;;16210:451;16692:4;16686;16682:15;16674:23;;16722:32;16745:8;16722:32;:::i;:::-;16710:44;;16052:712;;;15922:848;;;;;;;:::o;16776:1073::-;16830:5;17021:8;17011:40;;17042:1;17033:10;;17044:5;;17011:40;17070:4;17060:36;;17087:1;17078:10;;17089:5;;17060:36;17156:4;17204:1;17199:27;;;;17240:1;17235:191;;;;17149:277;;17199:27;17217:1;17208:10;;17219:5;;;17235:191;17280:3;17270:8;17267:17;17264:43;;;17287:18;;:::i;:::-;17264:43;17336:8;17333:1;17329:16;17320:25;;17371:3;17364:5;17361:14;17358:40;;;17378:18;;:::i;:::-;17358:40;17411:5;;;17149:277;;17535:2;17525:8;17522:16;17516:3;17510:4;17507:13;17503:36;17485:2;17475:8;17472:16;17467:2;17461:4;17458:12;17454:35;17438:111;17435:246;;;17591:8;17585:4;17581:19;17572:28;;17626:3;17619:5;17616:14;17613:40;;;17633:18;;:::i;:::-;17613:40;17666:5;;17435:246;17706:42;17744:3;17734:8;17728:4;17725:1;17706:42;:::i;:::-;17691:57;;;;17780:4;17775:3;17771:14;17764:5;17761:25;17758:51;;;17789:18;;:::i;:::-;17758:51;17838:4;17831:5;17827:16;17818:25;;16776:1073;;;;;;:::o;17855:281::-;17913:5;17937:23;17955:4;17937:23;:::i;:::-;17929:31;;17981:25;17997:8;17981:25;:::i;:::-;17969:37;;18025:104;18062:66;18052:8;18046:4;18025:104;:::i;:::-;18016:113;;17855:281;;;;:::o;18142:220::-;18282:34;18278:1;18270:6;18266:14;18259:58;18351:3;18346:2;18338:6;18334:15;18327:28;18142:220;:::o;18368:366::-;18510:3;18531:67;18595:2;18590:3;18531:67;:::i;:::-;18524:74;;18607:93;18696:3;18607:93;:::i;:::-;18725:2;18720:3;18716:12;18709:19;;18368:366;;;:::o;18740:419::-;18906:4;18944:2;18933:9;18929:18;18921:26;;18993:9;18987:4;18983:20;18979:1;18968:9;18964:17;18957:47;19021:131;19147:4;19021:131;:::i;:::-;19013:139;;18740:419;;;:::o;19165:191::-;19205:3;19224:20;19242:1;19224:20;:::i;:::-;19219:25;;19258:20;19276:1;19258:20;:::i;:::-;19253:25;;19301:1;19298;19294:9;19287:16;;19322:3;19319:1;19316:10;19313:36;;;19329:18;;:::i;:::-;19313:36;19165:191;;;;:::o;19362:177::-;19502:29;19498:1;19490:6;19486:14;19479:53;19362:177;:::o;19545:366::-;19687:3;19708:67;19772:2;19767:3;19708:67;:::i;:::-;19701:74;;19784:93;19873:3;19784:93;:::i;:::-;19902:2;19897:3;19893:12;19886:19;;19545:366;;;:::o;19917:419::-;20083:4;20121:2;20110:9;20106:18;20098:26;;20170:9;20164:4;20160:20;20156:1;20145:9;20141:17;20134:47;20198:131;20324:4;20198:131;:::i;:::-;20190:139;;19917:419;;;:::o;20342:194::-;20382:4;20402:20;20420:1;20402:20;:::i;:::-;20397:25;;20436:20;20454:1;20436:20;:::i;:::-;20431:25;;20480:1;20477;20473:9;20465:17;;20504:1;20498:4;20495:11;20492:37;;;20509:18;;:::i;:::-;20492:37;20342:194;;;;:::o;20542:170::-;20682:22;20678:1;20670:6;20666:14;20659:46;20542:170;:::o;20718:366::-;20860:3;20881:67;20945:2;20940:3;20881:67;:::i;:::-;20874:74;;20957:93;21046:3;20957:93;:::i;:::-;21075:2;21070:3;21066:12;21059:19;;20718:366;;;:::o;21090:419::-;21256:4;21294:2;21283:9;21279:18;21271:26;;21343:9;21337:4;21333:20;21329:1;21318:9;21314:17;21307:47;21371:131;21497:4;21371:131;:::i;:::-;21363:139;;21090:419;;;:::o;21515:249::-;21655:34;21651:1;21643:6;21639:14;21632:58;21724:32;21719:2;21711:6;21707:15;21700:57;21515:249;:::o;21770:366::-;21912:3;21933:67;21997:2;21992:3;21933:67;:::i;:::-;21926:74;;22009:93;22098:3;22009:93;:::i;:::-;22127:2;22122:3;22118:12;22111:19;;21770:366;;;:::o;22142:419::-;22308:4;22346:2;22335:9;22331:18;22323:26;;22395:9;22389:4;22385:20;22381:1;22370:9;22366:17;22359:47;22423:131;22549:4;22423:131;:::i;:::-;22415:139;;22142:419;;;:::o;22567:167::-;22707:19;22703:1;22695:6;22691:14;22684:43;22567:167;:::o;22740:366::-;22882:3;22903:67;22967:2;22962:3;22903:67;:::i;:::-;22896:74;;22979:93;23068:3;22979:93;:::i;:::-;23097:2;23092:3;23088:12;23081:19;;22740:366;;;:::o;23112:419::-;23278:4;23316:2;23305:9;23301:18;23293:26;;23365:9;23359:4;23355:20;23351:1;23340:9;23336:17;23329:47;23393:131;23519:4;23393:131;:::i;:::-;23385:139;;23112:419;;;:::o;23537:180::-;23585:77;23582:1;23575:88;23682:4;23679:1;23672:15;23706:4;23703:1;23696:15;23723:180;23771:77;23768:1;23761:88;23868:4;23865:1;23858:15;23892:4;23889:1;23882:15;23909:85;23954:7;23983:5;23972:16;;23909:85;;;:::o;24000:158::-;24058:9;24091:61;24109:42;24118:32;24144:5;24118:32;:::i;:::-;24109:42;:::i;:::-;24091:61;:::i;:::-;24078:74;;24000:158;;;:::o;24164:147::-;24259:45;24298:5;24259:45;:::i;:::-;24254:3;24247:58;24164:147;;:::o;24317:114::-;24384:6;24418:5;24412:12;24402:22;;24317:114;;;:::o;24437:184::-;24536:11;24570:6;24565:3;24558:19;24610:4;24605:3;24601:14;24586:29;;24437:184;;;;:::o;24627:132::-;24694:4;24717:3;24709:11;;24747:4;24742:3;24738:14;24730:22;;24627:132;;;:::o;24765:108::-;24842:24;24860:5;24842:24;:::i;:::-;24837:3;24830:37;24765:108;;:::o;24879:179::-;24948:10;24969:46;25011:3;25003:6;24969:46;:::i;:::-;25047:4;25042:3;25038:14;25024:28;;24879:179;;;;:::o;25064:113::-;25134:4;25166;25161:3;25157:14;25149:22;;25064:113;;;:::o;25213:732::-;25332:3;25361:54;25409:5;25361:54;:::i;:::-;25431:86;25510:6;25505:3;25431:86;:::i;:::-;25424:93;;25541:56;25591:5;25541:56;:::i;:::-;25620:7;25651:1;25636:284;25661:6;25658:1;25655:13;25636:284;;;25737:6;25731:13;25764:63;25823:3;25808:13;25764:63;:::i;:::-;25757:70;;25850:60;25903:6;25850:60;:::i;:::-;25840:70;;25696:224;25683:1;25680;25676:9;25671:14;;25636:284;;;25640:14;25936:3;25929:10;;25337:608;;;25213:732;;;;:::o;25951:831::-;26214:4;26252:3;26241:9;26237:19;26229:27;;26266:71;26334:1;26323:9;26319:17;26310:6;26266:71;:::i;:::-;26347:80;26423:2;26412:9;26408:18;26399:6;26347:80;:::i;:::-;26474:9;26468:4;26464:20;26459:2;26448:9;26444:18;26437:48;26502:108;26605:4;26596:6;26502:108;:::i;:::-;26494:116;;26620:72;26688:2;26677:9;26673:18;26664:6;26620:72;:::i;:::-;26702:73;26770:3;26759:9;26755:19;26746:6;26702:73;:::i;:::-;25951:831;;;;;;;;:::o;26788:147::-;26889:11;26926:3;26911:18;;26788:147;;;;:::o;26941:114::-;;:::o;27061:398::-;27220:3;27241:83;27322:1;27317:3;27241:83;:::i;:::-;27234:90;;27333:93;27422:3;27333:93;:::i;:::-;27451:1;27446:3;27442:11;27435:18;;27061:398;;;:::o;27465:379::-;27649:3;27671:147;27814:3;27671:147;:::i;:::-;27664:154;;27835:3;27828:10;;27465:379;;;:::o;27850:807::-;28099:4;28137:3;28126:9;28122:19;28114:27;;28151:71;28219:1;28208:9;28204:17;28195:6;28151:71;:::i;:::-;28232:72;28300:2;28289:9;28285:18;28276:6;28232:72;:::i;:::-;28314:80;28390:2;28379:9;28375:18;28366:6;28314:80;:::i;:::-;28404;28480:2;28469:9;28465:18;28456:6;28404:80;:::i;:::-;28494:73;28562:3;28551:9;28547:19;28538:6;28494:73;:::i;:::-;28577;28645:3;28634:9;28630:19;28621:6;28577:73;:::i;:::-;27850:807;;;;;;;;;:::o;28663:143::-;28720:5;28751:6;28745:13;28736:22;;28767:33;28794:5;28767:33;:::i;:::-;28663:143;;;;:::o;28812:663::-;28900:6;28908;28916;28965:2;28953:9;28944:7;28940:23;28936:32;28933:119;;;28971:79;;:::i;:::-;28933:119;29091:1;29116:64;29172:7;29163:6;29152:9;29148:22;29116:64;:::i;:::-;29106:74;;29062:128;29229:2;29255:64;29311:7;29302:6;29291:9;29287:22;29255:64;:::i;:::-;29245:74;;29200:129;29368:2;29394:64;29450:7;29441:6;29430:9;29426:22;29394:64;:::i;:::-;29384:74;;29339:129;28812:663;;;;;:::o;29481:332::-;29602:4;29640:2;29629:9;29625:18;29617:26;;29653:71;29721:1;29710:9;29706:17;29697:6;29653:71;:::i;:::-;29734:72;29802:2;29791:9;29787:18;29778:6;29734:72;:::i;:::-;29481:332;;;;;:::o

Swarm Source

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