ETH Price: $3,441.28 (+4.02%)

Token

CyberCuteGenerationalWealthMobbGang (CCGWMG)
 

Overview

Max Total Supply

11,100,000 CCGWMG

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
106,560 CCGWMG

Value
$0.00
0x1e420292c637b3704E7e900C6e33AF9738f79aFC
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:
CCGWMG

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-24
*/

// SPDX-License-Identifier: MIT

/*
https://t.me/CCGWMG
https://x.com/CCGWMG
*/

pragma solidity ^0.8.24;

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    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 totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract CCGWMG is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'CyberCuteGenerationalWealthMobbGang';
    string private constant _symbol = 'CCGWMG';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 11100000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 5000;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0xCe6AE38C9169cEC2F486B45F6458B2d551d616e5; 
    address internal marketing_receiver = 0xCe6AE38C9169cEC2F486B45F6458B2d551d616e5;
    address internal liquidity_receiver = 0xCe6AE38C9169cEC2F486B45F6458B2d551d616e5;
    uint256 public _maxTxAmount = ( _totalSupply * 120 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 120 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 120 ) / 10000;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function opentrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function updateContractthreshold(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function RemoveTax(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function RemoveAllLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function updateAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function setbots(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

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

}

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":"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":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"RemoveAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"RemoveTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"opentrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setbots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"updateContractthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a610012919061088b565b62a95f6061002091906108d5565b6001555f600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e860015461007191906108d5565b61007b9190610943565b600b55620186a0600a60015461009191906108d5565b61009b9190610943565b600c555f600d555f600e556103e8600f555f6010556107d06011556107d060125561138860135561271060145573ce6ae38c9169cec2f486b45f6458b2d551d616e560155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ce6ae38c9169cec2f486b45f6458b2d551d616e560165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ce6ae38c9169cec2f486b45f6458b2d551d616e560175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060786001546101d691906108d5565b6101e09190610943565b60185561271060786001546101f591906108d5565b6101ff9190610943565b601955612710607860015461021491906108d5565b61021e9190610943565b601a5534801561022c575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f491906109d1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610359573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037d91906109d1565b6040518363ffffffff1660e01b815260040161039a929190610a0b565b6020604051808303815f875af11580156103b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103da91906109d1565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405161070b9190610a41565b60405180910390a35050610a5a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561079c578086048111156107785761077761071a565b5b60018516156107875780820291505b808102905061079585610747565b945061075c565b94509492505050565b5f826107b4576001905061086f565b816107c1575f905061086f565b81600181146107d757600281146107e157610810565b600191505061086f565b60ff8411156107f3576107f261071a565b5b8360020a91508482111561080a5761080961071a565b5b5061086f565b5060208310610133831016604e8410600b84101617156108455782820a9050838111156108405761083f61071a565b5b61086f565b6108528484846001610753565b925090508184048111156108695761086861071a565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61089582610876565b91506108a08361087f565b92506108cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107a5565b905092915050565b5f6108df82610876565b91506108ea83610876565b92508282026108f881610876565b9150828204841483151761090f5761090e61071a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61094d82610876565b915061095883610876565b92508261096857610967610916565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109a082610977565b9050919050565b6109b081610996565b81146109ba575f80fd5b50565b5f815190506109cb816109a7565b92915050565b5f602082840312156109e6576109e5610973565b5b5f6109f3848285016109bd565b91505092915050565b610a0581610996565b82525050565b5f604082019050610a1e5f8301856109fc565b610a2b60208301846109fc565b9392505050565b610a3b81610876565b82525050565b5f602082019050610a545f830184610a32565b92915050565b61394880610a675f395ff3fe608060405260043610610184575f3560e01c80637cca52fe116100d0578063a9059cbb11610089578063f2fde38b11610063578063f2fde38b1461058b578063f367c62b146105b3578063fa852a21146105db578063fc004237146105f15761018b565b8063a9059cbb146104eb578063da14730514610527578063dd62ed3e1461054f5761018b565b80637cca52fe146103f15780637d1db4a51461041b578063893d20e8146104455780638cd4426d1461046f57806395d89b4114610497578063a8aa1b31146104c15761018b565b8063334c14391161013d57806351bc3c851161011757806351bc3c851461034d57806370a08231146103635780637723456a1461039f57806378109e54146103c75761018b565b8063334c1439146102c15780633f4218e0146102e957806348ff2b8b146103255761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f5780632f54bf6e1461025b578063313ce567146102975761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a3610619565b6040516101b0919061293f565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906129f4565b610639565b6040516101ec9190612a4c565b60405180910390f35b348015610200575f80fd5b5061020961064f565b6040516102169190612a74565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190612a8d565b61068e565b6040516102529190612a4c565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190612add565b610754565b60405161028e9190612a4c565b60405180910390f35b3480156102a2575f80fd5b506102ab6107ab565b6040516102b89190612b23565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612b3c565b6107b3565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190612add565b6109bf565b60405161031c9190612a4c565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612bb6565b6109dc565b005b348015610358575f80fd5b50610361610a7c565b005b34801561036e575f80fd5b5061038960048036038101906103849190612add565b610ad1565b6040516103969190612a74565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612bf4565b610b17565b005b3480156103d2575f80fd5b506103db610c39565b6040516103e89190612a74565b60405180910390f35b3480156103fc575f80fd5b50610405610c3f565b6040516104129190612a74565b60405180910390f35b348015610426575f80fd5b5061042f610c45565b60405161043c9190612a74565b60405180910390f35b348015610450575f80fd5b50610459610c4b565b6040516104669190612ca0565b60405180910390f35b34801561047a575f80fd5b50610495600480360381019061049091906129f4565b610c72565b005b3480156104a2575f80fd5b506104ab610dfc565b6040516104b8919061293f565b60405180910390f35b3480156104cc575f80fd5b506104d5610e39565b6040516104e29190612ca0565b60405180910390f35b3480156104f6575f80fd5b50610511600480360381019061050c91906129f4565b610e5e565b60405161051e9190612a4c565b60405180910390f35b348015610532575f80fd5b5061054d60048036038101906105489190612cb9565b610e74565b005b34801561055a575f80fd5b5061057560048036038101906105709190612d09565b610f28565b6040516105829190612a74565b60405180910390f35b348015610596575f80fd5b506105b160048036038101906105ac9190612d82565b610faa565b005b3480156105be575f80fd5b506105d960048036038101906105d49190612e0e565b61106b565b005b3480156105e6575f80fd5b506105ef61114e565b005b3480156105fc575f80fd5b5061061760048036038101906106129190612cb9565b6111b3565b005b60606040518060600160405280602381526020016138f060239139905090565b5f61064533848461132a565b6001905092915050565b5f61068961065c5f610ad1565b61067b61066a61dead610ad1565b6001546114ed90919063ffffffff16565b6114ed90919063ffffffff16565b905090565b5f61069a848484611502565b6107498433610744856040518060600160405280602881526020016138c86028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d9f9092919063ffffffff16565b61132a565b600190509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b6107bc33610754565b6107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f290612eb5565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b6109e533610754565b610a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1b90612eb5565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610a8533610754565b610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb90612eb5565b60405180910390fd5b610acf600b54611df3565b565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b2033610754565b610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690612eb5565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610ba6600160145461204990919063ffffffff16565b60115411158015610bce5750610bc8600160145461204990919063ffffffff16565b60125411155b8015610bf15750610beb600160145461204990919063ffffffff16565b60135411155b610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790612f43565b60405180910390fd5b50505050505050565b601a5481565b60195481565b60185481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c7b33610754565b610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190612eb5565b60405180910390fd5b5f610d586064610d4a848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cfd9190612ca0565b602060405180830381865afa158015610d18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3c9190612f75565b61205e90919063ffffffff16565b61204990919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610db6929190612fa0565b6020604051808303815f875af1158015610dd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df69190612fdb565b50505050565b60606040518060400160405280600681526020017f434347574d470000000000000000000000000000000000000000000000000000815250905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610e6a338484611502565b6001905092915050565b610e7d33610754565b610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390612eb5565b60405180910390fd5b82600a81905550610eed620186a0610edf8460015461205e90919063ffffffff16565b61204990919063ffffffff16565b600b81905550610f1d620186a0610f0f8360015461205e90919063ffffffff16565b61204990919063ffffffff16565b600c81905550505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fb333610754565b610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990612eb5565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110609190613061565b60405180910390a150565b61107433610754565b6110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90612eb5565b60405180910390fd5b5f5b83839050811015611148578160055f8686858181106110d7576110d661307a565b5b90506020020160208101906110ec9190612add565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506110b5565b50505050565b61115733610754565b611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90612eb5565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b6111bc33610754565b6111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290612eb5565b60405180910390fd5b5f6112256127106112178660015461205e90919063ffffffff16565b61204990919063ffffffff16565b90505f6112516127106112438660015461205e90919063ffffffff16565b61204990919063ffffffff16565b90505f61127d61271061126f8660015461205e90919063ffffffff16565b61204990919063ffffffff16565b9050826018819055508160198190555080601a819055505f6112c46103e86112b660056112a861064f565b61205e90919063ffffffff16565b61204990919063ffffffff16565b90508084101580156112d65750808310155b80156112e25750808210155b611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890613117565b60405180910390fd5b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f906131a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613233565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114e09190612a74565b60405180910390a3505050565b5f81836114fa919061327e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613321565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d5906133af565b60405180910390fd5b6115e783610ad1565b811115611629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116209061343d565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116c7575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561171c57600760149054906101000a900460ff1661171b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611712906134a5565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117ba575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611813575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561184d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118e757601a546118a58260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461207390919063ffffffff16565b11156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061350d565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a235760195481111580611992575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806119e3575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1990613575565b60405180910390fd5b5b60185481111580611a7a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611acb575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190613575565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bad575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bcc57600160085f828254611bc49190613593565b925050819055505b611bd7838383612088565b15611bef57611be7600b54611df3565b5f6008819055505b611c3f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114ed90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611c8b84846121bb565b611c955781611ca1565b611ca0848484612262565b5b9050611cf38160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461207390919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d919190612a74565b60405180910390a350505050565b5f838311158290611de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddd919061293f565b60405180910390fd5b5082840390509392505050565b600160095f6101000a81548160ff0219169083151502179055505f611e5f6002611e51600f54611e43600e54611e356001600d5461207390919063ffffffff16565b61207390919063ffffffff16565b61207390919063ffffffff16565b61205e90919063ffffffff16565b90505f611e8982611e7b600d548661205e90919063ffffffff16565b61204990919063ffffffff16565b90505f611e9f82856114ed90919063ffffffff16565b90505f479050611eae82612419565b5f611ec282476114ed90919063ffffffff16565b90505f611eec611edd600d54886114ed90919063ffffffff16565b8361204990919063ffffffff16565b90505f611f04600d548361205e90919063ffffffff16565b90505f811115611f1957611f18868261264f565b5b5f611f42600e54611f3460028661205e90919063ffffffff16565b61205e90919063ffffffff16565b90505f811115611fb25760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fb0573d5f803e3d5ffd5b505b5f4790505f8111156120245760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612022573d5f803e3d5ffd5b505b5050505050505050505f60095f6101000a81548160ff02191690831515021790555050565b5f818361205691906135f3565b905092915050565b5f818361206b9190613623565b905092915050565b5f81836120809190613593565b905092915050565b5f80600c5483101590505f600b5461209f30610ad1565b1015905060095f9054906101000a900460ff161580156120cb5750600760159054906101000a900460ff165b80156120e35750600760149054906101000a900460ff165b80156120ec5750815b801561213f575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612197575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121a75750600a5460085410155b80156121b05750805b925050509392505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561225a575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f8061226e8585612749565b111561240e575f6122a56122828686612749565b6122976014548661204990919063ffffffff16565b61205e90919063ffffffff16565b90506122f78160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461207390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123959190612a74565b60405180910390a35f6010541180156123b857506010546123b68686612749565b115b156123f3576123f23061dead6123ed6010546123df6014548961204990919063ffffffff16565b61205e90919063ffffffff16565b611502565b5b61240681846114ed90919063ffffffff16565b915050612412565b8190505b9392505050565b5f600267ffffffffffffffff81111561243557612434613664565b5b6040519080825280602002602001820160405280156124635781602001602082028036833780820191505090505b50905030815f8151811061247a5761247961307a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561251e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254291906136a5565b816001815181106125565761255561307a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125bc3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461132a565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161261e9594939291906137c0565b5f604051808303815f87803b158015612635575f80fd5b505af1158015612647573d5f803e3d5ffd5b505050505050565b61267b3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461132a565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161270196959493929190613818565b60606040518083038185885af115801561271d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127429190613877565b5050505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806127e5575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128075761280060646014546114ed90919063ffffffff16565b90506128c9565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128655760125490506128c9565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128c35760115490506128c9565b60135490505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612911826128cf565b61291b81856128d9565b935061292b8185602086016128e9565b612934816128f7565b840191505092915050565b5f6020820190508181035f8301526129578184612907565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61299082612967565b9050919050565b6129a081612986565b81146129aa575f80fd5b50565b5f813590506129bb81612997565b92915050565b5f819050919050565b6129d3816129c1565b81146129dd575f80fd5b50565b5f813590506129ee816129ca565b92915050565b5f8060408385031215612a0a57612a0961295f565b5b5f612a17858286016129ad565b9250506020612a28858286016129e0565b9150509250929050565b5f8115159050919050565b612a4681612a32565b82525050565b5f602082019050612a5f5f830184612a3d565b92915050565b612a6e816129c1565b82525050565b5f602082019050612a875f830184612a65565b92915050565b5f805f60608486031215612aa457612aa361295f565b5b5f612ab1868287016129ad565b9350506020612ac2868287016129ad565b9250506040612ad3868287016129e0565b9150509250925092565b5f60208284031215612af257612af161295f565b5b5f612aff848285016129ad565b91505092915050565b5f60ff82169050919050565b612b1d81612b08565b82525050565b5f602082019050612b365f830184612b14565b92915050565b5f805f60608486031215612b5357612b5261295f565b5b5f612b60868287016129ad565b9350506020612b71868287016129ad565b9250506040612b82868287016129ad565b9150509250925092565b612b9581612a32565b8114612b9f575f80fd5b50565b5f81359050612bb081612b8c565b92915050565b5f8060408385031215612bcc57612bcb61295f565b5b5f612bd9858286016129ad565b9250506020612bea85828601612ba2565b9150509250929050565b5f805f805f805f60e0888a031215612c0f57612c0e61295f565b5b5f612c1c8a828b016129e0565b9750506020612c2d8a828b016129e0565b9650506040612c3e8a828b016129e0565b9550506060612c4f8a828b016129e0565b9450506080612c608a828b016129e0565b93505060a0612c718a828b016129e0565b92505060c0612c828a828b016129e0565b91505092959891949750929550565b612c9a81612986565b82525050565b5f602082019050612cb35f830184612c91565b92915050565b5f805f60608486031215612cd057612ccf61295f565b5b5f612cdd868287016129e0565b9350506020612cee868287016129e0565b9250506040612cff868287016129e0565b9150509250925092565b5f8060408385031215612d1f57612d1e61295f565b5b5f612d2c858286016129ad565b9250506020612d3d858286016129ad565b9150509250929050565b5f612d5182612967565b9050919050565b612d6181612d47565b8114612d6b575f80fd5b50565b5f81359050612d7c81612d58565b92915050565b5f60208284031215612d9757612d9661295f565b5b5f612da484828501612d6e565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612dce57612dcd612dad565b5b8235905067ffffffffffffffff811115612deb57612dea612db1565b5b602083019150836020820283011115612e0757612e06612db5565b5b9250929050565b5f805f60408486031215612e2557612e2461295f565b5b5f84013567ffffffffffffffff811115612e4257612e41612963565b5b612e4e86828701612db9565b93509350506020612e6186828701612ba2565b9150509250925092565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612e9f6006836128d9565b9150612eaa82612e6b565b602082019050919050565b5f6020820190508181035f830152612ecc81612e93565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f612f2d602c836128d9565b9150612f3882612ed3565b604082019050919050565b5f6020820190508181035f830152612f5a81612f21565b9050919050565b5f81519050612f6f816129ca565b92915050565b5f60208284031215612f8a57612f8961295f565b5b5f612f9784828501612f61565b91505092915050565b5f604082019050612fb35f830185612c91565b612fc06020830184612a65565b9392505050565b5f81519050612fd581612b8c565b92915050565b5f60208284031215612ff057612fef61295f565b5b5f612ffd84828501612fc7565b91505092915050565b5f819050919050565b5f61302961302461301f84612967565b613006565b612967565b9050919050565b5f61303a8261300f565b9050919050565b5f61304b82613030565b9050919050565b61305b81613041565b82525050565b5f6020820190506130745f830184613052565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f613101602e836128d9565b915061310c826130a7565b604082019050919050565b5f6020820190508181035f83015261312e816130f5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61318f6024836128d9565b915061319a82613135565b604082019050919050565b5f6020820190508181035f8301526131bc81613183565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61321d6022836128d9565b9150613228826131c3565b604082019050919050565b5f6020820190508181035f83015261324a81613211565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613288826129c1565b9150613293836129c1565b92508282039050818111156132ab576132aa613251565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61330b6025836128d9565b9150613316826132b1565b604082019050919050565b5f6020820190508181035f830152613338816132ff565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133996023836128d9565b91506133a48261333f565b604082019050919050565b5f6020820190508181035f8301526133c68161338d565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f6134276031836128d9565b9150613432826133cd565b604082019050919050565b5f6020820190508181035f8301526134548161341b565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f61348f600e836128d9565b915061349a8261345b565b602082019050919050565b5f6020820190508181035f8301526134bc81613483565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f6134f7601e836128d9565b9150613502826134c3565b602082019050919050565b5f6020820190508181035f830152613524816134eb565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61355f6011836128d9565b915061356a8261352b565b602082019050919050565b5f6020820190508181035f83015261358c81613553565b9050919050565b5f61359d826129c1565b91506135a8836129c1565b92508282019050808211156135c0576135bf613251565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135fd826129c1565b9150613608836129c1565b925082613618576136176135c6565b5b828204905092915050565b5f61362d826129c1565b9150613638836129c1565b9250828202613646816129c1565b9150828204841483151761365d5761365c613251565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061369f81612997565b92915050565b5f602082840312156136ba576136b961295f565b5b5f6136c784828501613691565b91505092915050565b5f819050919050565b5f6136f36136ee6136e9846136d0565b613006565b6129c1565b9050919050565b613703816136d9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61373b81612986565b82525050565b5f61374c8383613732565b60208301905092915050565b5f602082019050919050565b5f61376e82613709565b6137788185613713565b935061378383613723565b805f5b838110156137b357815161379a8882613741565b97506137a583613758565b925050600181019050613786565b5085935050505092915050565b5f60a0820190506137d35f830188612a65565b6137e060208301876136fa565b81810360408301526137f28186613764565b90506138016060830185612c91565b61380e6080830184612a65565b9695505050505050565b5f60c08201905061382b5f830189612c91565b6138386020830188612a65565b61384560408301876136fa565b61385260608301866136fa565b61385f6080830185612c91565b61386c60a0830184612a65565b979650505050505050565b5f805f6060848603121561388e5761388d61295f565b5b5f61389b86828701612f61565b93505060206138ac86828701612f61565b92505060406138bd86828701612f61565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636543796265724375746547656e65726174696f6e616c5765616c74684d6f626247616e67a26469706673582212202b5599659ded0a0a623f024e02892ace01f73d653e1d10d26e55af929a394b5064736f6c63430008190033

Deployed Bytecode

0x608060405260043610610184575f3560e01c80637cca52fe116100d0578063a9059cbb11610089578063f2fde38b11610063578063f2fde38b1461058b578063f367c62b146105b3578063fa852a21146105db578063fc004237146105f15761018b565b8063a9059cbb146104eb578063da14730514610527578063dd62ed3e1461054f5761018b565b80637cca52fe146103f15780637d1db4a51461041b578063893d20e8146104455780638cd4426d1461046f57806395d89b4114610497578063a8aa1b31146104c15761018b565b8063334c14391161013d57806351bc3c851161011757806351bc3c851461034d57806370a08231146103635780637723456a1461039f57806378109e54146103c75761018b565b8063334c1439146102c15780633f4218e0146102e957806348ff2b8b146103255761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f5780632f54bf6e1461025b578063313ce567146102975761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a3610619565b6040516101b0919061293f565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906129f4565b610639565b6040516101ec9190612a4c565b60405180910390f35b348015610200575f80fd5b5061020961064f565b6040516102169190612a74565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190612a8d565b61068e565b6040516102529190612a4c565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190612add565b610754565b60405161028e9190612a4c565b60405180910390f35b3480156102a2575f80fd5b506102ab6107ab565b6040516102b89190612b23565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612b3c565b6107b3565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190612add565b6109bf565b60405161031c9190612a4c565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612bb6565b6109dc565b005b348015610358575f80fd5b50610361610a7c565b005b34801561036e575f80fd5b5061038960048036038101906103849190612add565b610ad1565b6040516103969190612a74565b60405180910390f35b3480156103aa575f80fd5b506103c560048036038101906103c09190612bf4565b610b17565b005b3480156103d2575f80fd5b506103db610c39565b6040516103e89190612a74565b60405180910390f35b3480156103fc575f80fd5b50610405610c3f565b6040516104129190612a74565b60405180910390f35b348015610426575f80fd5b5061042f610c45565b60405161043c9190612a74565b60405180910390f35b348015610450575f80fd5b50610459610c4b565b6040516104669190612ca0565b60405180910390f35b34801561047a575f80fd5b50610495600480360381019061049091906129f4565b610c72565b005b3480156104a2575f80fd5b506104ab610dfc565b6040516104b8919061293f565b60405180910390f35b3480156104cc575f80fd5b506104d5610e39565b6040516104e29190612ca0565b60405180910390f35b3480156104f6575f80fd5b50610511600480360381019061050c91906129f4565b610e5e565b60405161051e9190612a4c565b60405180910390f35b348015610532575f80fd5b5061054d60048036038101906105489190612cb9565b610e74565b005b34801561055a575f80fd5b5061057560048036038101906105709190612d09565b610f28565b6040516105829190612a74565b60405180910390f35b348015610596575f80fd5b506105b160048036038101906105ac9190612d82565b610faa565b005b3480156105be575f80fd5b506105d960048036038101906105d49190612e0e565b61106b565b005b3480156105e6575f80fd5b506105ef61114e565b005b3480156105fc575f80fd5b5061061760048036038101906106129190612cb9565b6111b3565b005b60606040518060600160405280602381526020016138f060239139905090565b5f61064533848461132a565b6001905092915050565b5f61068961065c5f610ad1565b61067b61066a61dead610ad1565b6001546114ed90919063ffffffff16565b6114ed90919063ffffffff16565b905090565b5f61069a848484611502565b6107498433610744856040518060600160405280602881526020016138c86028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d9f9092919063ffffffff16565b61132a565b600190509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b6107bc33610754565b6107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f290612eb5565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b6109e533610754565b610a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1b90612eb5565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610a8533610754565b610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb90612eb5565b60405180910390fd5b610acf600b54611df3565b565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b2033610754565b610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690612eb5565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610ba6600160145461204990919063ffffffff16565b60115411158015610bce5750610bc8600160145461204990919063ffffffff16565b60125411155b8015610bf15750610beb600160145461204990919063ffffffff16565b60135411155b610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790612f43565b60405180910390fd5b50505050505050565b601a5481565b60195481565b60185481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c7b33610754565b610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190612eb5565b60405180910390fd5b5f610d586064610d4a848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cfd9190612ca0565b602060405180830381865afa158015610d18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3c9190612f75565b61205e90919063ffffffff16565b61204990919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610db6929190612fa0565b6020604051808303815f875af1158015610dd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df69190612fdb565b50505050565b60606040518060400160405280600681526020017f434347574d470000000000000000000000000000000000000000000000000000815250905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610e6a338484611502565b6001905092915050565b610e7d33610754565b610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390612eb5565b60405180910390fd5b82600a81905550610eed620186a0610edf8460015461205e90919063ffffffff16565b61204990919063ffffffff16565b600b81905550610f1d620186a0610f0f8360015461205e90919063ffffffff16565b61204990919063ffffffff16565b600c81905550505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fb333610754565b610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990612eb5565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516110609190613061565b60405180910390a150565b61107433610754565b6110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90612eb5565b60405180910390fd5b5f5b83839050811015611148578160055f8686858181106110d7576110d661307a565b5b90506020020160208101906110ec9190612add565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506110b5565b50505050565b61115733610754565b611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90612eb5565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b6111bc33610754565b6111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290612eb5565b60405180910390fd5b5f6112256127106112178660015461205e90919063ffffffff16565b61204990919063ffffffff16565b90505f6112516127106112438660015461205e90919063ffffffff16565b61204990919063ffffffff16565b90505f61127d61271061126f8660015461205e90919063ffffffff16565b61204990919063ffffffff16565b9050826018819055508160198190555080601a819055505f6112c46103e86112b660056112a861064f565b61205e90919063ffffffff16565b61204990919063ffffffff16565b90508084101580156112d65750808310155b80156112e25750808210155b611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890613117565b60405180910390fd5b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f906131a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613233565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114e09190612a74565b60405180910390a3505050565b5f81836114fa919061327e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613321565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d5906133af565b60405180910390fd5b6115e783610ad1565b811115611629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116209061343d565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116c7575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561171c57600760149054906101000a900460ff1661171b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611712906134a5565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117ba575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611813575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561184d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118e757601a546118a58260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461207390919063ffffffff16565b11156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061350d565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a235760195481111580611992575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806119e3575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1990613575565b60405180910390fd5b5b60185481111580611a7a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611acb575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0190613575565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bad575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bcc57600160085f828254611bc49190613593565b925050819055505b611bd7838383612088565b15611bef57611be7600b54611df3565b5f6008819055505b611c3f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114ed90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611c8b84846121bb565b611c955781611ca1565b611ca0848484612262565b5b9050611cf38160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461207390919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d919190612a74565b60405180910390a350505050565b5f838311158290611de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddd919061293f565b60405180910390fd5b5082840390509392505050565b600160095f6101000a81548160ff0219169083151502179055505f611e5f6002611e51600f54611e43600e54611e356001600d5461207390919063ffffffff16565b61207390919063ffffffff16565b61207390919063ffffffff16565b61205e90919063ffffffff16565b90505f611e8982611e7b600d548661205e90919063ffffffff16565b61204990919063ffffffff16565b90505f611e9f82856114ed90919063ffffffff16565b90505f479050611eae82612419565b5f611ec282476114ed90919063ffffffff16565b90505f611eec611edd600d54886114ed90919063ffffffff16565b8361204990919063ffffffff16565b90505f611f04600d548361205e90919063ffffffff16565b90505f811115611f1957611f18868261264f565b5b5f611f42600e54611f3460028661205e90919063ffffffff16565b61205e90919063ffffffff16565b90505f811115611fb25760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fb0573d5f803e3d5ffd5b505b5f4790505f8111156120245760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612022573d5f803e3d5ffd5b505b5050505050505050505f60095f6101000a81548160ff02191690831515021790555050565b5f818361205691906135f3565b905092915050565b5f818361206b9190613623565b905092915050565b5f81836120809190613593565b905092915050565b5f80600c5483101590505f600b5461209f30610ad1565b1015905060095f9054906101000a900460ff161580156120cb5750600760159054906101000a900460ff165b80156120e35750600760149054906101000a900460ff165b80156120ec5750815b801561213f575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612197575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121a75750600a5460085410155b80156121b05750805b925050509392505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561225a575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f8061226e8585612749565b111561240e575f6122a56122828686612749565b6122976014548661204990919063ffffffff16565b61205e90919063ffffffff16565b90506122f78160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461207390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123959190612a74565b60405180910390a35f6010541180156123b857506010546123b68686612749565b115b156123f3576123f23061dead6123ed6010546123df6014548961204990919063ffffffff16565b61205e90919063ffffffff16565b611502565b5b61240681846114ed90919063ffffffff16565b915050612412565b8190505b9392505050565b5f600267ffffffffffffffff81111561243557612434613664565b5b6040519080825280602002602001820160405280156124635781602001602082028036833780820191505090505b50905030815f8151811061247a5761247961307a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561251e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254291906136a5565b816001815181106125565761255561307a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125bc3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461132a565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161261e9594939291906137c0565b5f604051808303815f87803b158015612635575f80fd5b505af1158015612647573d5f803e3d5ffd5b505050505050565b61267b3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461132a565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161270196959493929190613818565b60606040518083038185885af115801561271d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127429190613877565b5050505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806127e5575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128075761280060646014546114ed90919063ffffffff16565b90506128c9565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128655760125490506128c9565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128c35760115490506128c9565b60135490505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612911826128cf565b61291b81856128d9565b935061292b8185602086016128e9565b612934816128f7565b840191505092915050565b5f6020820190508181035f8301526129578184612907565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61299082612967565b9050919050565b6129a081612986565b81146129aa575f80fd5b50565b5f813590506129bb81612997565b92915050565b5f819050919050565b6129d3816129c1565b81146129dd575f80fd5b50565b5f813590506129ee816129ca565b92915050565b5f8060408385031215612a0a57612a0961295f565b5b5f612a17858286016129ad565b9250506020612a28858286016129e0565b9150509250929050565b5f8115159050919050565b612a4681612a32565b82525050565b5f602082019050612a5f5f830184612a3d565b92915050565b612a6e816129c1565b82525050565b5f602082019050612a875f830184612a65565b92915050565b5f805f60608486031215612aa457612aa361295f565b5b5f612ab1868287016129ad565b9350506020612ac2868287016129ad565b9250506040612ad3868287016129e0565b9150509250925092565b5f60208284031215612af257612af161295f565b5b5f612aff848285016129ad565b91505092915050565b5f60ff82169050919050565b612b1d81612b08565b82525050565b5f602082019050612b365f830184612b14565b92915050565b5f805f60608486031215612b5357612b5261295f565b5b5f612b60868287016129ad565b9350506020612b71868287016129ad565b9250506040612b82868287016129ad565b9150509250925092565b612b9581612a32565b8114612b9f575f80fd5b50565b5f81359050612bb081612b8c565b92915050565b5f8060408385031215612bcc57612bcb61295f565b5b5f612bd9858286016129ad565b9250506020612bea85828601612ba2565b9150509250929050565b5f805f805f805f60e0888a031215612c0f57612c0e61295f565b5b5f612c1c8a828b016129e0565b9750506020612c2d8a828b016129e0565b9650506040612c3e8a828b016129e0565b9550506060612c4f8a828b016129e0565b9450506080612c608a828b016129e0565b93505060a0612c718a828b016129e0565b92505060c0612c828a828b016129e0565b91505092959891949750929550565b612c9a81612986565b82525050565b5f602082019050612cb35f830184612c91565b92915050565b5f805f60608486031215612cd057612ccf61295f565b5b5f612cdd868287016129e0565b9350506020612cee868287016129e0565b9250506040612cff868287016129e0565b9150509250925092565b5f8060408385031215612d1f57612d1e61295f565b5b5f612d2c858286016129ad565b9250506020612d3d858286016129ad565b9150509250929050565b5f612d5182612967565b9050919050565b612d6181612d47565b8114612d6b575f80fd5b50565b5f81359050612d7c81612d58565b92915050565b5f60208284031215612d9757612d9661295f565b5b5f612da484828501612d6e565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612dce57612dcd612dad565b5b8235905067ffffffffffffffff811115612deb57612dea612db1565b5b602083019150836020820283011115612e0757612e06612db5565b5b9250929050565b5f805f60408486031215612e2557612e2461295f565b5b5f84013567ffffffffffffffff811115612e4257612e41612963565b5b612e4e86828701612db9565b93509350506020612e6186828701612ba2565b9150509250925092565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612e9f6006836128d9565b9150612eaa82612e6b565b602082019050919050565b5f6020820190508181035f830152612ecc81612e93565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f612f2d602c836128d9565b9150612f3882612ed3565b604082019050919050565b5f6020820190508181035f830152612f5a81612f21565b9050919050565b5f81519050612f6f816129ca565b92915050565b5f60208284031215612f8a57612f8961295f565b5b5f612f9784828501612f61565b91505092915050565b5f604082019050612fb35f830185612c91565b612fc06020830184612a65565b9392505050565b5f81519050612fd581612b8c565b92915050565b5f60208284031215612ff057612fef61295f565b5b5f612ffd84828501612fc7565b91505092915050565b5f819050919050565b5f61302961302461301f84612967565b613006565b612967565b9050919050565b5f61303a8261300f565b9050919050565b5f61304b82613030565b9050919050565b61305b81613041565b82525050565b5f6020820190506130745f830184613052565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f613101602e836128d9565b915061310c826130a7565b604082019050919050565b5f6020820190508181035f83015261312e816130f5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61318f6024836128d9565b915061319a82613135565b604082019050919050565b5f6020820190508181035f8301526131bc81613183565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61321d6022836128d9565b9150613228826131c3565b604082019050919050565b5f6020820190508181035f83015261324a81613211565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613288826129c1565b9150613293836129c1565b92508282039050818111156132ab576132aa613251565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61330b6025836128d9565b9150613316826132b1565b604082019050919050565b5f6020820190508181035f830152613338816132ff565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133996023836128d9565b91506133a48261333f565b604082019050919050565b5f6020820190508181035f8301526133c68161338d565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f6134276031836128d9565b9150613432826133cd565b604082019050919050565b5f6020820190508181035f8301526134548161341b565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f61348f600e836128d9565b915061349a8261345b565b602082019050919050565b5f6020820190508181035f8301526134bc81613483565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f6134f7601e836128d9565b9150613502826134c3565b602082019050919050565b5f6020820190508181035f830152613524816134eb565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61355f6011836128d9565b915061356a8261352b565b602082019050919050565b5f6020820190508181035f83015261358c81613553565b9050919050565b5f61359d826129c1565b91506135a8836129c1565b92508282019050808211156135c0576135bf613251565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135fd826129c1565b9150613608836129c1565b925082613618576136176135c6565b5b828204905092915050565b5f61362d826129c1565b9150613638836129c1565b9250828202613646816129c1565b9150828204841483151761365d5761365c613251565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061369f81612997565b92915050565b5f602082840312156136ba576136b961295f565b5b5f6136c784828501613691565b91505092915050565b5f819050919050565b5f6136f36136ee6136e9846136d0565b613006565b6129c1565b9050919050565b613703816136d9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61373b81612986565b82525050565b5f61374c8383613732565b60208301905092915050565b5f602082019050919050565b5f61376e82613709565b6137788185613713565b935061378383613723565b805f5b838110156137b357815161379a8882613741565b97506137a583613758565b925050600181019050613786565b5085935050505092915050565b5f60a0820190506137d35f830188612a65565b6137e060208301876136fa565b81810360408301526137f28186613764565b90506138016060830185612c91565b61380e6080830184612a65565b9695505050505050565b5f60c08201905061382b5f830189612c91565b6138386020830188612a65565b61384560408301876136fa565b61385260608301866136fa565b61385f6080830185612c91565b61386c60a0830184612a65565b979650505050505050565b5f805f6060848603121561388e5761388d61295f565b5b5f61389b86828701612f61565b93505060206138ac86828701612f61565b92505060406138bd86828701612f61565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636543796265724375746547656e65726174696f6e616c5765616c74684d6f626247616e67a26469706673582212202b5599659ded0a0a623f024e02892ace01f73d653e1d10d26e55af929a394b5064736f6c63430008190033

Deployed Bytecode Sourcemap

4721:11354:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7184:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8064:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8203:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15418:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3625:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7334:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10155:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5151:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7950:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10937:89;;;;;;;;;;;;;:::i;:::-;;7563:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9081:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6467:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6398:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6331:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7479:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10496:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7257:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5269:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7672:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8754:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7817:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3718:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10746:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7407:66;;;;;;;;;;;;;:::i;:::-;;9596:551;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7184:67;7221:13;7244:5;;;;;;;;;;;;;;;;;7237:12;;7184:67;:::o;8064:133::-;8139:4;8146:37;8155:10;8167:7;8176:6;8146:8;:37::i;:::-;8191:4;8184:11;;8064:133;;;;:::o;8203:132::-;8256:7;8273:60;8311:21;8329:1;8311:9;:21::i;:::-;8273:33;8290:15;6018:42;8290:9;:15::i;:::-;8273:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8266:67;;8203:132;:::o;15418:309::-;15516:4;15533:36;15543:6;15551:9;15562:6;15533:9;:36::i;:::-;15580:117;15589:6;15597:10;15609:87;15645:6;15609:87;;;;;;;;;;;;;;;;;:11;:19;15621:6;15609:19;;;;;;;;;;;;;;;:31;15629:10;15609:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15580:8;:117::i;:::-;15715:4;15708:11;;15418:309;;;;;:::o;3625:87::-;3680:4;3705:5;;;;;;;;;;;3694:16;;:7;:16;;;3687:23;;3625:87;;;:::o;7334:67::-;7375:5;4956:1;7383:16;;7334:67;:::o;10155:333::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10293:10:::1;10272:18;;:31;;;;;;;;;;;;;;;;;;10326:10;10305:18;;:31;;;;;;;;;;;;;;;;;;10361:12;10338:20;;:35;;;;;;;;;;;;;;;;;;10410:4;10384:11;:23;10396:10;10384:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10442:4;10416:11;:23;10428:10;10416:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10476:4;10448:11;:25;10460:12;10448:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10155:333:::0;;;:::o;5151:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7950:108::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8048:8:::1;8024:11;:21;8036:8;8024:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7950:108:::0;;:::o;10937:89::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10989:29:::1;11004:13;;10989:14;:29::i;:::-;10937:89::o:0;7563:103::-;7629:7;7646:9;:18;7656:7;7646:18;;;;;;;;;;;;;;;;7639:25;;7563:103;;;:::o;9081:507::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9269:10:::1;9254:12;:25;;;;9296:10;9281:12;:25;;;;9318:5;9308:7;:15;;;;9342:12;9325:14;:29;;;;9367:6;9356:8;:17;;;;9385:5;9375:7;:15;;;;9406:6;9392:11;:20;;;;9443:18;9459:1;9443:11;;:15;;:18;;;;:::i;:::-;9431:8;;:30;;:63;;;;;9476:18;9492:1;9476:11;;:15;;:18;;;;:::i;:::-;9465:7;;:29;;9431:63;:100;;;;;9513:18;9529:1;9513:11;;:15;;:18;;;;:::i;:::-;9498:11;;:33;;9431:100;9423:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;9081:507:::0;;;;;;;:::o;6467:63::-;;;;:::o;6398:62::-;;;;:::o;6331:60::-;;;;:::o;7479:78::-;7531:7;7549:5;;;;;;;;;;;7542:12;;7479:78;:::o;10496:242::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10582:15:::1;10600:63;10659:3;10600:54;10646:7;10607:8;10600:26;;;10635:4;10600:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10582:81;;10681:8;10674:25;;;10700:20;;;;;;;;;;;10722:7;10674:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10571:167;10496:242:::0;;:::o;7257:71::-;7296:13;7319:7;;;;;;;;;;;;;;;;;7312:14;;7257:71;:::o;5269:19::-;;;;;;;;;;;;;:::o;7672:139::-;7750:4;7757:40;7767:10;7779:9;7790:6;7757:9;:40::i;:::-;7805:4;7798:11;;7672:139;;;;:::o;8754:319::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8900:11:::1;8887:10;:24;;;;8929:53;8974:6;8929:32;8946:14;8929:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8913:13;:69;;;;9011:54;9057:6;9011:33;9028:15;9011:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;8994:14;:71;;;;8754:319:::0;;;:::o;7817:127::-;7898:7;7915:11;:18;7927:5;7915:18;;;;;;;;;;;;;;;:27;7934:7;7915:27;;;;;;;;;;;;;;;;7908:34;;7817:127;;;;:::o;3718:111::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3792:3:::1;3784:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3802:25;3823:3;3802:25;;;;;;:::i;:::-;;;;;;;;3718:111:::0;:::o;10746:183::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10842:6:::1;10838:84;10856:9;;:16;;10852:1;:20;10838:84;;;10911:8;10889:5;:19;10895:9;;10905:1;10895:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10889:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10874:3;;;;;;;10838:84;;;;10746:183:::0;;;:::o;7407:66::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7467:4:::1;7450:14;;:21;;;;;;;;;;;;;;;;;;7407:66::o:0;9596:551::-;3584:19;3592:10;3584:7;:19::i;:::-;3576:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9697:13:::1;9713:33;9740:5;9713:22;9730:4;9713:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9697:49;;9748:19;9770:34;9798:5;9770:23;9787:5;9770:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9748:56;;9806:17;9826:36;9856:5;9826:25;9843:7;9826:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9806:56;;9888:5;9873:12;:20;;;;9912:11;9895:14;:28;;;;9943:9;9925:15;:27;;;;9963:13;9979:30;10004:4;9979:20;9997:1;9979:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;9963:46;;10037:5;10028;:14;;:38;;;;;10061:5;10046:11;:20;;10028:38;:60;;;;;10083:5;10070:9;:18;;10028:60;10020:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;9686:461;;;;9596:551:::0;;;:::o;15735:335::-;15845:1;15828:19;;:5;:19;;;15820:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15926:1;15907:21;;:7;:21;;;15899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16008:6;15978:11;:18;15990:5;15978:18;;;;;;;;;;;;;;;:27;15997:7;15978:27;;;;;;;;;;;;;;;:36;;;;16046:7;16030:32;;16039:5;16030:32;;;16055:6;16030:32;;;;;;:::i;:::-;;;;;;;;15735:335;;;:::o;1364:98::-;1422:7;1453:1;1449;:5;;;;:::i;:::-;1442:12;;1364:98;;;;:::o;13977:1433::-;14092:1;14074:20;;:6;:20;;;14066:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14176:1;14155:23;;:9;:23;;;14147:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14247:17;14257:6;14247:9;:17::i;:::-;14237:6;:27;;14229:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14332:11;:19;14344:6;14332:19;;;;;;;;;;;;;;;;;;;;;;;;;14331:20;:47;;;;;14356:11;:22;14368:9;14356:22;;;;;;;;;;;;;;;;;;;;;;;;;14355:23;14331:47;14328:95;;;14388:14;;;;;;;;;;;14380:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14328:95;14437:11;:19;14449:6;14437:19;;;;;;;;;;;;;;;;;;;;;;;;;14436:20;:47;;;;;14461:11;:22;14473:9;14461:22;;;;;;;;;;;;;;;;;;;;;;;;;14460:23;14436:47;:77;;;;;14508:4;;;;;;;;;;;14487:26;;:9;:26;;;;14436:77;:107;;;;;6018:42;14517:26;;:9;:26;;;;14436:107;14433:220;;;14601:15;;14564:32;14589:6;14564:9;:20;14574:9;14564:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14563:53;;14555:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14433:220;14676:4;;;;;;;;;;;14666:14;;:6;:14;;;14663:124;;14700:14;;14690:6;:24;;:47;;;;14718:11;:19;14730:6;14718:19;;;;;;;;;;;;;;;;;;;;;;;;;14690:47;:73;;;;14741:11;:22;14753:9;14741:22;;;;;;;;;;;;;;;;;;;;;;;;;14690:73;14682:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14663:124;14815:12;;14805:6;:22;;:45;;;;14831:11;:19;14843:6;14831:19;;;;;;;;;;;;;;;;;;;;;;;;;14805:45;:71;;;;14854:11;:22;14866:9;14854:22;;;;;;;;;;;;;;;;;;;;;;;;;14805:71;14797:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14926:4;;;;;;;;;;;14913:17;;:9;:17;;;:41;;;;;14935:11;:19;14947:6;14935:19;;;;;;;;;;;;;;;;;;;;;;;;;14934:20;14913:41;14910:71;;;14977:1;14956:9;;:23;;;;;;;:::i;:::-;;;;;;;;14910:71;14994:45;15013:6;15021:9;15032:6;14994:18;:45::i;:::-;14991:105;;;15041:29;15056:13;;15041:14;:29::i;:::-;15092:1;15072:9;:22;;;;14991:105;15126:29;15148:6;15126:9;:17;15136:6;15126:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;15106:9;:17;15116:6;15106:17;;;;;;;;;;;;;;;:49;;;;15166:22;15191:32;15205:6;15213:9;15191:13;:32::i;:::-;:78;;15263:6;15191:78;;;15226:34;15234:6;15242:9;15253:6;15226:7;:34::i;:::-;15191:78;15166:103;;15303:40;15328:14;15303:9;:20;15313:9;15303:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15280:9;:20;15290:9;15280:20;;;;;;;;;;;;;;;:63;;;;15376:9;15359:43;;15368:6;15359:43;;;15387:14;15359:43;;;;;;:::i;:::-;;;;;;;;14055:1355;13977:1433;;;:::o;1788:240::-;1908:7;1966:1;1961;:6;;1969:12;1953:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2008:1;2004;:5;1997:12;;1788:240;;;;;:::o;11034:1063::-;5638:4;5627:8;;:15;;;;;;;;;;;;;;;;;;11105:20:::1;11128:66;11192:1;11129:57;11171:14;;11129:37;11153:12;;11129:19;11146:1;11129:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;11128:63;;:66;;;;:::i;:::-;11105:89;;11205:32;11240:42;11269:12;11240:24;11251:12;;11240:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;11205:77;;11293:14;11310:36;11321:24;11310:6;:10;;:36;;;;:::i;:::-;11293:53;;11357:22;11382:21;11357:46;;11414:24;11431:6;11414:16;:24::i;:::-;11449:20;11472:41;11498:14;11472:21;:25;;:41;;;;:::i;:::-;11449:64;;11524:19;11545:48;11562:30;11579:12;;11562;:16;;:30;;;;:::i;:::-;11545:12;:16;;:48;;;;:::i;:::-;11524:69;;11604:29;11636;11652:12;;11636:11;:15;;:29;;;;:::i;:::-;11604:61;;11711:1;11679:21;:34;11676:103;;;11715:61;11728:24;11754:21;11715:12;:61::i;:::-;11676:103;11789:20;11812:36;11835:12;;11812:18;11828:1;11812:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11789:59;;11877:1;11862:12;:16;11859:73;;;11888:18;;;;;;;;;;;11880:36;;:50;11917:12;11880:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11859:73;11942:23;11968:21;11942:47;;12029:1;12003:15;:28;12000:90;;;12041:20;;;;;;;;;;;12033:38;;:55;12072:15;12033:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12000:90;11094:1003;;;;;;;;;5658:5:::0;5647:8;;:16;;;;;;;;;;;;;;;;;;11034:1063;:::o;1576:98::-;1634:7;1665:1;1661;:5;;;;:::i;:::-;1654:12;;1576:98;;;;:::o;1470:::-;1528:7;1559:1;1555;:5;;;;:::i;:::-;1548:12;;1470:98;;;;:::o;1258:::-;1316:7;1347:1;1343;:5;;;;:::i;:::-;1336:12;;1258:98;;;;:::o;8343:403::-;8445:4;8462:13;8488:14;;8478:6;:24;;8462:40;;8513:19;8563:13;;8535:24;8553:4;8535:9;:24::i;:::-;:41;;8513:63;;8595:8;;;;;;;;;;;8594:9;:24;;;;;8607:11;;;;;;;;;;;8594:24;:42;;;;;8622:14;;;;;;;;;;;8594:42;:54;;;;;8640:8;8594:54;:78;;;;;8653:11;:19;8665:6;8653:19;;;;;;;;;;;;;;;;;;;;;;;;;8652:20;8594:78;:99;;;;;8689:4;;;;;;;;;;;8676:17;;:9;:17;;;8594:99;:126;;;;;8710:10;;8697:9;;:23;;8594:126;:144;;;;;8724:14;8594:144;8587:151;;;;8343:403;;;;;:::o;12898:160::-;12979:4;13004:11;:19;13016:6;13004:19;;;;;;;;;;;;;;;;;;;;;;;;;13003:20;:47;;;;;13028:11;:22;13040:9;13028:22;;;;;;;;;;;;;;;;;;;;;;;;;13027:23;13003:47;12996:54;;12898:160;;;;:::o;13379:590::-;13465:7;13521:1;13488:30;13500:6;13508:9;13488:11;:30::i;:::-;:34;13485:462;;;13534:17;13554:59;13582:30;13594:6;13602:9;13582:11;:30::i;:::-;13554:23;13565:11;;13554:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13534:79;;13651:39;13680:9;13651;:24;13669:4;13651:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13624:9;:24;13642:4;13624:24;;;;;;;;;;;;;;;:66;;;;13731:4;13706:42;;13715:6;13706:42;;;13738:9;13706:42;;;;;;:::i;:::-;;;;;;;;13780:1;13762:7;;:20;:64;;;;;13819:7;;13786:30;13798:6;13806:9;13786:11;:30::i;:::-;:40;13762:64;13759:148;;;13828:77;13846:4;6018:42;13868:36;13896:7;;13868:23;13879:11;;13868:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13828:9;:77::i;:::-;13759:148;13924:21;13935:9;13924:6;:10;;:21;;;;:::i;:::-;13917:28;;;;;13485:462;13955:6;13948:13;;13379:590;;;;;;:::o;12456:434::-;12522:21;12560:1;12546:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12522:40;;12591:4;12573;12578:1;12573:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12617:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12607:4;12612:1;12607:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12641:53;12658:4;12673:6;;;;;;;;;;;12682:11;12641:8;:53::i;:::-;12705:6;;;;;;;;;;;:57;;;12777:11;12803:1;12819:4;12846;12866:15;12705:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12511:379;12456:434;:::o;12105:343::-;12186:53;12203:4;12218:6;;;;;;;;;;;12227:11;12186:8;:53::i;:::-;12250:6;;;;;;;;;;;:22;;;12280:9;12313:4;12333:11;12359:1;12375;12391:18;;;;;;;;;;;12424:15;12250:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12105:343;;:::o;13066:305::-;13145:7;13168:5;:13;13174:6;13168:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;13185:5;:16;13191:9;13185:16;;;;;;;;;;;;;;;;;;;;;;;;;13168:33;13165:76;;;13210:29;13234:3;13210:11;;:15;;:29;;;;:::i;:::-;13203:36;;;;13165:76;13267:4;;;;;;;;;;;13254:17;;:9;:17;;;13251:38;;13280:7;;13273:14;;;;13251:38;13312:4;;;;;;;;;;;13302:14;;:6;:14;;;13299:36;;13325:8;;13318:15;;;;13299:36;13352:11;;13345:18;;13066:305;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:619::-;5158:6;5166;5174;5223:2;5211:9;5202:7;5198:23;5194:32;5191:119;;;5229:79;;:::i;:::-;5191:119;5349:1;5374:53;5419:7;5410:6;5399:9;5395:22;5374:53;:::i;:::-;5364:63;;5320:117;5476:2;5502:53;5547:7;5538:6;5527:9;5523:22;5502:53;:::i;:::-;5492:63;;5447:118;5604:2;5630:53;5675:7;5666:6;5655:9;5651:22;5630:53;:::i;:::-;5620:63;;5575:118;5081:619;;;;;:::o;5706:116::-;5776:21;5791:5;5776:21;:::i;:::-;5769:5;5766:32;5756:60;;5812:1;5809;5802:12;5756:60;5706:116;:::o;5828:133::-;5871:5;5909:6;5896:20;5887:29;;5925:30;5949:5;5925:30;:::i;:::-;5828:133;;;;:::o;5967:468::-;6032:6;6040;6089:2;6077:9;6068:7;6064:23;6060:32;6057:119;;;6095:79;;:::i;:::-;6057:119;6215:1;6240:53;6285:7;6276:6;6265:9;6261:22;6240:53;:::i;:::-;6230:63;;6186:117;6342:2;6368:50;6410:7;6401:6;6390:9;6386:22;6368:50;:::i;:::-;6358:60;;6313:115;5967:468;;;;;:::o;6441:1203::-;6554:6;6562;6570;6578;6586;6594;6602;6651:3;6639:9;6630:7;6626:23;6622:33;6619:120;;;6658:79;;:::i;:::-;6619:120;6778:1;6803:53;6848:7;6839:6;6828:9;6824:22;6803:53;:::i;:::-;6793:63;;6749:117;6905:2;6931:53;6976:7;6967:6;6956:9;6952:22;6931:53;:::i;:::-;6921:63;;6876:118;7033:2;7059:53;7104:7;7095:6;7084:9;7080:22;7059:53;:::i;:::-;7049:63;;7004:118;7161:2;7187:53;7232:7;7223:6;7212:9;7208:22;7187:53;:::i;:::-;7177:63;;7132:118;7289:3;7316:53;7361:7;7352:6;7341:9;7337:22;7316:53;:::i;:::-;7306:63;;7260:119;7418:3;7445:53;7490:7;7481:6;7470:9;7466:22;7445:53;:::i;:::-;7435:63;;7389:119;7547:3;7574:53;7619:7;7610:6;7599:9;7595:22;7574:53;:::i;:::-;7564:63;;7518:119;6441:1203;;;;;;;;;;:::o;7650:118::-;7737:24;7755:5;7737:24;:::i;:::-;7732:3;7725:37;7650:118;;:::o;7774:222::-;7867:4;7905:2;7894:9;7890:18;7882:26;;7918:71;7986:1;7975:9;7971:17;7962:6;7918:71;:::i;:::-;7774:222;;;;:::o;8002:619::-;8079:6;8087;8095;8144:2;8132:9;8123:7;8119:23;8115:32;8112:119;;;8150:79;;:::i;:::-;8112:119;8270:1;8295:53;8340:7;8331:6;8320:9;8316:22;8295:53;:::i;:::-;8285:63;;8241:117;8397:2;8423:53;8468:7;8459:6;8448:9;8444:22;8423:53;:::i;:::-;8413:63;;8368:118;8525:2;8551:53;8596:7;8587:6;8576:9;8572:22;8551:53;:::i;:::-;8541:63;;8496:118;8002:619;;;;;:::o;8627:474::-;8695:6;8703;8752:2;8740:9;8731:7;8727:23;8723:32;8720:119;;;8758:79;;:::i;:::-;8720:119;8878:1;8903:53;8948:7;8939:6;8928:9;8924:22;8903:53;:::i;:::-;8893:63;;8849:117;9005:2;9031:53;9076:7;9067:6;9056:9;9052:22;9031:53;:::i;:::-;9021:63;;8976:118;8627:474;;;;;:::o;9107:104::-;9152:7;9181:24;9199:5;9181:24;:::i;:::-;9170:35;;9107:104;;;:::o;9217:138::-;9298:32;9324:5;9298:32;:::i;:::-;9291:5;9288:43;9278:71;;9345:1;9342;9335:12;9278:71;9217:138;:::o;9361:155::-;9415:5;9453:6;9440:20;9431:29;;9469:41;9504:5;9469:41;:::i;:::-;9361:155;;;;:::o;9522:345::-;9589:6;9638:2;9626:9;9617:7;9613:23;9609:32;9606:119;;;9644:79;;:::i;:::-;9606:119;9764:1;9789:61;9842:7;9833:6;9822:9;9818:22;9789:61;:::i;:::-;9779:71;;9735:125;9522:345;;;;:::o;9873:117::-;9982:1;9979;9972:12;9996:117;10105:1;10102;10095:12;10119:117;10228:1;10225;10218:12;10259:568;10332:8;10342:6;10392:3;10385:4;10377:6;10373:17;10369:27;10359:122;;10400:79;;:::i;:::-;10359:122;10513:6;10500:20;10490:30;;10543:18;10535:6;10532:30;10529:117;;;10565:79;;:::i;:::-;10529:117;10679:4;10671:6;10667:17;10655:29;;10733:3;10725:4;10717:6;10713:17;10703:8;10699:32;10696:41;10693:128;;;10740:79;;:::i;:::-;10693:128;10259:568;;;;;:::o;10833:698::-;10925:6;10933;10941;10990:2;10978:9;10969:7;10965:23;10961:32;10958:119;;;10996:79;;:::i;:::-;10958:119;11144:1;11133:9;11129:17;11116:31;11174:18;11166:6;11163:30;11160:117;;;11196:79;;:::i;:::-;11160:117;11309:80;11381:7;11372:6;11361:9;11357:22;11309:80;:::i;:::-;11291:98;;;;11087:312;11438:2;11464:50;11506:7;11497:6;11486:9;11482:22;11464:50;:::i;:::-;11454:60;;11409:115;10833:698;;;;;:::o;11537:156::-;11677:8;11673:1;11665:6;11661:14;11654:32;11537:156;:::o;11699:365::-;11841:3;11862:66;11926:1;11921:3;11862:66;:::i;:::-;11855:73;;11937:93;12026:3;11937:93;:::i;:::-;12055:2;12050:3;12046:12;12039:19;;11699:365;;;:::o;12070:419::-;12236:4;12274:2;12263:9;12259:18;12251:26;;12323:9;12317:4;12313:20;12309:1;12298:9;12294:17;12287:47;12351:131;12477:4;12351:131;:::i;:::-;12343:139;;12070:419;;;:::o;12495:231::-;12635:34;12631:1;12623:6;12619:14;12612:58;12704:14;12699:2;12691:6;12687:15;12680:39;12495:231;:::o;12732:366::-;12874:3;12895:67;12959:2;12954:3;12895:67;:::i;:::-;12888:74;;12971:93;13060:3;12971:93;:::i;:::-;13089:2;13084:3;13080:12;13073:19;;12732:366;;;:::o;13104:419::-;13270:4;13308:2;13297:9;13293:18;13285:26;;13357:9;13351:4;13347:20;13343:1;13332:9;13328:17;13321:47;13385:131;13511:4;13385:131;:::i;:::-;13377:139;;13104:419;;;:::o;13529:143::-;13586:5;13617:6;13611:13;13602:22;;13633:33;13660:5;13633:33;:::i;:::-;13529:143;;;;:::o;13678:351::-;13748:6;13797:2;13785:9;13776:7;13772:23;13768:32;13765:119;;;13803:79;;:::i;:::-;13765:119;13923:1;13948:64;14004:7;13995:6;13984:9;13980:22;13948:64;:::i;:::-;13938:74;;13894:128;13678:351;;;;:::o;14035:332::-;14156:4;14194:2;14183:9;14179:18;14171:26;;14207:71;14275:1;14264:9;14260:17;14251:6;14207:71;:::i;:::-;14288:72;14356:2;14345:9;14341:18;14332:6;14288:72;:::i;:::-;14035:332;;;;;:::o;14373:137::-;14427:5;14458:6;14452:13;14443:22;;14474:30;14498:5;14474:30;:::i;:::-;14373:137;;;;:::o;14516:345::-;14583:6;14632:2;14620:9;14611:7;14607:23;14603:32;14600:119;;;14638:79;;:::i;:::-;14600:119;14758:1;14783:61;14836:7;14827:6;14816:9;14812:22;14783:61;:::i;:::-;14773:71;;14729:125;14516:345;;;;:::o;14867:60::-;14895:3;14916:5;14909:12;;14867:60;;;:::o;14933:142::-;14983:9;15016:53;15034:34;15043:24;15061:5;15043:24;:::i;:::-;15034:34;:::i;:::-;15016:53;:::i;:::-;15003:66;;14933:142;;;:::o;15081:126::-;15131:9;15164:37;15195:5;15164:37;:::i;:::-;15151:50;;15081:126;;;:::o;15213:134::-;15271:9;15304:37;15335:5;15304:37;:::i;:::-;15291:50;;15213:134;;;:::o;15353:147::-;15448:45;15487:5;15448:45;:::i;:::-;15443:3;15436:58;15353:147;;:::o;15506:238::-;15607:4;15645:2;15634:9;15630:18;15622:26;;15658:79;15734:1;15723:9;15719:17;15710:6;15658:79;:::i;:::-;15506:238;;;;:::o;15750:180::-;15798:77;15795:1;15788:88;15895:4;15892:1;15885:15;15919:4;15916:1;15909:15;15936:233;16076:34;16072:1;16064:6;16060:14;16053:58;16145:16;16140:2;16132:6;16128:15;16121:41;15936:233;:::o;16175:366::-;16317:3;16338:67;16402:2;16397:3;16338:67;:::i;:::-;16331:74;;16414:93;16503:3;16414:93;:::i;:::-;16532:2;16527:3;16523:12;16516:19;;16175:366;;;:::o;16547:419::-;16713:4;16751:2;16740:9;16736:18;16728:26;;16800:9;16794:4;16790:20;16786:1;16775:9;16771:17;16764:47;16828:131;16954:4;16828:131;:::i;:::-;16820:139;;16547:419;;;:::o;16972:223::-;17112:34;17108:1;17100:6;17096:14;17089:58;17181:6;17176:2;17168:6;17164:15;17157:31;16972:223;:::o;17201:366::-;17343:3;17364:67;17428:2;17423:3;17364:67;:::i;:::-;17357:74;;17440:93;17529:3;17440:93;:::i;:::-;17558:2;17553:3;17549:12;17542:19;;17201:366;;;:::o;17573:419::-;17739:4;17777:2;17766:9;17762:18;17754:26;;17826:9;17820:4;17816:20;17812:1;17801:9;17797:17;17790:47;17854:131;17980:4;17854:131;:::i;:::-;17846:139;;17573:419;;;:::o;17998:221::-;18138:34;18134:1;18126:6;18122:14;18115:58;18207:4;18202:2;18194:6;18190:15;18183:29;17998:221;:::o;18225:366::-;18367:3;18388:67;18452:2;18447:3;18388:67;:::i;:::-;18381:74;;18464:93;18553:3;18464:93;:::i;:::-;18582:2;18577:3;18573:12;18566:19;;18225:366;;;:::o;18597:419::-;18763:4;18801:2;18790:9;18786:18;18778:26;;18850:9;18844:4;18840:20;18836:1;18825:9;18821:17;18814:47;18878:131;19004:4;18878:131;:::i;:::-;18870:139;;18597:419;;;:::o;19022:180::-;19070:77;19067:1;19060:88;19167:4;19164:1;19157:15;19191:4;19188:1;19181:15;19208:194;19248:4;19268:20;19286:1;19268:20;:::i;:::-;19263:25;;19302:20;19320:1;19302:20;:::i;:::-;19297:25;;19346:1;19343;19339:9;19331:17;;19370:1;19364:4;19361:11;19358:37;;;19375:18;;:::i;:::-;19358:37;19208:194;;;;:::o;19408:224::-;19548:34;19544:1;19536:6;19532:14;19525:58;19617:7;19612:2;19604:6;19600:15;19593:32;19408:224;:::o;19638:366::-;19780:3;19801:67;19865:2;19860:3;19801:67;:::i;:::-;19794:74;;19877:93;19966:3;19877:93;:::i;:::-;19995:2;19990:3;19986:12;19979:19;;19638:366;;;:::o;20010:419::-;20176:4;20214:2;20203:9;20199:18;20191:26;;20263:9;20257:4;20253:20;20249:1;20238:9;20234:17;20227:47;20291:131;20417:4;20291:131;:::i;:::-;20283:139;;20010:419;;;:::o;20435:222::-;20575:34;20571:1;20563:6;20559:14;20552:58;20644:5;20639:2;20631:6;20627:15;20620:30;20435:222;:::o;20663:366::-;20805:3;20826:67;20890:2;20885:3;20826:67;:::i;:::-;20819:74;;20902:93;20991:3;20902:93;:::i;:::-;21020:2;21015:3;21011:12;21004:19;;20663:366;;;:::o;21035:419::-;21201:4;21239:2;21228:9;21224:18;21216:26;;21288:9;21282:4;21278:20;21274:1;21263:9;21259:17;21252:47;21316:131;21442:4;21316:131;:::i;:::-;21308:139;;21035:419;;;:::o;21460:236::-;21600:34;21596:1;21588:6;21584:14;21577:58;21669:19;21664:2;21656:6;21652:15;21645:44;21460:236;:::o;21702:366::-;21844:3;21865:67;21929:2;21924:3;21865:67;:::i;:::-;21858:74;;21941:93;22030:3;21941:93;:::i;:::-;22059:2;22054:3;22050:12;22043:19;;21702:366;;;:::o;22074:419::-;22240:4;22278:2;22267:9;22263:18;22255:26;;22327:9;22321:4;22317:20;22313:1;22302:9;22298:17;22291:47;22355:131;22481:4;22355:131;:::i;:::-;22347:139;;22074:419;;;:::o;22499:164::-;22639:16;22635:1;22627:6;22623:14;22616:40;22499:164;:::o;22669:366::-;22811:3;22832:67;22896:2;22891:3;22832:67;:::i;:::-;22825:74;;22908:93;22997:3;22908:93;:::i;:::-;23026:2;23021:3;23017:12;23010:19;;22669:366;;;:::o;23041:419::-;23207:4;23245:2;23234:9;23230:18;23222:26;;23294:9;23288:4;23284:20;23280:1;23269:9;23265:17;23258:47;23322:131;23448:4;23322:131;:::i;:::-;23314:139;;23041:419;;;:::o;23466:180::-;23606:32;23602:1;23594:6;23590:14;23583:56;23466:180;:::o;23652:366::-;23794:3;23815:67;23879:2;23874:3;23815:67;:::i;:::-;23808:74;;23891:93;23980:3;23891:93;:::i;:::-;24009:2;24004:3;24000:12;23993:19;;23652:366;;;:::o;24024:419::-;24190:4;24228:2;24217:9;24213:18;24205:26;;24277:9;24271:4;24267:20;24263:1;24252:9;24248:17;24241:47;24305:131;24431:4;24305:131;:::i;:::-;24297:139;;24024:419;;;:::o;24449:167::-;24589:19;24585:1;24577:6;24573:14;24566:43;24449:167;:::o;24622:366::-;24764:3;24785:67;24849:2;24844:3;24785:67;:::i;:::-;24778:74;;24861:93;24950:3;24861:93;:::i;:::-;24979:2;24974:3;24970:12;24963:19;;24622:366;;;:::o;24994:419::-;25160:4;25198:2;25187:9;25183:18;25175:26;;25247:9;25241:4;25237:20;25233:1;25222:9;25218:17;25211:47;25275:131;25401:4;25275:131;:::i;:::-;25267:139;;24994:419;;;:::o;25419:191::-;25459:3;25478:20;25496:1;25478:20;:::i;:::-;25473:25;;25512:20;25530:1;25512:20;:::i;:::-;25507:25;;25555:1;25552;25548:9;25541:16;;25576:3;25573:1;25570:10;25567:36;;;25583:18;;:::i;:::-;25567:36;25419:191;;;;:::o;25616:180::-;25664:77;25661:1;25654:88;25761:4;25758:1;25751:15;25785:4;25782:1;25775:15;25802:185;25842:1;25859:20;25877:1;25859:20;:::i;:::-;25854:25;;25893:20;25911:1;25893:20;:::i;:::-;25888:25;;25932:1;25922:35;;25937:18;;:::i;:::-;25922:35;25979:1;25976;25972:9;25967:14;;25802:185;;;;:::o;25993:410::-;26033:7;26056:20;26074:1;26056:20;:::i;:::-;26051:25;;26090:20;26108:1;26090:20;:::i;:::-;26085:25;;26145:1;26142;26138:9;26167:30;26185:11;26167:30;:::i;:::-;26156:41;;26346:1;26337:7;26333:15;26330:1;26327:22;26307:1;26300:9;26280:83;26257:139;;26376:18;;:::i;:::-;26257:139;26041:362;25993:410;;;;:::o;26409:180::-;26457:77;26454:1;26447:88;26554:4;26551:1;26544:15;26578:4;26575:1;26568:15;26595:143;26652:5;26683:6;26677:13;26668:22;;26699:33;26726:5;26699:33;:::i;:::-;26595:143;;;;:::o;26744:351::-;26814:6;26863:2;26851:9;26842:7;26838:23;26834:32;26831:119;;;26869:79;;:::i;:::-;26831:119;26989:1;27014:64;27070:7;27061:6;27050:9;27046:22;27014:64;:::i;:::-;27004:74;;26960:128;26744:351;;;;:::o;27101:85::-;27146:7;27175:5;27164:16;;27101:85;;;:::o;27192:158::-;27250:9;27283:61;27301:42;27310:32;27336:5;27310:32;:::i;:::-;27301:42;:::i;:::-;27283:61;:::i;:::-;27270:74;;27192:158;;;:::o;27356:147::-;27451:45;27490:5;27451:45;:::i;:::-;27446:3;27439:58;27356:147;;:::o;27509:114::-;27576:6;27610:5;27604:12;27594:22;;27509:114;;;:::o;27629:184::-;27728:11;27762:6;27757:3;27750:19;27802:4;27797:3;27793:14;27778:29;;27629:184;;;;:::o;27819:132::-;27886:4;27909:3;27901:11;;27939:4;27934:3;27930:14;27922:22;;27819:132;;;:::o;27957:108::-;28034:24;28052:5;28034:24;:::i;:::-;28029:3;28022:37;27957:108;;:::o;28071:179::-;28140:10;28161:46;28203:3;28195:6;28161:46;:::i;:::-;28239:4;28234:3;28230:14;28216:28;;28071:179;;;;:::o;28256:113::-;28326:4;28358;28353:3;28349:14;28341:22;;28256:113;;;:::o;28405:732::-;28524:3;28553:54;28601:5;28553:54;:::i;:::-;28623:86;28702:6;28697:3;28623:86;:::i;:::-;28616:93;;28733:56;28783:5;28733:56;:::i;:::-;28812:7;28843:1;28828:284;28853:6;28850:1;28847:13;28828:284;;;28929:6;28923:13;28956:63;29015:3;29000:13;28956:63;:::i;:::-;28949:70;;29042:60;29095:6;29042:60;:::i;:::-;29032:70;;28888:224;28875:1;28872;28868:9;28863:14;;28828:284;;;28832:14;29128:3;29121:10;;28529:608;;;28405:732;;;;:::o;29143:831::-;29406:4;29444:3;29433:9;29429:19;29421:27;;29458:71;29526:1;29515:9;29511:17;29502:6;29458:71;:::i;:::-;29539:80;29615:2;29604:9;29600:18;29591:6;29539:80;:::i;:::-;29666:9;29660:4;29656:20;29651:2;29640:9;29636:18;29629:48;29694:108;29797:4;29788:6;29694:108;:::i;:::-;29686:116;;29812:72;29880:2;29869:9;29865:18;29856:6;29812:72;:::i;:::-;29894:73;29962:3;29951:9;29947:19;29938:6;29894:73;:::i;:::-;29143:831;;;;;;;;:::o;29980:807::-;30229:4;30267:3;30256:9;30252:19;30244:27;;30281:71;30349:1;30338:9;30334:17;30325:6;30281:71;:::i;:::-;30362:72;30430:2;30419:9;30415:18;30406:6;30362:72;:::i;:::-;30444:80;30520:2;30509:9;30505:18;30496:6;30444:80;:::i;:::-;30534;30610:2;30599:9;30595:18;30586:6;30534:80;:::i;:::-;30624:73;30692:3;30681:9;30677:19;30668:6;30624:73;:::i;:::-;30707;30775:3;30764:9;30760:19;30751:6;30707:73;:::i;:::-;29980:807;;;;;;;;;:::o;30793:663::-;30881:6;30889;30897;30946:2;30934:9;30925:7;30921:23;30917:32;30914:119;;;30952:79;;:::i;:::-;30914:119;31072:1;31097:64;31153:7;31144:6;31133:9;31129:22;31097:64;:::i;:::-;31087:74;;31043:128;31210:2;31236:64;31292:7;31283:6;31272:9;31268:22;31236:64;:::i;:::-;31226:74;;31181:129;31349:2;31375:64;31431:7;31422:6;31411:9;31407:22;31375:64;:::i;:::-;31365:74;;31320:129;30793:663;;;;;:::o

Swarm Source

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