ETH Price: $2,286.55 (+0.43%)

Token

GOOD IDEA AI (GOOD)
 

Overview

Max Total Supply

1,000,000,000 GOOD

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
13,134,254.192121667401654261 GOOD

Value
$0.00
0x8129D4010a676A660502a4770d8a97F8D1788e5f
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:
GOOD

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-23
*/

/*
Finally, Artificial Intelligence can be put to $GOOD use.
$GOOD is at the forefront of the blockchain and AI convergence, leveraging the power of these technologies to create intelligent chatbots in finance, healthcare, and law.

Web: https://goodideai.com
Tg: https://t.me/GoodIdeaAI_Bot_official
X: https://twitter.com/GoodIdeaAI_BOT
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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

library SafeMath {
    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 IUniswapFactory {
    function createPair(address tokenA, address tokenB) external returns (address pairAddress_);
    function getPair(address tokenA, address tokenB) external view returns (address pairAddress_);
}
interface IUniswapRouter {
    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;
}

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);}
    function renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

contract GOOD is IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = 'GOOD IDEA AI';
    string private constant _symbol = 'GOOD';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 10 ** 9 * (10 ** _decimals);

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x35275512f896B02443465842E296E8F6242699e3;
    address internal marketing_receiver = 0x35275512f896B02443465842E296E8F6242699e3; 
    address internal liquidity_receiver = 0x35275512f896B02443465842E296E8F6242699e3;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFees;
    
    bool private isTradingEnabled = false;
    bool private feeSwapEnabled = true;
    bool private _swapping;

    uint256 public maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public maxBuyAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public maxWallet = ( _totalSupply * 200 ) / 10000;

    IUniswapRouter uniswapRouter;
    address public pairAddress;
    uint256 private _swappedCount;
    uint256 _buyCount = 1;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0; 
    uint256 private developmentFee = 100; 
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000; 
    uint256 private sellFee = 2000; 
    uint256 private transferFee = 2200;
    uint256 private denominator = 10000;

    uint256 private _maximumFeeSwap = ( _totalSupply * 3) / 100;
    uint256 private _feeSwapThreshold = ( _totalSupply * 1) / 100000;
    modifier lockSwap {_swapping = true; _; _swapping = false;}

    constructor() Ownable(msg.sender) {
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniswapRouter = _router; pairAddress = _pair;
        _isExcludedFromFees[liquidity_receiver] = true;
        _isExcludedFromFees[marketing_receiver] = true;
        _isExcludedFromFees[development_receiver] = true;
        _isExcludedFromFees[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    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 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 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 _getAllValues(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(_getAllFees(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(_getAllFees(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && _getAllFees(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }
    receive() external payable {}
    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");
        if(!_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient]){require(isTradingEnabled, "isTradingEnabled");}
        if(!_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient] && recipient != address(pairAddress) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxWallet, "Exceeds maximum wallet amount.");}
        if(sender != pairAddress){require(amount <= maxBuyAmount || _isExcludedFromFees[sender] || _isExcludedFromFees[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxAmount || _isExcludedFromFees[sender] || _isExcludedFromFees[recipient], "TX Limit Exceeded"); 
        if(recipient == pairAddress && !_isExcludedFromFees[sender]){_swappedCount += uint256(1);}
        if(shouldSwapBack(sender, recipient, amount)){swapBack(min(balanceOf(address(this)), _maximumFeeSwap)); _swappedCount = uint256(0);}
        if (!isTradingEnabled || !_isExcludedFromFees[sender]) { _balances[sender] = _balances[sender].sub(amount); }
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? _getAllValues(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
    
    function updateGoodFee(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 && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 100%");
    }
    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _feeSwapThreshold;
        bool aboveThreshold = balanceOf(address(this)) >= _feeSwapThreshold;
        return !_swapping && feeSwapEnabled && isTradingEnabled && aboveMin && !_isExcludedFromFees[sender] && recipient == pairAddress && _swappedCount >= _buyCount && aboveThreshold;
    }
    function swapBack(uint256 tokens) private lockSwap {
        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 startGoodTrade() external onlyOwner {isTradingEnabled = true;}
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }
    
    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 shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient];
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }
    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }    
    function updateGoodTxConfig(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; maxBuyAmount = newTransfer; maxWallet = 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 _getAllFees(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pairAddress){return sellFee;}
        if(sender == pairAddress){return totalFee;}
        return transferFee;
    }    
}

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":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","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":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startGoodTrade","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":"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":"updateGoodFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"updateGoodTxConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004ad565b6200002290633b9aca00620004c4565b6001819055600280546001600160a01b03199081167335275512f896b02443465842e296e8f6242699e3908117909255600380548216831790556004805490911690911790556008805461ffff191661010017905561271090620000889060c8620004c4565b620000949190620004de565b60095561271060015460c8620000ab9190620004c4565b620000b79190620004de565b600a5561271060015460c8620000ce9190620004c4565b620000da9190620004de565b600b556001600f555f6010555f60115560646012555f6013556107d06014556107d0601555610898601655612710601755606460015460036200011e9190620004c4565b6200012a9190620004de565b601855620186a06001546001620001429190620004c4565b6200014e9190620004de565b6019553480156200015d575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e89190620004fe565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025a9190620004fe565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cb9190620004fe565b600c80546001600160a01b038581166001600160a01b031992831617909255600d8054848416921691909117905560045481165f908152600760209081526040808320805460ff19908116600190811790925560035486168552828520805482168317905560025490951684528184208054861682179055338085528285208054909616821790955554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000526565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f257815f1904821115620003d657620003d66200039e565b80851615620003e457918102915b93841c9390800290620003b7565b509250929050565b5f826200040a57506001620004a7565b816200041857505f620004a7565b81600181146200043157600281146200043c576200045c565b6001915050620004a7565b60ff8411156200045057620004506200039e565b50506001821b620004a7565b5060208310610133831016604e8410600b841016171562000481575081810a620004a7565b6200048d8383620003b2565b805f1904821115620004a357620004a36200039e565b0290505b92915050565b5f620004bd60ff841683620003fa565b9392505050565b8082028115828204841417620004a757620004a76200039e565b5f82620004f957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200050f575f80fd5b81516001600160a01b0381168114620004bd575f80fd5b6117f780620005345f395ff3fe608060405260043610610129575f3560e01c806376e8e97b116100a8578063a8b089821161006d578063a8b0898214610354578063a9059cbb14610373578063dd62ed3e14610392578063e0bf7fd1146103d6578063f2fde38b14610404578063f8b45b0514610423575f80fd5b806376e8e97b146102af57806388e765ff146102ce578063893d20e8146102e35780638c0b5e221461031357806395d89b4114610328575f80fd5b8063313ce567116100ee578063313ce567146102175780633467b58b14610232578063551b09961461025357806370a0823114610267578063715018a61461029b575f80fd5b806306fdde0314610134578063095ea7b31461017a57806318160ddd146101a957806323b872dd146101cb5780632f54bf6e146101ea575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152600c81526b474f4f44204944454120414960a01b60208201525b60405161017191906114b4565b60405180910390f35b348015610185575f80fd5b50610199610194366004611516565b610438565b6040519015158152602001610171565b3480156101b4575f80fd5b506101bd61044e565b604051908152602001610171565b3480156101d6575f80fd5b506101996101e5366004611540565b6104be565b3480156101f5575f80fd5b5061019961020436600461157e565b5f546001600160a01b0391821691161490565b348015610222575f80fd5b5060405160128152602001610171565b34801561023d575f80fd5b5061025161024c366004611599565b610526565b005b34801561025e575f80fd5b5061025161066b565b348015610272575f80fd5b506101bd61028136600461157e565b6001600160a01b03165f9081526005602052604090205490565b3480156102a6575f80fd5b506102516106a3565b3480156102ba575f80fd5b506102516102c93660046115c2565b610710565b3480156102d9575f80fd5b506101bd600a5481565b3480156102ee575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610171565b34801561031e575f80fd5b506101bd60095481565b348015610333575f80fd5b5060408051808201909152600481526311d3d3d160e21b6020820152610164565b34801561035f575f80fd5b50600d546102fb906001600160a01b031681565b34801561037e575f80fd5b5061019961038d366004611516565b6107e4565b34801561039d575f80fd5b506101bd6103ac366004611609565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156103e1575f80fd5b506101996103f036600461157e565b60076020525f908152604090205460ff1681565b34801561040f575f80fd5b5061025161041e36600461157e565b6107f0565b34801561042e575f80fd5b506101bd600b5481565b5f61044433848461086c565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead5f9081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926104b99290916104b3919061098f565b9061098f565b905090565b5f6104ca84848461099a565b61051b84336105168560405180606001604052806028815260200161179a602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610e97565b61086c565b5060015b9392505050565b5f546001600160a01b031633146105585760405162461bcd60e51b815260040161054f90611640565b60405180910390fd5b5f61057a61271061057486600154610ec290919063ffffffff16565b90610ecd565b90505f61059861271061057486600154610ec290919063ffffffff16565b90505f6105b661271061057486600154610ec290919063ffffffff16565b6009849055600a839055600b81905590505f6105e16103e861057460056105db61044e565b90610ec2565b90508084101580156105f35750808310155b80156105ff5750808210155b6106625760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161054f565b50505050505050565b5f546001600160a01b031633146106945760405162461bcd60e51b815260040161054f90611640565b6008805460ff19166001179055565b5f546001600160a01b031633146106cc5760405162461bcd60e51b815260040161054f90611640565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146107395760405162461bcd60e51b815260040161054f90611640565b60108790556011869055601385905560128490556014839055601582905560168190556017548311801590610772575060175460155411155b8015610782575060175460165411155b6106625760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b606482015260840161054f565b5f61044433848461099a565b5f546001600160a01b031633146108195760405162461bcd60e51b815260040161054f90611640565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108ce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161054f565b6001600160a01b03821661092f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161054f565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61051f8284611674565b6001600160a01b0383166109fe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054f565b6001600160a01b038216610a605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054f565b6001600160a01b0383165f9081526007602052604090205460ff16158015610aa057506001600160a01b0382165f9081526007602052604090205460ff16155b15610aea5760085460ff16610aea5760405162461bcd60e51b815260206004820152601060248201526f1a5cd51c98591a5b99d15b98589b195960821b604482015260640161054f565b6001600160a01b0383165f9081526007602052604090205460ff16158015610b2a57506001600160a01b0382165f9081526007602052604090205460ff16155b8015610b445750600d546001600160a01b03838116911614155b8015610b5b57506001600160a01b03821661dead14155b15610bd357600b546001600160a01b0383165f90815260056020526040902054610b859083610ed8565b1115610bd35760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161054f565b600d546001600160a01b03848116911614610c7257600a5481111580610c1057506001600160a01b0383165f9081526007602052604090205460ff165b80610c3257506001600160a01b0382165f9081526007602052604090205460ff165b610c725760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161054f565b60095481111580610c9a57506001600160a01b0383165f9081526007602052604090205460ff165b80610cbc57506001600160a01b0382165f9081526007602052604090205460ff165b610cfc5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161054f565b600d546001600160a01b038381169116148015610d3157506001600160a01b0383165f9081526007602052604090205460ff16155b15610d4e576001600e5f828254610d489190611687565b90915550505b610d59838383610ee3565b15610d8757305f90815260056020526040902054610d8290610d7d90601854610f97565b610fab565b5f600e555b60085460ff161580610db157506001600160a01b0383165f9081526007602052604090205460ff16155b15610df1576001600160a01b0383165f90815260056020526040902054610dd8908261098f565b6001600160a01b0384165f908152600560205260409020555b5f610dfc848461111f565b610e065781610e11565b610e11848484611163565b6001600160a01b0384165f90815260056020526040902054909150610e369082610ed8565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e899085815260200190565b60405180910390a350505050565b5f8184841115610eba5760405162461bcd60e51b815260040161054f91906114b4565b505050900390565b5f61051f828461169a565b5f61051f82846116b1565b5f61051f8284611687565b601954305f90815260056020526040812054600854919280851015929110159062010000900460ff16158015610f205750600854610100900460ff165b8015610f2e575060085460ff165b8015610f375750815b8015610f5b57506001600160a01b0386165f9081526007602052604090205460ff16155b8015610f745750600d546001600160a01b038681169116145b8015610f845750600f54600e5410155b8015610f8d5750805b9695505050505050565b5f818311610fa5578261051f565b50919050565b6008805462ff00001916620100001790556012546011546010545f92610fe6926002926105db9291610fe09182906001610ed8565b90610ed8565b90505f6110028261057460105486610ec290919063ffffffff16565b90505f61100f848361098f565b90504761101b82611265565b5f611026478361098f565b90505f6110486110416010548861098f90919063ffffffff16565b8390610ecd565b90505f61106060105483610ec290919063ffffffff16565b905080156110725761107286826113b5565b6011545f90611086906105db856002610ec2565b905080156110c7576003546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110c5573d5f803e3d5ffd5b505b478015611107576002546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611105573d5f803e3d5ffd5b505b50506008805462ff0000191690555050505050505050565b6001600160a01b0382165f9081526007602052604081205460ff1615801561051f5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061116f858561146a565b111561125e575f611191611183868661146a565b6017546105db908690610ecd565b305f908152600560205260409020549091506111ad9082610ed8565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111fd9085815260200190565b60405180910390a35f601354118015611220575060135461121e868661146a565b115b1561124c5761124c3061dead6112476013546105db60175489610ecd90919063ffffffff16565b61099a565b611256838261098f565b91505061051f565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611298576112986116d0565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131391906116e4565b81600181518110611326576113266116d0565b6001600160a01b039283166020918202929092010152600c5461134c913091168461086c565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906113849085905f908690309042906004016116ff565b5f604051808303815f87803b15801561139b575f80fd5b505af11580156113ad573d5f803e3d5ffd5b505050505050565b600c546113cd9030906001600160a01b03168461086c565b600c546004805460405163f305d71960e01b81523092810192909252602482018590525f6044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561143e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611463919061176e565b5050505050565b600d545f906001600160a01b039081169083160361148b5750601554610448565b600d546001600160a01b03908116908416036114aa5750601454610448565b5060165492915050565b5f6020808352835180828501525f5b818110156114df578581018301518582016040015282016114c3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611513575f80fd5b50565b5f8060408385031215611527575f80fd5b8235611532816114ff565b946020939093013593505050565b5f805f60608486031215611552575f80fd5b833561155d816114ff565b9250602084013561156d816114ff565b929592945050506040919091013590565b5f6020828403121561158e575f80fd5b813561051f816114ff565b5f805f606084860312156115ab575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a0312156115d8575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f806040838503121561161a575f80fd5b8235611625816114ff565b91506020830135611635816114ff565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561044857610448611660565b8082018082111561044857610448611660565b808202811582820484141761044857610448611660565b5f826116cb57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116f4575f80fd5b815161051f816114ff565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561174d5784516001600160a01b031683529383019391830191600101611728565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611780575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203055a12e36c6ea8ba033b523f2d87b3f69f65e46d0ca1719bbb82fecc3ba5dd464736f6c63430008150033

Deployed Bytecode

0x608060405260043610610129575f3560e01c806376e8e97b116100a8578063a8b089821161006d578063a8b0898214610354578063a9059cbb14610373578063dd62ed3e14610392578063e0bf7fd1146103d6578063f2fde38b14610404578063f8b45b0514610423575f80fd5b806376e8e97b146102af57806388e765ff146102ce578063893d20e8146102e35780638c0b5e221461031357806395d89b4114610328575f80fd5b8063313ce567116100ee578063313ce567146102175780633467b58b14610232578063551b09961461025357806370a0823114610267578063715018a61461029b575f80fd5b806306fdde0314610134578063095ea7b31461017a57806318160ddd146101a957806323b872dd146101cb5780632f54bf6e146101ea575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b5060408051808201909152600c81526b474f4f44204944454120414960a01b60208201525b60405161017191906114b4565b60405180910390f35b348015610185575f80fd5b50610199610194366004611516565b610438565b6040519015158152602001610171565b3480156101b4575f80fd5b506101bd61044e565b604051908152602001610171565b3480156101d6575f80fd5b506101996101e5366004611540565b6104be565b3480156101f5575f80fd5b5061019961020436600461157e565b5f546001600160a01b0391821691161490565b348015610222575f80fd5b5060405160128152602001610171565b34801561023d575f80fd5b5061025161024c366004611599565b610526565b005b34801561025e575f80fd5b5061025161066b565b348015610272575f80fd5b506101bd61028136600461157e565b6001600160a01b03165f9081526005602052604090205490565b3480156102a6575f80fd5b506102516106a3565b3480156102ba575f80fd5b506102516102c93660046115c2565b610710565b3480156102d9575f80fd5b506101bd600a5481565b3480156102ee575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610171565b34801561031e575f80fd5b506101bd60095481565b348015610333575f80fd5b5060408051808201909152600481526311d3d3d160e21b6020820152610164565b34801561035f575f80fd5b50600d546102fb906001600160a01b031681565b34801561037e575f80fd5b5061019961038d366004611516565b6107e4565b34801561039d575f80fd5b506101bd6103ac366004611609565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156103e1575f80fd5b506101996103f036600461157e565b60076020525f908152604090205460ff1681565b34801561040f575f80fd5b5061025161041e36600461157e565b6107f0565b34801561042e575f80fd5b506101bd600b5481565b5f61044433848461086c565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead5f9081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926104b99290916104b3919061098f565b9061098f565b905090565b5f6104ca84848461099a565b61051b84336105168560405180606001604052806028815260200161179a602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610e97565b61086c565b5060015b9392505050565b5f546001600160a01b031633146105585760405162461bcd60e51b815260040161054f90611640565b60405180910390fd5b5f61057a61271061057486600154610ec290919063ffffffff16565b90610ecd565b90505f61059861271061057486600154610ec290919063ffffffff16565b90505f6105b661271061057486600154610ec290919063ffffffff16565b6009849055600a839055600b81905590505f6105e16103e861057460056105db61044e565b90610ec2565b90508084101580156105f35750808310155b80156105ff5750808210155b6106625760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161054f565b50505050505050565b5f546001600160a01b031633146106945760405162461bcd60e51b815260040161054f90611640565b6008805460ff19166001179055565b5f546001600160a01b031633146106cc5760405162461bcd60e51b815260040161054f90611640565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146107395760405162461bcd60e51b815260040161054f90611640565b60108790556011869055601385905560128490556014839055601582905560168190556017548311801590610772575060175460155411155b8015610782575060175460165411155b6106625760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b606482015260840161054f565b5f61044433848461099a565b5f546001600160a01b031633146108195760405162461bcd60e51b815260040161054f90611640565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108ce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161054f565b6001600160a01b03821661092f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161054f565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61051f8284611674565b6001600160a01b0383166109fe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054f565b6001600160a01b038216610a605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054f565b6001600160a01b0383165f9081526007602052604090205460ff16158015610aa057506001600160a01b0382165f9081526007602052604090205460ff16155b15610aea5760085460ff16610aea5760405162461bcd60e51b815260206004820152601060248201526f1a5cd51c98591a5b99d15b98589b195960821b604482015260640161054f565b6001600160a01b0383165f9081526007602052604090205460ff16158015610b2a57506001600160a01b0382165f9081526007602052604090205460ff16155b8015610b445750600d546001600160a01b03838116911614155b8015610b5b57506001600160a01b03821661dead14155b15610bd357600b546001600160a01b0383165f90815260056020526040902054610b859083610ed8565b1115610bd35760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161054f565b600d546001600160a01b03848116911614610c7257600a5481111580610c1057506001600160a01b0383165f9081526007602052604090205460ff165b80610c3257506001600160a01b0382165f9081526007602052604090205460ff165b610c725760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161054f565b60095481111580610c9a57506001600160a01b0383165f9081526007602052604090205460ff165b80610cbc57506001600160a01b0382165f9081526007602052604090205460ff165b610cfc5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161054f565b600d546001600160a01b038381169116148015610d3157506001600160a01b0383165f9081526007602052604090205460ff16155b15610d4e576001600e5f828254610d489190611687565b90915550505b610d59838383610ee3565b15610d8757305f90815260056020526040902054610d8290610d7d90601854610f97565b610fab565b5f600e555b60085460ff161580610db157506001600160a01b0383165f9081526007602052604090205460ff16155b15610df1576001600160a01b0383165f90815260056020526040902054610dd8908261098f565b6001600160a01b0384165f908152600560205260409020555b5f610dfc848461111f565b610e065781610e11565b610e11848484611163565b6001600160a01b0384165f90815260056020526040902054909150610e369082610ed8565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e899085815260200190565b60405180910390a350505050565b5f8184841115610eba5760405162461bcd60e51b815260040161054f91906114b4565b505050900390565b5f61051f828461169a565b5f61051f82846116b1565b5f61051f8284611687565b601954305f90815260056020526040812054600854919280851015929110159062010000900460ff16158015610f205750600854610100900460ff165b8015610f2e575060085460ff165b8015610f375750815b8015610f5b57506001600160a01b0386165f9081526007602052604090205460ff16155b8015610f745750600d546001600160a01b038681169116145b8015610f845750600f54600e5410155b8015610f8d5750805b9695505050505050565b5f818311610fa5578261051f565b50919050565b6008805462ff00001916620100001790556012546011546010545f92610fe6926002926105db9291610fe09182906001610ed8565b90610ed8565b90505f6110028261057460105486610ec290919063ffffffff16565b90505f61100f848361098f565b90504761101b82611265565b5f611026478361098f565b90505f6110486110416010548861098f90919063ffffffff16565b8390610ecd565b90505f61106060105483610ec290919063ffffffff16565b905080156110725761107286826113b5565b6011545f90611086906105db856002610ec2565b905080156110c7576003546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110c5573d5f803e3d5ffd5b505b478015611107576002546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611105573d5f803e3d5ffd5b505b50506008805462ff0000191690555050505050505050565b6001600160a01b0382165f9081526007602052604081205460ff1615801561051f5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061116f858561146a565b111561125e575f611191611183868661146a565b6017546105db908690610ecd565b305f908152600560205260409020549091506111ad9082610ed8565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111fd9085815260200190565b60405180910390a35f601354118015611220575060135461121e868661146a565b115b1561124c5761124c3061dead6112476013546105db60175489610ecd90919063ffffffff16565b61099a565b611256838261098f565b91505061051f565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611298576112986116d0565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131391906116e4565b81600181518110611326576113266116d0565b6001600160a01b039283166020918202929092010152600c5461134c913091168461086c565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906113849085905f908690309042906004016116ff565b5f604051808303815f87803b15801561139b575f80fd5b505af11580156113ad573d5f803e3d5ffd5b505050505050565b600c546113cd9030906001600160a01b03168461086c565b600c546004805460405163f305d71960e01b81523092810192909252602482018590525f6044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af115801561143e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611463919061176e565b5050505050565b600d545f906001600160a01b039081169083160361148b5750601554610448565b600d546001600160a01b03908116908416036114aa5750601454610448565b5060165492915050565b5f6020808352835180828501525f5b818110156114df578581018301518582016040015282016114c3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611513575f80fd5b50565b5f8060408385031215611527575f80fd5b8235611532816114ff565b946020939093013593505050565b5f805f60608486031215611552575f80fd5b833561155d816114ff565b9250602084013561156d816114ff565b929592945050506040919091013590565b5f6020828403121561158e575f80fd5b813561051f816114ff565b5f805f606084860312156115ab575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a0312156115d8575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f806040838503121561161a575f80fd5b8235611625816114ff565b91506020830135611635816114ff565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561044857610448611660565b8082018082111561044857610448611660565b808202811582820484141761044857610448611660565b5f826116cb57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116f4575f80fd5b815161051f816114ff565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561174d5784516001600160a01b031683529383019391830191600101611728565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611780575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203055a12e36c6ea8ba033b523f2d87b3f69f65e46d0ca1719bbb82fecc3ba5dd464736f6c63430008150033

Deployed Bytecode Sourcemap

4036:10219:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6457:67;;;;;;;;;;-1:-1:-1;6517:5:0;;;;;;;;;;;;-1:-1:-1;;;6517:5:0;;;;6457:67;;;;;;;:::i;:::-;;;;;;;;7151:133;;;;;;;;;;-1:-1:-1;7151:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7151:133:0;1023:187:1;7290:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;7290:132:0;1215:177:1;12136:309:0;;;;;;;;;;-1:-1:-1;12136:309:0;;;;;:::i;:::-;;:::i;3665:87::-;;;;;;;;;;-1:-1:-1;3665:87:0;;;;;:::i;:::-;3720:4;3745:5;-1:-1:-1;;;;;3734:16:0;;;3745:5;;3734:16;;3665:87;6607:67;;;;;;;;;;-1:-1:-1;6607:67:0;;4246:2;2252:36:1;;2240:2;2225:18;6607:67:0;2110:184:1;13464:545:0;;;;;;;;;;-1:-1:-1;13464:545:0;;;;;:::i;:::-;;:::i;:::-;;11592:71;;;;;;;;;;;;;:::i;6764:103::-;;;;;;;;;;-1:-1:-1;6764:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6847:18:0;6830:7;6847:18;;;:9;:18;;;;;;;6764:103;3875:106;;;;;;;;;;;;;:::i;9599:491::-;;;;;;;;;;-1:-1:-1;9599:491:0;;;;;:::i;:::-;;:::i;5038:60::-;;;;;;;;;;;;;;;;6680:78;;;;;;;;;;-1:-1:-1;6732:7:0;6750:5;-1:-1:-1;;;;;6750:5:0;6680:78;;;-1:-1:-1;;;;;3381:32:1;;;3363:51;;3351:2;3336:18;6680:78:0;3217:203:1;4972:59:0;;;;;;;;;;;;;;;;6530:71;;;;;;;;;;-1:-1:-1;6592:7:0;;;;;;;;;;;;-1:-1:-1;;;6592:7:0;;;;6530:71;;5206:26;;;;;;;;;;-1:-1:-1;5206:26:0;;;;-1:-1:-1;;;;;5206:26:0;;;6873:139;;;;;;;;;;-1:-1:-1;6873:139:0;;;;;:::i;:::-;;:::i;7018:127::-;;;;;;;;;;-1:-1:-1;7018:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7116:18:0;;;7099:7;7116:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7018:127;4791:52;;;;;;;;;;-1:-1:-1;4791:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3758:111;;;;;;;;;;-1:-1:-1;3758:111:0;;;;;:::i;:::-;;:::i;5105:57::-;;;;;;;;;;;;;;;;7151:133;7226:4;7233:37;7242:10;7254:7;7263:6;7233:8;:37::i;:::-;-1:-1:-1;7278:4:0;7151:133;;;;;:::o;7290:132::-;6847:9;:18;;;;4355:42;7343:7;6847:18;;;;;7360:12;;7343:7;;7360:60;;6847:18;;7360:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;7353:67;;7290:132;:::o;12136:309::-;12234:4;12251:36;12261:6;12269:9;12280:6;12251:9;:36::i;:::-;12298:117;12307:6;12315:10;12327:87;12363:6;12327:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12327:19:0;;;;;;:11;:19;;;;;;;;12347:10;12327:31;;;;;;;;;:87;:35;:87::i;:::-;12298:8;:117::i;:::-;-1:-1:-1;12433:4:0;12136:309;;;;;;:::o;13464:545::-;3720:4;3745:5;-1:-1:-1;;;;;3745:5:0;3632:10;3734:16;3616:38;;;;-1:-1:-1;;;3616:38:0;;;;;;;:::i;:::-;;;;;;;;;13568:13:::1;13584:33;13611:5;13584:22;13601:4;13584:12;;:16;;:22;;;;:::i;:::-;:26:::0;::::1;:33::i;:::-;13568:49;;13619:19;13641:34;13669:5;13641:23;13658:5;13641:12;;:16;;:23;;;;:::i;:34::-;13619:56;;13677:17;13697:36;13727:5;13697:25;13714:7;13697:12;;:16;;:25;;;;:::i;:36::-;13744:11;:19:::0;;;13765:12:::1;:26:::0;;;13793:9:::1;:21:::0;;;13677:56;-1:-1:-1;;13841:30:0::1;13866:4;13841:20;13859:1;13841:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;13825:46;;13899:5;13890;:14;;:38;;;;;13923:5;13908:11;:20;;13890:38;:60;;;;;13945:5;13932:9;:18;;13890:60;13882:119;;;::::0;-1:-1:-1;;;13882:119:0;;4614:2:1;13882:119:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:44;4797:19;;13882:119:0::1;4412:410:1::0;13882:119:0::1;13557:452;;;;13464:545:::0;;;:::o;11592:71::-;3720:4;3745:5;-1:-1:-1;;;;;3745:5:0;3632:10;3734:16;3616:38;;;;-1:-1:-1;;;3616:38:0;;;;;;;:::i;:::-;11638:16:::1;:23:::0;;-1:-1:-1;;11638:23:0::1;11657:4;11638:23;::::0;;11592:71::o;3875:106::-;3720:4;3745:5;-1:-1:-1;;;;;3745:5:0;3632:10;3734:16;3616:38;;;;-1:-1:-1;;;3616:38:0;;;;;;;:::i;:::-;3938:1:::1;3922:18:::0;;-1:-1:-1;;;;;;3922:18:0::1;::::0;;3947:32:::1;::::0;3363:51:1;;;3947:32:0::1;::::0;3351:2:1;3336:18;3947:32:0::1;;;;;;;3875:106::o:0;9599:491::-;3720:4;3745:5;-1:-1:-1;;;;;3745:5:0;3632:10;3734:16;3616:38;;;;-1:-1:-1;;;3616:38:0;;;;;;;:::i;:::-;9776:12:::1;:25:::0;;;9803:12:::1;:25:::0;;;9830:7:::1;:15:::0;;;9847:14:::1;:29:::0;;;9878:8:::1;:17:::0;;;9897:7:::1;:15:::0;;;9914:11:::1;:20:::0;;;9965:11:::1;::::0;9953:23;::::1;::::0;::::1;::::0;:49:::1;;;9991:11;;9980:7;;:22;;9953:49;:79;;;;;10021:11;;10006;;:26;;9953:79;9945:137;;;::::0;-1:-1:-1;;;9945:137:0;;5029:2:1;9945:137:0::1;::::0;::::1;5011:21:1::0;5068:2;5048:18;;;5041:30;5107:34;5087:18;;;5080:62;-1:-1:-1;;;5158:18:1;;;5151:43;5211:19;;9945:137:0::1;4827:409:1::0;6873:139:0;6951:4;6958:40;6968:10;6980:9;6991:6;6958:9;:40::i;3758:111::-;3720:4;3745:5;-1:-1:-1;;;;;3745:5:0;3632:10;3734:16;3616:38;;;;-1:-1:-1;;;3616:38:0;;;;;;;:::i;:::-;3824:5:::1;:11:::0;;-1:-1:-1;;;;;;3824:11:0::1;-1:-1:-1::0;;;;;3824:11:0;::::1;::::0;;::::1;::::0;;;3842:25:::1;::::0;3363:51:1;;;3842:25:0::1;::::0;3351:2:1;3336:18;3842:25:0::1;;;;;;;3758:111:::0;:::o;13119:335::-;-1:-1:-1;;;;;13212:19:0;;13204:68;;;;-1:-1:-1;;;13204:68:0;;5659:2:1;13204:68:0;;;5641:21:1;5698:2;5678:18;;;5671:30;5737:34;5717:18;;;5710:62;-1:-1:-1;;;5788:18:1;;;5781:34;5832:19;;13204:68:0;5457:400:1;13204:68:0;-1:-1:-1;;;;;13291:21:0;;13283:68;;;;-1:-1:-1;;;13283:68:0;;6064:2:1;13283:68:0;;;6046:21:1;6103:2;6083:18;;;6076:30;6142:34;6122:18;;;6115:62;-1:-1:-1;;;6193:18:1;;;6186:32;6235:19;;13283:68:0;5862:398:1;13283:68:0;-1:-1:-1;;;;;13362:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13414:32;;1361:25:1;;;13414:32:0;;1334:18:1;13414:32:0;;;;;;;13119:335;;;:::o;1458:98::-;1516:7;1543:5;1547:1;1543;:5;:::i;8069:1518::-;-1:-1:-1;;;;;8166:20:0;;8158:70;;;;-1:-1:-1;;;8158:70:0;;6732:2:1;8158:70:0;;;6714:21:1;6771:2;6751:18;;;6744:30;6810:34;6790:18;;;6783:62;-1:-1:-1;;;6861:18:1;;;6854:35;6906:19;;8158:70:0;6530:401:1;8158:70:0;-1:-1:-1;;;;;8247:23:0;;8239:71;;;;-1:-1:-1;;;8239:71:0;;7138:2:1;8239:71:0;;;7120:21:1;7177:2;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;-1:-1:-1;;;7267:18:1;;;7260:33;7310:19;;8239:71:0;6936:399:1;8239:71:0;-1:-1:-1;;;;;8325:27:0;;;;;;:19;:27;;;;;;;;8324:28;:63;;;;-1:-1:-1;;;;;;8357:30:0;;;;;;:19;:30;;;;;;;;8356:31;8324:63;8321:115;;;8397:16;;;;8389:45;;;;-1:-1:-1;;;8389:45:0;;7542:2:1;8389:45:0;;;7524:21:1;7581:2;7561:18;;;7554:30;-1:-1:-1;;;7600:18:1;;;7593:46;7656:18;;8389:45:0;7340:340:1;8389:45:0;-1:-1:-1;;;;;8450:27:0;;;;;;:19;:27;;;;;;;;8449:28;:63;;;;-1:-1:-1;;;;;;8482:30:0;;;;;;:19;:30;;;;;;;;8481:31;8449:63;:100;;;;-1:-1:-1;8537:11:0;;-1:-1:-1;;;;;8516:33:0;;;8537:11;;8516:33;;8449:100;:130;;;;-1:-1:-1;;;;;;8553:26:0;;4355:42;8553:26;;8449:130;8446:237;;;8637:9;;-1:-1:-1;;;;;8600:20:0;;;;;;:9;:20;;;;;;:32;;8625:6;8600:24;:32::i;:::-;8599:47;;8591:90;;;;-1:-1:-1;;;8591:90:0;;7887:2:1;8591:90:0;;;7869:21:1;7926:2;7906:18;;;7899:30;7965:32;7945:18;;;7938:60;8015:18;;8591:90:0;7685:354:1;8591:90:0;8706:11;;-1:-1:-1;;;;;8696:21:0;;;8706:11;;8696:21;8693:145;;8737:12;;8727:6;:22;;:53;;;-1:-1:-1;;;;;;8753:27:0;;;;;;:19;:27;;;;;;;;8727:53;:87;;;-1:-1:-1;;;;;;8784:30:0;;;;;;:19;:30;;;;;;;;8727:87;8719:117;;;;-1:-1:-1;;;8719:117:0;;8246:2:1;8719:117:0;;;8228:21:1;8285:2;8265:18;;;8258:30;-1:-1:-1;;;8304:18:1;;;8297:47;8361:18;;8719:117:0;8044:341:1;8719:117:0;8866:11;;8856:6;:21;;:52;;;-1:-1:-1;;;;;;8881:27:0;;;;;;:19;:27;;;;;;;;8856:52;:86;;;-1:-1:-1;;;;;;8912:30:0;;;;;;:19;:30;;;;;;;;8856:86;8848:116;;;;-1:-1:-1;;;8848:116:0;;8246:2:1;8848:116:0;;;8228:21:1;8285:2;8265:18;;;8258:30;-1:-1:-1;;;8304:18:1;;;8297:47;8361:18;;8848:116:0;8044:341:1;8848:116:0;8992:11;;-1:-1:-1;;;;;8979:24:0;;;8992:11;;8979:24;:56;;;;-1:-1:-1;;;;;;9008:27:0;;;;;;:19;:27;;;;;;;;9007:28;8979:56;8976:90;;;9062:1;9037:13;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;8976:90:0;9079:41;9094:6;9102:9;9113:6;9079:14;:41::i;:::-;9076:132;;;9153:4;6830:7;6847:18;;;:9;:18;;;;;;9122:56;;9131:46;;9161:15;;9131:3;:46::i;:::-;9122:8;:56::i;:::-;9204:1;9180:13;:26;9076:132;9223:16;;;;9222:17;;:49;;-1:-1:-1;;;;;;9244:27:0;;;;;;:19;:27;;;;;;;;9243:28;9222:49;9218:109;;;-1:-1:-1;;;;;9295:17:0;;;;;;:9;:17;;;;;;:29;;9317:6;9295:21;:29::i;:::-;-1:-1:-1;;;;;9275:17:0;;;;;;:9;:17;;;;;:49;9218:109;9337:22;9362:32;9376:6;9384:9;9362:13;:32::i;:::-;:84;;9440:6;9362:84;;;9397:40;9411:6;9419:9;9430:6;9397:13;:40::i;:::-;-1:-1:-1;;;;;9480:20:0;;;;;;:9;:20;;;;;;9337:109;;-1:-1:-1;9480:40:0;;9337:109;9480:24;:40::i;:::-;-1:-1:-1;;;;;9457:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9536:43;;;;;;;;;;9564:14;1361:25:1;;1349:2;1334:18;;1215:177;9536:43:0;;;;;;;;8147:1440;8069:1518;;;:::o;1882:240::-;2002:7;2063:12;2055:6;;;;2047:29;;;;-1:-1:-1;;;2047:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2098:5:0;;;1882:240::o;1564:98::-;1622:7;1649:5;1653:1;1649;:5;:::i;1670:98::-;1728:7;1755:5;1759:1;1755;:5;:::i;1352:98::-;1410:7;1437:5;1441:1;1437;:5;:::i;10096:430::-;10237:17;;10305:4;10194;6847:18;;;:9;:18;;;;;;10351:9;;10194:4;;10227:27;;;;;-1:-1:-1;;10287:45:0;;10351:9;;;;;10350:10;:28;;;;-1:-1:-1;10364:14:0;;;;;;;10350:28;:48;;;;-1:-1:-1;10382:16:0;;;;10350:48;:60;;;;;10402:8;10350:60;:92;;;;-1:-1:-1;;;;;;10415:27:0;;;;;;:19;:27;;;;;;;;10414:28;10350:92;:120;;;;-1:-1:-1;10459:11:0;;-1:-1:-1;;;;;10446:24:0;;;10459:11;;10446:24;10350:120;:150;;;;;10491:9;;10474:13;;:26;;10350:150;:168;;;;;10504:14;10350:168;10343:175;10096:430;-1:-1:-1;;;;;;10096:430:0:o;13008:105::-;13065:7;13095:1;13091;:5;13090:15;;13104:1;13090:15;;;-1:-1:-1;13100:1:0;13008:105;-1:-1:-1;13008:105:0:o;10532:1054::-;5778:9;:16;;-1:-1:-1;;5778:16:0;;;;;10660:14:::1;::::0;10642:12:::1;::::0;10618::::1;::::0;5778:16;;10617:66:::1;::::0;5778:9;;10618:57:::1;::::0;10660:14;10618:37:::1;::::0;;;5790:4;10618:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10617:66::-;10594:89;;10694:32;10729:42;10758:12;10729:24;10740:12;;10729:6;:10;;:24;;;;:::i;:42::-;10694:77:::0;-1:-1:-1;10782:14:0::1;10799:36;:6:::0;10694:77;10799:10:::1;:36::i;:::-;10782:53:::0;-1:-1:-1;10871:21:0::1;10903:24;10782:53:::0;10903:16:::1;:24::i;:::-;10938:20;10961:41;:21;10987:14:::0;10961:25:::1;:41::i;:::-;10938:64;;11013:19;11034:48;11051:30;11068:12;;11051;:16;;:30;;;;:::i;:::-;11034:12:::0;;:16:::1;:48::i;:::-;11013:69;;11093:29;11125;11141:12;;11125:11;:15;;:29;;;;:::i;:::-;11093:61:::0;-1:-1:-1;11168:34:0;;11165:103:::1;;11204:61;11217:24;11243:21;11204:12;:61::i;:::-;11324:12;::::0;11278:20:::1;::::0;11301:36:::1;::::0;:18:::1;:11:::0;11317:1:::1;11301:15;:18::i;:36::-;11278:59:::0;-1:-1:-1;11351:16:0;;11348:73:::1;;11377:18;::::0;11369:50:::1;::::0;-1:-1:-1;;;;;11377:18:0;;::::1;::::0;11369:50;::::1;;;::::0;11406:12;;11377:18:::1;11369:50:::0;11377:18;11369:50;11406:12;11377:18;11369:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11348:73;11457:21;11492:28:::0;;11489:90:::1;;11530:20;::::0;11522:55:::1;::::0;-1:-1:-1;;;;;11530:20:0;;::::1;::::0;11522:55;::::1;;;::::0;11561:15;;11530:20:::1;11522:55:::0;11530:20;11522:55;11561:15;11530:20;11522:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11489:90;-1:-1:-1::0;;5799:9:0;:17;;-1:-1:-1;;5799:17:0;;;-1:-1:-1;;;;;;;;10532:1054:0:o;12457:176::-;-1:-1:-1;;;;;12563:27:0;;12538:4;12563:27;;;:19;:27;;;;;;;;12562:28;:63;;;;-1:-1:-1;;;;;;;12595:30:0;;;;;:19;:30;;;;;;;;12594:31;;12457:176;-1:-1:-1;12457:176:0:o;7432:596::-;7524:7;7580:1;7547:30;7559:6;7567:9;7547:11;:30::i;:::-;:34;7544:462;;;7593:17;7613:59;7641:30;7653:6;7661:9;7641:11;:30::i;:::-;7624:11;;7613:23;;:6;;:10;:23::i;:59::-;7728:4;7710:24;;;;:9;:24;;;;;;7593:79;;-1:-1:-1;7710:39:0;;7593:79;7710:28;:39::i;:::-;7701:4;7683:24;;;;:9;:24;;;;;;;:66;;;;7765:42;;-1:-1:-1;;;;;7765:42:0;;;;;;;7797:9;1361:25:1;;1349:2;1334:18;;1215:177;7765:42:0;;;;;;;;7839:1;7821:7;;:20;:64;;;;;7878:7;;7845:30;7857:6;7865:9;7845:11;:30::i;:::-;:40;7821:64;7818:148;;;7887:77;7905:4;4355:42;7927:36;7955:7;;7927:23;7938:11;;7927:6;:10;;:23;;;;:::i;:36::-;7887:9;:77::i;:::-;7983:21;:6;7994:9;7983:10;:21::i;:::-;7976:28;;;;;7544:462;-1:-1:-1;8014:6:0;7432:596;-1:-1:-1;;7432:596:0:o;11669:455::-;11759:16;;;11773:1;11759:16;;;;;;;;11735:21;;11759:16;;;;;;;;;;-1:-1:-1;11759:16:0;11735:40;;11804:4;11786;11791:1;11786:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11786:23:0;;;:7;;;;;;;;;;:23;;;;11830:13;;:20;;;-1:-1:-1;;;11830:20:0;;;;:13;;;;;:18;;:20;;;;;11786:7;;11830:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11820:4;11825:1;11820:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11820:30:0;;;:7;;;;;;;;;:30;11893:13;;11861:60;;11878:4;;11893:13;11909:11;11861:8;:60::i;:::-;11932:13;;:184;;-1:-1:-1;;;11932:184:0;;-1:-1:-1;;;;;11932:13:0;;;;:64;;:184;;12011:11;;11932:13;;12053:4;;12080;;12100:15;;11932:184;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11724:400;11669:455;:::o;12645:357::-;12758:13;;12726:60;;12743:4;;-1:-1:-1;;;;;12758:13:0;12774:11;12726:8;:60::i;:::-;12797:13;;12945:18;;;12797:197;;-1:-1:-1;;;12797:197:0;;12867:4;12797:197;;;10761:34:1;;;;10811:18;;;10804:34;;;12797:13:0;10854:18:1;;;10847:34;;;10897:18;;;10890:34;-1:-1:-1;;;;;12945:18:0;;;10940:19:1;;;10933:44;12978:15:0;10993:19:1;;;10986:35;12797:13:0;;;;:29;;12834:9;;10695:19:1;;12797:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12645:357;;:::o;14015:233::-;14130:11;;14094:7;;-1:-1:-1;;;;;14130:11:0;;;14117:24;;;;14114:45;;-1:-1:-1;14150:7:0;;14143:14;;14114:45;14182:11;;-1:-1:-1;;;;;14182:11:0;;;14172:21;;;;14169:43;;-1:-1:-1;14202:8:0;;14195:15;;14169:43;-1:-1:-1;14229:11:0;;14015:233;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2299:316::-;2376:6;2384;2392;2445:2;2433:9;2424:7;2420:23;2416:32;2413:52;;;2461:1;2458;2451:12;2413:52;-1:-1:-1;;2484:23:1;;;2554:2;2539:18;;2526:32;;-1:-1:-1;2605:2:1;2590:18;;;2577:32;;2299:316;-1:-1:-1;2299:316:1:o;2620:592::-;2733:6;2741;2749;2757;2765;2773;2781;2834:3;2822:9;2813:7;2809:23;2805:33;2802:53;;;2851:1;2848;2841:12;2802:53;-1:-1:-1;;2874:23:1;;;2944:2;2929:18;;2916:32;;-1:-1:-1;2995:2:1;2980:18;;2967:32;;3046:2;3031:18;;3018:32;;-1:-1:-1;3097:3:1;3082:19;;3069:33;;-1:-1:-1;3149:3:1;3134:19;;3121:33;;-1:-1:-1;3201:3:1;3186:19;3173:33;;-1:-1:-1;2620:592:1;-1:-1:-1;2620:592:1:o;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6265:127::-;6326:10;6321:3;6317:20;6314:1;6307:31;6357:4;6354:1;6347:15;6381:4;6378:1;6371:15;6397:128;6464:9;;;6485:11;;;6482:37;;;6499:18;;:::i;8390:125::-;8455:9;;;8476:10;;;8473:36;;;8489:18;;:::i;8520:168::-;8593:9;;;8624;;8641:15;;;8635:22;;8621:37;8611:71;;8662:18;;:::i;8693:217::-;8733:1;8759;8749:132;;8803:10;8798:3;8794:20;8791:1;8784:31;8838:4;8835:1;8828:15;8866:4;8863:1;8856:15;8749:132;-1:-1:-1;8895:9:1;;8693:217::o;9047:127::-;9108:10;9103:3;9099:20;9096:1;9089:31;9139:4;9136:1;9129:15;9163:4;9160:1;9153:15;9179:251;9249:6;9302:2;9290:9;9281:7;9277:23;9273:32;9270:52;;;9318:1;9315;9308:12;9270:52;9350:9;9344:16;9369:31;9394:5;9369:31;:::i;9435:980::-;9697:4;9745:3;9734:9;9730:19;9776:6;9765:9;9758:25;9802:2;9840:6;9835:2;9824:9;9820:18;9813:34;9883:3;9878:2;9867:9;9863:18;9856:31;9907:6;9942;9936:13;9973:6;9965;9958:22;10011:3;10000:9;9996:19;9989:26;;10050:2;10042:6;10038:15;10024:29;;10071:1;10081:195;10095:6;10092:1;10089:13;10081:195;;;10160:13;;-1:-1:-1;;;;;10156:39:1;10144:52;;10251:15;;;;10216:12;;;;10192:1;10110:9;10081:195;;;-1:-1:-1;;;;;;;10332:32:1;;;;10327:2;10312:18;;10305:60;-1:-1:-1;;;10396:3:1;10381:19;10374:35;10293:3;9435:980;-1:-1:-1;;;9435:980:1:o;11032:306::-;11120:6;11128;11136;11189:2;11177:9;11168:7;11164:23;11160:32;11157:52;;;11205:1;11202;11195:12;11157:52;11234:9;11228:16;11218:26;;11284:2;11273:9;11269:18;11263:25;11253:35;;11328:2;11317:9;11313:18;11307:25;11297:35;;11032:306;;;;;:::o

Swarm Source

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