ETH Price: $3,452.87 (-1.14%)
Gas: 12 Gwei

Token

AERES TECH (AES)
 

Overview

Max Total Supply

1,000,000,000 AES

Holders

132

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 AES

Value
$0.00
0x0768afa47264368fb3223fab00bb9809765795f3
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:
AES

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-09-04
*/

// SPDX-License-Identifier: MIT

/*
Aeres provides an extensive array of high-quality tools with the goal of crafting outstanding and dependable DeFi experiences.

Website: https://aeres.tech
Twitter: https://twitter.com/aeres_tech_rev
Telegram: https://t.me/aeres_tech_official
*/

pragma solidity 0.8.21;

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

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

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

contract AES is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode"AERES TECH";
    string private constant _symbol = unicode"AES";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludedFromFee;
    IUniswapRouter router;
    address public pair;
    bool private tradingActivated = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private lpFeeDivide = 0;
    uint256 private marketingFeeDivide = 0;
    uint256 private devFeeDivide = 100;
    uint256 private burnFee = 0;
    uint256 private buyTax = 1300;
    uint256 private sellTax = 1300;
    uint256 private transferTax = 1300;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    uint256 public _maxTxLimit = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxTransferLimit = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxWalletLimit = ( _totalSupply * 100 ) / 10000;
    address internal developerAddy = 0x2bE7cd30a1b7327aF052d2bF89A0FcdF255e3B2F; 
    address internal marketingAddy = 0x2bE7cd30a1b7327aF052d2bF89A0FcdF255e3B2F;
    address internal liquidityAddy = 0x2bE7cd30a1b7327aF052d2bF89A0FcdF255e3B2F;

    constructor() Ownable(msg.sender) {    
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isExcludedFromFee[developerAddy] = true;
        isExcludedFromFee[liquidityAddy] = true;
        isExcludedFromFee[marketingAddy] = true;
        isExcludedFromFee[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 startTrading() external onlyOwner {tradingActivated = 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 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 shouldTaxSwapFee(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingActivated && aboveMin && !isExcludedFromFee[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }
    function setTransactionLimits(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);
        _maxTxLimit = newTx; _maxTransferLimit = newTransfer; _maxWalletLimit = 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 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);
    }
    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        lpFeeDivide = _liquidity; marketingFeeDivide = _marketing; burnFee = _burn; devFeeDivide = _development; buyTax = _total; sellTax = _sell; transferTax = _trans;
        require(buyTax <= denominator.div(1) && sellTax <= denominator.div(1) && transferTax <= denominator.div(1), "buyTax and sellTax cannot be more than 20%");
    }
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (isExcludedFromFee[recipient]) {return _maxTxLimit;}
        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 shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isExcludedFromFee[sender] && !isExcludedFromFee[recipient];
    }
    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(!isExcludedFromFee[sender] && !isExcludedFromFee[recipient]){require(tradingActivated, "tradingActivated");}
        if(!isExcludedFromFee[sender] && !isExcludedFromFee[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletLimit, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxTransferLimit || isExcludedFromFee[sender] || isExcludedFromFee[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxLimit || isExcludedFromFee[sender] || isExcludedFromFee[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isExcludedFromFee[sender]){swapTimes += uint256(1);}
        if(shouldTaxSwapFee(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = !isExcludedFromFee[sender] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellTax;}
        if(sender == pair){return buyTax;}
        return transferTax;
    }
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityAddy,
            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 swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (lpFeeDivide.add(1).add(marketingFeeDivide).add(devFeeDivide)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(lpFeeDivide).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(lpFeeDivide));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(lpFeeDivide);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFeeDivide);
        if(marketingAmt > 0){payable(marketingAddy).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(developerAddy).transfer(contractBalance);}
    }
}

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":[],"name":"_maxTransferLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimit","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":"isExcludedFromFee","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","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":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004af565b6200002290633b9aca00620004c6565b60018190556006805461ffff60a01b1916600160a81b179055620186a0906200004e906103e8620004c6565b6200005a9190620004e0565b600a55620186a0600154600a620000729190620004c6565b6200007e9190620004e0565b600b555f600c555f600d556064600e555f600f556105146010556105146011556105146012556127106013556127106001546064620000be9190620004c6565b620000ca9190620004e0565b6014556127106001546064620000e19190620004c6565b620000ed9190620004e0565b6015556127106001546064620001049190620004c6565b620001109190620004e0565b60165560178054732be7cd30a1b7327af052d2bf89a0fcdf255e3b2f6001600160a01b03199182168117909255601880548216831790556019805490911690911790553480156200015f575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ea919062000500565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025c919062000500565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cd919062000500565b600580546001600160a01b038581166001600160a01b03199283161790925560068054848416921691909117905560175481165f908152600460209081526040808320805460ff19908116600190811790925560195486168552828520805482168317905560185490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000528565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f457815f1904821115620003d857620003d8620003a0565b80851615620003e657918102915b93841c9390800290620003b9565b509250929050565b5f826200040c57506001620004a9565b816200041a57505f620004a9565b81600181146200043357600281146200043e576200045e565b6001915050620004a9565b60ff841115620004525762000452620003a0565b50506001821b620004a9565b5060208310610133831016604e8410600b841016171562000483575081810a620004a9565b6200048f8383620003b4565b805f1904821115620004a557620004a5620003a0565b0290505b92915050565b5f620004bf60ff841683620003fc565b9392505050565b8082028115828204841417620004a957620004a9620003a0565b5f82620004fb57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000511575f80fd5b81516001600160a01b0381168114620004bf575f80fd5b6117a080620005365f395ff3fe60806040526004361061011e575f3560e01c8063893d20e81161009d578063cb7f97d711610062578063cb7f97d71461036a578063da0ebc6214610389578063dd62ed3e1461039e578063f2fde38b146103e2578063f8f3c5a914610401575f80fd5b8063893d20e8146102b257806395d89b41146102e25780639cc353511461030d578063a8aa1b311461032c578063a9059cbb1461034b575f80fd5b8063293230b8116100e3578063293230b8146101f25780632f54bf6e14610208578063313ce567146102355780635342acb41461025057806370a082311461027e575f80fd5b806306fdde0314610129578063095ea7b31461016d57806318160ddd1461019c5780632372f4fd146101be57806323b872dd146101d3575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600a8152690828aa48aa640a88a86960b31b60208201525b604051610164919061145d565b60405180910390f35b348015610178575f80fd5b5061018c6101873660046114bf565b610416565b6040519015158152602001610164565b3480156101a7575f80fd5b506101b061042c565b604051908152602001610164565b3480156101c9575f80fd5b506101b060155481565b3480156101de575f80fd5b5061018c6101ed3660046114e9565b61049c565b3480156101fd575f80fd5b50610206610504565b005b348015610213575f80fd5b5061018c610222366004611527565b5f546001600160a01b0391821691161490565b348015610240575f80fd5b5060405160098152602001610164565b34801561025b575f80fd5b5061018c61026a366004611527565b60046020525f908152604090205460ff1681565b348015610289575f80fd5b506101b0610298366004611527565b6001600160a01b03165f9081526002602052604090205490565b3480156102bd575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610164565b3480156102ed575f80fd5b5060408051808201909152600381526241455360e81b6020820152610157565b348015610318575f80fd5b50610206610327366004611542565b61054b565b348015610337575f80fd5b506006546102ca906001600160a01b031681565b348015610356575f80fd5b5061018c6103653660046114bf565b610687565b348015610375575f80fd5b5061020661038436600461156b565b610693565b348015610394575f80fd5b506101b060165481565b3480156103a9575f80fd5b506101b06103b83660046115b2565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156103ed575f80fd5b506102066103fc366004611527565b610787565b34801561040c575f80fd5b506101b060145481565b5f610422338484610803565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926104979290916104919190610926565b90610926565b905090565b5f6104a8848484610931565b6104f984336104f485604051806060016040528060288152602001611743602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610e74565b610803565b5060015b9392505050565b5f546001600160a01b031633146105365760405162461bcd60e51b815260040161052d906115e9565b60405180910390fd5b6006805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105745760405162461bcd60e51b815260040161052d906115e9565b5f61059661271061059086600154610e9f90919063ffffffff16565b90610eaa565b90505f6105b461271061059086600154610e9f90919063ffffffff16565b90505f6105d261271061059086600154610e9f90919063ffffffff16565b60148490556015839055601681905590505f6105fd6103e861059060056105f761042c565b90610e9f565b905080841015801561060f5750808310155b801561061b5750808210155b61067e5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161052d565b50505050505050565b5f610422338484610931565b5f546001600160a01b031633146106bc5760405162461bcd60e51b815260040161052d906115e9565b600c879055600d869055600f859055600e8490556010839055601182905560128190556013546106ed906001610eaa565b6010541115801561070d5750601354610707906001610eaa565b60115411155b80156107285750601354610722906001610eaa565b60125411155b61067e5760405162461bcd60e51b815260206004820152602a60248201527f62757954617820616e642073656c6c5461782063616e6e6f74206265206d6f7260448201526965207468616e2032302560b01b606482015260840161052d565b5f546001600160a01b031633146107b05760405162461bcd60e51b815260040161052d906115e9565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b0382166108c65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6104fd828461161d565b6001600160a01b0383166109955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b6001600160a01b0382166109f75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052d565b6001600160a01b0383165f90815260026020526040902054811115610a785760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161052d565b6001600160a01b0383165f9081526004602052604090205460ff16158015610ab857506001600160a01b0382165f9081526004602052604090205460ff16155b15610b0957600654600160a01b900460ff16610b095760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99d058dd1a5d985d195960821b604482015260640161052d565b6001600160a01b0383165f9081526004602052604090205460ff16158015610b4957506001600160a01b0382165f9081526004602052604090205460ff16155b8015610b6357506006546001600160a01b03838116911614155b8015610b7a57506001600160a01b03821661dead14155b15610bf2576016546001600160a01b0383165f90815260026020526040902054610ba49083610eb5565b1115610bf25760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161052d565b6006546001600160a01b03848116911614610c915760155481111580610c2f57506001600160a01b0383165f9081526004602052604090205460ff165b80610c5157506001600160a01b0382165f9081526004602052604090205460ff165b610c915760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161052d565b60145481111580610cb957506001600160a01b0383165f9081526004602052604090205460ff165b80610cdb57506001600160a01b0382165f9081526004602052604090205460ff165b610d1b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161052d565b6006546001600160a01b038381169116148015610d5057506001600160a01b0383165f9081526004602052604090205460ff16155b15610d6d57600160075f828254610d679190611630565b90915550505b610d78838383610ec0565b15610d8d57610d88600a54610f78565b5f6007555b6001600160a01b0383165f90815260026020526040902054610daf9082610926565b6001600160a01b0384165f90815260026020908152604080832093909355600490529081205460ff1615610de35781610dee565b610dee8484846110e8565b6001600160a01b0384165f90815260026020526040902054909150610e139082610eb5565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e669085815260200190565b60405180910390a350505050565b5f8184841115610e975760405162461bcd60e51b815260040161052d919061145d565b505050900390565b5f6104fd8284611643565b5f6104fd828461165a565b5f6104fd8284611630565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff16158015610efa5750600654600160a81b900460ff165b8015610f0f5750600654600160a01b900460ff165b8015610f185750815b8015610f3c57506001600160a01b0386165f9081526004602052604090205460ff16155b8015610f5557506006546001600160a01b038681169116145b8015610f65575060095460075410155b8015610f6e5750805b9695505050505050565b6008805460ff19166001908117909155600e54600d54600c545f93610fb1936002936105f7939192610fab928391610eb5565b90610eb5565b90505f610fcd82610590600c5486610e9f90919063ffffffff16565b90505f610fda8483610926565b905047610fe682611212565b5f610ff14783610926565b90505f61101361100c600c548861092690919063ffffffff16565b8390610eaa565b90505f61102b600c5483610e9f90919063ffffffff16565b9050801561103d5761103d8682611362565b600d545f90611051906105f7856002610e9f565b90508015611092576018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611090573d5f803e3d5ffd5b505b4780156110d2576017546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110d0573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161561111157506014546104fd565b5f61111c8585611413565b111561120b575f61113e6111308686611413565b6013546105f7908690610eaa565b305f9081526002602052604090205490915061115a9082610eb5565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111aa9085815260200190565b60405180910390a35f600f541180156111cd5750600f546111cb8686611413565b115b156111f9576111f93061dead6111f4600f546105f760135489610eaa90919063ffffffff16565b610931565b6112038382610926565b9150506104fd565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061124557611245611679565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561129c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c0919061168d565b816001815181106112d3576112d3611679565b6001600160a01b0392831660209182029290920101526005546112f99130911684610803565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906113319085905f908690309042906004016116a8565b5f604051808303815f87803b158015611348575f80fd5b505af115801561135a573d5f803e3d5ffd5b505050505050565b60055461137a9030906001600160a01b031684610803565b60055460195460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156113e7573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061140c9190611717565b5050505050565b6006545f906001600160a01b03908116908316036114345750601154610426565b6006546001600160a01b03908116908416036114535750601054610426565b5060125492915050565b5f6020808352835180828501525f5b818110156114885785810183015185820160400152820161146c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114bc575f80fd5b50565b5f80604083850312156114d0575f80fd5b82356114db816114a8565b946020939093013593505050565b5f805f606084860312156114fb575f80fd5b8335611506816114a8565b92506020840135611516816114a8565b929592945050506040919091013590565b5f60208284031215611537575f80fd5b81356104fd816114a8565b5f805f60608486031215611554575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a031215611581575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f80604083850312156115c3575f80fd5b82356115ce816114a8565b915060208301356115de816114a8565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561042657610426611609565b8082018082111561042657610426611609565b808202811582820484141761042657610426611609565b5f8261167457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561169d575f80fd5b81516104fd816114a8565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116f65784516001600160a01b0316835293830193918301916001016116d1565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611729575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ed30c8b41ad3865a0b241c8d052a80e211050c1e554066fa98700b9e832acef64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061011e575f3560e01c8063893d20e81161009d578063cb7f97d711610062578063cb7f97d71461036a578063da0ebc6214610389578063dd62ed3e1461039e578063f2fde38b146103e2578063f8f3c5a914610401575f80fd5b8063893d20e8146102b257806395d89b41146102e25780639cc353511461030d578063a8aa1b311461032c578063a9059cbb1461034b575f80fd5b8063293230b8116100e3578063293230b8146101f25780632f54bf6e14610208578063313ce567146102355780635342acb41461025057806370a082311461027e575f80fd5b806306fdde0314610129578063095ea7b31461016d57806318160ddd1461019c5780632372f4fd146101be57806323b872dd146101d3575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600a8152690828aa48aa640a88a86960b31b60208201525b604051610164919061145d565b60405180910390f35b348015610178575f80fd5b5061018c6101873660046114bf565b610416565b6040519015158152602001610164565b3480156101a7575f80fd5b506101b061042c565b604051908152602001610164565b3480156101c9575f80fd5b506101b060155481565b3480156101de575f80fd5b5061018c6101ed3660046114e9565b61049c565b3480156101fd575f80fd5b50610206610504565b005b348015610213575f80fd5b5061018c610222366004611527565b5f546001600160a01b0391821691161490565b348015610240575f80fd5b5060405160098152602001610164565b34801561025b575f80fd5b5061018c61026a366004611527565b60046020525f908152604090205460ff1681565b348015610289575f80fd5b506101b0610298366004611527565b6001600160a01b03165f9081526002602052604090205490565b3480156102bd575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610164565b3480156102ed575f80fd5b5060408051808201909152600381526241455360e81b6020820152610157565b348015610318575f80fd5b50610206610327366004611542565b61054b565b348015610337575f80fd5b506006546102ca906001600160a01b031681565b348015610356575f80fd5b5061018c6103653660046114bf565b610687565b348015610375575f80fd5b5061020661038436600461156b565b610693565b348015610394575f80fd5b506101b060165481565b3480156103a9575f80fd5b506101b06103b83660046115b2565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156103ed575f80fd5b506102066103fc366004611527565b610787565b34801561040c575f80fd5b506101b060145481565b5f610422338484610803565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926104979290916104919190610926565b90610926565b905090565b5f6104a8848484610931565b6104f984336104f485604051806060016040528060288152602001611743602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610e74565b610803565b5060015b9392505050565b5f546001600160a01b031633146105365760405162461bcd60e51b815260040161052d906115e9565b60405180910390fd5b6006805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105745760405162461bcd60e51b815260040161052d906115e9565b5f61059661271061059086600154610e9f90919063ffffffff16565b90610eaa565b90505f6105b461271061059086600154610e9f90919063ffffffff16565b90505f6105d261271061059086600154610e9f90919063ffffffff16565b60148490556015839055601681905590505f6105fd6103e861059060056105f761042c565b90610e9f565b905080841015801561060f5750808310155b801561061b5750808210155b61067e5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161052d565b50505050505050565b5f610422338484610931565b5f546001600160a01b031633146106bc5760405162461bcd60e51b815260040161052d906115e9565b600c879055600d869055600f859055600e8490556010839055601182905560128190556013546106ed906001610eaa565b6010541115801561070d5750601354610707906001610eaa565b60115411155b80156107285750601354610722906001610eaa565b60125411155b61067e5760405162461bcd60e51b815260206004820152602a60248201527f62757954617820616e642073656c6c5461782063616e6e6f74206265206d6f7260448201526965207468616e2032302560b01b606482015260840161052d565b5f546001600160a01b031633146107b05760405162461bcd60e51b815260040161052d906115e9565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b0382166108c65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6104fd828461161d565b6001600160a01b0383166109955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b6001600160a01b0382166109f75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052d565b6001600160a01b0383165f90815260026020526040902054811115610a785760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161052d565b6001600160a01b0383165f9081526004602052604090205460ff16158015610ab857506001600160a01b0382165f9081526004602052604090205460ff16155b15610b0957600654600160a01b900460ff16610b095760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99d058dd1a5d985d195960821b604482015260640161052d565b6001600160a01b0383165f9081526004602052604090205460ff16158015610b4957506001600160a01b0382165f9081526004602052604090205460ff16155b8015610b6357506006546001600160a01b03838116911614155b8015610b7a57506001600160a01b03821661dead14155b15610bf2576016546001600160a01b0383165f90815260026020526040902054610ba49083610eb5565b1115610bf25760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161052d565b6006546001600160a01b03848116911614610c915760155481111580610c2f57506001600160a01b0383165f9081526004602052604090205460ff165b80610c5157506001600160a01b0382165f9081526004602052604090205460ff165b610c915760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161052d565b60145481111580610cb957506001600160a01b0383165f9081526004602052604090205460ff165b80610cdb57506001600160a01b0382165f9081526004602052604090205460ff165b610d1b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161052d565b6006546001600160a01b038381169116148015610d5057506001600160a01b0383165f9081526004602052604090205460ff16155b15610d6d57600160075f828254610d679190611630565b90915550505b610d78838383610ec0565b15610d8d57610d88600a54610f78565b5f6007555b6001600160a01b0383165f90815260026020526040902054610daf9082610926565b6001600160a01b0384165f90815260026020908152604080832093909355600490529081205460ff1615610de35781610dee565b610dee8484846110e8565b6001600160a01b0384165f90815260026020526040902054909150610e139082610eb5565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e669085815260200190565b60405180910390a350505050565b5f8184841115610e975760405162461bcd60e51b815260040161052d919061145d565b505050900390565b5f6104fd8284611643565b5f6104fd828461165a565b5f6104fd8284611630565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff16158015610efa5750600654600160a81b900460ff165b8015610f0f5750600654600160a01b900460ff165b8015610f185750815b8015610f3c57506001600160a01b0386165f9081526004602052604090205460ff16155b8015610f5557506006546001600160a01b038681169116145b8015610f65575060095460075410155b8015610f6e5750805b9695505050505050565b6008805460ff19166001908117909155600e54600d54600c545f93610fb1936002936105f7939192610fab928391610eb5565b90610eb5565b90505f610fcd82610590600c5486610e9f90919063ffffffff16565b90505f610fda8483610926565b905047610fe682611212565b5f610ff14783610926565b90505f61101361100c600c548861092690919063ffffffff16565b8390610eaa565b90505f61102b600c5483610e9f90919063ffffffff16565b9050801561103d5761103d8682611362565b600d545f90611051906105f7856002610e9f565b90508015611092576018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611090573d5f803e3d5ffd5b505b4780156110d2576017546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110d0573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161561111157506014546104fd565b5f61111c8585611413565b111561120b575f61113e6111308686611413565b6013546105f7908690610eaa565b305f9081526002602052604090205490915061115a9082610eb5565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111aa9085815260200190565b60405180910390a35f600f541180156111cd5750600f546111cb8686611413565b115b156111f9576111f93061dead6111f4600f546105f760135489610eaa90919063ffffffff16565b610931565b6112038382610926565b9150506104fd565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061124557611245611679565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561129c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c0919061168d565b816001815181106112d3576112d3611679565b6001600160a01b0392831660209182029290920101526005546112f99130911684610803565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906113319085905f908690309042906004016116a8565b5f604051808303815f87803b158015611348575f80fd5b505af115801561135a573d5f803e3d5ffd5b505050505050565b60055461137a9030906001600160a01b031684610803565b60055460195460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156113e7573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061140c9190611717565b5050505050565b6006545f906001600160a01b03908116908316036114345750601154610426565b6006546001600160a01b03908116908416036114535750601054610426565b5060125492915050565b5f6020808352835180828501525f5b818110156114885785810183015185820160400152820161146c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114bc575f80fd5b50565b5f80604083850312156114d0575f80fd5b82356114db816114a8565b946020939093013593505050565b5f805f606084860312156114fb575f80fd5b8335611506816114a8565b92506020840135611516816114a8565b929592945050506040919091013590565b5f60208284031215611537575f80fd5b81356104fd816114a8565b5f805f60608486031215611554575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a031215611581575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f80604083850312156115c3575f80fd5b82356115ce816114a8565b915060208301356115de816114a8565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561042657610426611609565b8082018082111561042657610426611609565b808202811582820484141761042657610426611609565b5f8261167457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561169d575f80fd5b81516104fd816114a8565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116f65784516001600160a01b0316835293830193918301916001016116d1565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611729575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ed30c8b41ad3865a0b241c8d052a80e211050c1e554066fa98700b9e832acef64736f6c63430008150033

Deployed Bytecode Sourcemap

4811:9991:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7197:67;;;;;;;;;;-1:-1:-1;7257:5:0;;;;;;;;;;;;-1:-1:-1;;;7257:5:0;;;;7197:67;;;;;;;:::i;:::-;;;;;;;;7966:133;;;;;;;;;;-1:-1:-1;7966:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7966:133:0;1023:187:1;8105:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;8105:132:0;1215:177:1;6173:65:0;;;;;;;;;;;;;;;;9222:309;;;;;;;;;;-1:-1:-1;9222:309:0;;;;;:::i;:::-;;:::i;7420:69::-;;;;;;;;;;;;;:::i;:::-;;3926:87;;;;;;;;;;-1:-1:-1;3926:87:0;;;;;:::i;:::-;3981:4;4006:5;-1:-1:-1;;;;;3995:16:0;;;4006:5;;3995:16;;3926:87;7347:67;;;;;;;;;;-1:-1:-1;7347:67:0;;5029:1;2252:36:1;;2240:2;2225:18;7347:67:0;2110:184:1;5226:50:0;;;;;;;;;;-1:-1:-1;5226:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7579:103;;;;;;;;;;-1:-1:-1;7579:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7662:18:0;7645:7;7662:18;;;:9;:18;;;;;;;7579:103;7495:78;;;;;;;;;;-1:-1:-1;7547:7:0;7565:5;-1:-1:-1;;;;;7565:5:0;7495:78;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;7495:78:0;2299:203:1;7270:71:0;;;;;;;;;;-1:-1:-1;7332:7:0;;;;;;;;;;;;-1:-1:-1;;;7332:7:0;;;;7270:71;;8658:558;;;;;;;;;;-1:-1:-1;8658:558:0;;;;;:::i;:::-;;:::i;5311:19::-;;;;;;;;;;-1:-1:-1;5311:19:0;;;;-1:-1:-1;;;;;5311:19:0;;;7688:139;;;;;;;;;;-1:-1:-1;7688:139:0;;;;;:::i;:::-;;:::i;9878:521::-;;;;;;;;;;-1:-1:-1;9878:521:0;;;;;:::i;:::-;;:::i;6245:63::-;;;;;;;;;;;;;;;;7833:127;;;;;;;;;;-1:-1:-1;7833:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7931:18:0;;;7914:7;7931:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7833:127;4019:111;;;;;;;;;;-1:-1:-1;4019:111:0;;;;;:::i;:::-;;:::i;6107:59::-;;;;;;;;;;;;;;;;7966:133;8041:4;8048:37;8057:10;8069:7;8078:6;8048:8;:37::i;:::-;-1:-1:-1;8093:4:0;7966:133;;;;;:::o;8105:132::-;7662:9;:18;;;;6058:42;8158:7;7662:18;;;;;8175:12;;8158:7;;8175:60;;7662:18;;8175:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8168:67;;8105:132;:::o;9222:309::-;9320:4;9337:36;9347:6;9355:9;9366:6;9337:9;:36::i;:::-;9384:117;9393:6;9401:10;9413:87;9449:6;9413:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9413:19:0;;;;;;:11;:19;;;;;;;;9433:10;9413:31;;;;;;;;;:87;:35;:87::i;:::-;9384:8;:117::i;:::-;-1:-1:-1;9519:4:0;9222:309;;;;;;:::o;7420:69::-;3981:4;4006:5;-1:-1:-1;;;;;4006:5:0;3893:10;3995:16;3877:38;;;;-1:-1:-1;;;3877:38:0;;;;;;;:::i;:::-;;;;;;;;;7464:16:::1;:23:::0;;-1:-1:-1;;;;7464:23:0::1;-1:-1:-1::0;;;7464:23:0::1;::::0;;7420:69::o;8658:558::-;3981:4;4006:5;-1:-1:-1;;;;;4006:5:0;3893:10;3995:16;3877:38;;;;-1:-1:-1;;;3877:38:0;;;;;;;:::i;:::-;8764:13:::1;8780:33;8807:5;8780:22;8797:4;8780:12;;:16;;:22;;;;:::i;:::-;:26:::0;::::1;:33::i;:::-;8764:49;;8815:19;8837:34;8865:5;8837:23;8854:5;8837:12;;:16;;:23;;;;:::i;:34::-;8815:56;;8873:17;8893:36;8923:5;8893:25;8910:7;8893:12;;:16;;:25;;;;:::i;:36::-;8940:11;:19:::0;;;8961:17:::1;:31:::0;;;8994:15:::1;:27:::0;;;8873:56;-1:-1:-1;;9048:30:0::1;9073:4;9048:20;9066:1;9048:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;9032:46;;9106:5;9097;:14;;:38;;;;;9130:5;9115:11;:20;;9097:38;:60;;;;;9152:5;9139:9;:18;;9097:60;9089:119;;;::::0;-1:-1:-1;;;9089:119:0;;4614:2:1;9089: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;;9089:119:0::1;4412:410:1::0;9089:119:0::1;8753:463;;;;8658:558:::0;;;:::o;7688:139::-;7766:4;7773:40;7783:10;7795:9;7806:6;7773:9;:40::i;9878:521::-;3981:4;4006:5;-1:-1:-1;;;;;4006:5:0;3893:10;3995:16;3877:38;;;;-1:-1:-1;;;3877:38:0;;;;;;;:::i;:::-;10068:11:::1;:24:::0;;;10094:18:::1;:31:::0;;;10127:7:::1;:15:::0;;;10144:12:::1;:27:::0;;;10173:6:::1;:15:::0;;;10190:7:::1;:15:::0;;;10207:11:::1;:20:::0;;;10256:11:::1;::::0;:18:::1;::::0;-1:-1:-1;10256:15:0::1;:18::i;:::-;10246:6;;:28;;:61;;;;-1:-1:-1::0;10289:11:0::1;::::0;:18:::1;::::0;10305:1:::1;10289:15;:18::i;:::-;10278:7;;:29;;10246:61;:98;;;;-1:-1:-1::0;10326:11:0::1;::::0;:18:::1;::::0;10342:1:::1;10326:15;:18::i;:::-;10311:11;;:33;;10246:98;10238:153;;;::::0;-1:-1:-1;;;10238:153:0;;5029:2:1;10238:153: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:40;5208:19;;10238:153:0::1;4827:406:1::0;4019:111:0;3981:4;4006:5;-1:-1:-1;;;;;4006:5:0;3893:10;3995:16;3877:38;;;;-1:-1:-1;;;3877:38:0;;;;;;;:::i;:::-;4085:5:::1;:11:::0;;-1:-1:-1;;;;;;4085:11:0::1;-1:-1:-1::0;;;;;4085:11:0;::::1;::::0;;::::1;::::0;;;4103:25:::1;::::0;2445:51:1;;;4103:25:0::1;::::0;2433:2:1;2418:18;4103:25:0::1;;;;;;;4019:111:::0;:::o;9537:335::-;-1:-1:-1;;;;;9630:19:0;;9622:68;;;;-1:-1:-1;;;9622:68:0;;5656:2:1;9622:68:0;;;5638:21:1;5695:2;5675:18;;;5668:30;5734:34;5714:18;;;5707:62;-1:-1:-1;;;5785:18:1;;;5778:34;5829:19;;9622:68:0;5454:400:1;9622:68:0;-1:-1:-1;;;;;9709:21:0;;9701:68;;;;-1:-1:-1;;;9701:68:0;;6061:2:1;9701:68:0;;;6043:21:1;6100:2;6080:18;;;6073:30;6139:34;6119:18;;;6112:62;-1:-1:-1;;;6190:18:1;;;6183:32;6232:19;;9701:68:0;5859:398:1;9701:68:0;-1:-1:-1;;;;;9780:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9832:32;;1361:25:1;;;9832:32:0;;1334:18:1;9832:32:0;;;;;;;9537:335;;;:::o;1554:98::-;1612:7;1639:5;1643:1;1639;:5;:::i;11244:1485::-;-1:-1:-1;;;;;11341:20:0;;11333:70;;;;-1:-1:-1;;;11333:70:0;;6729:2:1;11333:70:0;;;6711:21:1;6768:2;6748:18;;;6741:30;6807:34;6787:18;;;6780:62;-1:-1:-1;;;6858:18:1;;;6851:35;6903:19;;11333:70:0;6527:401:1;11333:70:0;-1:-1:-1;;;;;11422:23:0;;11414:71;;;;-1:-1:-1;;;11414:71:0;;7135:2:1;11414:71:0;;;7117:21:1;7174:2;7154:18;;;7147:30;7213:34;7193:18;;;7186:62;-1:-1:-1;;;7264:18:1;;;7257:33;7307:19;;11414:71:0;6933:399:1;11414:71:0;-1:-1:-1;;;;;7662:18:0;;7645:7;7662:18;;;:9;:18;;;;;;11504:6;:27;;11496:88;;;;-1:-1:-1;;;11496:88:0;;7539:2:1;11496:88:0;;;7521:21:1;7578:2;7558:18;;;7551:30;7617:34;7597:18;;;7590:62;-1:-1:-1;;;7668:18:1;;;7661:47;7725:19;;11496:88:0;7337:413:1;11496:88:0;-1:-1:-1;;;;;11599:25:0;;;;;;:17;:25;;;;;;;;11598:26;:59;;;;-1:-1:-1;;;;;;11629:28:0;;;;;;:17;:28;;;;;;;;11628:29;11598:59;11595:111;;;11667:16;;-1:-1:-1;;;11667:16:0;;;;11659:45;;;;-1:-1:-1;;;11659:45:0;;7957:2:1;11659:45:0;;;7939:21:1;7996:2;7976:18;;;7969:30;-1:-1:-1;;;8015:18:1;;;8008:46;8071:18;;11659:45:0;7755:340:1;11659:45:0;-1:-1:-1;;;;;11720:25:0;;;;;;:17;:25;;;;;;;;11719:26;:59;;;;-1:-1:-1;;;;;;11750:28:0;;;;;;:17;:28;;;;;;;;11749:29;11719:59;:89;;;;-1:-1:-1;11803:4:0;;-1:-1:-1;;;;;11782:26:0;;;11803:4;;11782:26;;11719:89;:119;;;;-1:-1:-1;;;;;;11812:26:0;;6058:42;11812:26;;11719:119;11716:232;;;11896:15;;-1:-1:-1;;;;;11859:20:0;;;;;;:9;:20;;;;;;:32;;11884:6;11859:24;:32::i;:::-;11858:53;;11850:96;;;;-1:-1:-1;;;11850:96:0;;8302:2:1;11850:96:0;;;8284:21:1;8341:2;8321:18;;;8314:30;8380:32;8360:18;;;8353:60;8430:18;;11850:96:0;8100:354:1;11850:96:0;11971:4;;-1:-1:-1;;;;;11961:14:0;;;11971:4;;11961:14;11958:139;;11995:17;;11985:6;:27;;:56;;;-1:-1:-1;;;;;;12016:25:0;;;;;;:17;:25;;;;;;;;11985:56;:88;;;-1:-1:-1;;;;;;12045:28:0;;;;;;:17;:28;;;;;;;;11985:88;11977:118;;;;-1:-1:-1;;;11977:118:0;;8661:2:1;11977:118:0;;;8643:21:1;8700:2;8680:18;;;8673:30;-1:-1:-1;;;8719:18:1;;;8712:47;8776:18;;11977:118:0;8459:341:1;11977:118:0;12125:11;;12115:6;:21;;:50;;;-1:-1:-1;;;;;;12140:25:0;;;;;;:17;:25;;;;;;;;12115:50;:82;;;-1:-1:-1;;;;;;12169:28:0;;;;;;:17;:28;;;;;;;;12115:82;12107:112;;;;-1:-1:-1;;;12107:112:0;;8661:2:1;12107:112:0;;;8643:21:1;8700:2;8680:18;;;8673:30;-1:-1:-1;;;8719:18:1;;;8712:47;8776:18;;12107:112:0;8459:341:1;12107:112:0;12247:4;;-1:-1:-1;;;;;12234:17:0;;;12247:4;;12234:17;:47;;;;-1:-1:-1;;;;;;12256:25:0;;;;;;:17;:25;;;;;;;;12255:26;12234:47;12231:77;;;12304:1;12283:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;12231:77:0;12321:43;12338:6;12346:9;12357:6;12321:16;:43::i;:::-;12318:103;;;12366:29;12381:13;;12366:14;:29::i;:::-;12417:1;12397:9;:22;12318:103;-1:-1:-1;;;;;12451:17:0;;;;;;:9;:17;;;;;;:29;;12473:6;12451:21;:29::i;:::-;-1:-1:-1;;;;;12431:17:0;;;;;;:9;:17;;;;;;;;:49;;;;12517:17;:25;;;;;;;;12516:26;:72;;12582:6;12516:72;;;12545:34;12553:6;12561:9;12572:6;12545:7;:34::i;:::-;-1:-1:-1;;;;;12622:20:0;;;;;;:9;:20;;;;;;12491:97;;-1:-1:-1;12622:40:0;;12491:97;12622:24;:40::i;:::-;-1:-1:-1;;;;;12599:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12678:43;;;;;;;;;;12706:14;1361:25:1;;1349:2;1334:18;;1215:177;12678:43:0;;;;;;;;11322:1407;11244:1485;;;:::o;1970:240::-;2090:7;2151:12;2143:6;;;;2135:29;;;;-1:-1:-1;;;2135:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2186:5:0;;;1970:240::o;1658:98::-;1716:7;1743:5;1747:1;1743;:5;:::i;1762:98::-;1820:7;1847:5;1851:1;1847;:5;:::i;1450:98::-;1508:7;1535:5;1539:1;1535;:5;:::i;8243:409::-;8386:14;;8461:13;;8451:4;8343;7662:18;;;:9;:18;;;;;;8493:8;;8343:4;;8376:24;;;;-1:-1:-1;8433:41:0;;8493:8;;8492:9;:24;;;;-1:-1:-1;8505:11:0;;-1:-1:-1;;;8505:11:0;;;;8492:24;:44;;;;-1:-1:-1;8520:16:0;;-1:-1:-1;;;8520:16:0;;;;8492:44;:56;;;;;8540:8;8492:56;:86;;;;-1:-1:-1;;;;;;8553:25:0;;;;;;:17;:25;;;;;;;;8552:26;8492:86;:107;;;;-1:-1:-1;8595:4:0;;-1:-1:-1;;;;;8582:17:0;;;8595:4;;8582:17;8492:107;:134;;;;;8616:10;;8603:9;;:23;;8492:134;:152;;;;;8630:14;8492:152;8485:159;8243:409;-1:-1:-1;;;;;;8243:409:0:o;13742:1057::-;5667:8;:15;;-1:-1:-1;;5667:15:0;5678:4;5667:15;;;;;;13884:12:::1;::::0;13860:18:::1;::::0;13837:11:::1;::::0;5667:8;;13836:69:::1;::::0;13903:1:::1;::::0;13837:60:::1;::::0;13884:12;;13837:42:::1;::::0;;;:15:::1;:18::i;:::-;:22:::0;::::1;:42::i;13836:69::-;13813:92;;13916:32;13951:41;13979:12;13951:23;13962:11;;13951:6;:10;;:23;;;;:::i;:41::-;13916:76:::0;-1:-1:-1;14003:14:0::1;14020:36;:6:::0;13916:76;14020:10:::1;:36::i;:::-;14003:53:::0;-1:-1:-1;14092:21:0::1;14124:24;14003:53:::0;14124:16:::1;:24::i;:::-;14159:20;14182:41;:21;14208:14:::0;14182:25:::1;:41::i;:::-;14159:64;;14234:19;14255:47;14272:29;14289:11;;14272:12;:16;;:29;;;;:::i;:::-;14255:12:::0;;:16:::1;:47::i;:::-;14234:68;;14313:29;14345:28;14361:11;;14345;:15;;:28;;;;:::i;:::-;14313:60:::0;-1:-1:-1;14387:34:0;;14384:103:::1;;14423:61;14436:24;14462:21;14423:12;:61::i;:::-;14543:18;::::0;14497:20:::1;::::0;14520:42:::1;::::0;:18:::1;:11:::0;14536:1:::1;14520:15;:18::i;:42::-;14497:65:::0;-1:-1:-1;14576:16:0;;14573:68:::1;;14602:13;::::0;14594:45:::1;::::0;-1:-1:-1;;;;;14602:13:0;;::::1;::::0;14594:45;::::1;;;::::0;14626:12;;14602:13:::1;14594:45:::0;14602:13;14594:45;14626:12;14602:13;14594:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14573:68;14677:21;14712:28:::0;;14709:83:::1;;14750:13;::::0;14742:48:::1;::::0;-1:-1:-1;;;;;14750:13:0;;::::1;::::0;14742:48;::::1;;;::::0;14774:15;;14750:13:::1;14742:48:::0;14750:13;14742:48;14774:15;14750:13;14742:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14709:83;-1:-1:-1::0;;5687:8:0;:16;;-1:-1:-1;;5687:16:0;;;-1:-1:-1;;;;;;;;13742:1057:0:o;10405:655::-;-1:-1:-1;;;;;10515:28:0;;10491:7;10515:28;;;:17;:28;;;;;;;;10511:55;;;-1:-1:-1;10553:11:0;;10546:18;;10511:55;10612:1;10579:30;10591:6;10599:9;10579:11;:30::i;:::-;:34;10576:462;;;10625:17;10645:59;10673:30;10685:6;10693:9;10673:11;:30::i;:::-;10656:11;;10645:23;;:6;;:10;:23::i;:59::-;10760:4;10742:24;;;;:9;:24;;;;;;10625:79;;-1:-1:-1;10742:39:0;;10625:79;10742:28;:39::i;:::-;10733:4;10715:24;;;;:9;:24;;;;;;;:66;;;;10797:42;;-1:-1:-1;;;;;10797:42:0;;;;;;;10829:9;1361:25:1;;1349:2;1334:18;;1215:177;10797:42:0;;;;;;;;10871:1;10853:7;;:20;:64;;;;;10910:7;;10877:30;10889:6;10897:9;10877:11;:30::i;:::-;:40;10853:64;10850:148;;;10919:77;10937:4;6058:42;10959:36;10987:7;;10959:23;10970:11;;10959:6;:10;;:23;;;;:::i;:36::-;10919:9;:77::i;:::-;11015:21;:6;11026:9;11015:10;:21::i;:::-;11008:28;;;;;10576:462;-1:-1:-1;11046:6:0;10405:655;-1:-1:-1;;10405:655:0:o;13302:434::-;13392:16;;;13406:1;13392:16;;;;;;;;13368:21;;13392:16;;;;;;;;;;-1:-1:-1;13392:16:0;13368:40;;13437:4;13419;13424:1;13419:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13419:23:0;;;:7;;;;;;;;;;:23;;;;13463:6;;:13;;;-1:-1:-1;;;13463:13:0;;;;:6;;;;;:11;;:13;;;;;13419:7;;13463:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13453:4;13458:1;13453:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13453:23:0;;;:7;;;;;;;;;:23;13519:6;;13487:53;;13504:4;;13519:6;13528:11;13487:8;:53::i;:::-;13551:6;;:177;;-1:-1:-1;;;13551:177:0;;-1:-1:-1;;;;;13551:6:0;;;;:57;;:177;;13623:11;;13551:6;;13665:4;;13692;;13712:15;;13551:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13357:379;13302:434;:::o;12958:338::-;13071:6;;13039:53;;13056:4;;-1:-1:-1;;;;;13071:6:0;13080:11;13039:8;:53::i;:::-;13103:6;;13244:13;;13103:185;;-1:-1:-1;;;13103:185:0;;13166:4;13103:185;;;11176:34:1;11226:18;;;11219:34;;;13103:6:0;11269:18:1;;;11262:34;;;11312:18;;;11305:34;-1:-1:-1;;;;;13244:13:0;;;11355:19:1;;;11348:44;13272:15:0;11408:19:1;;;11401:35;13103:6:0;;;:22;;13133:9;;11110:19:1;;13103:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12958:338;;:::o;12735:217::-;12850:4;;12814:7;;-1:-1:-1;;;;;12850:4:0;;;12837:17;;;;12834:38;;-1:-1:-1;12863:7:0;;12856:14;;12834:38;12895:4;;-1:-1:-1;;;;;12895:4:0;;;12885:14;;;;12882:34;;-1:-1:-1;12908:6:0;;12901:13;;12882:34;-1:-1:-1;12933:11:0;;12735:217;;;;:::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;2507:316::-;2584:6;2592;2600;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;-1:-1:-1;;2692:23:1;;;2762:2;2747:18;;2734:32;;-1:-1:-1;2813:2:1;2798:18;;;2785:32;;2507:316;-1:-1:-1;2507:316:1:o;2828:592::-;2941:6;2949;2957;2965;2973;2981;2989;3042:3;3030:9;3021:7;3017:23;3013:33;3010:53;;;3059:1;3056;3049:12;3010:53;-1:-1:-1;;3082:23:1;;;3152:2;3137:18;;3124:32;;-1:-1:-1;3203:2:1;3188:18;;3175:32;;3254:2;3239:18;;3226:32;;-1:-1:-1;3305:3:1;3290:19;;3277:33;;-1:-1:-1;3357:3:1;3342:19;;3329:33;;-1:-1:-1;3409:3:1;3394:19;3381:33;;-1:-1:-1;2828:592:1;-1:-1:-1;2828: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;6262:127::-;6323:10;6318:3;6314:20;6311:1;6304:31;6354:4;6351:1;6344:15;6378:4;6375:1;6368:15;6394:128;6461:9;;;6482:11;;;6479:37;;;6496:18;;:::i;8805:125::-;8870:9;;;8891:10;;;8888:36;;;8904:18;;:::i;8935:168::-;9008:9;;;9039;;9056:15;;;9050:22;;9036:37;9026:71;;9077:18;;:::i;9108:217::-;9148:1;9174;9164:132;;9218:10;9213:3;9209:20;9206:1;9199:31;9253:4;9250:1;9243:15;9281:4;9278:1;9271:15;9164:132;-1:-1:-1;9310:9:1;;9108:217::o;9462:127::-;9523:10;9518:3;9514:20;9511:1;9504:31;9554:4;9551:1;9544:15;9578:4;9575:1;9568:15;9594:251;9664:6;9717:2;9705:9;9696:7;9692:23;9688:32;9685:52;;;9733:1;9730;9723:12;9685:52;9765:9;9759:16;9784:31;9809:5;9784:31;:::i;9850:980::-;10112:4;10160:3;10149:9;10145:19;10191:6;10180:9;10173:25;10217:2;10255:6;10250:2;10239:9;10235:18;10228:34;10298:3;10293:2;10282:9;10278:18;10271:31;10322:6;10357;10351:13;10388:6;10380;10373:22;10426:3;10415:9;10411:19;10404:26;;10465:2;10457:6;10453:15;10439:29;;10486:1;10496:195;10510:6;10507:1;10504:13;10496:195;;;10575:13;;-1:-1:-1;;;;;10571:39:1;10559:52;;10666:15;;;;10631:12;;;;10607:1;10525:9;10496:195;;;-1:-1:-1;;;;;;;10747:32:1;;;;10742:2;10727:18;;10720:60;-1:-1:-1;;;10811:3:1;10796:19;10789:35;10708:3;9850:980;-1:-1:-1;;;9850:980:1:o;11447:306::-;11535:6;11543;11551;11604:2;11592:9;11583:7;11579:23;11575:32;11572:52;;;11620:1;11617;11610:12;11572:52;11649:9;11643:16;11633:26;;11699:2;11688:9;11684:18;11678:25;11668:35;;11743:2;11732:9;11728:18;11722:25;11712:35;;11447:306;;;;;:::o

Swarm Source

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