ETH Price: $2,612.33 (+0.21%)

Token

Duck (DUCK)
 

Overview

Max Total Supply

1,000,000,000 DUCK

Holders

58

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
DUCK

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-21
*/

/**
    https://t.me/Duck_ERC_20
    https://x.com/Duck_ERC_20
    https://duckerc20.space
 */


// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.19;

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

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_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 {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    string constant _name = "Duck";
    string constant _symbol = "DUCK";
    uint8 constant _decimals = 18;

    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address public autoLiquidityReceiver;
    address public marketingWallet;

    uint256 _totalSupply = 1_000_000_000 * (10**_decimals);
    uint256 public _maxTxAmount = (_totalSupply * 20) / 1000;
    uint256 public _walletMax = (_totalSupply * 20) / 1000;
    bool public restrictWhales = true;

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    bool public tradingOpen = false;

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;

    bool public takeBuyFee = true;
    bool public takeSellFee = true;
    bool public takeTransferFee = true;

    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 300;
    uint256 public rewardsFee = 0;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    IDEXRouter public router;
    address public pair;
    mapping(address => bool) public isPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = (_totalSupply * 5) / 1000000;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    event AutoLiquify(uint256 amountETH, uint256 amountToken);

    constructor() {
        autoLiquidityReceiver = msg.sender;
        marketingWallet = 0x48EAb6fA911B0e30750C22f9b3Cb77CbA334c0FC;

        router = IDEXRouter(routerAddress);

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[marketingWallet] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[address(this)] = true;

        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee;

        _balances[msg.sender] = _totalSupply;

        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, 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] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function openDuck() external onlyOwner {
        address pair_weth = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        pair = pair_weth;
        isPair[pair] = true;

        isTxLimitExempt[pair_weth] = true;

        router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            address(0),
            block.timestamp
        );

        tradingOpen = true;
        swapAndLiquifyEnabled = true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (!isFeeExempt[sender]) {
            require(tradingOpen, "Trading not open yet");
        }

        require(
            amount <= _maxTxAmount ||
                isTxLimitExempt[sender] ||
                !restrictWhales,
            "TX Limit Exceeded"
        );

        if (isPair[recipient] && !inSwapAndLiquify && swapAndLiquifyEnabled) {
            swapBack();
        }

        if (!isTxLimitExempt[recipient] && restrictWhales) {
            require(
                _balances[recipient].add(amount) <= _walletMax,
                "Wallet Limit Exceeded"
            );
        }

        uint256 finalAmount = takeFee(sender, recipient, amount);
        _balances[recipient] = _balances[recipient].add(finalAmount);

        emit Transfer(sender, recipient, finalAmount);

        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        bool fee = !isFeeExempt[sender] && !isFeeExempt[recipient];
        uint256 feeAmount = 0;
        if (fee) {
            uint256 feeApplicable = 0;

            if (isPair[recipient] && takeSellFee) {
                feeApplicable = totalFeeIfSelling;
            }
            if (isPair[sender] && takeBuyFee) {
                feeApplicable = totalFee;
            }
            if (!isPair[sender] && !isPair[recipient]) {
                if (takeTransferFee) {
                    feeApplicable = totalFeeIfSelling;
                } else {
                    feeApplicable = 0;
                }
            }

            feeAmount = amount.mul(feeApplicable).div(1000);
        } else {
            if (sender == marketingWallet) {
                return amount;
            }
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        if (feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }
        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        uint256 amountToSwap = _balances[address(this)];
        if (amountToSwap >= swapThreshold * 2000)
            amountToSwap = swapThreshold * 2000;

        if (amountToSwap >= swapThreshold) {
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = router.WETH();

            router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                amountToSwap,
                0,
                path,
                address(this),
                block.timestamp
            );
        }

        uint256 amountETH = address(this).balance;

        payable(marketingWallet).transfer(amountETH);
    }

    function removeTax(
        uint256 newLiqFeeThou,
        uint256 newRewardFeeThou,
        uint256 newmarketingFee,
        uint256 extraSellFee
    ) external onlyOwner {
        liquidityFee = newLiqFeeThou;
        rewardsFee = newRewardFeeThou;
        marketingFee = newmarketingFee;

        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee + extraSellFee;
        require(
            totalFee <= 990 && totalFeeIfSelling <= 990,
            "Token: Combined fees must be under %"
        );
    }

    function removeLimits() external onlyOwner {
        _walletMax = type(uint256).max;
        _maxTxAmount = type(uint256).max;
    }

    function removeERC20(address tokenAddress, uint256 tokens)
        public
        onlyOwner
        returns (bool success)
    {
        require(tokenAddress != address(this), "Cant remove the native token");
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function removeEther(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
    }
}

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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","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":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","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":"openDuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeERC20","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"removeEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFeeThou","type":"uint256"},{"internalType":"uint256","name":"newRewardFeeThou","type":"uint256"},{"internalType":"uint256","name":"newmarketingFee","type":"uint256"},{"internalType":"uint256","name":"extraSellFee","type":"uint256"}],"name":"removeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"takeBuyFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620000386012600a620003eb565b6200004890633b9aca00620003fc565b6004556103e860045460146200005f9190620003fc565b6200006b919062000416565b6005556103e86004546014620000829190620003fc565b6200008e919062000416565b60065560078054600160ff1991821617909155600a80549091169055600d805462ffffff1916620101011790556000600e81905561012c600f55601081905560118190556012556016805462ffff0019169055600454620f424090620000f6906005620003fc565b62000102919062000416565b6017553480156200011257600080fd5b506200011e3362000271565b60028054336001600160a01b03199182168117909255600380547348eab6fa911b0e30750c22f9b3cb77cba334c0fc90831617815560018054601380546001600160a01b039283169516851790553060008181526009602090815260408083209783529681528682206000199055878252600b8152868220805460ff19908116871790915583835287832080548216871790559554841682528682208054871686179055968152600c9096528486208054851684179055601454909116855283852080548416831790558452919092208054909216179055601054600f54600e54620002189291620002119190620002c1565b90620002c1565b601181905560125560045433600081815260086020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200044f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620002cf828462000439565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200032f578160001904821115620003135762000313620002d8565b808516156200032157918102915b93841c9390800290620002f3565b509250929050565b6000826200034857506001620002d2565b816200035757506000620002d2565b81600181146200037057600281146200037b576200039b565b6001915050620002d2565b60ff8411156200038f576200038f620002d8565b50506001821b620002d2565b5060208310610133831016604e8410600b8410161715620003c0575081810a620002d2565b620003cc8383620002ee565b8060001904821115620003e357620003e3620002d8565b029392505050565b6000620002cf60ff84168362000337565b8082028115828204841417620002d257620002d2620002d8565b6000826200043457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620002d257620002d2620002d8565b611a0a806200045f6000396000f3fe6080604052600436106102345760003560e01c80637d1db4a51161012e578063a9059cbb116100ab578063e5e31b131161006f578063e5e31b13146106b2578063f0ef821f146106e2578063f2fde38b146106fc578063f887ea401461071c578063ffb54a991461073c57600080fd5b8063a9059cbb146105f6578063ca33e64c14610616578063ca987b0e14610636578063da00097d1461064c578063dd62ed3e1461066c57600080fd5b80638da5cb5b116100f25780638da5cb5b1461055557806395d89b411461057357806398118cb4146105a0578063a5355989146105b6578063a8aa1b31146105d657600080fd5b80637d1db4a5146104b9578063807c2d9c146104cf5780638637b069146104e5578063876b876e146105055780638b42507f1461052557600080fd5b80633f4218e0116101bc57806370a082311161018057806370a0823114610401578063715018a614610437578063751039fc1461044c57806375f0a87414610461578063787a051b1461049957600080fd5b80633f4218e01461036357806344de2e4c146103935780634a74bb02146103ad5780636b67c4df146103cc57806370540933146103e257600080fd5b80631df4ccfc116102035780631df4ccfc146102e457806323b872dd146102fa5780632bb14e1d1461031a578063313ce56714610330578063343c2b131461034c57600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b31461029f57806318160ddd146102cf57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660175481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b506040805180820190915260048152634475636b60e01b60208201525b60405161026091906116c5565b3480156102ab57600080fd5b506102bf6102ba366004611728565b610756565b6040519015158152602001610260565b3480156102db57600080fd5b50600454610256565b3480156102f057600080fd5b5061025660115481565b34801561030657600080fd5b506102bf610315366004611754565b6107c3565b34801561032657600080fd5b5061025660105481565b34801561033c57600080fd5b5060405160128152602001610260565b34801561035857600080fd5b50610361610885565b005b34801561036f57600080fd5b506102bf61037e366004611795565b600b6020526000908152604090205460ff1681565b34801561039f57600080fd5b506007546102bf9060ff1681565b3480156103b957600080fd5b506016546102bf90610100900460ff1681565b3480156103d857600080fd5b50610256600f5481565b3480156103ee57600080fd5b50600d546102bf90610100900460ff1681565b34801561040d57600080fd5b5061025661041c366004611795565b6001600160a01b031660009081526008602052604090205490565b34801561044357600080fd5b50610361610b35565b34801561045857600080fd5b50610361610b6b565b34801561046d57600080fd5b50600354610481906001600160a01b031681565b6040516001600160a01b039091168152602001610260565b3480156104a557600080fd5b506103616104b43660046117b2565b610ba2565b3480156104c557600080fd5b5061025660055481565b3480156104db57600080fd5b5061025660065481565b3480156104f157600080fd5b506102bf610500366004611728565b610c14565b34801561051157600080fd5b506103616105203660046117cb565b610d08565b34801561053157600080fd5b506102bf610540366004611795565b600c6020526000908152604090205460ff1681565b34801561056157600080fd5b506000546001600160a01b0316610481565b34801561057f57600080fd5b506040805180820190915260048152634455434b60e01b6020820152610292565b3480156105ac57600080fd5b50610256600e5481565b3480156105c257600080fd5b50600d546102bf9062010000900460ff1681565b3480156105e257600080fd5b50601454610481906001600160a01b031681565b34801561060257600080fd5b506102bf610611366004611728565b610dde565b34801561062257600080fd5b50600254610481906001600160a01b031681565b34801561064257600080fd5b5061025660125481565b34801561065857600080fd5b506016546102bf9062010000900460ff1681565b34801561067857600080fd5b506102566106873660046117fd565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106be57600080fd5b506102bf6106cd366004611795565b60156020526000908152604090205460ff1681565b3480156106ee57600080fd5b50600d546102bf9060ff1681565b34801561070857600080fd5b50610361610717366004611795565b610deb565b34801561072857600080fd5b50601354610481906001600160a01b031681565b34801561074857600080fd5b50600a546102bf9060ff1681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107b19086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610870576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461084b918490610e86565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61087b848484610eb2565b90505b9392505050565b6000546001600160a01b031633146108b85760405162461bcd60e51b81526004016108af90611836565b60405180910390fd5b6013546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa158015610902573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610926919061186b565b6001600160a01b031663c9c65396601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ab919061186b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b919061186b565b601480546001600160a01b0319166001600160a01b038381169182179092556000908152601560209081526040808320805460ff199081166001908117909255600c84528285208054909116909117905560135430808552600890935292205493945091169163f305d7199147916040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201526000604482018190526064820181905260848201524260a482015260c40160606040518083038185885af1158015610aee573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b139190611888565b5050600a805460ff1916600117905550506016805461ff001916610100179055565b6000546001600160a01b03163314610b5f5760405162461bcd60e51b81526004016108af90611836565b610b696000611133565b565b6000546001600160a01b03163314610b955760405162461bcd60e51b81526004016108af90611836565b6000196006819055600555565b6000546001600160a01b03163314610bcc5760405162461bcd60e51b81526004016108af90611836565b47336108fc6064610bdd85856118cc565b610be791906118e3565b6040518115909202916000818181858888f19350505050158015610c0f573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610c3f5760405162461bcd60e51b81526004016108af90611836565b306001600160a01b03841603610c975760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e0000000060448201526064016108af565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190611905565b6000546001600160a01b03163314610d325760405162461bcd60e51b81526004016108af90611836565b600e8490556010839055600f829055610d5583610d4f8685611183565b90611183565b6011819055610d65908290611927565b6012556011546103de10801590610d8057506103de60125411155b610dd85760405162461bcd60e51b8152602060048201526024808201527f546f6b656e3a20436f6d62696e65642066656573206d75737420626520756e646044820152636572202560e01b60648201526084016108af565b50505050565b600061087e338484610eb2565b6000546001600160a01b03163314610e155760405162461bcd60e51b81526004016108af90611836565b6001600160a01b038116610e7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108af565b610e8381611133565b50565b60008184841115610eaa5760405162461bcd60e51b81526004016108af91906116c5565b505050900390565b60165460009060ff1615610ed257610ecb84848461118f565b905061087e565b6001600160a01b0384166000908152600b602052604090205460ff16610f3b57600a5460ff16610f3b5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108af565b60055482111580610f6457506001600160a01b0384166000908152600c602052604090205460ff165b80610f72575060075460ff16155b610fb25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108af565b6001600160a01b03831660009081526015602052604090205460ff168015610fdd575060165460ff16155b8015610ff05750601654610100900460ff165b15610ffd57610ffd611275565b6001600160a01b0383166000908152600c602052604090205460ff16158015611028575060075460ff165b15611099576006546001600160a01b0384166000908152600860205260409020546110539084611183565b11156110995760405162461bcd60e51b815260206004820152601560248201527415d85b1b195d08131a5b5a5d08115e18d959591959605a1b60448201526064016108af565b60006110a685858561144a565b6001600160a01b0385166000908152600860205260409020549091506110cc9082611183565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111209085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061087e8284611927565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546111e0918490610e86565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461120f9083611183565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112639086815260200190565b60405180910390a35060019392505050565b6016805460ff19166001179055306000908152600860205260409020546017546112a1906107d06118cc565b81106112b9576017546112b6906107d06118cc565b90505b60175481106114015760408051600280825260608201835260009260208301908036833701905050905030816000815181106112f7576112f761193a565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611350573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611374919061186b565b816001815181106113875761138761193a565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906113cd908590600090869030904290600401611950565b600060405180830381600087803b1580156113e757600080fd5b505af11580156113fb573d6000803e3d6000fd5b50505050505b60035460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561143b573d6000803e3d6000fd5b50506016805460ff1916905550565b6001600160a01b0383166000908152600b6020526040812054819060ff1615801561148e57506001600160a01b0384166000908152600b602052604090205460ff16155b905060008115611588576001600160a01b03851660009081526015602052604081205460ff1680156114c75750600d54610100900460ff165b156114d157506012545b6001600160a01b03871660009081526015602052604090205460ff1680156114fb5750600d5460ff165b1561150557506011545b6001600160a01b03871660009081526015602052604090205460ff1615801561154757506001600160a01b03861660009081526015602052604090205460ff16155b1561156a57600d5462010000900460ff1615611566575060125461156a565b5060005b6115806103e861157a87846116a1565b906116ad565b9150506115a8565b6003546001600160a01b03908116908716036115a857839250505061087e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600890915291909120546115fa918690610e86565b6001600160a01b038716600090815260086020526040902055801561168d57306000908152600860205260409020546116339082611183565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116849085815260200190565b60405180910390a35b61169784826116b9565b9695505050505050565b600061087e82846118cc565b600061087e82846118e3565b600061087e82846119c1565b600060208083528351808285015260005b818110156116f2578581018301518582016040015282016116d6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e8357600080fd5b6000806040838503121561173b57600080fd5b823561174681611713565b946020939093013593505050565b60008060006060848603121561176957600080fd5b833561177481611713565b9250602084013561178481611713565b929592945050506040919091013590565b6000602082840312156117a757600080fd5b813561087e81611713565b6000602082840312156117c457600080fd5b5035919050565b600080600080608085870312156117e157600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561181057600080fd5b823561181b81611713565b9150602083013561182b81611713565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561187d57600080fd5b815161087e81611713565b60008060006060848603121561189d57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107bd576107bd6118b6565b60008261190057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561191757600080fd5b8151801515811461087e57600080fd5b808201808211156107bd576107bd6118b6565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119a05784516001600160a01b03168352938301939183019160010161197b565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156107bd576107bd6118b656fea26469706673582212201e24be7f0b2055ccc3d910a2a407c658b21ee7a3dfd35766d59a21969c72205d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80637d1db4a51161012e578063a9059cbb116100ab578063e5e31b131161006f578063e5e31b13146106b2578063f0ef821f146106e2578063f2fde38b146106fc578063f887ea401461071c578063ffb54a991461073c57600080fd5b8063a9059cbb146105f6578063ca33e64c14610616578063ca987b0e14610636578063da00097d1461064c578063dd62ed3e1461066c57600080fd5b80638da5cb5b116100f25780638da5cb5b1461055557806395d89b411461057357806398118cb4146105a0578063a5355989146105b6578063a8aa1b31146105d657600080fd5b80637d1db4a5146104b9578063807c2d9c146104cf5780638637b069146104e5578063876b876e146105055780638b42507f1461052557600080fd5b80633f4218e0116101bc57806370a082311161018057806370a0823114610401578063715018a614610437578063751039fc1461044c57806375f0a87414610461578063787a051b1461049957600080fd5b80633f4218e01461036357806344de2e4c146103935780634a74bb02146103ad5780636b67c4df146103cc57806370540933146103e257600080fd5b80631df4ccfc116102035780631df4ccfc146102e457806323b872dd146102fa5780632bb14e1d1461031a578063313ce56714610330578063343c2b131461034c57600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b31461029f57806318160ddd146102cf57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660175481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b506040805180820190915260048152634475636b60e01b60208201525b60405161026091906116c5565b3480156102ab57600080fd5b506102bf6102ba366004611728565b610756565b6040519015158152602001610260565b3480156102db57600080fd5b50600454610256565b3480156102f057600080fd5b5061025660115481565b34801561030657600080fd5b506102bf610315366004611754565b6107c3565b34801561032657600080fd5b5061025660105481565b34801561033c57600080fd5b5060405160128152602001610260565b34801561035857600080fd5b50610361610885565b005b34801561036f57600080fd5b506102bf61037e366004611795565b600b6020526000908152604090205460ff1681565b34801561039f57600080fd5b506007546102bf9060ff1681565b3480156103b957600080fd5b506016546102bf90610100900460ff1681565b3480156103d857600080fd5b50610256600f5481565b3480156103ee57600080fd5b50600d546102bf90610100900460ff1681565b34801561040d57600080fd5b5061025661041c366004611795565b6001600160a01b031660009081526008602052604090205490565b34801561044357600080fd5b50610361610b35565b34801561045857600080fd5b50610361610b6b565b34801561046d57600080fd5b50600354610481906001600160a01b031681565b6040516001600160a01b039091168152602001610260565b3480156104a557600080fd5b506103616104b43660046117b2565b610ba2565b3480156104c557600080fd5b5061025660055481565b3480156104db57600080fd5b5061025660065481565b3480156104f157600080fd5b506102bf610500366004611728565b610c14565b34801561051157600080fd5b506103616105203660046117cb565b610d08565b34801561053157600080fd5b506102bf610540366004611795565b600c6020526000908152604090205460ff1681565b34801561056157600080fd5b506000546001600160a01b0316610481565b34801561057f57600080fd5b506040805180820190915260048152634455434b60e01b6020820152610292565b3480156105ac57600080fd5b50610256600e5481565b3480156105c257600080fd5b50600d546102bf9062010000900460ff1681565b3480156105e257600080fd5b50601454610481906001600160a01b031681565b34801561060257600080fd5b506102bf610611366004611728565b610dde565b34801561062257600080fd5b50600254610481906001600160a01b031681565b34801561064257600080fd5b5061025660125481565b34801561065857600080fd5b506016546102bf9062010000900460ff1681565b34801561067857600080fd5b506102566106873660046117fd565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106be57600080fd5b506102bf6106cd366004611795565b60156020526000908152604090205460ff1681565b3480156106ee57600080fd5b50600d546102bf9060ff1681565b34801561070857600080fd5b50610361610717366004611795565b610deb565b34801561072857600080fd5b50601354610481906001600160a01b031681565b34801561074857600080fd5b50600a546102bf9060ff1681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107b19086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610870576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461084b918490610e86565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61087b848484610eb2565b90505b9392505050565b6000546001600160a01b031633146108b85760405162461bcd60e51b81526004016108af90611836565b60405180910390fd5b6013546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa158015610902573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610926919061186b565b6001600160a01b031663c9c65396601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ab919061186b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156109f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1b919061186b565b601480546001600160a01b0319166001600160a01b038381169182179092556000908152601560209081526040808320805460ff199081166001908117909255600c84528285208054909116909117905560135430808552600890935292205493945091169163f305d7199147916040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201526000604482018190526064820181905260848201524260a482015260c40160606040518083038185885af1158015610aee573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b139190611888565b5050600a805460ff1916600117905550506016805461ff001916610100179055565b6000546001600160a01b03163314610b5f5760405162461bcd60e51b81526004016108af90611836565b610b696000611133565b565b6000546001600160a01b03163314610b955760405162461bcd60e51b81526004016108af90611836565b6000196006819055600555565b6000546001600160a01b03163314610bcc5760405162461bcd60e51b81526004016108af90611836565b47336108fc6064610bdd85856118cc565b610be791906118e3565b6040518115909202916000818181858888f19350505050158015610c0f573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610c3f5760405162461bcd60e51b81526004016108af90611836565b306001600160a01b03841603610c975760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e0000000060448201526064016108af565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190611905565b6000546001600160a01b03163314610d325760405162461bcd60e51b81526004016108af90611836565b600e8490556010839055600f829055610d5583610d4f8685611183565b90611183565b6011819055610d65908290611927565b6012556011546103de10801590610d8057506103de60125411155b610dd85760405162461bcd60e51b8152602060048201526024808201527f546f6b656e3a20436f6d62696e65642066656573206d75737420626520756e646044820152636572202560e01b60648201526084016108af565b50505050565b600061087e338484610eb2565b6000546001600160a01b03163314610e155760405162461bcd60e51b81526004016108af90611836565b6001600160a01b038116610e7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108af565b610e8381611133565b50565b60008184841115610eaa5760405162461bcd60e51b81526004016108af91906116c5565b505050900390565b60165460009060ff1615610ed257610ecb84848461118f565b905061087e565b6001600160a01b0384166000908152600b602052604090205460ff16610f3b57600a5460ff16610f3b5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108af565b60055482111580610f6457506001600160a01b0384166000908152600c602052604090205460ff165b80610f72575060075460ff16155b610fb25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108af565b6001600160a01b03831660009081526015602052604090205460ff168015610fdd575060165460ff16155b8015610ff05750601654610100900460ff165b15610ffd57610ffd611275565b6001600160a01b0383166000908152600c602052604090205460ff16158015611028575060075460ff165b15611099576006546001600160a01b0384166000908152600860205260409020546110539084611183565b11156110995760405162461bcd60e51b815260206004820152601560248201527415d85b1b195d08131a5b5a5d08115e18d959591959605a1b60448201526064016108af565b60006110a685858561144a565b6001600160a01b0385166000908152600860205260409020549091506110cc9082611183565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111209085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061087e8284611927565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546111e0918490610e86565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461120f9083611183565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112639086815260200190565b60405180910390a35060019392505050565b6016805460ff19166001179055306000908152600860205260409020546017546112a1906107d06118cc565b81106112b9576017546112b6906107d06118cc565b90505b60175481106114015760408051600280825260608201835260009260208301908036833701905050905030816000815181106112f7576112f761193a565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611350573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611374919061186b565b816001815181106113875761138761193a565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906113cd908590600090869030904290600401611950565b600060405180830381600087803b1580156113e757600080fd5b505af11580156113fb573d6000803e3d6000fd5b50505050505b60035460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561143b573d6000803e3d6000fd5b50506016805460ff1916905550565b6001600160a01b0383166000908152600b6020526040812054819060ff1615801561148e57506001600160a01b0384166000908152600b602052604090205460ff16155b905060008115611588576001600160a01b03851660009081526015602052604081205460ff1680156114c75750600d54610100900460ff165b156114d157506012545b6001600160a01b03871660009081526015602052604090205460ff1680156114fb5750600d5460ff165b1561150557506011545b6001600160a01b03871660009081526015602052604090205460ff1615801561154757506001600160a01b03861660009081526015602052604090205460ff16155b1561156a57600d5462010000900460ff1615611566575060125461156a565b5060005b6115806103e861157a87846116a1565b906116ad565b9150506115a8565b6003546001600160a01b03908116908716036115a857839250505061087e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600890915291909120546115fa918690610e86565b6001600160a01b038716600090815260086020526040902055801561168d57306000908152600860205260409020546116339082611183565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116849085815260200190565b60405180910390a35b61169784826116b9565b9695505050505050565b600061087e82846118cc565b600061087e82846118e3565b600061087e82846119c1565b600060208083528351808285015260005b818110156116f2578581018301518582016040015282016116d6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e8357600080fd5b6000806040838503121561173b57600080fd5b823561174681611713565b946020939093013593505050565b60008060006060848603121561176957600080fd5b833561177481611713565b9250602084013561178481611713565b929592945050506040919091013590565b6000602082840312156117a757600080fd5b813561087e81611713565b6000602082840312156117c457600080fd5b5035919050565b600080600080608085870312156117e157600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561181057600080fd5b823561181b81611713565b9150602083013561182b81611713565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561187d57600080fd5b815161087e81611713565b60008060006060848603121561189d57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107bd576107bd6118b6565b60008261190057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561191757600080fd5b8151801515811461087e57600080fd5b808201808211156107bd576107bd6118b6565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119a05784516001600160a01b03168352938301939183019160010161197b565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156107bd576107bd6118b656fea26469706673582212201e24be7f0b2055ccc3d910a2a407c658b21ee7a3dfd35766d59a21969c72205d64736f6c63430008130033

Deployed Bytecode Sourcemap

5899:9450:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7275:59;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7275:59:0;;;;;;;;8324:94;;;;;;;;;;-1:-1:-1;8405:5:0;;;;;;;;;;;;-1:-1:-1;;;8405:5:0;;;;8324:94;;;;;;;:::i;9067:248::-;;;;;;;;;;-1:-1:-1;9067:248:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;9067:248:0;1205:187:1;8634:102:0;;;;;;;;;;-1:-1:-1;8716:12:0;;8634:102;;6962:27;;;;;;;;;;;;;;;;9519:422;;;;;;;;;;-1:-1:-1;9519:422:0;;;;;:::i;:::-;;:::i;6924:29::-;;;;;;;;;;;;;;;;8532:94;;;;;;;;;;-1:-1:-1;8532:94:0;;6077:2;2000:36:1;;1988:2;1973:18;8532:94:0;1858:184:1;9949:588:0;;;;;;;;;;;;;:::i;:::-;;6624:43;;;;;;;;;;-1:-1:-1;6624:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6430:33;;;;;;;;;;-1:-1:-1;6430:33:0;;;;;;;;7173:41;;;;;;;;;;-1:-1:-1;7173:41:0;;;;;;;;;;;6884:33;;;;;;;;;;;;;;;;6766:30;;;;;;;;;;-1:-1:-1;6766:30:0;;;;;;;;;;;8744:119;;;;;;;;;;-1:-1:-1;8744:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8837:18:0;8810:7;8837:18;;;:9;:18;;;;;;;8744:119;5344:103;;;;;;;;;;;;;:::i;14705:135::-;;;;;;;;;;;;;:::i;6206:30::-;;;;;;;;;;-1:-1:-1;6206:30:0;;;;-1:-1:-1;;;;;6206:30:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;6206:30:0;2299:203:1;15143::0;;;;;;;;;;-1:-1:-1;15143:203:0;;;;;:::i;:::-;;:::i;6306:56::-;;;;;;;;;;;;;;;;6369:54;;;;;;;;;;;;;;;;14848:287;;;;;;;;;;-1:-1:-1;14848:287:0;;;;;:::i;:::-;;:::i;14128:569::-;;;;;;;;;;-1:-1:-1;14128:569:0;;;;;:::i;:::-;;:::i;6674:47::-;;;;;;;;;;-1:-1:-1;6674:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5121:87;;;;;;;;;;-1:-1:-1;5167:7:0;5194:6;-1:-1:-1;;;;;5194:6:0;5121:87;;8426:98;;;;;;;;;;-1:-1:-1;8509:7:0;;;;;;;;;;;;-1:-1:-1;;;8509:7:0;;;;8426:98;;6846:31;;;;;;;;;;;;;;;;6803:34;;;;;;;;;;-1:-1:-1;6803:34:0;;;;;;;;;;;7072:19;;;;;;;;;;-1:-1:-1;7072:19:0;;;;-1:-1:-1;;;;;7072:19:0;;;9323:188;;;;;;;;;;-1:-1:-1;9323:188:0;;;;;:::i;:::-;;:::i;6163:36::-;;;;;;;;;;-1:-1:-1;6163:36:0;;;;-1:-1:-1;;;;;6163:36:0;;;6996;;;;;;;;;;;;;;;;7221:45;;;;;;;;;;-1:-1:-1;7221:45:0;;;;;;;;;;;8871:188;;;;;;;;;;-1:-1:-1;8871:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;9023:19:0;;;8991:7;9023:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8871:188;7098:38;;;;;;;;;;-1:-1:-1;7098:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6730:29;;;;;;;;;;-1:-1:-1;6730:29:0;;;;;;;;5455:238;;;;;;;;;;-1:-1:-1;5455:238:0;;;;;:::i;:::-;;:::i;7041:24::-;;;;;;;;;;-1:-1:-1;7041:24:0;;;;-1:-1:-1;;;;;7041:24:0;;;6584:31;;;;;;;;;;-1:-1:-1;6584:31:0;;;;;;;;9067:248;9203:10;9169:4;9191:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9191:32:0;;;;;;;;;;:41;;;9248:37;9169:4;;9191:32;;9248:37;;;;9226:6;160:25:1;;148:2;133:18;;14:177;9248:37:0;;;;;;;;-1:-1:-1;9303:4:0;9067:248;;;;;:::o;9519:422::-;-1:-1:-1;;;;;9674:19:0;;9653:4;9674:19;;;:11;:19;;;;;;;;9694:10;9674:31;;;;;;;;-1:-1:-1;;9674:52:0;9670:206;;9777:87;;;;;;;;;;;-1:-1:-1;;;9777:87:0;;;;;;;;-1:-1:-1;;;;;9777:19:0;;-1:-1:-1;9777:19:0;;;:11;:19;;;;;9797:10;9777:31;;;;;;;;;;:87;;9831:6;;9777:53;:87::i;:::-;-1:-1:-1;;;;;9743:19:0;;;;;;:11;:19;;;;;;;;9763:10;9743:31;;;;;;;:121;9670:206;9893:40;9907:6;9915:9;9926:6;9893:13;:40::i;:::-;9886:47;;9519:422;;;;;;:::o;9949:588::-;5167:7;5194:6;-1:-1:-1;;;;;5194:6:0;4722:10;5256:23;5248:68;;;;-1:-1:-1;;;5248:68:0;;;;;;;:::i;:::-;;;;;;;;;10031:6:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;10031:16:0;;;;9999:17:::1;::::0;-1:-1:-1;;;;;10031:6:0::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10019:40:0::1;;10074:6;;;;;;;;;-1:-1:-1::0;;;;;10074:6:0::1;-1:-1:-1::0;;;;;10074:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10019:107;::::0;-1:-1:-1;;;;;;10019:107:0::1;::::0;;;;;;-1:-1:-1;;;;;4548:15:1;;;10019:107:0::1;::::0;::::1;4530:34:1::0;10110:4:0::1;4580:18:1::0;;;4573:43;4465:18;;10019:107:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10137:4;:16:::0;;-1:-1:-1;;;;;;10137:16:0::1;-1:-1:-1::0;;;;;10137:16:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10164:12:0;;;:6:::1;:12;::::0;;;;;;;:19;;-1:-1:-1;;10164:19:0;;::::1;-1:-1:-1::0;10164:19:0;;::::1;::::0;;;10196:15:::1;:26:::0;;;;;:33;;;;::::1;::::0;;::::1;::::0;;10242:6:::1;::::0;10317:4:::1;8837:18:::0;;;:9;:18;;;;;;10137:16;;-1:-1:-1;10242:6:0;::::1;::::0;:22:::1;::::0;10272:21:::1;::::0;10242:217:::1;::::0;-1:-1:-1;;;;;;10242:217:0::1;::::0;;;;;;-1:-1:-1;;;;;4986:15:1;;;10242:217:0::1;::::0;::::1;4968:34:1::0;5018:18;;;5011:34;10376:1:0::1;5061:18:1::0;;;5054:34;;;5104:18;;;5097:34;;;5147:19;;;5140:44;10433:15:0::1;5200:19:1::0;;;5193:35;4902:19;;10242:217:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10472:11:0::1;:18:::0;;-1:-1:-1;;10472:18:0::1;10486:4;10472:18;::::0;;-1:-1:-1;;10501:21:0::1;:28:::0;;-1:-1:-1;;10501:28:0::1;10472:18;10501:28;::::0;;9949:588::o;5344:103::-;5167:7;5194:6;-1:-1:-1;;;;;5194:6:0;4722:10;5256:23;5248:68;;;;-1:-1:-1;;;5248:68:0;;;;;;;:::i;:::-;5409:30:::1;5436:1;5409:18;:30::i;:::-;5344:103::o:0;14705:135::-;5167:7;5194:6;-1:-1:-1;;;;;5194:6:0;4722:10;5256:23;5248:68;;;;-1:-1:-1;;;5248:68:0;;;;;;;:::i;:::-;-1:-1:-1;;14759:10:0::1;:30:::0;;;14800:12:::1;:32:::0;14705:135::o;15143:203::-;5167:7;5194:6;-1:-1:-1;;;;;5194:6:0;4722:10;5256:23;5248:68;;;;-1:-1:-1;;;5248:68:0;;;;;;;:::i;:::-;15240:21:::1;15280:10;15272:66;15334:3;15302:28;15314:16:::0;15240:21;15302:28:::1;:::i;:::-;15301:36;;;;:::i;:::-;15272:66;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15209:137;15143:203:::0;:::o;14848:287::-;14960:12;5194:6;;-1:-1:-1;;;;;5194:6:0;4722:10;5256:23;5248:68;;;;-1:-1:-1;;;5248:68:0;;;;;;;:::i;:::-;15022:4:::1;-1:-1:-1::0;;;;;14998:29:0;::::1;::::0;14990:70:::1;;;::::0;-1:-1:-1;;;14990:70:0;;6279:2:1;14990:70:0::1;::::0;::::1;6261:21:1::0;6318:2;6298:18;;;6291:30;6357;6337:18;;;6330:58;6405:18;;14990:70:0::1;6077:352:1::0;14990:70:0::1;15078:49;::::0;-1:-1:-1;;;15078:49:0;;15108:10:::1;15078:49;::::0;::::1;6608:51:1::0;6675:18;;;6668:34;;;-1:-1:-1;;;;;15078:29:0;::::1;::::0;::::1;::::0;6581:18:1;;15078:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14128:569::-:0;5167:7;5194:6;-1:-1:-1;;;;;5194:6:0;4722:10;5256:23;5248:68;;;;-1:-1:-1;;;5248:68:0;;;;;;;:::i;:::-;14316:12:::1;:28:::0;;;14355:10:::1;:29:::0;;;14395:12:::1;:30:::0;;;14449:46:::1;14368:16:::0;14449:30:::1;14331:13:::0;14410:15;14449:16:::1;:30::i;:::-;:34:::0;::::1;:46::i;:::-;14438:8;:57:::0;;;14526:23:::1;::::0;14537:12;;14526:23:::1;:::i;:::-;14506:17;:43:::0;14582:8:::1;::::0;14594:3:::1;-1:-1:-1::0;14582:15:0;::::1;::::0;:43:::1;;;14622:3;14601:17;;:24;;14582:43;14560:129;;;::::0;-1:-1:-1;;;14560:129:0;;7327:2:1;14560:129:0::1;::::0;::::1;7309:21:1::0;7366:2;7346:18;;;7339:30;7405:34;7385:18;;;7378:62;-1:-1:-1;;;7456:18:1;;;7449:34;7500:19;;14560:129:0::1;7125:400:1::0;14560:129:0::1;14128:569:::0;;;;:::o;9323:188::-;9430:4;9459:44;9473:10;9485:9;9496:6;9459:13;:44::i;5455:238::-;5167:7;5194:6;-1:-1:-1;;;;;5194:6:0;4722:10;5256:23;5248:68;;;;-1:-1:-1;;;5248:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5558:22:0;::::1;5536:110;;;::::0;-1:-1:-1;;;5536:110:0;;7732:2:1;5536:110:0::1;::::0;::::1;7714:21:1::0;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;-1:-1:-1;;;7861:18:1;;;7854:36;7907:19;;5536:110:0::1;7530:402:1::0;5536:110:0::1;5657:28;5676:8;5657:18;:28::i;:::-;5455:238:::0;:::o;2002:240::-;2122:7;2183:12;2175:6;;;;2167:29;;;;-1:-1:-1;;;2167:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2218:5:0;;;2002:240::o;10545:1097::-;10692:16;;10671:4;;10692:16;;10688:97;;;10732:41;10747:6;10755:9;10766:6;10732:14;:41::i;:::-;10725:48;;;;10688:97;-1:-1:-1;;;;;10802:19:0;;;;;;:11;:19;;;;;;;;10797:97;;10846:11;;;;10838:44;;;;-1:-1:-1;;;10838:44:0;;8139:2:1;10838:44:0;;;8121:21:1;8178:2;8158:18;;;8151:30;-1:-1:-1;;;8197:18:1;;;8190:50;8257:18;;10838:44:0;7937:344:1;10838:44:0;10938:12;;10928:6;:22;;:66;;;-1:-1:-1;;;;;;10971:23:0;;;;;;:15;:23;;;;;;;;10928:66;:102;;;-1:-1:-1;11016:14:0;;;;11015:15;10928:102;10906:169;;;;-1:-1:-1;;;10906:169:0;;8488:2:1;10906:169:0;;;8470:21:1;8527:2;8507:18;;;8500:30;-1:-1:-1;;;8546:18:1;;;8539:47;8603:18;;10906:169:0;8286:341:1;10906:169:0;-1:-1:-1;;;;;11092:17:0;;;;;;:6;:17;;;;;;;;:38;;;;-1:-1:-1;11114:16:0;;;;11113:17;11092:38;:63;;;;-1:-1:-1;11134:21:0;;;;;;;11092:63;11088:106;;;11172:10;:8;:10::i;:::-;-1:-1:-1;;;;;11211:26:0;;;;;;:15;:26;;;;;;;;11210:27;:45;;;;-1:-1:-1;11241:14:0;;;;11210:45;11206:207;;;11334:10;;-1:-1:-1;;;;;11298:20:0;;;;;;:9;:20;;;;;;:32;;11323:6;11298:24;:32::i;:::-;:46;;11272:129;;;;-1:-1:-1;;;11272:129:0;;8834:2:1;11272:129:0;;;8816:21:1;8873:2;8853:18;;;8846:30;-1:-1:-1;;;8892:18:1;;;8885:51;8953:18;;11272:129:0;8632:345:1;11272:129:0;11425:19;11447:34;11455:6;11463:9;11474:6;11447:7;:34::i;:::-;-1:-1:-1;;;;;11515:20:0;;;;;;:9;:20;;;;;;11425:56;;-1:-1:-1;11515:37:0;;11425:56;11515:24;:37::i;:::-;-1:-1:-1;;;;;11492:20:0;;;;;;;:9;:20;;;;;;;:60;;;;11570:40;;;;;;;;;;11598:11;160:25:1;;148:2;133:18;;14:177;11570:40:0;;;;;;;;-1:-1:-1;11630:4:0;;10545:1097;-1:-1:-1;;;;10545:1097:0:o;5701:191::-;5775:16;5794:6;;-1:-1:-1;;;;;5811:17:0;;;-1:-1:-1;;;;;;5811:17:0;;;;;;5844:40;;5794:6;;;;;;;5844:40;;5775:16;5844:40;5764:128;5701:191;:::o;1472:98::-;1530:7;1557:5;1561:1;1557;:5;:::i;11650:401::-;11814:90;;;;;;;;;;;-1:-1:-1;;;11814:90:0;;;;;;;;-1:-1:-1;;;;;11814:17:0;;11777:4;11814:17;;;:9;:17;;;;;;;:90;;11850:6;;11814:21;:90::i;:::-;-1:-1:-1;;;;;11794:17:0;;;;;;;:9;:17;;;;;;:110;;;;11938:20;;;;;;;:32;;11963:6;11938:24;:32::i;:::-;-1:-1:-1;;;;;11915:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11986:35;;;;;;;;;;12014:6;160:25:1;;148:2;133:18;;14:177;11986:35:0;;;;;;;;-1:-1:-1;12039:4:0;11650:401;;;;;:::o;13382:738::-;7377:16;:23;;-1:-1:-1;;7377:23:0;7396:4;7377:23;;;13475:4:::1;7377:16:::0;13457:24;;;:9:::1;:24;::::0;;;;;13512:13:::1;::::0;:20:::1;::::0;13528:4:::1;13512:20;:::i;:::-;13496:12;:36;13492:90;;13562:13;::::0;:20:::1;::::0;13578:4:::1;13562:20;:::i;:::-;13547:35;;13492:90;13615:13;;13599:12;:29;13595:407;;13669:16;::::0;;13683:1:::1;13669:16:::0;;;;;::::1;::::0;;13645:21:::1;::::0;13669:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13669:16:0::1;13645:40;;13718:4;13700;13705:1;13700:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13700:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13748:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;13748:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;13700:7;;13748:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13738:4;13743:1;13738:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13738:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13778:6:::1;::::0;:212:::1;::::0;-1:-1:-1;;;13778:212:0;;:6;::::1;::::0;:57:::1;::::0;:212:::1;::::0;13854:12;;13778:6:::1;::::0;13905:4;;13936::::1;::::0;13960:15:::1;::::0;13778:212:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13630:372;13595:407;14076:15;::::0;14068:44:::1;::::0;14034:21:::1;::::0;-1:-1:-1;;;;;14076:15:0::1;::::0;14068:44;::::1;;;::::0;14034:21;;14014:17:::1;14068:44:::0;14014:17;14068:44;14034:21;14076:15;14068:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7423:16:0;:24;;-1:-1:-1;;7423:24:0;;;-1:-1:-1;13382:738:0:o;12059:1315::-;-1:-1:-1;;;;;12211:19:0;;12179:7;12211:19;;;:11;:19;;;;;;12179:7;;12211:19;;12210:20;:47;;;;-1:-1:-1;;;;;;12235:22:0;;;;;;:11;:22;;;;;;;;12234:23;12210:47;12199:58;;12268:17;12304:3;12300:719;;;-1:-1:-1;;;;;12370:17:0;;12324:21;12370:17;;;:6;:17;;;;;;;;:32;;;;-1:-1:-1;12391:11:0;;;;;;;12370:32;12366:106;;;-1:-1:-1;12439:17:0;;12366:106;-1:-1:-1;;;;;12490:14:0;;;;;;:6;:14;;;;;;;;:28;;;;-1:-1:-1;12508:10:0;;;;12490:28;12486:93;;;-1:-1:-1;12555:8:0;;12486:93;-1:-1:-1;;;;;12598:14:0;;;;;;:6;:14;;;;;;;;12597:15;:37;;;;-1:-1:-1;;;;;;12617:17:0;;;;;;:6;:17;;;;;;;;12616:18;12597:37;12593:240;;;12659:15;;;;;;;12655:163;;;-1:-1:-1;12715:17:0;;12655:163;;;-1:-1:-1;12797:1:0;12655:163;12861:35;12891:4;12861:25;:6;12872:13;12861:10;:25::i;:::-;:29;;:35::i;:::-;12849:47;;12309:599;12300:719;;;12943:15;;-1:-1:-1;;;;;12943:15:0;;;12933:25;;;;12929:79;;12986:6;12979:13;;;;;;12929:79;13051:90;;;;;;;;;;;-1:-1:-1;;;13051:90:0;;;;;;;;-1:-1:-1;;;;;13051:17:0;;-1:-1:-1;13051:17:0;;;:9;:17;;;;;;;;:90;;13087:6;;13051:21;:90::i;:::-;-1:-1:-1;;;;;13031:17:0;;;;;;:9;:17;;;;;:110;13158:13;;13154:174;;13233:4;13215:24;;;;:9;:24;;;;;;:39;;13244:9;13215:28;:39::i;:::-;13206:4;13188:24;;;;:9;:24;;;;;;;:66;;;;13274:42;;-1:-1:-1;;;;;13274:42:0;;;;;;;13306:9;160:25:1;;148:2;133:18;;14:177;13274:42:0;;;;;;;;13154:174;13345:21;:6;13356:9;13345:10;:21::i;:::-;13338:28;12059:1315;-1:-1:-1;;;;;;12059:1315:0:o;1684:98::-;1742:7;1769:5;1773:1;1769;:5;:::i;1790:98::-;1848:7;1875:5;1879:1;1875;:5;:::i;1578:98::-;1636:7;1663:5;1667:1;1663;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:385::-;2778:6;2786;2794;2802;2855:3;2843:9;2834:7;2830:23;2826:33;2823:53;;;2872:1;2869;2862:12;2823:53;-1:-1:-1;;2895:23:1;;;2965:2;2950:18;;2937:32;;-1:-1:-1;3016:2:1;3001:18;;2988:32;;3067:2;3052:18;3039:32;;-1:-1:-1;2692:385:1;-1:-1:-1;2692:385:1:o;3082:388::-;3150:6;3158;3211:2;3199:9;3190:7;3186:23;3182:32;3179:52;;;3227:1;3224;3217:12;3179:52;3266:9;3253:23;3285:31;3310:5;3285:31;:::i;:::-;3335:5;-1:-1:-1;3392:2:1;3377:18;;3364:32;3405:33;3364:32;3405:33;:::i;:::-;3457:7;3447:17;;;3082:388;;;;;:::o;3701:356::-;3903:2;3885:21;;;3922:18;;;3915:30;3981:34;3976:2;3961:18;;3954:62;4048:2;4033:18;;3701:356::o;4062:251::-;4132:6;4185:2;4173:9;4164:7;4160:23;4156:32;4153:52;;;4201:1;4198;4191:12;4153:52;4233:9;4227:16;4252:31;4277:5;4252:31;:::i;5239:306::-;5327:6;5335;5343;5396:2;5384:9;5375:7;5371:23;5367:32;5364:52;;;5412:1;5409;5402:12;5364:52;5441:9;5435:16;5425:26;;5491:2;5480:9;5476:18;5470:25;5460:35;;5535:2;5524:9;5520:18;5514:25;5504:35;;5239:306;;;;;:::o;5550:127::-;5611:10;5606:3;5602:20;5599:1;5592:31;5642:4;5639:1;5632:15;5666:4;5663:1;5656:15;5682:168;5755:9;;;5786;;5803:15;;;5797:22;;5783:37;5773:71;;5824:18;;:::i;5855:217::-;5895:1;5921;5911:132;;5965:10;5960:3;5956:20;5953:1;5946:31;6000:4;5997:1;5990:15;6028:4;6025:1;6018:15;5911:132;-1:-1:-1;6057:9:1;;5855:217::o;6713:277::-;6780:6;6833:2;6821:9;6812:7;6808:23;6804:32;6801:52;;;6849:1;6846;6839:12;6801:52;6881:9;6875:16;6934:5;6927:13;6920:21;6913:5;6910:32;6900:60;;6956:1;6953;6946:12;6995:125;7060:9;;;7081:10;;;7078:36;;;7094:18;;:::i;9114:127::-;9175:10;9170:3;9166:20;9163:1;9156:31;9206:4;9203:1;9196:15;9230:4;9227:1;9220:15;9246:980;9508:4;9556:3;9545:9;9541:19;9587:6;9576:9;9569:25;9613:2;9651:6;9646:2;9635:9;9631:18;9624:34;9694:3;9689:2;9678:9;9674:18;9667:31;9718:6;9753;9747:13;9784:6;9776;9769:22;9822:3;9811:9;9807:19;9800:26;;9861:2;9853:6;9849:15;9835:29;;9882:1;9892:195;9906:6;9903:1;9900:13;9892:195;;;9971:13;;-1:-1:-1;;;;;9967:39:1;9955:52;;10062:15;;;;10027:12;;;;10003:1;9921:9;9892:195;;;-1:-1:-1;;;;;;;10143:32:1;;;;10138:2;10123:18;;10116:60;-1:-1:-1;;;10207:3:1;10192:19;10185:35;10104:3;9246:980;-1:-1:-1;;;9246:980:1:o;10231:128::-;10298:9;;;10319:11;;;10316:37;;;10333:18;;:::i

Swarm Source

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