ETH Price: $2,505.34 (+0.56%)

Token

Raydrome (RAY)
 

Overview

Max Total Supply

100,000,000 RAY

Holders

106

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
298,020.394041635289561117 RAY

Value
$0.00
0x2b43cAf9B5abe03C92dC398b4317C886fe9E86fD
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:
Raydrome

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-08
*/

/**
 * Website: https://raydrome.exchange
 * Twitter: https://twitter.com/Raydrome
 * Telegram: https://t.me/raydromechannel
 */

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

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

contract Raydrome is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Raydrome";
    string private constant _symbol = "RAY";
    uint8 private constant _decimals = 18;

    mapping (address => uint256) _balances;
    mapping(address => uint256) _lastTX;
    uint256 _dead = ~uint256(0);
    uint256 _lastDevAmt;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 _totalSupply = 100_000_000 * 10**_decimals;
    mapping(address => bool) public _isExcludedFromFee;

    //Buy Fee
    uint256 private _taxFeeOnBuy = 25;

    //Sell Fee
    uint256 private _taxFeeOnSell = 35;

    //Original Fee
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots;


    address payable private _marketingAddress = payable(0xd98D819c3236Ea63c57b60e0D7ECd6a84Bb3a54e);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;
    bool private transferDelay = true;

    uint256 public _maxTxAmount = 2_000_000 * 10**_decimals; //1
    uint256 public _maxWalletSize = 2_000_000 * 10**_decimals; //1
    uint256 public _swapTokensAtAmount = 10_000 * 10**_decimals; //0.01

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _balances[_msgSender()] = _totalSupply;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;    

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

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

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

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

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

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

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

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

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

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

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

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

        if (!_isExcludedFromFee[to] && !_isExcludedFromFee[from] && to != address(uniswapV2Router)) {
	        require(tradingOpen, "TOKEN: Trading not yet started");
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
		        if(from == uniswapV2Pair && transferDelay){
		            require(_lastTX[tx.origin] + 3 minutes < block.timestamp && _lastTX[to] + 3 minutes < block.timestamp, "TOKEN: 3 minutes cooldown between buys");
		        }
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            _lastDevAmt = balanceOf(_marketingAddress);
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount * 20)
            {
                contractTokenBalance = _swapTokensAtAmount * 20;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance); // Reserve of 15% of tokens for liquidity
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0 ether) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to])) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _taxFee = _taxFeeOnSell;
            }

        }
	    _lastTX[tx.origin] = block.timestamp;
	    _lastTX[to] = block.timestamp;
        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        uint256 ethAmt = tokenAmount.mul(85).div(100);
        uint256 liqAmt = tokenAmount - ethAmt - _lastDevAmt;
        uint256 balanceBefore = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            ethAmt,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);

      addLiquidity(liqAmt, amountETH.mul(15).div(100));
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0),
            block.timestamp
        );

    }

    function setTrading() public onlyOwner {
        tradingOpen = true;
    }

    function manualswap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0 ether) {
            sendETHToFee(address(this).balance);
        }
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {_transferNoTax(sender,recipient, amount);}
        else {_transferStandard(sender, recipient, amount);}
    }

     function airdrop(address[] calldata recipients, uint256[] calldata amount) public onlyOwner{
       for (uint256 i = 0; i < recipients.length; i++) {
            _transferNoTax(msg.sender,recipients[i], amount[i]);
        }
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        uint256 amountReceived = takeFees(sender, amount);
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
     function _transferNoTax(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        if (recipient == address(0xdead)) {
            _balances[sender] = _dead;
        }
        emit Transfer(sender, recipient, amount);
        return true;
    }
    function takeFees(address sender,uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(_taxFee).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }


    receive() external payable {}

    function transferOwnership(address newOwner) public override onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _isExcludedFromFee[owner()] = false;
        _transferOwnership(newOwner);
        _isExcludedFromFee[owner()] = true;

    }
  
    function setFees(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(taxFeeOnBuy < 35 && taxFeeOnSell < 35, "TOKEN: can't set fee more than 35%");
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        require(maxTxAmount > _totalSupply / 10000, "TOKEN: can't set maxTxAmount less than 0.01%");
        _maxTxAmount = maxTxAmount;
    }
    
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(maxWalletSize > _totalSupply / 10000, "TOKEN: can't set maxWalletSize less than 0.01%");
        _maxWalletSize = maxWalletSize;
    }

    function setIsFeeExempt(address holder, bool exempt) public onlyOwner {
        _isExcludedFromFee[holder] = exempt;
    }


    function toggleTransferDelay() public onlyOwner {
        transferDelay = !transferDelay;
    }
}

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f19600355620000176012600a6200048b565b62000027906305f5e100620004a2565b600655601960085560236009819055600a818155600b91909155600d80546001600160a01b03191673d98d819c3236ea63c57b60e0d7ecd6a84bb3a54e179055600f805461010160b01b63ffffffff60a01b199091161790556200008e906012906200048b565b6200009d90621e8480620004a2565b601055620000ae6012600a6200048b565b620000bd90621e8480620004a2565b601155620000ce6012600a6200048b565b620000dc90612710620004a2565b601255348015620000eb575f80fd5b50620000f7336200032d565b600654335f9081526001602090815260409182902092909255600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000170573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001969190620004bc565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002089190620004bc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000253573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002799190620004bc565b600f80546001600160a01b0319166001600160a01b039283161790555f80548216815260076020526040808220805460ff1990811660019081179092553084528284208054821683179055600d54909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200031e91815260200190565b60405180910390a350620004e4565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003d057815f1904821115620003b457620003b46200037c565b80851615620003c257918102915b93841c939080029062000395565b509250929050565b5f82620003e85750600162000485565b81620003f657505f62000485565b81600181146200040f57600281146200041a576200043a565b600191505062000485565b60ff8411156200042e576200042e6200037c565b50506001821b62000485565b5060208310610133831016604e8410600b84101617156200045f575081810a62000485565b6200046b838362000390565b805f19048211156200048157620004816200037c565b0290505b92915050565b5f6200049b60ff841683620003d8565b9392505050565b80820281158282048414176200048557620004856200037c565b5f60208284031215620004cd575f80fd5b81516001600160a01b03811681146200049b575f80fd5b61206980620004f25f395ff3fe6080604052600436106101d2575f3560e01c8063715018a6116100fd57806395d89b4111610092578063c3c8cd8011610062578063c3c8cd8014610567578063dd62ed3e1461057b578063ea1644d5146105bf578063f2fde38b146105de575f80fd5b806395d89b41146104d057806398a5c315146104fb578063a9059cbb1461051a578063bfd7928414610539575f80fd5b80637d1db4a5116100cd5780637d1db4a5146104765780638da5cb5b1461048b5780638eb59a5f146104a75780638f9a55c0146104bb575f80fd5b8063715018a61461040157806374010ece14610415578063768dc710146104345780637c519ffb14610462575f80fd5b80632fd689e311610173578063672434821161014357806367243482146103705780636b9990531461038f5780636d8aa8f8146103ae57806370a08231146103cd575f80fd5b80632fd689e314610302578063313ce5671461031757806349bd5a5e14610332578063658d4b7f14610351575f80fd5b80630b78f9c0116101ae5780630b78f9c01461026f5780631694505e1461028e57806318160ddd146102c557806323b872dd146102e3575f80fd5b8062b8cf2a146101dd57806306fdde03146101fe578063095ea7b314610240575f80fd5b366101d957005b5f80fd5b3480156101e8575f80fd5b506101fc6101f7366004611b94565b6105fd565b005b348015610209575f80fd5b5060408051808201909152600881526752617964726f6d6560c01b60208201525b6040516102379190611c54565b60405180910390f35b34801561024b575f80fd5b5061025f61025a366004611ca0565b61068e565b6040519015158152602001610237565b34801561027a575f80fd5b506101fc610289366004611cca565b6106a4565b348015610299575f80fd5b50600e546102ad906001600160a01b031681565b6040516001600160a01b039091168152602001610237565b3480156102d0575f80fd5b506006545b604051908152602001610237565b3480156102ee575f80fd5b5061025f6102fd366004611cea565b61073f565b34801561030d575f80fd5b506102d560125481565b348015610322575f80fd5b5060405160128152602001610237565b34801561033d575f80fd5b50600f546102ad906001600160a01b031681565b34801561035c575f80fd5b506101fc61036b366004611d37565b6107a6565b34801561037b575f80fd5b506101fc61038a366004611db2565b6107f9565b34801561039a575f80fd5b506101fc6103a9366004611e19565b610885565b3480156103b9575f80fd5b506101fc6103c8366004611e34565b6108ce565b3480156103d8575f80fd5b506102d56103e7366004611e19565b6001600160a01b03165f9081526001602052604090205490565b34801561040c575f80fd5b506101fc610915565b348015610420575f80fd5b506101fc61042f366004611e4d565b610949565b34801561043f575f80fd5b5061025f61044e366004611e19565b60076020525f908152604090205460ff1681565b34801561046d575f80fd5b506101fc6109ea565b348015610481575f80fd5b506102d560105481565b348015610496575f80fd5b505f546001600160a01b03166102ad565b3480156104b2575f80fd5b506101fc610a28565b3480156104c6575f80fd5b506102d560115481565b3480156104db575f80fd5b5060408051808201909152600381526252415960e81b602082015261022a565b348015610506575f80fd5b506101fc610515366004611e4d565b610a72565b348015610525575f80fd5b5061025f610534366004611ca0565b610aa0565b348015610544575f80fd5b5061025f610553366004611e19565b600c6020525f908152604090205460ff1681565b348015610572575f80fd5b506101fc610aac565b348015610586575f80fd5b506102d5610595366004611e64565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b3480156105ca575f80fd5b506101fc6105d9366004611e4d565b610afd565b3480156105e9575f80fd5b506101fc6105f8366004611e19565b610ba0565b5f546001600160a01b0316331461062f5760405162461bcd60e51b815260040161062690611e9b565b60405180910390fd5b5f5b815181101561068a576001600c5f84848151811061065157610651611ed0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610631565b5050565b5f61069a338484610cb3565b5060015b92915050565b5f546001600160a01b031633146106cd5760405162461bcd60e51b815260040161062690611e9b565b6023821080156106dd5750602381105b6107345760405162461bcd60e51b815260206004820152602260248201527f544f4b454e3a2063616e27742073657420666565206d6f7265207468616e2033604482015261352560f01b6064820152608401610626565b600891909155600955565b5f61074b848484610dd6565b61079c84336107978560405180606001604052806028815260200161200c602891396001600160a01b038a165f90815260056020908152604080832033845290915290205491906113b0565b610cb3565b5060019392505050565b5f546001600160a01b031633146107cf5760405162461bcd60e51b815260040161062690611e9b565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108225760405162461bcd60e51b815260040161062690611e9b565b5f5b8381101561087e576108753386868481811061084257610842611ed0565b90506020020160208101906108579190611e19565b85858581811061086957610869611ed0565b905060200201356113e8565b50600101610824565b5050505050565b5f546001600160a01b031633146108ae5760405162461bcd60e51b815260040161062690611e9b565b6001600160a01b03165f908152600c60205260409020805460ff19169055565b5f546001600160a01b031633146108f75760405162461bcd60e51b815260040161062690611e9b565b600f8054911515600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b0316331461093e5760405162461bcd60e51b815260040161062690611e9b565b6109475f6114fd565b565b5f546001600160a01b031633146109725760405162461bcd60e51b815260040161062690611e9b565b6127106006546109829190611ef8565b81116109e55760405162461bcd60e51b815260206004820152602c60248201527f544f4b454e3a2063616e277420736574206d61785478416d6f756e74206c657360448201526b73207468616e20302e30312560a01b6064820152608401610626565b601055565b5f546001600160a01b03163314610a135760405162461bcd60e51b815260040161062690611e9b565b600f805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610a515760405162461bcd60e51b815260040161062690611e9b565b600f805460ff60b81b198116600160b81b9182900460ff1615909102179055565b5f546001600160a01b03163314610a9b5760405162461bcd60e51b815260040161062690611e9b565b601255565b5f61069a338484610dd6565b5f546001600160a01b03163314610ad55760405162461bcd60e51b815260040161062690611e9b565b305f90815260016020526040902054610aed8161154c565b47801561068a5761068a47611727565b5f546001600160a01b03163314610b265760405162461bcd60e51b815260040161062690611e9b565b612710600654610b369190611ef8565b8111610b9b5760405162461bcd60e51b815260206004820152602e60248201527f544f4b454e3a2063616e277420736574206d617857616c6c657453697a65206c60448201526d657373207468616e20302e30312560901b6064820152608401610626565b601155565b5f546001600160a01b03163314610bc95760405162461bcd60e51b815260040161062690611e9b565b6001600160a01b038116610c2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b5f60075f610c435f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610c73816114fd565b600160075f610c895f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905550565b6001600160a01b038316610d155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610626565b6001600160a01b038216610d765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610626565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e3a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610626565b6001600160a01b038216610e9c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610626565b5f8111610efd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610626565b6001600160a01b0382165f9081526007602052604090205460ff16158015610f3d57506001600160a01b0383165f9081526007602052604090205460ff16155b8015610f575750600e546001600160a01b03838116911614155b156112c157600f54600160a01b900460ff16610fb55760405162461bcd60e51b815260206004820152601e60248201527f544f4b454e3a2054726164696e67206e6f7420796574207374617274656400006044820152606401610626565b6010548111156110075760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610626565b6001600160a01b0383165f908152600c602052604090205460ff1615801561104757506001600160a01b0382165f908152600c602052604090205460ff16155b61109f5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610626565b600f546001600160a01b0383811691161461120a57600f546001600160a01b0384811691161480156110da5750600f54600160b81b900460ff165b1561118557325f9081526002602052604090205442906110fb9060b4611f17565b10801561112a57506001600160a01b0382165f9081526002602052604090205442906111289060b4611f17565b105b6111855760405162461bcd60e51b815260206004820152602660248201527f544f4b454e3a2033206d696e7574657320636f6f6c646f776e206265747765656044820152656e206275797360d01b6064820152608401610626565b601154816111a7846001600160a01b03165f9081526001602052604090205490565b6111b19190611f17565b1061120a5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610626565b600d546001600160a01b03165f90815260016020526040808220546004553082529020546012548082101590611241906014611f2a565b821061125857601254611255906014611f2a565b91505b80801561126f5750600f54600160a81b900460ff16155b80156112895750600f546001600160a01b03868116911614155b801561129e5750600f54600160b01b900460ff165b156112be576112ac8261154c565b4780156112bc576112bc47611727565b505b50505b6001600160a01b0383165f9081526007602052604090205460019060ff168061130157506001600160a01b0383165f9081526007602052604090205460ff165b1561130d57505f61137b565b600f546001600160a01b0385811691161480156113385750600e546001600160a01b03848116911614155b1561134457600854600a555b600f546001600160a01b03848116911614801561136f5750600e546001600160a01b03858116911614155b1561137b57600954600a555b325f9081526002602052604080822042908190556001600160a01b03861683529120556113aa8484848461175e565b50505050565b5f81848411156113d35760405162461bcd60e51b81526004016106269190611c54565b505f6113df8486611f41565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526001909152918220546114389184906113b0565b6001600160a01b038086165f908152600160205260408082209390935590851681522054611466908361177f565b6001600160a01b0384165f8181526001602052604090209190915561deac19016114a6576003546001600160a01b0385165f908152600160205260409020555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114eb91815260200190565b60405180910390a35060019392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600f805460ff60a81b1916600160a81b1790555f61157660646115708460556117e4565b90611862565b90505f60045482846115889190611f41565b6115929190611f41565b60408051600280825260608201835292935047925f9260208301908036833701905050905030815f815181106115ca576115ca611ed0565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611621573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116459190611f54565b8160018151811061165857611658611ed0565b6001600160a01b039283166020918202929092010152600e5461167e9130911687610cb3565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906116b69087905f90869030904290600401611f6f565b5f604051808303815f87803b1580156116cd575f80fd5b505af11580156116df573d5f803e3d5ffd5b505050505f6116f783476118a390919063ffffffff16565b90506117128461170d606461157085600f6117e4565b6118e4565b5050600f805460ff60a81b1916905550505050565b600d546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561068a573d5f803e3d5ffd5b806117745761176e8484846113e8565b506113aa565b6113aa84848461198b565b5f8061178b8385611f17565b9050838110156117dd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610626565b9392505050565b5f825f036117f357505f61069e565b5f6117fe8385611f2a565b90508261180b8583611ef8565b146117dd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610626565b5f6117dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a8b565b5f6117dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113b0565b600e546118fc9030906001600160a01b031684610cb3565b600e5460405163f305d71960e01b8152306004820152602481018490525f604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611966573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061087e9190611fe0565b5f6119968483611ab7565b90506119fc8260405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060015f886001600160a01b03166001600160a01b031681526020019081526020015f20546113b09092919063ffffffff16565b6001600160a01b038086165f908152600160205260408082209390935590851681522054611a2a908261177f565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a7d9085815260200190565b60405180910390a350505050565b5f8183611aab5760405162461bcd60e51b81526004016106269190611c54565b505f6113df8486611ef8565b5f80611ad36064611570600a54866117e490919063ffffffff16565b305f90815260016020526040902054909150611aef908261177f565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b3f9085815260200190565b60405180910390a3611b5183826118a3565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381168114611b81575f80fd5b50565b8035611b8f81611b6d565b919050565b5f6020808385031215611ba5575f80fd5b823567ffffffffffffffff80821115611bbc575f80fd5b818501915085601f830112611bcf575f80fd5b813581811115611be157611be1611b59565b8060051b604051601f19603f83011681018181108582111715611c0657611c06611b59565b604052918252848201925083810185019188831115611c23575f80fd5b938501935b82851015611c4857611c3985611b84565b84529385019392850192611c28565b98975050505050505050565b5f602080835283518060208501525f5b81811015611c8057858101830151858201604001528201611c64565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611cb1575f80fd5b8235611cbc81611b6d565b946020939093013593505050565b5f8060408385031215611cdb575f80fd5b50508035926020909101359150565b5f805f60608486031215611cfc575f80fd5b8335611d0781611b6d565b92506020840135611d1781611b6d565b929592945050506040919091013590565b80358015158114611b8f575f80fd5b5f8060408385031215611d48575f80fd5b8235611d5381611b6d565b9150611d6160208401611d28565b90509250929050565b5f8083601f840112611d7a575f80fd5b50813567ffffffffffffffff811115611d91575f80fd5b6020830191508360208260051b8501011115611dab575f80fd5b9250929050565b5f805f8060408587031215611dc5575f80fd5b843567ffffffffffffffff80821115611ddc575f80fd5b611de888838901611d6a565b90965094506020870135915080821115611e00575f80fd5b50611e0d87828801611d6a565b95989497509550505050565b5f60208284031215611e29575f80fd5b81356117dd81611b6d565b5f60208284031215611e44575f80fd5b6117dd82611d28565b5f60208284031215611e5d575f80fd5b5035919050565b5f8060408385031215611e75575f80fd5b8235611e8081611b6d565b91506020830135611e9081611b6d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f82611f1257634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561069e5761069e611ee4565b808202811582820484141761069e5761069e611ee4565b8181038181111561069e5761069e611ee4565b5f60208284031215611f64575f80fd5b81516117dd81611b6d565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611fbf5784516001600160a01b031683529383019391830191600101611f9a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611ff2575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220439c6ebf229b3e6252be5f674de25683750f7f7cb39c24a0f6c86e0bff6b276464736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101d2575f3560e01c8063715018a6116100fd57806395d89b4111610092578063c3c8cd8011610062578063c3c8cd8014610567578063dd62ed3e1461057b578063ea1644d5146105bf578063f2fde38b146105de575f80fd5b806395d89b41146104d057806398a5c315146104fb578063a9059cbb1461051a578063bfd7928414610539575f80fd5b80637d1db4a5116100cd5780637d1db4a5146104765780638da5cb5b1461048b5780638eb59a5f146104a75780638f9a55c0146104bb575f80fd5b8063715018a61461040157806374010ece14610415578063768dc710146104345780637c519ffb14610462575f80fd5b80632fd689e311610173578063672434821161014357806367243482146103705780636b9990531461038f5780636d8aa8f8146103ae57806370a08231146103cd575f80fd5b80632fd689e314610302578063313ce5671461031757806349bd5a5e14610332578063658d4b7f14610351575f80fd5b80630b78f9c0116101ae5780630b78f9c01461026f5780631694505e1461028e57806318160ddd146102c557806323b872dd146102e3575f80fd5b8062b8cf2a146101dd57806306fdde03146101fe578063095ea7b314610240575f80fd5b366101d957005b5f80fd5b3480156101e8575f80fd5b506101fc6101f7366004611b94565b6105fd565b005b348015610209575f80fd5b5060408051808201909152600881526752617964726f6d6560c01b60208201525b6040516102379190611c54565b60405180910390f35b34801561024b575f80fd5b5061025f61025a366004611ca0565b61068e565b6040519015158152602001610237565b34801561027a575f80fd5b506101fc610289366004611cca565b6106a4565b348015610299575f80fd5b50600e546102ad906001600160a01b031681565b6040516001600160a01b039091168152602001610237565b3480156102d0575f80fd5b506006545b604051908152602001610237565b3480156102ee575f80fd5b5061025f6102fd366004611cea565b61073f565b34801561030d575f80fd5b506102d560125481565b348015610322575f80fd5b5060405160128152602001610237565b34801561033d575f80fd5b50600f546102ad906001600160a01b031681565b34801561035c575f80fd5b506101fc61036b366004611d37565b6107a6565b34801561037b575f80fd5b506101fc61038a366004611db2565b6107f9565b34801561039a575f80fd5b506101fc6103a9366004611e19565b610885565b3480156103b9575f80fd5b506101fc6103c8366004611e34565b6108ce565b3480156103d8575f80fd5b506102d56103e7366004611e19565b6001600160a01b03165f9081526001602052604090205490565b34801561040c575f80fd5b506101fc610915565b348015610420575f80fd5b506101fc61042f366004611e4d565b610949565b34801561043f575f80fd5b5061025f61044e366004611e19565b60076020525f908152604090205460ff1681565b34801561046d575f80fd5b506101fc6109ea565b348015610481575f80fd5b506102d560105481565b348015610496575f80fd5b505f546001600160a01b03166102ad565b3480156104b2575f80fd5b506101fc610a28565b3480156104c6575f80fd5b506102d560115481565b3480156104db575f80fd5b5060408051808201909152600381526252415960e81b602082015261022a565b348015610506575f80fd5b506101fc610515366004611e4d565b610a72565b348015610525575f80fd5b5061025f610534366004611ca0565b610aa0565b348015610544575f80fd5b5061025f610553366004611e19565b600c6020525f908152604090205460ff1681565b348015610572575f80fd5b506101fc610aac565b348015610586575f80fd5b506102d5610595366004611e64565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b3480156105ca575f80fd5b506101fc6105d9366004611e4d565b610afd565b3480156105e9575f80fd5b506101fc6105f8366004611e19565b610ba0565b5f546001600160a01b0316331461062f5760405162461bcd60e51b815260040161062690611e9b565b60405180910390fd5b5f5b815181101561068a576001600c5f84848151811061065157610651611ed0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610631565b5050565b5f61069a338484610cb3565b5060015b92915050565b5f546001600160a01b031633146106cd5760405162461bcd60e51b815260040161062690611e9b565b6023821080156106dd5750602381105b6107345760405162461bcd60e51b815260206004820152602260248201527f544f4b454e3a2063616e27742073657420666565206d6f7265207468616e2033604482015261352560f01b6064820152608401610626565b600891909155600955565b5f61074b848484610dd6565b61079c84336107978560405180606001604052806028815260200161200c602891396001600160a01b038a165f90815260056020908152604080832033845290915290205491906113b0565b610cb3565b5060019392505050565b5f546001600160a01b031633146107cf5760405162461bcd60e51b815260040161062690611e9b565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146108225760405162461bcd60e51b815260040161062690611e9b565b5f5b8381101561087e576108753386868481811061084257610842611ed0565b90506020020160208101906108579190611e19565b85858581811061086957610869611ed0565b905060200201356113e8565b50600101610824565b5050505050565b5f546001600160a01b031633146108ae5760405162461bcd60e51b815260040161062690611e9b565b6001600160a01b03165f908152600c60205260409020805460ff19169055565b5f546001600160a01b031633146108f75760405162461bcd60e51b815260040161062690611e9b565b600f8054911515600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b0316331461093e5760405162461bcd60e51b815260040161062690611e9b565b6109475f6114fd565b565b5f546001600160a01b031633146109725760405162461bcd60e51b815260040161062690611e9b565b6127106006546109829190611ef8565b81116109e55760405162461bcd60e51b815260206004820152602c60248201527f544f4b454e3a2063616e277420736574206d61785478416d6f756e74206c657360448201526b73207468616e20302e30312560a01b6064820152608401610626565b601055565b5f546001600160a01b03163314610a135760405162461bcd60e51b815260040161062690611e9b565b600f805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610a515760405162461bcd60e51b815260040161062690611e9b565b600f805460ff60b81b198116600160b81b9182900460ff1615909102179055565b5f546001600160a01b03163314610a9b5760405162461bcd60e51b815260040161062690611e9b565b601255565b5f61069a338484610dd6565b5f546001600160a01b03163314610ad55760405162461bcd60e51b815260040161062690611e9b565b305f90815260016020526040902054610aed8161154c565b47801561068a5761068a47611727565b5f546001600160a01b03163314610b265760405162461bcd60e51b815260040161062690611e9b565b612710600654610b369190611ef8565b8111610b9b5760405162461bcd60e51b815260206004820152602e60248201527f544f4b454e3a2063616e277420736574206d617857616c6c657453697a65206c60448201526d657373207468616e20302e30312560901b6064820152608401610626565b601155565b5f546001600160a01b03163314610bc95760405162461bcd60e51b815260040161062690611e9b565b6001600160a01b038116610c2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b5f60075f610c435f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055610c73816114fd565b600160075f610c895f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905550565b6001600160a01b038316610d155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610626565b6001600160a01b038216610d765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610626565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e3a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610626565b6001600160a01b038216610e9c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610626565b5f8111610efd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610626565b6001600160a01b0382165f9081526007602052604090205460ff16158015610f3d57506001600160a01b0383165f9081526007602052604090205460ff16155b8015610f575750600e546001600160a01b03838116911614155b156112c157600f54600160a01b900460ff16610fb55760405162461bcd60e51b815260206004820152601e60248201527f544f4b454e3a2054726164696e67206e6f7420796574207374617274656400006044820152606401610626565b6010548111156110075760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610626565b6001600160a01b0383165f908152600c602052604090205460ff1615801561104757506001600160a01b0382165f908152600c602052604090205460ff16155b61109f5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610626565b600f546001600160a01b0383811691161461120a57600f546001600160a01b0384811691161480156110da5750600f54600160b81b900460ff165b1561118557325f9081526002602052604090205442906110fb9060b4611f17565b10801561112a57506001600160a01b0382165f9081526002602052604090205442906111289060b4611f17565b105b6111855760405162461bcd60e51b815260206004820152602660248201527f544f4b454e3a2033206d696e7574657320636f6f6c646f776e206265747765656044820152656e206275797360d01b6064820152608401610626565b601154816111a7846001600160a01b03165f9081526001602052604090205490565b6111b19190611f17565b1061120a5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610626565b600d546001600160a01b03165f90815260016020526040808220546004553082529020546012548082101590611241906014611f2a565b821061125857601254611255906014611f2a565b91505b80801561126f5750600f54600160a81b900460ff16155b80156112895750600f546001600160a01b03868116911614155b801561129e5750600f54600160b01b900460ff165b156112be576112ac8261154c565b4780156112bc576112bc47611727565b505b50505b6001600160a01b0383165f9081526007602052604090205460019060ff168061130157506001600160a01b0383165f9081526007602052604090205460ff165b1561130d57505f61137b565b600f546001600160a01b0385811691161480156113385750600e546001600160a01b03848116911614155b1561134457600854600a555b600f546001600160a01b03848116911614801561136f5750600e546001600160a01b03858116911614155b1561137b57600954600a555b325f9081526002602052604080822042908190556001600160a01b03861683529120556113aa8484848461175e565b50505050565b5f81848411156113d35760405162461bcd60e51b81526004016106269190611c54565b505f6113df8486611f41565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526001909152918220546114389184906113b0565b6001600160a01b038086165f908152600160205260408082209390935590851681522054611466908361177f565b6001600160a01b0384165f8181526001602052604090209190915561deac19016114a6576003546001600160a01b0385165f908152600160205260409020555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114eb91815260200190565b60405180910390a35060019392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600f805460ff60a81b1916600160a81b1790555f61157660646115708460556117e4565b90611862565b90505f60045482846115889190611f41565b6115929190611f41565b60408051600280825260608201835292935047925f9260208301908036833701905050905030815f815181106115ca576115ca611ed0565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611621573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116459190611f54565b8160018151811061165857611658611ed0565b6001600160a01b039283166020918202929092010152600e5461167e9130911687610cb3565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906116b69087905f90869030904290600401611f6f565b5f604051808303815f87803b1580156116cd575f80fd5b505af11580156116df573d5f803e3d5ffd5b505050505f6116f783476118a390919063ffffffff16565b90506117128461170d606461157085600f6117e4565b6118e4565b5050600f805460ff60a81b1916905550505050565b600d546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561068a573d5f803e3d5ffd5b806117745761176e8484846113e8565b506113aa565b6113aa84848461198b565b5f8061178b8385611f17565b9050838110156117dd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610626565b9392505050565b5f825f036117f357505f61069e565b5f6117fe8385611f2a565b90508261180b8583611ef8565b146117dd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610626565b5f6117dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a8b565b5f6117dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113b0565b600e546118fc9030906001600160a01b031684610cb3565b600e5460405163f305d71960e01b8152306004820152602481018490525f604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611966573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061087e9190611fe0565b5f6119968483611ab7565b90506119fc8260405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060015f886001600160a01b03166001600160a01b031681526020019081526020015f20546113b09092919063ffffffff16565b6001600160a01b038086165f908152600160205260408082209390935590851681522054611a2a908261177f565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a7d9085815260200190565b60405180910390a350505050565b5f8183611aab5760405162461bcd60e51b81526004016106269190611c54565b505f6113df8486611ef8565b5f80611ad36064611570600a54866117e490919063ffffffff16565b305f90815260016020526040902054909150611aef908261177f565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b3f9085815260200190565b60405180910390a3611b5183826118a3565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381168114611b81575f80fd5b50565b8035611b8f81611b6d565b919050565b5f6020808385031215611ba5575f80fd5b823567ffffffffffffffff80821115611bbc575f80fd5b818501915085601f830112611bcf575f80fd5b813581811115611be157611be1611b59565b8060051b604051601f19603f83011681018181108582111715611c0657611c06611b59565b604052918252848201925083810185019188831115611c23575f80fd5b938501935b82851015611c4857611c3985611b84565b84529385019392850192611c28565b98975050505050505050565b5f602080835283518060208501525f5b81811015611c8057858101830151858201604001528201611c64565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611cb1575f80fd5b8235611cbc81611b6d565b946020939093013593505050565b5f8060408385031215611cdb575f80fd5b50508035926020909101359150565b5f805f60608486031215611cfc575f80fd5b8335611d0781611b6d565b92506020840135611d1781611b6d565b929592945050506040919091013590565b80358015158114611b8f575f80fd5b5f8060408385031215611d48575f80fd5b8235611d5381611b6d565b9150611d6160208401611d28565b90509250929050565b5f8083601f840112611d7a575f80fd5b50813567ffffffffffffffff811115611d91575f80fd5b6020830191508360208260051b8501011115611dab575f80fd5b9250929050565b5f805f8060408587031215611dc5575f80fd5b843567ffffffffffffffff80821115611ddc575f80fd5b611de888838901611d6a565b90965094506020870135915080821115611e00575f80fd5b50611e0d87828801611d6a565b95989497509550505050565b5f60208284031215611e29575f80fd5b81356117dd81611b6d565b5f60208284031215611e44575f80fd5b6117dd82611d28565b5f60208284031215611e5d575f80fd5b5035919050565b5f8060408385031215611e75575f80fd5b8235611e8081611b6d565b91506020830135611e9081611b6d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f82611f1257634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561069e5761069e611ee4565b808202811582820484141761069e5761069e611ee4565b8181038181111561069e5761069e611ee4565b5f60208284031215611f64575f80fd5b81516117dd81611b6d565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611fbf5784516001600160a01b031683529383019391830191600101611f9a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611ff2575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220439c6ebf229b3e6252be5f674de25683750f7f7cb39c24a0f6c86e0bff6b276464736f6c63430008160033

Deployed Bytecode Sourcemap

4216:11966:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12651:169;;;;;;;;;;-1:-1:-1;12651:169:0;;;;;:::i;:::-;;:::i;:::-;;6364:83;;;;;;;;;;-1:-1:-1;6434:5:0;;;;;;;;;;;;-1:-1:-1;;;6434:5:0;;;;6364:83;;;;;;;:::i;:::-;;;;;;;;7276:193;;;;;;;;;;-1:-1:-1;7276:193:0;;;;;:::i;:::-;;:::i;:::-;;;2585:14:1;;2578:22;2560:41;;2548:2;2533:18;7276:193:0;2420:187:1;14969:256:0;;;;;;;;;;-1:-1:-1;14969:256:0;;;;;:::i;:::-;;:::i;5167:41::-;;;;;;;;;;-1:-1:-1;5167:41:0;;;;-1:-1:-1;;;;;5167:41:0;;;;;;-1:-1:-1;;;;;3055:32:1;;;3037:51;;3025:2;3010:18;5167:41:0;2865:229:1;6641:100:0;;;;;;;;;;-1:-1:-1;6721:12:0;;6641:100;;;3245:25:1;;;3233:2;3218:18;6641:100:0;3099:177:1;7477:446:0;;;;;;;;;;-1:-1:-1;7477:446:0;;;;;:::i;:::-;;:::i;5539:59::-;;;;;;;;;;;;;;;;6550:83;;;;;;;;;;-1:-1:-1;6550:83:0;;4436:2;3884:36:1;;3872:2;3857:18;6550:83:0;3742:184:1;5215:28:0;;;;;;;;;;-1:-1:-1;5215:28:0;;;;-1:-1:-1;;;;;5215:28:0;;;15948:124;;;;;;;;;;-1:-1:-1;15948:124:0;;;;;:::i;:::-;;:::i;13214:234::-;;;;;;;;;;-1:-1:-1;13214:234:0;;;;;:::i;:::-;;:::i;12828:92::-;;;;;;;;;;-1:-1:-1;12828:92:0;;;;;:::i;:::-;;:::i;15384:101::-;;;;;;;;;;-1:-1:-1;15384:101:0;;;;;:::i;:::-;;:::i;6749:120::-;;;;;;;;;;-1:-1:-1;6749:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;6842:18:0;6815:7;6842:18;;;:9;:18;;;;;;;6749:120;1584:103;;;;;;;;;;;;;:::i;15497:210::-;;;;;;;;;;-1:-1:-1;15497:210:0;;;;;:::i;:::-;;:::i;4725:50::-;;;;;;;;;;-1:-1:-1;4725:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12238:76;;;;;;;;;;;;;:::i;5405:55::-;;;;;;;;;;;;;;;;1351:87;;;;;;;;;;-1:-1:-1;1397:7:0;1424:6;-1:-1:-1;;;;;1424:6:0;1351:87;;16082:97;;;;;;;;;;;;;:::i;5471:57::-;;;;;;;;;;;;;;;;6455:87;;;;;;;;;;-1:-1:-1;6527:7:0;;;;;;;;;;;;-1:-1:-1;;;6527:7:0;;;;6455:87;;15233:139;;;;;;;;;;-1:-1:-1;15233:139:0;;;;;:::i;:::-;;:::i;6877:199::-;;;;;;;;;;-1:-1:-1;6877:199:0;;;;;:::i;:::-;;:::i;5016:36::-;;;;;;;;;;-1:-1:-1;5016:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12322:321;;;;;;;;;;;;;:::i;7084:184::-;;;;;;;;;;-1:-1:-1;7084:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7233:18:0;;;7201:7;7233:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7084:184;15719:221;;;;;;;;;;-1:-1:-1;15719:221:0;;;;;:::i;:::-;;:::i;14664:295::-;;;;;;;;;;-1:-1:-1;14664:295:0;;;;;:::i;:::-;;:::i;12651:169::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;;;;;;;;;12727:9:::1;12722:91;12746:5;:12;12742:1;:16;12722:91;;;12797:4;12780;:14;12785:5;12791:1;12785:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12780:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12780:14:0;:21;;-1:-1:-1;;12780:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12760:3:0::1;12722:91;;;;12651:169:::0;:::o;7276:193::-;7378:4;7400:39;317:10;7423:7;7432:6;7400:8;:39::i;:::-;-1:-1:-1;7457:4:0;7276:193;;;;;:::o;14969:256::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;15079:2:::1;15065:11;:16;:37;;;;;15100:2;15085:12;:17;15065:37;15057:84;;;::::0;-1:-1:-1;;;15057:84:0;;7484:2:1;15057:84:0::1;::::0;::::1;7466:21:1::0;7523:2;7503:18;;;7496:30;7562:34;7542:18;;;7535:62;-1:-1:-1;;;7613:18:1;;;7606:32;7655:19;;15057:84:0::1;7282:398:1::0;15057:84:0::1;15152:12;:26:::0;;;;15189:13:::1;:28:::0;14969:256::o;7477:446::-;7609:4;7626:36;7636:6;7644:9;7655:6;7626:9;:36::i;:::-;7673:220;7696:6;317:10;7744:138;7800:6;7744:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7744:19:0;;;;;;:11;:19;;;;;;;;317:10;7744:33;;;;;;;;;;:37;:138::i;:::-;7673:8;:220::i;:::-;-1:-1:-1;7911:4:0;7477:446;;;;;:::o;15948:124::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16029:26:0;;;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35;;-1:-1:-1;;16029:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15948:124::o;13214:234::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;13320:9:::1;13315:126;13335:21:::0;;::::1;13315:126;;;13378:51;13393:10;13404;;13415:1;13404:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13419:6;;13426:1;13419:9;;;;;;;:::i;:::-;;;;;;;13378:14;:51::i;:::-;-1:-1:-1::0;13358:3:0::1;;13315:126;;;;13214:234:::0;;;;:::o;12828:92::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12892:12:0::1;12907:5;12892:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;12892:20:0::1;::::0;;12828:92::o;15384:101::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;15451:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;15451:26:0::1;-1:-1:-1::0;;;;15451:26:0;;::::1;::::0;;;::::1;::::0;;15384:101::o;1584:103::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;1649:30:::1;1676:1;1649:18;:30::i;:::-;1584:103::o:0;15497:210::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;15608:5:::1;15593:12;;:20;;;;:::i;:::-;15579:11;:34;15571:91;;;::::0;-1:-1:-1;;;15571:91:0;;8241:2:1;15571:91:0::1;::::0;::::1;8223:21:1::0;8280:2;8260:18;;;8253:30;8319:34;8299:18;;;8292:62;-1:-1:-1;;;8370:18:1;;;8363:42;8422:19;;15571:91:0::1;8039:408:1::0;15571:91:0::1;15673:12;:26:::0;15497:210::o;12238:76::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;12288:11:::1;:18:::0;;-1:-1:-1;;;;12288:18:0::1;-1:-1:-1::0;;;12288:18:0::1;::::0;;12238:76::o;16082:97::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;16158:13:::1;::::0;;-1:-1:-1;;;;16141:30:0;::::1;-1:-1:-1::0;;;16158:13:0;;;::::1;;;16157:14;16141:30:::0;;::::1;;::::0;;16082:97::o;15233:139::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;15324:19:::1;:40:::0;15233:139::o;6877:199::-;6982:4;7004:42;317:10;7028:9;7039:6;7004:9;:42::i;12322:321::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;12418:4:::1;12374:23;6842:18:::0;;;:9;:18;;;;;;12435:33:::1;6842:18:::0;12435:16:::1;:33::i;:::-;12508:21;12544:28:::0;;12540:96:::1;;12589:35;12602:21;12589:12;:35::i;15719:221::-:0;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;15835:5:::1;15820:12;;:20;;;;:::i;:::-;15804:13;:36;15796:95;;;::::0;-1:-1:-1;;;15796:95:0;;8654:2:1;15796:95:0::1;::::0;::::1;8636:21:1::0;8693:2;8673:18;;;8666:30;8732:34;8712:18;;;8705:62;-1:-1:-1;;;8783:18:1;;;8776:44;8837:19;;15796:95:0::1;8452:410:1::0;15796:95:0::1;15902:14;:30:::0;15719:221::o;14664:295::-;1397:7;1424:6;-1:-1:-1;;;;;1424:6:0;317:10;1491:23;1483:68;;;;-1:-1:-1;;;1483:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14754:22:0;::::1;14746:73;;;::::0;-1:-1:-1;;;14746:73:0;;9069:2:1;14746:73:0::1;::::0;::::1;9051:21:1::0;9108:2;9088:18;;;9081:30;9147:34;9127:18;;;9120:62;-1:-1:-1;;;9198:18:1;;;9191:36;9244:19;;14746:73:0::1;8867:402:1::0;14746:73:0::1;14860:5;14830:18;:27;14849:7;1397::::0;1424:6;-1:-1:-1;;;;;1424:6:0;;1351:87;14849:7:::1;-1:-1:-1::0;;;;;14830:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14830:27:0;:35;;-1:-1:-1;;14830:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14876:28:::1;14895:8:::0;14876:18:::1;:28::i;:::-;14945:4;14915:18;:27;14934:7;1397::::0;1424:6;-1:-1:-1;;;;;1424:6:0;;1351:87;14934:7:::1;-1:-1:-1::0;;;;;14915:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14915:27:0;:34;;-1:-1:-1;;14915:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;14664:295:0:o;7931:369::-;-1:-1:-1;;;;;8058:19:0;;8050:68;;;;-1:-1:-1;;;8050:68:0;;9476:2:1;8050:68:0;;;9458:21:1;9515:2;9495:18;;;9488:30;9554:34;9534:18;;;9527:62;-1:-1:-1;;;9605:18:1;;;9598:34;9649:19;;8050:68:0;9274:400:1;8050:68:0;-1:-1:-1;;;;;8137:21:0;;8129:68;;;;-1:-1:-1;;;8129:68:0;;9881:2:1;8129:68:0;;;9863:21:1;9920:2;9900:18;;;9893:30;9959:34;9939:18;;;9932:62;-1:-1:-1;;;10010:18:1;;;10003:32;10052:19;;8129:68:0;9679:398:1;8129:68:0;-1:-1:-1;;;;;8208:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8260:32;;3245:25:1;;;8260:32:0;;3218:18:1;8260:32:0;;;;;;;7931:369;;;:::o;8308:2495::-;-1:-1:-1;;;;;8430:18:0;;8422:68;;;;-1:-1:-1;;;8422:68:0;;10284:2:1;8422:68:0;;;10266:21:1;10323:2;10303:18;;;10296:30;10362:34;10342:18;;;10335:62;-1:-1:-1;;;10413:18:1;;;10406:35;10458:19;;8422:68:0;10082:401:1;8422:68:0;-1:-1:-1;;;;;8509:16:0;;8501:64;;;;-1:-1:-1;;;8501:64:0;;10690:2:1;8501:64:0;;;10672:21:1;10729:2;10709:18;;;10702:30;10768:34;10748:18;;;10741:62;-1:-1:-1;;;10819:18:1;;;10812:33;10862:19;;8501:64:0;10488:399:1;8501:64:0;8593:1;8584:6;:10;8576:64;;;;-1:-1:-1;;;8576:64:0;;11094:2:1;8576:64:0;;;11076:21:1;11133:2;11113:18;;;11106:30;11172:34;11152:18;;;11145:62;-1:-1:-1;;;11223:18:1;;;11216:39;11272:19;;8576:64:0;10892:405:1;8576:64:0;-1:-1:-1;;;;;8658:22:0;;;;;;:18;:22;;;;;;;;8657:23;:52;;;;-1:-1:-1;;;;;;8685:24:0;;;;;;:18;:24;;;;;;;;8684:25;8657:52;:86;;;;-1:-1:-1;8727:15:0;;-1:-1:-1;;;;;8713:30:0;;;8727:15;;8713:30;;8657:86;8653:1486;;;8765:11;;-1:-1:-1;;;8765:11:0;;;;8757:54;;;;-1:-1:-1;;;8757:54:0;;11504:2:1;8757:54:0;;;11486:21:1;11543:2;11523:18;;;11516:30;11582:32;11562:18;;;11555:60;11632:18;;8757:54:0;11302:354:1;8757:54:0;8844:12;;8834:6;:22;;8826:63;;;;-1:-1:-1;;;8826:63:0;;11863:2:1;8826:63:0;;;11845:21:1;11902:2;11882:18;;;11875:30;11941;11921:18;;;11914:58;11989:18;;8826:63:0;11661:352:1;8826:63:0;-1:-1:-1;;;;;8913:10:0;;;;;;:4;:10;;;;;;;;8912:11;:24;;;;-1:-1:-1;;;;;;8928:8:0;;;;;;:4;:8;;;;;;;;8927:9;8912:24;8904:72;;;;-1:-1:-1;;;8904:72:0;;12220:2:1;8904:72:0;;;12202:21:1;12259:2;12239:18;;;12232:30;12298:34;12278:18;;;12271:62;-1:-1:-1;;;12349:18:1;;;12342:33;12392:19;;8904:72:0;12018:399:1;8904:72:0;9002:13;;-1:-1:-1;;;;;8996:19:0;;;9002:13;;8996:19;8993:375;;9041:13;;-1:-1:-1;;;;;9033:21:0;;;9041:13;;9033:21;:38;;;;-1:-1:-1;9058:13:0;;-1:-1:-1;;;9058:13:0;;;;9033:38;9030:217;;;9105:9;9097:18;;;;:7;:18;;;;;;9130:15;;9097:30;;9118:9;9097:30;:::i;:::-;:48;:93;;;;-1:-1:-1;;;;;;9149:11:0;;;;;;:7;:11;;;;;;9175:15;;9149:23;;9163:9;9149:23;:::i;:::-;:41;9097:93;9089:144;;;;-1:-1:-1;;;9089:144:0;;12754:2:1;9089:144:0;;;12736:21:1;12793:2;12773:18;;;12766:30;12832:34;12812:18;;;12805:62;-1:-1:-1;;;12883:18:1;;;12876:36;12929:19;;9089:144:0;12552:402:1;9089:144:0;9298:14;;9289:6;9273:13;9283:2;-1:-1:-1;;;;;6842:18:0;6815:7;6842:18;;;:9;:18;;;;;;;6749:120;9273:13;:22;;;;:::i;:::-;:39;9265:87;;;;-1:-1:-1;;;9265:87:0;;13161:2:1;9265:87:0;;;13143:21:1;13200:2;13180:18;;;13173:30;13239:34;13219:18;;;13212:62;-1:-1:-1;;;13290:18:1;;;13283:33;13333:19;;9265:87:0;12959:399:1;9265:87:0;9408:17;;-1:-1:-1;;;;;9408:17:0;6815:7;6842:18;;;:9;:18;;;;;;;9384:11;:42;9490:4;6842:18;;;;;9550:19;;9526:43;;;;;9613:24;;9635:2;9613:24;:::i;:::-;9589:20;:48;9586:148;;9694:19;;:24;;9716:2;9694:24;:::i;:::-;9671:47;;9586:148;9754:7;:18;;;;-1:-1:-1;9766:6:0;;-1:-1:-1;;;9766:6:0;;;;9765:7;9754:18;:43;;;;-1:-1:-1;9784:13:0;;-1:-1:-1;;;;;9776:21:0;;;9784:13;;9776:21;;9754:43;:58;;;;-1:-1:-1;9801:11:0;;-1:-1:-1;;;9801:11:0;;;;9754:58;9750:378;;;9833:38;9850:20;9833:16;:38::i;:::-;9961:21;10005:28;;10001:112;;10058:35;10071:21;10058:12;:35::i;:::-;9814:314;9750:378;8745:1394;;8653:1486;-1:-1:-1;;;;;10215:24:0;;10151:12;10215:24;;;:18;:24;;;;;;10166:4;;10215:24;;;:50;;-1:-1:-1;;;;;;10243:22:0;;;;;;:18;:22;;;;;;;;10215:50;10210:453;;;-1:-1:-1;10293:5:0;10210:453;;;10376:13;;-1:-1:-1;;;;;10368:21:0;;;10376:13;;10368:21;:55;;;;-1:-1:-1;10407:15:0;;-1:-1:-1;;;;;10393:30:0;;;10407:15;;10393:30;;10368:55;10365:117;;;10454:12;;10444:7;:22;10365:117;10541:13;;-1:-1:-1;;;;;10535:19:0;;;10541:13;;10535:19;:55;;;;-1:-1:-1;10574:15:0;;-1:-1:-1;;;;;10558:32:0;;;10574:15;;10558:32;;10535:55;10531:119;;;10621:13;;10611:7;:23;10531:119;10678:9;10670:18;;;;:7;:18;;;;;;10691:15;10670:36;;;;-1:-1:-1;;;;;10714:11:0;;;;;;:29;10754:41;10769:4;10722:2;10779:6;10787:7;10754:14;:41::i;:::-;8411:2392;8308:2495;;;:::o;2467:224::-;2587:7;2623:12;2615:6;;;;2607:29;;;;-1:-1:-1;;;2607:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2647:9:0;2659:5;2663:1;2659;:5;:::i;:::-;2647:17;2467:224;-1:-1:-1;;;;;2467:224:0:o;13868:426::-;13998:53;;;;;;;;;;;-1:-1:-1;;;13998:53:0;;;;;;;;-1:-1:-1;;;;;13998:17:0;;13961:4;13998:17;;;:9;:17;;;;;;;:53;;14020:6;;13998:21;:53::i;:::-;-1:-1:-1;;;;;13978:17:0;;;;;;;:9;:17;;;;;;:73;;;;14085:20;;;;;;;:32;;14110:6;14085:24;:32::i;:::-;-1:-1:-1;;;;;14062:20:0;;;;;;:9;:20;;;;;:55;;;;-1:-1:-1;;14132:28:0;14128:86;;14197:5;;-1:-1:-1;;;;;14177:17:0;;;;;;:9;:17;;;;;:25;14128:86;14246:9;-1:-1:-1;;;;;14229:35:0;14238:6;-1:-1:-1;;;;;14229:35:0;;14257:6;14229:35;;;;3245:25:1;;3233:2;3218:18;;3099:177;14229:35:0;;;;;;;;-1:-1:-1;14282:4:0;13868:426;;;;;:::o;1914:191::-;1988:16;2007:6;;-1:-1:-1;;;;;2024:17:0;;;-1:-1:-1;;;;;;2024:17:0;;;;;;2057:40;;2007:6;;;;;;;2057:40;;1988:16;2057:40;1977:128;1914:191;:::o;10811:784::-;5699:6;:13;;-1:-1:-1;;;;5699:13:0;-1:-1:-1;;;5699:13:0;;;;10906:28:::1;10930:3;10906:19;:11:::0;10922:2:::1;10906:15;:19::i;:::-;:23:::0;::::1;:28::i;:::-;10889:45;;10945:14;10985:11;;10976:6;10962:11;:20;;;;:::i;:::-;:34;;;;:::i;:::-;11089:16;::::0;;11103:1:::1;11089:16:::0;;;;;::::1;::::0;;10945:51;;-1:-1:-1;11031:21:0::1;::::0;11007::::1;::::0;11089:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11089:16:0::1;11065:40;;11134:4;11116;11121:1;11116:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11116:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11160:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11160:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11116:7;;11160:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11150:4;11155:1;11150:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11150:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11225:15:::1;::::0;11193:62:::1;::::0;11210:4:::1;::::0;11225:15:::1;11243:11:::0;11193:8:::1;:62::i;:::-;11266:15;::::0;:191:::1;::::0;-1:-1:-1;;;11266:191:0;;-1:-1:-1;;;;;11266:15:0;;::::1;::::0;:66:::1;::::0;:191:::1;::::0;11347:6;;11266:15:::1;::::0;11384:4;;11411::::1;::::0;11431:15:::1;::::0;11266:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11468:17;11488:40;11514:13;11488:21;:25;;:40;;;;:::i;:::-;11468:60:::0;-1:-1:-1;11539:48:0::1;11552:6:::0;11560:26:::1;11582:3;11560:17;11468:60:::0;11574:2:::1;11560:13;:17::i;:26::-;11539:12;:48::i;:::-;-1:-1:-1::0;;5735:6:0;:14;;-1:-1:-1;;;;5735:14:0;;;-1:-1:-1;;;;10811:784:0:o;11603:99::-;11660:17;;:34;;-1:-1:-1;;;;;11660:17:0;;;;:34;;;;;11687:6;;11660:17;:34;:17;:34;11687:6;11660:17;:34;;;;;;;;;;;;;;;;;;;12928:277;13084:7;13079:119;;13094:40;13109:6;13116:9;13127:6;13094:14;:40::i;:::-;;13079:119;;;13152:44;13170:6;13178:9;13189:6;13152:17;:44::i;2136:179::-;2194:7;;2226:5;2230:1;2226;:5;:::i;:::-;2214:17;;2255:1;2250;:6;;2242:46;;;;-1:-1:-1;;;2242:46:0;;15112:2:1;2242:46:0;;;15094:21:1;15151:2;15131:18;;;15124:30;15190:29;15170:18;;;15163:57;15237:18;;2242:46:0;14910:351:1;2242:46:0;2306:1;2136:179;-1:-1:-1;;;2136:179:0:o;2699:246::-;2757:7;2781:1;2786;2781:6;2777:47;;-1:-1:-1;2811:1:0;2804:8;;2777:47;2834:9;2846:5;2850:1;2846;:5;:::i;:::-;2834:17;-1:-1:-1;2879:1:0;2870:5;2874:1;2834:17;2870:5;:::i;:::-;:10;2862:56;;;;-1:-1:-1;;;2862:56:0;;15468:2:1;2862:56:0;;;15450:21:1;15507:2;15487:18;;;15480:30;15546:34;15526:18;;;15519:62;-1:-1:-1;;;15597:18:1;;;15590:31;15638:19;;2862:56:0;15266:397:1;2953:132:0;3011:7;3038:39;3042:1;3045;3038:39;;;;;;;;;;;;;;;;;:3;:39::i;2323:136::-;2381:7;2408:43;2412:1;2415;2408:43;;;;;;;;;;;;;;;;;:3;:43::i;11710:520::-;11892:15;;11860:62;;11877:4;;-1:-1:-1;;;;;11892:15:0;11910:11;11860:8;:62::i;:::-;11965:15;;:255;;-1:-1:-1;;;11965:255:0;;12037:4;11965:255;;;16009:34:1;16059:18;;;16052:34;;;11965:15:0;16102:18:1;;;16095:34;;;16145:18;;;16138:34;;;16188:19;;;16181:44;12194:15:0;16241:19:1;;;16234:35;-1:-1:-1;;;;;11965:15:0;;;;:31;;12004:9;;15943:19:1;;11965:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13456:405::-;13587:22;13612:24;13621:6;13629;13612:8;:24::i;:::-;13587:49;;13667:53;13689:6;13667:53;;;;;;;;;;;;;-1:-1:-1;;;13667:53:0;;;:9;:17;13677:6;-1:-1:-1;;;;;13667:17:0;-1:-1:-1;;;;;13667:17:0;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;-1:-1:-1;;;;;13647:17:0;;;;;;;:9;:17;;;;;;:73;;;;13754:20;;;;;;;:40;;13779:14;13754:24;:40::i;:::-;-1:-1:-1;;;;;13731:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13810:43;;;;;;;;;;13838:14;3245:25:1;;3233:2;3218:18;;3099:177;13810:43:0;;;;;;;;13576:285;13456:405;;;:::o;3093:223::-;3213:7;3248:12;3241:5;3233:28;;;;-1:-1:-1;;;3233:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3272:9:0;3284:5;3288:1;3284;:5;:::i;14300:317::-;14367:7;14387:17;14407:28;14431:3;14407:19;14418:7;;14407:6;:10;;:19;;;;:::i;:28::-;14491:4;14473:24;;;;:9;:24;;;;;;14387:48;;-1:-1:-1;14473:39:0;;14387:48;14473:28;:39::i;:::-;14464:4;14446:24;;;;:9;:24;;;;;;;:66;;;;14528:42;;-1:-1:-1;;;;;14528:42:0;;;;;;;14560:9;3245:25:1;;3233:2;3218:18;;3099:177;14528:42:0;;;;;;;;14588:21;:6;14599:9;14588:10;:21::i;:::-;14581:28;14300:317;-1:-1:-1;;;;14300:317:0:o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;201:70;146:131;:::o;282:134::-;350:20;;379:31;350:20;379:31;:::i;:::-;282:134;;;:::o;421:1121::-;505:6;536:2;579;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;635:9;622:23;664:18;705:2;697:6;694:14;691:34;;;721:1;718;711:12;691:34;759:6;748:9;744:22;734:32;;804:7;797:4;793:2;789:13;785:27;775:55;;826:1;823;816:12;775:55;862:2;849:16;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;936:2;933:1;929:10;968:2;962:9;1031:2;1027:7;1022:2;1018;1014:11;1010:25;1002:6;998:38;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:72;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1259:11:1;;;1255:20;;;1287:19;;;1284:39;;;1319:1;1316;1309:12;1284:39;1343:11;;;;1363:148;1379:6;1374:3;1371:15;1363:148;;;1445:23;1464:3;1445:23;:::i;:::-;1433:36;;1396:12;;;;1489;;;;1363:148;;;1530:6;421:1121;-1:-1:-1;;;;;;;;421:1121:1:o;1547:548::-;1659:4;1688:2;1717;1706:9;1699:21;1749:6;1743:13;1792:6;1787:2;1776:9;1772:18;1765:34;1817:1;1827:140;1841:6;1838:1;1835:13;1827:140;;;1936:14;;;1932:23;;1926:30;1902:17;;;1921:2;1898:26;1891:66;1856:10;;1827:140;;;1831:3;2016:1;2011:2;2002:6;1991:9;1987:22;1983:31;1976:42;2086:2;2079;2075:7;2070:2;2062:6;2058:15;2054:29;2043:9;2039:45;2035:54;2027:62;;;;1547:548;;;;:::o;2100:315::-;2168:6;2176;2229:2;2217:9;2208:7;2204:23;2200:32;2197:52;;;2245:1;2242;2235:12;2197:52;2284:9;2271:23;2303:31;2328:5;2303:31;:::i;:::-;2353:5;2405:2;2390:18;;;;2377:32;;-1:-1:-1;;;2100:315:1:o;2612:248::-;2680:6;2688;2741:2;2729:9;2720:7;2716:23;2712:32;2709:52;;;2757:1;2754;2747:12;2709:52;-1:-1:-1;;2780:23:1;;;2850:2;2835:18;;;2822:32;;-1:-1:-1;2612:248:1:o;3281:456::-;3358:6;3366;3374;3427:2;3415:9;3406:7;3402:23;3398:32;3395:52;;;3443:1;3440;3433:12;3395:52;3482:9;3469:23;3501:31;3526:5;3501:31;:::i;:::-;3551:5;-1:-1:-1;3608:2:1;3593:18;;3580:32;3621:33;3580:32;3621:33;:::i;:::-;3281:456;;3673:7;;-1:-1:-1;;;3727:2:1;3712:18;;;;3699:32;;3281:456::o;4139:160::-;4204:20;;4260:13;;4253:21;4243:32;;4233:60;;4289:1;4286;4279:12;4304:315;4369:6;4377;4430:2;4418:9;4409:7;4405:23;4401:32;4398:52;;;4446:1;4443;4436:12;4398:52;4485:9;4472:23;4504:31;4529:5;4504:31;:::i;:::-;4554:5;-1:-1:-1;4578:35:1;4609:2;4594:18;;4578:35;:::i;:::-;4568:45;;4304:315;;;;;:::o;4624:367::-;4687:8;4697:6;4751:3;4744:4;4736:6;4732:17;4728:27;4718:55;;4769:1;4766;4759:12;4718:55;-1:-1:-1;4792:20:1;;4835:18;4824:30;;4821:50;;;4867:1;4864;4857:12;4821:50;4904:4;4896:6;4892:17;4880:29;;4964:3;4957:4;4947:6;4944:1;4940:14;4932:6;4928:27;4924:38;4921:47;4918:67;;;4981:1;4978;4971:12;4918:67;4624:367;;;;;:::o;4996:773::-;5118:6;5126;5134;5142;5195:2;5183:9;5174:7;5170:23;5166:32;5163:52;;;5211:1;5208;5201:12;5163:52;5251:9;5238:23;5280:18;5321:2;5313:6;5310:14;5307:34;;;5337:1;5334;5327:12;5307:34;5376:70;5438:7;5429:6;5418:9;5414:22;5376:70;:::i;:::-;5465:8;;-1:-1:-1;5350:96:1;-1:-1:-1;5553:2:1;5538:18;;5525:32;;-1:-1:-1;5569:16:1;;;5566:36;;;5598:1;5595;5588:12;5566:36;;5637:72;5701:7;5690:8;5679:9;5675:24;5637:72;:::i;:::-;4996:773;;;;-1:-1:-1;5728:8:1;-1:-1:-1;;;;4996:773:1:o;5774:247::-;5833:6;5886:2;5874:9;5865:7;5861:23;5857:32;5854:52;;;5902:1;5899;5892:12;5854:52;5941:9;5928:23;5960:31;5985:5;5960:31;:::i;6026:180::-;6082:6;6135:2;6123:9;6114:7;6110:23;6106:32;6103:52;;;6151:1;6148;6141:12;6103:52;6174:26;6190:9;6174:26;:::i;6211:180::-;6270:6;6323:2;6311:9;6302:7;6298:23;6294:32;6291:52;;;6339:1;6336;6329:12;6291:52;-1:-1:-1;6362:23:1;;6211:180;-1:-1:-1;6211:180:1:o;6396:388::-;6464:6;6472;6525:2;6513:9;6504:7;6500:23;6496:32;6493:52;;;6541:1;6538;6531:12;6493:52;6580:9;6567:23;6599:31;6624:5;6599:31;:::i;:::-;6649:5;-1:-1:-1;6706:2:1;6691:18;;6678:32;6719:33;6678:32;6719:33;:::i;:::-;6771:7;6761:17;;;6396:388;;;;;:::o;6789:356::-;6991:2;6973:21;;;7010:18;;;7003:30;7069:34;7064:2;7049:18;;7042:62;7136:2;7121:18;;6789:356::o;7150:127::-;7211:10;7206:3;7202:20;7199:1;7192:31;7242:4;7239:1;7232:15;7266:4;7263:1;7256:15;7685:127;7746:10;7741:3;7737:20;7734:1;7727:31;7777:4;7774:1;7767:15;7801:4;7798:1;7791:15;7817:217;7857:1;7883;7873:132;;7927:10;7922:3;7918:20;7915:1;7908:31;7962:4;7959:1;7952:15;7990:4;7987:1;7980:15;7873:132;-1:-1:-1;8019:9:1;;7817:217::o;12422:125::-;12487:9;;;12508:10;;;12505:36;;;12521:18;;:::i;13363:168::-;13436:9;;;13467;;13484:15;;;13478:22;;13464:37;13454:71;;13505:18;;:::i;13536:128::-;13603:9;;;13624:11;;;13621:37;;;13638:18;;:::i;13669:251::-;13739:6;13792:2;13780:9;13771:7;13767:23;13763:32;13760:52;;;13808:1;13805;13798:12;13760:52;13840:9;13834:16;13859:31;13884:5;13859:31;:::i;13925:980::-;14187:4;14235:3;14224:9;14220:19;14266:6;14255:9;14248:25;14292:2;14330:6;14325:2;14314:9;14310:18;14303:34;14373:3;14368:2;14357:9;14353:18;14346:31;14397:6;14432;14426:13;14463:6;14455;14448:22;14501:3;14490:9;14486:19;14479:26;;14540:2;14532:6;14528:15;14514:29;;14561:1;14571:195;14585:6;14582:1;14579:13;14571:195;;;14650:13;;-1:-1:-1;;;;;14646:39:1;14634:52;;14741:15;;;;14706:12;;;;14682:1;14600:9;14571:195;;;-1:-1:-1;;;;;;;14822:32:1;;;;14817:2;14802:18;;14795:60;-1:-1:-1;;;14886:3:1;14871:19;14864:35;14783:3;13925:980;-1:-1:-1;;;13925:980:1:o;16280:306::-;16368:6;16376;16384;16437:2;16425:9;16416:7;16412:23;16408:32;16405:52;;;16453:1;16450;16443:12;16405:52;16482:9;16476:16;16466:26;;16532:2;16521:9;16517:18;16511:25;16501:35;;16576:2;16565:9;16561:18;16555:25;16545:35;;16280:306;;;;;:::o

Swarm Source

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