ETH Price: $2,976.52 (+3.10%)
Gas: 10 Gwei

Token

AICREW (AICR)
 

Overview

Max Total Supply

1,000,000,000 AICR

Holders

89

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Rollbit: ERC-20 Hot Wallet
Balance
3,909,841.145550808840567779 AICR

Value
$0.00
0xef8801eaf234ff82801821ffe2d78d60a0237f97
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:
AICREW

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-06
*/

/*
All essential tools for any imaginable creation, plus opportunities for share-holders to cash in on the actions!

Web: https://aicrew.world
App: https://ai.aicrew.world
Tg: https://t.me/ai_crew_official
X: https://twitter.com/ai_crew_world
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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

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);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

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 AICREW is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'AICREW';
    string private constant _symbol = unicode'AICR';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 10 ** 9 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IUniswapRouter router;
    address public pair;
    bool private tradeActive = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 1 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0; 
    uint256 private developmentFee = 100; 
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500; 
    uint256 private sellFee = 2500; 
    uint256 private transferFee = 2500;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x2234E23EBfCEA5A143b119AcEE101ea1bdA693a3;
    address internal marketing_receiver = 0x2234E23EBfCEA5A143b119AcEE101ea1bdA693a3; 
    address internal liquidity_receiver = 0x2234E23EBfCEA5A143b119AcEE101ea1bdA693a3;
    uint256 public maxTxAmt = ( _totalSupply * 250 ) / 10000;
    uint256 public maxSellAmt = ( _totalSupply * 250 ) / 10000;
    uint256 public maxWallet = ( _totalSupply * 250 ) / 10000;

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

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradeActive = 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 shouldSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradeActive && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

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

    function setFee(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 setMax(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);
        maxTxAmt = newTx; maxSellAmt = 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 rescue(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

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

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

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

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradeActive, "tradeActive");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxWallet, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= maxSellAmt || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxAmt || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        if (!tradeActive || !isFeeExempt[sender]) { _balances[sender] = _balances[sender].sub(amount); }
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmt","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescue","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":"setFee","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":"setMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapSettings","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"}]

6080604052620000126012600a620004bd565b6200002290633b9aca00620004d4565b60018181556006805461ffff60a01b1916600160a81b1790556009819055620186a0916200005091620004d4565b6200005c9190620004ee565b600a55620186a06001546001620000749190620004d4565b620000809190620004ee565b600b555f600c819055600d8190556064600e55600f556109c460108190556011819055601255612710601381905560148054732234e23ebfcea5a143b119acee101ea1bda693a36001600160a01b0319918216811790925560158054821683179055601680549091169091179055600154620000fe9060fa620004d4565b6200010a9190620004ee565b60175561271060015460fa620001219190620004d4565b6200012d9190620004ee565b60185561271060015460fa620001449190620004d4565b620001509190620004ee565b6019553480156200015f575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ea91906200050e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025c91906200050e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cd91906200050e565b600580546001600160a01b038581166001600160a01b031992831617909255600680548484169216919091179055305f908152600460209081526040808320805460ff19908116600190811790925560165486168552828520805482168317905560155486168552828520805482168317905560145490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000536565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200040257815f1904821115620003e657620003e6620003ae565b80851615620003f457918102915b93841c9390800290620003c7565b509250929050565b5f826200041a57506001620004b7565b816200042857505f620004b7565b81600181146200044157600281146200044c576200046c565b6001915050620004b7565b60ff841115620004605762000460620003ae565b50506001821b620004b7565b5060208310610133831016604e8410600b841016171562000491575081810a620004b7565b6200049d8383620003c2565b805f1904821115620004b357620004b3620003ae565b0290505b92915050565b5f620004cd60ff8416836200040a565b9392505050565b8082028115828204841417620004b757620004b7620003ae565b5f826200050957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200051f575f80fd5b81516001600160a01b0381168114620004cd575f80fd5b61194c80620005445f395ff3fe608060405260043610610134575f3560e01c806370a08231116100a8578063a9059cbb1161006d578063a9059cbb1461039c578063aeb5b9b5146103bb578063cf26efb3146103da578063dd62ed3e146103ef578063f2fde38b14610433578063f8b45b0514610452575f80fd5b806370a08231146102ce5780637a4e4ecf14610302578063893d20e81461032157806395d89b4114610351578063a8aa1b311461037d575f80fd5b8063293230b8116100f9578063293230b8146102105780632f54bf6e14610224578063313ce5671461025157806333cdacd91461026c5780633f4218e0146102815780636f609852146102af575f80fd5b806306fdde031461013f578063095ea7b31461017f57806316b176a6146101ae57806318160ddd146101cf57806323b872dd146101f1575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5060408051808201909152600681526541494352455760d01b60208201525b60405161017691906115d3565b60405180910390f35b34801561018a575f80fd5b5061019e610199366004611635565b610467565b6040519015158152602001610176565b3480156101b9575f80fd5b506101cd6101c836600461165f565b61047d565b005b3480156101da575f80fd5b506101e36104f1565b604051908152602001610176565b3480156101fc575f80fd5b5061019e61020b366004611688565b610561565b34801561021b575f80fd5b506101cd6105c9565b34801561022f575f80fd5b5061019e61023e3660046116c6565b5f546001600160a01b0391821691161490565b34801561025c575f80fd5b5060405160128152602001610176565b348015610277575f80fd5b506101e360185481565b34801561028c575f80fd5b5061019e61029b3660046116c6565b60046020525f908152604090205460ff1681565b3480156102ba575f80fd5b506101cd6102c936600461165f565b610607565b3480156102d9575f80fd5b506101e36102e83660046116c6565b6001600160a01b03165f9081526002602052604090205490565b34801561030d575f80fd5b506101cd61031c366004611635565b61073d565b34801561032c575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610176565b34801561035c575f80fd5b5060408051808201909152600481526320a4a1a960e11b6020820152610169565b348015610388575f80fd5b50600654610339906001600160a01b031681565b3480156103a7575f80fd5b5061019e6103b6366004611635565b610857565b3480156103c6575f80fd5b506101cd6103d53660046116e1565b610863565b3480156103e5575f80fd5b506101e360175481565b3480156103fa575f80fd5b506101e3610409366004611728565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561043e575f80fd5b506101cd61044d3660046116c6565b610937565b34801561045d575f80fd5b506101e360195481565b5f6104733384846109b3565b5060015b92915050565b5f546001600160a01b031633146104af5760405162461bcd60e51b81526004016104a69061175f565b60405180910390fd5b60098390556001546104d090620186a0906104ca9085610ad6565b90610ae1565b600a556001546104e990620186a0906104ca9084610ad6565b600b55505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261055c9290916105569190610aec565b90610aec565b905090565b5f61056d848484610af7565b6105be84336105b9856040518060600160405280602881526020016118ef602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610fe4565b6109b3565b5060015b9392505050565b5f546001600160a01b031633146105f25760405162461bcd60e51b81526004016104a69061175f565b6006805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106305760405162461bcd60e51b81526004016104a69061175f565b5f61064c6127106104ca86600154610ad690919063ffffffff16565b90505f61066a6127106104ca86600154610ad690919063ffffffff16565b90505f6106886127106104ca86600154610ad690919063ffffffff16565b60178490556018839055601981905590505f6106b36103e86104ca60056106ad6104f1565b90610ad6565b90508084101580156106c55750808310155b80156106d15750808210155b6107345760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104a6565b50505050505050565b5f546001600160a01b031633146107665760405162461bcd60e51b81526004016104a69061175f565b6040516370a0823160e01b81523060048201525f906107db906064906104ca9085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156107b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061177f565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af115801561082d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108519190611796565b50505050565b5f610473338484610af7565b5f546001600160a01b0316331461088c5760405162461bcd60e51b81526004016104a69061175f565b600c879055600d869055600f859055600e84905560108390556011829055601281905560135483118015906108c5575060135460115411155b80156108d5575060135460125411155b6107345760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b60648201526084016104a6565b5f546001600160a01b031633146109605760405162461bcd60e51b81526004016104a69061175f565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610a155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104a6565b6001600160a01b038216610a765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104a6565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105c282846117c9565b5f6105c282846117e0565b5f6105c282846117ff565b6001600160a01b038316610b5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104a6565b6001600160a01b038216610bbd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104a6565b6001600160a01b0383165f9081526004602052604090205460ff16158015610bfd57506001600160a01b0382165f9081526004602052604090205460ff16155b15610c4957600654600160a01b900460ff16610c495760405162461bcd60e51b815260206004820152600b60248201526a747261646541637469766560a81b60448201526064016104a6565b6001600160a01b0383165f9081526004602052604090205460ff16158015610c8957506001600160a01b0382165f9081526004602052604090205460ff16155b8015610ca357506006546001600160a01b03838116911614155b8015610cba57506001600160a01b03821661dead14155b15610d32576019546001600160a01b0383165f90815260026020526040902054610ce4908361100f565b1115610d325760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104a6565b6006546001600160a01b03848116911614610dd15760185481111580610d6f57506001600160a01b0383165f9081526004602052604090205460ff165b80610d9157506001600160a01b0382165f9081526004602052604090205460ff165b610dd15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104a6565b60175481111580610df957506001600160a01b0383165f9081526004602052604090205460ff165b80610e1b57506001600160a01b0382165f9081526004602052604090205460ff165b610e5b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104a6565b6006546001600160a01b038381169116148015610e9057506001600160a01b0383165f9081526004602052604090205460ff16155b15610ead57600160075f828254610ea79190611812565b90915550505b610eb883838361101a565b15610ecd57610ec8600a546110d2565b5f6007555b600654600160a01b900460ff161580610efe57506001600160a01b0383165f9081526004602052604090205460ff16155b15610f3e576001600160a01b0383165f90815260026020526040902054610f259082610aec565b6001600160a01b0384165f908152600260205260409020555b5f610f498484611242565b610f535781610f5e565b610f5e848484611286565b6001600160a01b0384165f90815260026020526040902054909150610f83908261100f565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fd69085815260200190565b60405180910390a350505050565b5f81848411156110075760405162461bcd60e51b81526004016104a691906115d3565b505050900390565b5f6105c28284611812565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff161580156110545750600654600160a81b900460ff165b80156110695750600654600160a01b900460ff165b80156110725750815b801561109657506001600160a01b0386165f9081526004602052604090205460ff16155b80156110af57506006546001600160a01b038681169116145b80156110bf575060095460075410155b80156110c85750805b9695505050505050565b6008805460ff19166001908117909155600e54600d54600c545f9361110b936002936106ad93919261110592839161100f565b9061100f565b90505f611127826104ca600c5486610ad690919063ffffffff16565b90505f6111348483610aec565b90504761114082611388565b5f61114b4783610aec565b90505f61116d611166600c5488610aec90919063ffffffff16565b8390610ae1565b90505f611185600c5483610ad690919063ffffffff16565b905080156111975761119786826114d8565b600d545f906111ab906106ad856002610ad6565b905080156111ec576015546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ea573d5f803e3d5ffd5b505b47801561122c576014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561122a573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156105c25750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806112928585611589565b1115611381575f6112b46112a68686611589565b6013546106ad908690610ae1565b305f908152600260205260409020549091506112d0908261100f565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113209085815260200190565b60405180910390a35f600f541180156113435750600f546113418686611589565b115b1561136f5761136f3061dead61136a600f546106ad60135489610ae190919063ffffffff16565b610af7565b6113798382610aec565b9150506105c2565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113bb576113bb611825565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611412573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114369190611839565b8160018151811061144957611449611825565b6001600160a01b03928316602091820292909201015260055461146f91309116846109b3565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906114a79085905f90869030904290600401611854565b5f604051808303815f87803b1580156114be575f80fd5b505af11580156114d0573d5f803e3d5ffd5b505050505050565b6005546114f09030906001600160a01b0316846109b3565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561155d573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061158291906118c3565b5050505050565b6006545f906001600160a01b03908116908316036115aa5750601154610477565b6006546001600160a01b03908116908416036115c95750601054610477565b5060125492915050565b5f6020808352835180828501525f5b818110156115fe578581018301518582016040015282016115e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611632575f80fd5b50565b5f8060408385031215611646575f80fd5b82356116518161161e565b946020939093013593505050565b5f805f60608486031215611671575f80fd5b505081359360208301359350604090920135919050565b5f805f6060848603121561169a575f80fd5b83356116a58161161e565b925060208401356116b58161161e565b929592945050506040919091013590565b5f602082840312156116d6575f80fd5b81356105c28161161e565b5f805f805f805f60e0888a0312156116f7575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611739575f80fd5b82356117448161161e565b915060208301356117548161161e565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f6020828403121561178f575f80fd5b5051919050565b5f602082840312156117a6575f80fd5b815180151581146105c2575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610477576104776117b5565b5f826117fa57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610477576104776117b5565b80820180821115610477576104776117b5565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611849575f80fd5b81516105c28161161e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118a25784516001600160a01b03168352938301939183019160010161187d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156118d5575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a87c0f5b4e709f42a63dce0e40fea42ad518f091b7ebf04fae6f86dce8b51dec64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610134575f3560e01c806370a08231116100a8578063a9059cbb1161006d578063a9059cbb1461039c578063aeb5b9b5146103bb578063cf26efb3146103da578063dd62ed3e146103ef578063f2fde38b14610433578063f8b45b0514610452575f80fd5b806370a08231146102ce5780637a4e4ecf14610302578063893d20e81461032157806395d89b4114610351578063a8aa1b311461037d575f80fd5b8063293230b8116100f9578063293230b8146102105780632f54bf6e14610224578063313ce5671461025157806333cdacd91461026c5780633f4218e0146102815780636f609852146102af575f80fd5b806306fdde031461013f578063095ea7b31461017f57806316b176a6146101ae57806318160ddd146101cf57806323b872dd146101f1575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5060408051808201909152600681526541494352455760d01b60208201525b60405161017691906115d3565b60405180910390f35b34801561018a575f80fd5b5061019e610199366004611635565b610467565b6040519015158152602001610176565b3480156101b9575f80fd5b506101cd6101c836600461165f565b61047d565b005b3480156101da575f80fd5b506101e36104f1565b604051908152602001610176565b3480156101fc575f80fd5b5061019e61020b366004611688565b610561565b34801561021b575f80fd5b506101cd6105c9565b34801561022f575f80fd5b5061019e61023e3660046116c6565b5f546001600160a01b0391821691161490565b34801561025c575f80fd5b5060405160128152602001610176565b348015610277575f80fd5b506101e360185481565b34801561028c575f80fd5b5061019e61029b3660046116c6565b60046020525f908152604090205460ff1681565b3480156102ba575f80fd5b506101cd6102c936600461165f565b610607565b3480156102d9575f80fd5b506101e36102e83660046116c6565b6001600160a01b03165f9081526002602052604090205490565b34801561030d575f80fd5b506101cd61031c366004611635565b61073d565b34801561032c575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610176565b34801561035c575f80fd5b5060408051808201909152600481526320a4a1a960e11b6020820152610169565b348015610388575f80fd5b50600654610339906001600160a01b031681565b3480156103a7575f80fd5b5061019e6103b6366004611635565b610857565b3480156103c6575f80fd5b506101cd6103d53660046116e1565b610863565b3480156103e5575f80fd5b506101e360175481565b3480156103fa575f80fd5b506101e3610409366004611728565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561043e575f80fd5b506101cd61044d3660046116c6565b610937565b34801561045d575f80fd5b506101e360195481565b5f6104733384846109b3565b5060015b92915050565b5f546001600160a01b031633146104af5760405162461bcd60e51b81526004016104a69061175f565b60405180910390fd5b60098390556001546104d090620186a0906104ca9085610ad6565b90610ae1565b600a556001546104e990620186a0906104ca9084610ad6565b600b55505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261055c9290916105569190610aec565b90610aec565b905090565b5f61056d848484610af7565b6105be84336105b9856040518060600160405280602881526020016118ef602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610fe4565b6109b3565b5060015b9392505050565b5f546001600160a01b031633146105f25760405162461bcd60e51b81526004016104a69061175f565b6006805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146106305760405162461bcd60e51b81526004016104a69061175f565b5f61064c6127106104ca86600154610ad690919063ffffffff16565b90505f61066a6127106104ca86600154610ad690919063ffffffff16565b90505f6106886127106104ca86600154610ad690919063ffffffff16565b60178490556018839055601981905590505f6106b36103e86104ca60056106ad6104f1565b90610ad6565b90508084101580156106c55750808310155b80156106d15750808210155b6107345760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104a6565b50505050505050565b5f546001600160a01b031633146107665760405162461bcd60e51b81526004016104a69061175f565b6040516370a0823160e01b81523060048201525f906107db906064906104ca9085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156107b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061177f565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af115801561082d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108519190611796565b50505050565b5f610473338484610af7565b5f546001600160a01b0316331461088c5760405162461bcd60e51b81526004016104a69061175f565b600c879055600d869055600f859055600e84905560108390556011829055601281905560135483118015906108c5575060135460115411155b80156108d5575060135460125411155b6107345760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b60648201526084016104a6565b5f546001600160a01b031633146109605760405162461bcd60e51b81526004016104a69061175f565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610a155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104a6565b6001600160a01b038216610a765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104a6565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105c282846117c9565b5f6105c282846117e0565b5f6105c282846117ff565b6001600160a01b038316610b5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104a6565b6001600160a01b038216610bbd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104a6565b6001600160a01b0383165f9081526004602052604090205460ff16158015610bfd57506001600160a01b0382165f9081526004602052604090205460ff16155b15610c4957600654600160a01b900460ff16610c495760405162461bcd60e51b815260206004820152600b60248201526a747261646541637469766560a81b60448201526064016104a6565b6001600160a01b0383165f9081526004602052604090205460ff16158015610c8957506001600160a01b0382165f9081526004602052604090205460ff16155b8015610ca357506006546001600160a01b03838116911614155b8015610cba57506001600160a01b03821661dead14155b15610d32576019546001600160a01b0383165f90815260026020526040902054610ce4908361100f565b1115610d325760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104a6565b6006546001600160a01b03848116911614610dd15760185481111580610d6f57506001600160a01b0383165f9081526004602052604090205460ff165b80610d9157506001600160a01b0382165f9081526004602052604090205460ff165b610dd15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104a6565b60175481111580610df957506001600160a01b0383165f9081526004602052604090205460ff165b80610e1b57506001600160a01b0382165f9081526004602052604090205460ff165b610e5b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104a6565b6006546001600160a01b038381169116148015610e9057506001600160a01b0383165f9081526004602052604090205460ff16155b15610ead57600160075f828254610ea79190611812565b90915550505b610eb883838361101a565b15610ecd57610ec8600a546110d2565b5f6007555b600654600160a01b900460ff161580610efe57506001600160a01b0383165f9081526004602052604090205460ff16155b15610f3e576001600160a01b0383165f90815260026020526040902054610f259082610aec565b6001600160a01b0384165f908152600260205260409020555b5f610f498484611242565b610f535781610f5e565b610f5e848484611286565b6001600160a01b0384165f90815260026020526040902054909150610f83908261100f565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fd69085815260200190565b60405180910390a350505050565b5f81848411156110075760405162461bcd60e51b81526004016104a691906115d3565b505050900390565b5f6105c28284611812565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff161580156110545750600654600160a81b900460ff165b80156110695750600654600160a01b900460ff165b80156110725750815b801561109657506001600160a01b0386165f9081526004602052604090205460ff16155b80156110af57506006546001600160a01b038681169116145b80156110bf575060095460075410155b80156110c85750805b9695505050505050565b6008805460ff19166001908117909155600e54600d54600c545f9361110b936002936106ad93919261110592839161100f565b9061100f565b90505f611127826104ca600c5486610ad690919063ffffffff16565b90505f6111348483610aec565b90504761114082611388565b5f61114b4783610aec565b90505f61116d611166600c5488610aec90919063ffffffff16565b8390610ae1565b90505f611185600c5483610ad690919063ffffffff16565b905080156111975761119786826114d8565b600d545f906111ab906106ad856002610ad6565b905080156111ec576015546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ea573d5f803e3d5ffd5b505b47801561122c576014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561122a573d5f803e3d5ffd5b505b50506008805460ff191690555050505050505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156105c25750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806112928585611589565b1115611381575f6112b46112a68686611589565b6013546106ad908690610ae1565b305f908152600260205260409020549091506112d0908261100f565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113209085815260200190565b60405180910390a35f600f541180156113435750600f546113418686611589565b115b1561136f5761136f3061dead61136a600f546106ad60135489610ae190919063ffffffff16565b610af7565b6113798382610aec565b9150506105c2565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113bb576113bb611825565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611412573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114369190611839565b8160018151811061144957611449611825565b6001600160a01b03928316602091820292909201015260055461146f91309116846109b3565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906114a79085905f90869030904290600401611854565b5f604051808303815f87803b1580156114be575f80fd5b505af11580156114d0573d5f803e3d5ffd5b505050505050565b6005546114f09030906001600160a01b0316846109b3565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561155d573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061158291906118c3565b5050505050565b6006545f906001600160a01b03908116908316036115aa5750601154610477565b6006546001600160a01b03908116908416036115c95750601054610477565b5060125492915050565b5f6020808352835180828501525f5b818110156115fe578581018301518582016040015282016115e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611632575f80fd5b50565b5f8060408385031215611646575f80fd5b82356116518161161e565b946020939093013593505050565b5f805f60608486031215611671575f80fd5b505081359360208301359350604090920135919050565b5f805f6060848603121561169a575f80fd5b83356116a58161161e565b925060208401356116b58161161e565b929592945050506040919091013590565b5f602082840312156116d6575f80fd5b81356105c28161161e565b5f805f805f805f60e0888a0312156116f7575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611739575f80fd5b82356117448161161e565b915060208301356117548161161e565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f6020828403121561178f575f80fd5b5051919050565b5f602082840312156117a6575f80fd5b815180151581146105c2575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610477576104776117b5565b5f826117fa57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610477576104776117b5565b80820180821115610477576104776117b5565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611849575f80fd5b81516105c28161161e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118a25784516001600160a01b03168352938301939183019160010161187d565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156118d5575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a87c0f5b4e709f42a63dce0e40fea42ad518f091b7ebf04fae6f86dce8b51dec64736f6c63430008150033

Deployed Bytecode Sourcemap

4937:10310:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7340:67;;;;;;;;;;-1:-1:-1;7400:5:0;;;;;;;;;;;;-1:-1:-1;;;7400:5:0;;;;7340:67;;;;;;;:::i;:::-;;;;;;;;8104:133;;;;;;;;;;-1:-1:-1;8104:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8104:133:0;1023:187:1;8783:311:0;;;;;;;;;;-1:-1:-1;8783:311:0;;;;;:::i;:::-;;:::i;:::-;;8243:132;;;;;;;;;;;;;:::i;:::-;;;1682:25:1;;;1670:2;1655:18;8243:132:0;1536:177:1;14592:309:0;;;;;;;;;;-1:-1:-1;14592:309:0;;;;;:::i;:::-;;:::i;7563:64::-;;;;;;;;;;;;;:::i;502:87::-;;;;;;;;;;-1:-1:-1;502:87:0;;;;;:::i;:::-;557:4;582:5;-1:-1:-1;;;;;571:16:0;;;582:5;;571:16;;502:87;7490:67;;;;;;;;;;-1:-1:-1;7490:67:0;;5148:2;2573:36:1;;2561:2;2546:18;7490:67:0;2431:184:1;6543:58:0;;;;;;;;;;;;;;;;5343:44;;;;;;;;;;-1:-1:-1;5343:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9594:528;;;;;;;;;;-1:-1:-1;9594:528:0;;;;;:::i;:::-;;:::i;7717:103::-;;;;;;;;;;-1:-1:-1;7717:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7800:18:0;7783:7;7800:18;;;:9;:18;;;;;;;7717:103;10130:237;;;;;;;;;;-1:-1:-1;10130:237:0;;;;;:::i;:::-;;:::i;7633:78::-;;;;;;;;;;-1:-1:-1;7685:7:0;7703:5;-1:-1:-1;;;;;7703:5:0;7633:78;;;-1:-1:-1;;;;;2784:32:1;;;2766:51;;2754:2;2739:18;7633:78:0;2620:203:1;7413:71:0;;;;;;;;;;-1:-1:-1;7475:7:0;;;;;;;;;;;;-1:-1:-1;;;7475:7:0;;;;7413:71;;5422:19;;;;;;;;;;-1:-1:-1;5422:19:0;;;;-1:-1:-1;;;;;5422:19:0;;;7826:139;;;;;;;;;;-1:-1:-1;7826:139:0;;;;;:::i;:::-;;:::i;9102:484::-;;;;;;;;;;-1:-1:-1;9102:484:0;;;;;:::i;:::-;;:::i;6480:56::-;;;;;;;;;;;;;;;;7971:127;;;;;;;;;;-1:-1:-1;7971:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8069:18:0;;;8052:7;8069:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7971:127;595:111;;;;;;;;;;-1:-1:-1;595:111:0;;;;;:::i;:::-;;:::i;6608:57::-;;;;;;;;;;;;;;;;8104:133;8179:4;8186:37;8195:10;8207:7;8216:6;8186:8;:37::i;:::-;-1:-1:-1;8231:4:0;8104:133;;;;;:::o;8783:311::-;557:4;582:5;-1:-1:-1;;;;;582:5:0;469:10;571:16;453:38;;;;-1:-1:-1;;;453:38:0;;;;;;;:::i;:::-;;;;;;;;;8908:10:::1;:24:::0;;;8950:12:::1;::::0;:53:::1;::::0;8995:6:::1;::::0;8950:32:::1;::::0;8967:14;8950:16:::1;:32::i;:::-;:36:::0;::::1;:53::i;:::-;8934:13;:69:::0;9032:12:::1;::::0;:54:::1;::::0;9078:6:::1;::::0;9032:33:::1;::::0;9049:15;9032:16:::1;:33::i;:54::-;9015:14;:71:::0;-1:-1:-1;;;8783:311:0:o;8243:132::-;7800:9;:18;;;;6167:42;8296:7;7800:18;;;;;8313:12;;8296:7;;8313:60;;7800:18;;8313:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8306:67;;8243:132;:::o;14592:309::-;14690:4;14707:36;14717:6;14725:9;14736:6;14707:9;:36::i;:::-;14754:117;14763:6;14771:10;14783:87;14819:6;14783:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14783:19:0;;;;;;:11;:19;;;;;;;;14803:10;14783:31;;;;;;;;;:87;:35;:87::i;:::-;14754:8;:117::i;:::-;-1:-1:-1;14889:4:0;14592:309;;;;;;:::o;7563:64::-;557:4;582:5;-1:-1:-1;;;;;582:5:0;469:10;571:16;453:38;;;;-1:-1:-1;;;453:38:0;;;;;;;:::i;:::-;7607:11:::1;:18:::0;;-1:-1:-1;;;;7607:18:0::1;-1:-1:-1::0;;;7607:18:0::1;::::0;;7563:64::o;9594:528::-;557:4;582:5;-1:-1:-1;;;;;582:5:0;469:10;571:16;453:38;;;;-1:-1:-1;;;453:38:0;;;;;;;:::i;:::-;9686:13:::1;9702:33;9729:5;9702:22;9719:4;9702:12;;:16;;:22;;;;:::i;:33::-;9686:49;;9737:19;9759:34;9787:5;9759:23;9776:5;9759:12;;:16;;:23;;;;:::i;:34::-;9737:56;;9795:17;9815:36;9845:5;9815:25;9832:7;9815:12;;:16;;:25;;;;:::i;:36::-;9862:8;:16:::0;;;9880:10:::1;:24:::0;;;9906:9:::1;:21:::0;;;9795:56;-1:-1:-1;;9954:30:0::1;9979:4;9954:20;9972:1;9954:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;9938:46;;10012:5;10003;:14;;:38;;;;;10036:5;10021:11;:20;;10003:38;:60;;;;;10058:5;10045:9;:18;;10003:60;9995:119;;;::::0;-1:-1:-1;;;9995:119:0;;4614:2:1;9995: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;;9995:119:0::1;4412:410:1::0;9995:119:0::1;9675:447;;;;9594:528:::0;;;:::o;10130:237::-;557:4;582:5;-1:-1:-1;;;;;582:5:0;469:10;571:16;453:38;;;;-1:-1:-1;;;453:38:0;;;;;;;:::i;:::-;10229:41:::1;::::0;-1:-1:-1;;;10229:41:0;;10264:4:::1;10229:41;::::0;::::1;2766:51:1::0;10211:15:0::1;::::0;10229:63:::1;::::0;10288:3:::1;::::0;10229:54:::1;::::0;10275:7;;-1:-1:-1;;;;;10229:26:0;::::1;::::0;::::1;::::0;2739:18:1;;10229:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:63::-;10329:20;::::0;10303:56:::1;::::0;-1:-1:-1;;;10303:56:0;;-1:-1:-1;;;;;10329:20:0;;::::1;10303:56;::::0;::::1;5190:51:1::0;5257:18;;;5250:34;;;10211:81:0;;-1:-1:-1;10303:25:0;::::1;::::0;::::1;::::0;5163:18:1;;10303:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10200:167;10130:237:::0;;:::o;7826:139::-;7904:4;7911:40;7921:10;7933:9;7944:6;7911:9;:40::i;9102:484::-;557:4;582:5;-1:-1:-1;;;;;582:5:0;469:10;571:16;453:38;;;;-1:-1:-1;;;453:38:0;;;;;;;:::i;:::-;9272:12:::1;:25:::0;;;9299:12:::1;:25:::0;;;9326:7:::1;:15:::0;;;9343:14:::1;:29:::0;;;9374:8:::1;:17:::0;;;9393:7:::1;:15:::0;;;9410:11:::1;:20:::0;;;9461:11:::1;::::0;9449:23;::::1;::::0;::::1;::::0;:49:::1;;;9487:11;;9476:7;;:22;;9449:49;:79;;;;;9517:11;;9502;;:26;;9449:79;9441:137;;;::::0;-1:-1:-1;;;9441:137:0;;5779:2:1;9441:137:0::1;::::0;::::1;5761:21:1::0;5818:2;5798:18;;;5791:30;5857:34;5837:18;;;5830:62;-1:-1:-1;;;5908:18:1;;;5901:43;5961:19;;9441:137:0::1;5577:409:1::0;595:111:0;557:4;582:5;-1:-1:-1;;;;;582:5:0;469:10;571:16;453:38;;;;-1:-1:-1;;;453:38:0;;;;;;;:::i;:::-;661:5:::1;:11:::0;;-1:-1:-1;;;;;;661:11:0::1;-1:-1:-1::0;;;;;661:11:0;::::1;::::0;;::::1;::::0;;;679:25:::1;::::0;2766:51:1;;;679:25:0::1;::::0;2754:2:1;2739:18;679:25:0::1;;;;;;;595:111:::0;:::o;14909:335::-;-1:-1:-1;;;;;15002:19:0;;14994:68;;;;-1:-1:-1;;;14994:68:0;;6409:2:1;14994:68:0;;;6391:21:1;6448:2;6428:18;;;6421:30;6487:34;6467:18;;;6460:62;-1:-1:-1;;;6538:18:1;;;6531:34;6582:19;;14994:68:0;6207:400:1;14994:68:0;-1:-1:-1;;;;;15081:21:0;;15073:68;;;;-1:-1:-1;;;15073:68:0;;6814:2:1;15073:68:0;;;6796:21:1;6853:2;6833:18;;;6826:30;6892:34;6872:18;;;6865:62;-1:-1:-1;;;6943:18:1;;;6936:32;6985:19;;15073:68:0;6612:398:1;15073:68:0;-1:-1:-1;;;;;15152:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15204:32;;1682:25:1;;;15204:32:0;;1655:18:1;15204:32:0;;;;;;;14909:335;;;:::o;2113:98::-;2171:7;2198:5;2202:1;2198;:5;:::i;2219:98::-;2277:7;2304:5;2308:1;2304;:5;:::i;2007:98::-;2065:7;2092:5;2096:1;2092;:5;:::i;13232:1352::-;-1:-1:-1;;;;;13329:20:0;;13321:70;;;;-1:-1:-1;;;13321:70:0;;7877:2:1;13321:70:0;;;7859:21:1;7916:2;7896:18;;;7889:30;7955:34;7935:18;;;7928:62;-1:-1:-1;;;8006:18:1;;;7999:35;8051:19;;13321:70:0;7675:401:1;13321:70:0;-1:-1:-1;;;;;13410:23:0;;13402:71;;;;-1:-1:-1;;;13402:71:0;;8283:2:1;13402:71:0;;;8265:21:1;8322:2;8302:18;;;8295:30;8361:34;8341:18;;;8334:62;-1:-1:-1;;;8412:18:1;;;8405:33;8455:19;;13402:71:0;8081:399:1;13402:71:0;-1:-1:-1;;;;;13488:19:0;;;;;;:11;:19;;;;;;;;13487:20;:47;;;;-1:-1:-1;;;;;;13512:22:0;;;;;;:11;:22;;;;;;;;13511:23;13487:47;13484:89;;;13544:11;;-1:-1:-1;;;13544:11:0;;;;13536:35;;;;-1:-1:-1;;;13536:35:0;;8687:2:1;13536:35:0;;;8669:21:1;8726:2;8706:18;;;8699:30;-1:-1:-1;;;8745:18:1;;;8738:41;8796:18;;13536:35:0;8485:335:1;13536:35:0;-1:-1:-1;;;;;13587:19:0;;;;;;:11;:19;;;;;;;;13586:20;:47;;;;-1:-1:-1;;;;;;13611:22:0;;;;;;:11;:22;;;;;;;;13610:23;13586:47;:77;;;;-1:-1:-1;13658:4:0;;-1:-1:-1;;;;;13637:26:0;;;13658:4;;13637:26;;13586:77;:107;;;;-1:-1:-1;;;;;;13667:26:0;;6167:42;13667:26;;13586:107;13583:214;;;13751:9;;-1:-1:-1;;;;;13714:20:0;;;;;;:9;:20;;;;;;:32;;13739:6;13714:24;:32::i;:::-;13713:47;;13705:90;;;;-1:-1:-1;;;13705:90:0;;9027:2:1;13705:90:0;;;9009:21:1;9066:2;9046:18;;;9039:30;9105:32;9085:18;;;9078:60;9155:18;;13705:90:0;8825:354:1;13705:90:0;13820:4;;-1:-1:-1;;;;;13810:14:0;;;13820:4;;13810:14;13807:120;;13844:10;;13834:6;:20;;:43;;;-1:-1:-1;;;;;;13858:19:0;;;;;;:11;:19;;;;;;;;13834:43;:69;;;-1:-1:-1;;;;;;13881:22:0;;;;;;:11;:22;;;;;;;;13834:69;13826:99;;;;-1:-1:-1;;;13826:99:0;;9386:2:1;13826:99:0;;;9368:21:1;9425:2;9405:18;;;9398:30;-1:-1:-1;;;9444:18:1;;;9437:47;9501:18;;13826:99:0;9184:341:1;13826:99:0;13955:8;;13945:6;:18;;:41;;;-1:-1:-1;;;;;;13967:19:0;;;;;;:11;:19;;;;;;;;13945:41;:67;;;-1:-1:-1;;;;;;13990:22:0;;;;;;:11;:22;;;;;;;;13945:67;13937:97;;;;-1:-1:-1;;;13937:97:0;;9386:2:1;13937:97:0;;;9368:21:1;9425:2;9405:18;;;9398:30;-1:-1:-1;;;9444:18:1;;;9437:47;9501:18;;13937:97:0;9184:341:1;13937:97:0;14062:4;;-1:-1:-1;;;;;14049:17:0;;;14062:4;;14049:17;:41;;;;-1:-1:-1;;;;;;14071:19:0;;;;;;:11;:19;;;;;;;;14070:20;14049:41;14046:71;;;14113:1;14092:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;14046:71:0;14130:37;14141:6;14149:9;14160:6;14130:10;:37::i;:::-;14127:97;;;14169:29;14184:13;;14169:14;:29::i;:::-;14220:1;14200:9;:22;14127:97;14239:11;;-1:-1:-1;;;14239:11:0;;;;14238:12;;:36;;-1:-1:-1;;;;;;14255:19:0;;;;;;:11;:19;;;;;;;;14254:20;14238:36;14234:96;;;-1:-1:-1;;;;;14298:17:0;;;;;;:9;:17;;;;;;:29;;14320:6;14298:21;:29::i;:::-;-1:-1:-1;;;;;14278:17:0;;;;;;:9;:17;;;;;:49;14234:96;14340:22;14365:32;14379:6;14387:9;14365:13;:32::i;:::-;:78;;14437:6;14365:78;;;14400:34;14408:6;14416:9;14427:6;14400:7;:34::i;:::-;-1:-1:-1;;;;;14477:20:0;;;;;;:9;:20;;;;;;14340:103;;-1:-1:-1;14477:40:0;;14340:103;14477:24;:40::i;:::-;-1:-1:-1;;;;;14454:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14533:43;;;;;;;;;;14561:14;1682:25:1;;1670:2;1655:18;;1536:177;14533:43:0;;;;;;;;13310:1274;13232:1352;;;:::o;2431:240::-;2551:7;2612:12;2604:6;;;;2596:29;;;;-1:-1:-1;;;2596:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2647:5:0;;;2431:240::o;1901:98::-;1959:7;1986:5;1990:1;1986;:5;:::i;8383:392::-;8520:14;;8595:13;;8585:4;8477;7800:18;;;:9;:18;;;;;;8627:8;;8477:4;;8510:24;;;;-1:-1:-1;8567:41:0;;8627:8;;8626:9;:24;;;;-1:-1:-1;8639:11:0;;-1:-1:-1;;;8639:11:0;;;;8626:24;:39;;;;-1:-1:-1;8654:11:0;;-1:-1:-1;;;8654:11:0;;;;8626:39;:51;;;;;8669:8;8626:51;:75;;;;-1:-1:-1;;;;;;8682:19:0;;;;;;:11;:19;;;;;;;;8681:20;8626:75;:96;;;;-1:-1:-1;8718:4:0;;-1:-1:-1;;;;;8705:17:0;;;8718:4;;8705:17;8626:96;:123;;;;;8739:10;;8726:9;;:23;;8626:123;:141;;;;;8753:14;8626:141;8619:148;8383:392;-1:-1:-1;;;;;;8383:392:0:o;10375:1063::-;5773:8;:15;;-1:-1:-1;;5773:15:0;5784:4;5773:15;;;;;;10512:14:::1;::::0;10494:12:::1;::::0;10470::::1;::::0;5773:8;;10469:66:::1;::::0;10533:1:::1;::::0;10470:57:::1;::::0;10512:14;;10470:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10469:66::-;10446:89;;10546:32;10581:42;10610:12;10581:24;10592:12;;10581:6;:10;;:24;;;;:::i;:42::-;10546:77:::0;-1:-1:-1;10634:14:0::1;10651:36;:6:::0;10546:77;10651:10:::1;:36::i;:::-;10634:53:::0;-1:-1:-1;10723:21:0::1;10755:24;10634:53:::0;10755:16:::1;:24::i;:::-;10790:20;10813:41;:21;10839:14:::0;10813:25:::1;:41::i;:::-;10790:64;;10865:19;10886:48;10903:30;10920:12;;10903;:16;;:30;;;;:::i;:::-;10886:12:::0;;:16:::1;:48::i;:::-;10865:69;;10945:29;10977;10993:12;;10977:11;:15;;:29;;;;:::i;:::-;10945:61:::0;-1:-1:-1;11020:34:0;;11017:103:::1;;11056:61;11069:24;11095:21;11056:12;:61::i;:::-;11176:12;::::0;11130:20:::1;::::0;11153:36:::1;::::0;:18:::1;:11:::0;11169:1:::1;11153:15;:18::i;:36::-;11130:59:::0;-1:-1:-1;11203:16:0;;11200:73:::1;;11229:18;::::0;11221:50:::1;::::0;-1:-1:-1;;;;;11229:18:0;;::::1;::::0;11221:50;::::1;;;::::0;11258:12;;11229:18:::1;11221:50:::0;11229:18;11221:50;11258:12;11229:18;11221:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11200:73;11309:21;11344:28:::0;;11341:90:::1;;11382:20;::::0;11374:55:::1;::::0;-1:-1:-1;;;;;11382:20:0;;::::1;::::0;11374:55;::::1;;;::::0;11413:15;;11382:20:::1;11374:55:::0;11382:20;11374:55;11413:15;11382:20;11374:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11341:90;-1:-1:-1::0;;5793:8:0;:16;;-1:-1:-1;;5793:16:0;;;-1:-1:-1;;;;;;;;10375:1063:0:o;12239:160::-;-1:-1:-1;;;;;12345:19:0;;12320:4;12345:19;;;:11;:19;;;;;;;;12344:20;:47;;;;-1:-1:-1;;;;;;;12369:22:0;;;;;:11;:22;;;;;;;;12368:23;;12239:160;-1:-1:-1;12239:160:0:o;12634:590::-;12720:7;12776:1;12743:30;12755:6;12763:9;12743:11;:30::i;:::-;:34;12740:462;;;12789:17;12809:59;12837:30;12849:6;12857:9;12837:11;:30::i;:::-;12820:11;;12809:23;;:6;;:10;:23::i;:59::-;12924:4;12906:24;;;;:9;:24;;;;;;12789:79;;-1:-1:-1;12906:39:0;;12789:79;12906:28;:39::i;:::-;12897:4;12879:24;;;;:9;:24;;;;;;;:66;;;;12961:42;;-1:-1:-1;;;;;12961:42:0;;;;;;;12993:9;1682:25:1;;1670:2;1655:18;;1536:177;12961:42:0;;;;;;;;13035:1;13017:7;;:20;:64;;;;;13074:7;;13041:30;13053:6;13061:9;13041:11;:30::i;:::-;:40;13017:64;13014:148;;;13083:77;13101:4;6167:42;13123:36;13151:7;;13123:23;13134:11;;13123:6;:10;;:23;;;;:::i;:36::-;13083:9;:77::i;:::-;13179:21;:6;13190:9;13179:10;:21::i;:::-;13172:28;;;;;12740:462;-1:-1:-1;13210:6:0;12634:590;-1:-1:-1;;12634:590:0:o;11797:434::-;11887:16;;;11901:1;11887:16;;;;;;;;11863:21;;11887:16;;;;;;;;;;-1:-1:-1;11887:16:0;11863:40;;11932:4;11914;11919:1;11914:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11914:23:0;;;:7;;;;;;;;;;:23;;;;11958:6;;:13;;;-1:-1:-1;;;11958:13:0;;;;:6;;;;;:11;;:13;;;;;11914:7;;11958:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11948:4;11953:1;11948:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11948:23:0;;;:7;;;;;;;;;:23;12014:6;;11982:53;;11999:4;;12014:6;12023:11;11982:8;:53::i;:::-;12046:6;;:177;;-1:-1:-1;;;12046:177:0;;-1:-1:-1;;;;;12046:6:0;;;;:57;;:177;;12118:11;;12046:6;;12160:4;;12187;;12207:15;;12046:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11852:379;11797:434;:::o;11446:343::-;11559:6;;11527:53;;11544:4;;-1:-1:-1;;;;;11559:6:0;11568:11;11527:8;:53::i;:::-;11591:6;;11732:18;;11591:190;;-1:-1:-1;;;11591:190:0;;11654:4;11591:190;;;11506:34:1;11556:18;;;11549:34;;;11591:6:0;11599:18:1;;;11592:34;;;11642:18;;;11635:34;-1:-1:-1;;;;;11732:18:0;;;11685:19:1;;;11678:44;11765:15:0;11738:19:1;;;11731:35;11591:6:0;;;:22;;11621:9;;11440:19:1;;11591:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11446:343;;:::o;12407:219::-;12522:4;;12486:7;;-1:-1:-1;;;;;12522:4:0;;;12509:17;;;;12506:38;;-1:-1:-1;12535:7:0;;12528:14;;12506:38;12567:4;;-1:-1:-1;;;;;12567:4:0;;;12557:14;;;;12554:36;;-1:-1:-1;12580:8:0;;12573:15;;12554:36;-1:-1:-1;12607:11:0;;12407:219;;;;:::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;1215:316::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;-1:-1:-1;;1400:23:1;;;1470:2;1455:18;;1442:32;;-1:-1:-1;1521:2:1;1506:18;;;1493:32;;1215:316;-1:-1:-1;1215:316:1:o;1718:456::-;1795:6;1803;1811;1864:2;1852:9;1843:7;1839:23;1835:32;1832:52;;;1880:1;1877;1870:12;1832:52;1919:9;1906:23;1938:31;1963:5;1938:31;:::i;:::-;1988:5;-1:-1:-1;2045:2:1;2030:18;;2017:32;2058:33;2017:32;2058:33;:::i;:::-;1718:456;;2110:7;;-1:-1:-1;;;2164:2:1;2149:18;;;;2136:32;;1718:456::o;2179:247::-;2238:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:52;;;2307:1;2304;2297:12;2259:52;2346:9;2333:23;2365:31;2390:5;2365:31;:::i;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;4827:184::-;4897:6;4950:2;4938:9;4929:7;4925:23;4921:32;4918:52;;;4966:1;4963;4956:12;4918:52;-1:-1:-1;4989:16:1;;4827:184;-1:-1:-1;4827:184:1:o;5295:277::-;5362:6;5415:2;5403:9;5394:7;5390:23;5386:32;5383:52;;;5431:1;5428;5421:12;5383:52;5463:9;5457:16;5516:5;5509:13;5502:21;5495:5;5492:32;5482:60;;5538:1;5535;5528:12;7015:127;7076:10;7071:3;7067:20;7064:1;7057:31;7107:4;7104:1;7097:15;7131:4;7128:1;7121:15;7147:168;7220:9;;;7251;;7268:15;;;7262:22;;7248:37;7238:71;;7289:18;;:::i;7320:217::-;7360:1;7386;7376:132;;7430:10;7425:3;7421:20;7418:1;7411:31;7465:4;7462:1;7455:15;7493:4;7490:1;7483:15;7376:132;-1:-1:-1;7522:9:1;;7320:217::o;7542:128::-;7609:9;;;7630:11;;;7627:37;;;7644:18;;:::i;9530:125::-;9595:9;;;9616:10;;;9613:36;;;9629:18;;:::i;9792:127::-;9853:10;9848:3;9844:20;9841:1;9834:31;9884:4;9881:1;9874:15;9908:4;9905:1;9898:15;9924:251;9994:6;10047:2;10035:9;10026:7;10022:23;10018:32;10015:52;;;10063:1;10060;10053:12;10015:52;10095:9;10089:16;10114:31;10139:5;10114:31;:::i;10180:980::-;10442:4;10490:3;10479:9;10475:19;10521:6;10510:9;10503:25;10547:2;10585:6;10580:2;10569:9;10565:18;10558:34;10628:3;10623:2;10612:9;10608:18;10601:31;10652:6;10687;10681:13;10718:6;10710;10703:22;10756:3;10745:9;10741:19;10734:26;;10795:2;10787:6;10783:15;10769:29;;10816:1;10826:195;10840:6;10837:1;10834:13;10826:195;;;10905:13;;-1:-1:-1;;;;;10901:39:1;10889:52;;10996:15;;;;10961:12;;;;10937:1;10855:9;10826:195;;;-1:-1:-1;;;;;;;11077:32:1;;;;11072:2;11057:18;;11050:60;-1:-1:-1;;;11141:3:1;11126:19;11119:35;11038:3;10180:980;-1:-1:-1;;;10180:980:1:o;11777:306::-;11865:6;11873;11881;11934:2;11922:9;11913:7;11909:23;11905:32;11902:52;;;11950:1;11947;11940:12;11902:52;11979:9;11973:16;11963:26;;12029:2;12018:9;12014:18;12008:25;11998:35;;12073:2;12062:9;12058:18;12052:25;12042:35;;11777:306;;;;;:::o

Swarm Source

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