ETH Price: $3,302.74 (-3.59%)
Gas: 8 Gwei

Token

ElonShintama ($EST)
 

Overview

Max Total Supply

1,000,000,000,000 $EST

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
11,372,416,257.197227518 $EST

Value
$0.00
0x7309f0134f3e51e8cbe29dd86068e0f264f6c946
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:
ElonShintama

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-08
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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

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

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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 renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract ElonShintama is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromSellLock;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    mapping (address => uint) public sellLock;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;

    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 public _reflectionFee = 1;

    uint256 public _tokensFee = 12;
    uint256 public _tokensFeeFirstDay = 20;

    uint256 private _swapTokensAt;
    uint256 private _maxTokensToSwapForFees;

    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    address payable private _liquidityWallet;

    string private constant _name = "ElonShintama";
    string private constant _symbol = "$EST";

    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    uint private tradingOpenTime;
    bool private inSwap = false;
    bool private swapEnabled = false;
    address private automaticMarketPair;
    bool private cooldownEnabled = false;
    uint256 private _maxWalletAmount = _tTotal;
    event MaxWalletAmountUpdated(uint _maxWalletAmount);


    constructor () {
        _feeAddrWallet1 = payable(0x1c57039B78E50fb314e92415E0686E56668Cd2E3);
        _feeAddrWallet2 = payable(0x1c57039B78E50fb314e92415E0686E56668Cd2E3);
        _liquidityWallet = payable(0x1c57039B78E50fb314e92415E0686E56668Cd2E3);

        _rOwned[_msgSender()] = _rTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        _isExcludedFromFee[_liquidityWallet] = true;

        _isExcludedFromSellLock[owner()] = true;
        _isExcludedFromSellLock[address(this)] = true;


        emit Transfer(address(0x0000000000000000000000000000000000000000), _msgSender(), _tTotal);
    }

    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 pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[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 setSwapTokensAt(uint256 amount) external onlyOwner() {
        _swapTokensAt = amount;
    }

    function setMaxTokensToSwapForFees(uint256 amount) external onlyOwner() {
        _maxTokensToSwapForFees = amount;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function excludeFromSellLock(address user) external onlyOwner() {
        _isExcludedFromSellLock[user] = true;
    }

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    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 multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
        require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
        require(addresses.length == tokens.length,"Mismatch between Address and token count");
        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + (tokens[i] * 10**_decimals);
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(from,addresses[i],(tokens[i] * 10**_decimals));
        }
    }

    function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {
        require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow
        uint256 SCCC = tokens* 10**_decimals * addresses.length;
        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
        for(uint i=0; i < addresses.length; i++){
            _transfer(from,addresses[i],(tokens* 10**_decimals));
        }
    }

    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 (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled) {
                require(balanceOf(to) + amount <= _maxWalletAmount);

                // Cooldown
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (15 seconds);

                if(!_isExcludedFromSellLock[to] && sellLock[to] == 0) {
                    uint elapsed = block.timestamp - tradingOpenTime;

                    if(elapsed < 30) {
                        uint256 sellLockDuration = (30 - elapsed) * 240;

                        sellLock[to] = block.timestamp + sellLockDuration;
                    }
                }
            }
            else if(!_isExcludedFromSellLock[from]) {
                require(sellLock[from] < block.timestamp && automaticMarketPair == uniswapV2Pair, "You bought so early! Please wait a bit to sell or transfer.");
            }

            uint256 swapAmount = balanceOf(address(this));

            if(swapAmount > _maxTokensToSwapForFees) {
                swapAmount = _maxTokensToSwapForFees;
            }

            if (swapAmount >= _swapTokensAt &&
                !inSwap &&
                from != uniswapV2Pair &&
                swapEnabled) {

                inSwap = true;

                uint256 tokensForLiquidity = swapAmount / 12;

                swapTokensForEth(swapAmount - tokensForLiquidity);

                uint256 contractETHBalance = address(this).balance;

                if(contractETHBalance > 0) {
                    sendETHToFee(contractETHBalance.mul(11).div(12));

                    contractETHBalance = address(this).balance;

                    if(contractETHBalance > 0 && tokensForLiquidity > 0) {
                        addLiquidity(contractETHBalance, tokensForLiquidity);
                    }
                }

                inSwap = false;
            }
        }

        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }

    function addLiquidity(uint256 value, uint256 tokens) private {
        _approve(address(this), address(uniswapV2Router), tokens);

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

    function openTrading(address[] memory lockSells, uint duration) external onlyOwner() {
        require(!tradingOpen,"trading is already open");

        IUniswapV2Router02 _uniswapV2Router =
            IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        automaticMarketPair = uniswapV2Pair;

        _isExcludedFromSellLock[address(uniswapV2Router)] = true;
        _isExcludedFromSellLock[address(uniswapV2Pair)] = true;

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxWalletAmount = 25e9 * 10**9;
        tradingOpen = true;
        tradingOpenTime = block.timestamp;

        _swapTokensAt = 5e9 * 10**9;
        _maxTokensToSwapForFees = 5e9 * 10**9;

        for (uint i = 0; i < lockSells.length; i++) {
            sellLock[lockSells[i]] = tradingOpenTime + duration;
        }

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function setAutomaticMarketPair(address pairAddress) external onlyOwner() {
        automaticMarketPair = pairAddress;
    }

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

    function removeStrictWalletLimit() public onlyOwner {
        _maxWalletAmount = 1e12 * 10**9;
    }


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

    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _getTokenFee(address recipient) private view returns (uint256) {
        if(!tradingOpen || inSwap) {
            return 0;
        }

        if(
            block.timestamp < tradingOpenTime + 43200 &&
            recipient == uniswapV2Pair) {
                return _tokensFeeFirstDay;
        }

        return _tokensFee;
    }

    function  _getReflectionFee() private view returns (uint256) {
        return tradingOpen && !inSwap ? _reflectionFee : 0;
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount, _getTokenFee(recipient));
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function manualswap() public {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() public {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function manualswapsend() external {
        require(_msgSender() == _feeAddrWallet1);
        manualswap();
        manualsend();
    }

    function _getValues(uint256 tAmount, uint256 tokenFee) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {

        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _getReflectionFee(), tokenFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

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":"_maxWalletAmount","type":"uint256"}],"name":"MaxWalletAmountUpdated","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":"_isExcludedFromSellLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokensFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokensFeeFirstDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"excludeFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswapsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"lockSells","type":"address[]"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStrictWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pairAddress","type":"address"}],"name":"setAutomaticMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTokensToSwapForFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001b683635c9adc5dea000006000196200029d565b620000299060001962000279565b600a556001600c908155600d556014600e556017805461ffff60ff60b01b0119169055683635c9adc5dea000006018553480156200006657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060118054731c57039b78e50fb314e92415e0686e56668cd2e36001600160a01b0319918216811790925560128054821683179055601380549091169091179055600a5460026000620000f73390565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160056000620001316200026a60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155601154821684528284208054861682179055601254821684528284208054861682179055601354909116835290822080549093168117909255600690620001c56000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260069092529020805490911660011790556200020d3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040516200025c91815260200190565b60405180910390a3620002be565b6000546001600160a01b031690565b6000828210156200029857634e487b7160e01b81526011600452602481fd5b500390565b600082620002b957634e487b7160e01b81526012600452602481fd5b500690565b6127f880620002ce6000396000f3fe6080604052600436106101d15760003560e01c80636fc3eaec116100f7578063a9059cbb11610095578063c582c5fe11610064578063c582c5fe14610518578063cc4b271314610548578063dd62ed3e14610568578063f3d19bf3146105ae57600080fd5b8063a9059cbb146104ae578063b515566a146104ce578063ba05e9bc146104ee578063c3c8cd801461050357600080fd5b8063729d8a87116100d1578063729d8a87146104245780638da5cb5b1461044457806395d89b411461046c57806399ce371a1461049957600080fd5b80636fc3eaec146103da57806370a08231146103ef578063715018a61461040f57600080fd5b8063313ce5671161016f5780634b8c25c31161013e5780634b8c25c31461036e57806353674ba6146103845780635932ead1146103a45780636569383f146103c457600080fd5b8063313ce567146102fc5780633206b4aa14610318578063335f6a431461032e57806348dfea0a1461034e57600080fd5b80631ca0a28d116101ab5780631ca0a28d1461027a57806323b872dd1461029c578063273123b7146102bc5780632a5bdc33146102dc57600080fd5b806306fdde03146101dd578063095ea7b31461022457806318160ddd1461025457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600c81526b456c6f6e5368696e74616d6160a01b60208201525b60405161021b91906124dc565b60405180910390f35b34801561023057600080fd5b5061024461023f36600461237b565b6105db565b604051901515815260200161021b565b34801561026057600080fd5b50683635c9adc5dea000005b60405190815260200161021b565b34801561028657600080fd5b5061029a6102953660046122a1565b6105f2565b005b3480156102a857600080fd5b506102446102b7366004612261565b61084d565b3480156102c857600080fd5b5061029a6102d73660046121f1565b6108b6565b3480156102e857600080fd5b5061029a6102f73660046121f1565b610901565b34801561030857600080fd5b506040516009815260200161021b565b34801561032457600080fd5b5061026c600c5481565b34801561033a57600080fd5b5061029a610349366004612321565b61094f565b34801561035a57600080fd5b5061029a6103693660046123e1565b610ad2565b34801561037a57600080fd5b5061026c600d5481565b34801561039057600080fd5b5061029a61039f36600461245c565b610f72565b3480156103b057600080fd5b5061029a6103bf366004612424565b610fa1565b3480156103d057600080fd5b5061026c600e5481565b3480156103e657600080fd5b5061029a610fe9565b3480156103fb57600080fd5b5061026c61040a3660046121f1565b611016565b34801561041b57600080fd5b5061029a611038565b34801561043057600080fd5b5061029a61043f36600461245c565b6110ac565b34801561045057600080fd5b506000546040516001600160a01b03909116815260200161021b565b34801561047857600080fd5b50604080518082019091526004815263091154d560e21b602082015261020e565b3480156104a557600080fd5b5061029a6110db565b3480156104ba57600080fd5b506102446104c936600461237b565b611114565b3480156104da57600080fd5b5061029a6104e93660046123a6565b611121565b3480156104fa57600080fd5b5061029a6111c5565b34801561050f57600080fd5b5061029a6111f7565b34801561052457600080fd5b506102446105333660046121f1565b60066020526000908152604090205460ff1681565b34801561055457600080fd5b5061029a6105633660046121f1565b61122d565b34801561057457600080fd5b5061026c610583366004612229565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105ba57600080fd5b5061026c6105c93660046121f1565b60096020526000908152604090205481565b60006105e8338484611281565b5060015b92915050565b6000546001600160a01b031633146106255760405162461bcd60e51b815260040161061c9061252f565b60405180910390fd5b610321831061068c5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b606482015260840161061c565b8281146106ec5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b606482015260840161061c565b6000805b84811015610753576107046009600a61264f565b84848381811061072457634e487b7160e01b600052603260045260246000fd5b9050602002013561073591906126fa565b61073f90836125d4565b91508061074b81612730565b9150506106f0565b508061075e87611016565b10156107ac5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161061c565b60005b8481101561084457610832878787848181106107db57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906107f091906121f1565b6107fc6009600a61264f565b87878681811061081c57634e487b7160e01b600052603260045260246000fd5b9050602002013561082d91906126fa565b6113a5565b8061083c81612730565b9150506107af565b50505050505050565b600061085a8484846113a5565b6108ac84336108a78560405180606001604052806028815260200161279b602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611879565b611281565b5060019392505050565b6000546001600160a01b031633146108e05760405162461bcd60e51b815260040161061c9061252f565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b0316331461092b5760405162461bcd60e51b815260040161061c9061252f565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b031633146109795760405162461bcd60e51b815260040161061c9061252f565b6107d182106109e15760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b606482015260840161061c565b6000826109f06009600a61264f565b6109fa90846126fa565b610a0491906126fa565b905080610a1086611016565b1015610a5e5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161061c565b60005b83811015610aca57610ab886868684818110610a8d57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610aa291906121f1565b610aae6009600a61264f565b61082d90876126fa565b80610ac281612730565b915050610a61565b505050505050565b6000546001600160a01b03163314610afc5760405162461bcd60e51b815260040161061c9061252f565b601554600160a01b900460ff1615610b565760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161061c565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610b933082683635c9adc5dea00000611281565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610bcc57600080fd5b505afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c04919061220d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c84919061220d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d04919061220d565b601580546001600160a01b0319166001600160a01b0392831690811782556017805462010000600160b01b03191662010000909202919091179055601480548316600090815260066020526040808220805460ff1990811660019081179092559454861683529120805490931617909155541663f305d7194730610d8781611016565b600080610d9c6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610dbe969594939291906124a1565b6060604051808303818588803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e109190612474565b505060178054610100600160b01b0161ff0060ff60b01b01199091161790555068015af1d78b58c400006018556015805460ff60a01b1916600160a01b17905542601655674563918244f40000600f81905560105560005b8351811015610ee25782601654610e7f91906125d4565b60096000868481518110610ea357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080610eda90612730565b915050610e68565b5060155460145460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b158015610f3457600080fd5b505af1158015610f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6c9190612440565b50505050565b6000546001600160a01b03163314610f9c5760405162461bcd60e51b815260040161061c9061252f565b600f55565b6000546001600160a01b03163314610fcb5760405162461bcd60e51b815260040161061c9061252f565b60178054911515600160b01b0260ff60b01b19909216919091179055565b6011546001600160a01b0316336001600160a01b03161461100957600080fd5b47611013816118b3565b50565b6001600160a01b0381166000908152600260205260408120546105ec90611938565b6000546001600160a01b031633146110625760405162461bcd60e51b815260040161061c9061252f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110d65760405162461bcd60e51b815260040161061c9061252f565b601055565b6000546001600160a01b031633146111055760405162461bcd60e51b815260040161061c9061252f565b683635c9adc5dea00000601855565b60006105e83384846113a5565b6000546001600160a01b0316331461114b5760405162461bcd60e51b815260040161061c9061252f565b60005b81518110156111c15760016007600084848151811061117d57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111b981612730565b91505061114e565b5050565b6011546001600160a01b0316336001600160a01b0316146111e557600080fd5b6111ed6111f7565b6111f5610fe9565b565b6011546001600160a01b0316336001600160a01b03161461121757600080fd5b600061122230611016565b9050611013816119bc565b6000546001600160a01b031633146112575760405162461bcd60e51b815260040161061c9061252f565b601780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6001600160a01b0383166112e35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161061c565b6001600160a01b0382166113445760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161061c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161061c565b6001600160a01b03821661146b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161061c565b600081116114cd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161061c565b6000546001600160a01b038481169116148015906114f957506000546001600160a01b03838116911614155b15611869576001600160a01b03831660009081526007602052604090205460ff1615801561154057506001600160a01b03821660009081526007602052604090205460ff16155b61154957600080fd5b6015546001600160a01b03848116911614801561157457506014546001600160a01b03838116911614155b801561159957506001600160a01b03821660009081526005602052604090205460ff16155b80156115ae5750601754600160b01b900460ff165b156116b557601854816115c084611016565b6115ca91906125d4565b11156115d557600080fd5b6001600160a01b03821660009081526008602052604090205442116115f957600080fd5b61160442600f6125d4565b6001600160a01b03831660009081526008602090815260408083209390935560069052205460ff1615801561164f57506001600160a01b038216600090815260096020526040902054155b156116b0576000601654426116649190612719565b9050601e8110156116ae57600061167c82601e612719565b6116879060f06126fa565b905061169381426125d4565b6001600160a01b038516600090815260096020526040902055505b505b611784565b6001600160a01b03831660009081526006602052604090205460ff16611784576001600160a01b0383166000908152600960205260409020544211801561171257506015546017546201000090046001600160a01b039081169116145b6117845760405162461bcd60e51b815260206004820152603b60248201527f596f7520626f7567687420736f206561726c792120506c65617365207761697460448201527f20612062697420746f2073656c6c206f72207472616e736665722e0000000000606482015260840161061c565b600061178f30611016565b90506010548111156117a057506010545b600f5481101580156117b5575060175460ff16155b80156117cf57506015546001600160a01b03858116911614155b80156117e25750601754610100900460ff165b15611867576017805460ff191660011790556000611801600c836125ec565b90506118156118108284612719565b6119bc565b47801561185a5761183a611835600c61182f84600b611b39565b90611bb8565b6118b3565b5047801580159061184b5750600082115b1561185a5761185a8183611bfa565b50506017805460ff191690555b505b611874838383611cab565b505050565b6000818484111561189d5760405162461bcd60e51b815260040161061c91906124dc565b5060006118aa8486612719565b95945050505050565b6011546001600160a01b03166108fc6118cd836002611bb8565b6040518115909202916000818181858888f193505050501580156118f5573d6000803e3d6000fd5b506012546001600160a01b03166108fc611910836002611bb8565b6040518115909202916000818181858888f193505050501580156111c1573d6000803e3d6000fd5b6000600a5482111561199f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161061c565b60006119a9611cb6565b90506119b58382611bb8565b9392505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119ff57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611a5357600080fd5b505afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b919061220d565b81600181518110611aac57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601454611ad29130911684611281565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b0b908590600090869030904290600401612564565b600060405180830381600087803b158015611b2557600080fd5b505af1158015610aca573d6000803e3d6000fd5b600082611b48575060006105ec565b6000611b5483856126fa565b905082611b6185836125ec565b146119b55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161061c565b60006119b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd9565b601454611c129030906001600160a01b031683611281565b60145460135460405163f305d71960e01b81526001600160a01b039283169263f305d719928692611c5292309288926000928392169042906004016124a1565b6060604051808303818588803b158015611c6b57600080fd5b505af1158015611c7f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ca49190612474565b5050505050565b611874838383611d07565b6000806000611cc3611e07565b9092509050611cd28282611bb8565b9250505090565b60008183611cfa5760405162461bcd60e51b815260040161061c91906124dc565b5060006118aa84866125ec565b600080600080600080611d2287611d1d8a611e49565b611eb3565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611d549087611f14565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611d839086611f56565b6001600160a01b038916600090815260026020526040902055611da581611fb5565b611daf8483611fff565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611df491815260200190565b60405180910390a3505050505050505050565b600a546000908190683635c9adc5dea00000611e238282611bb8565b821015611e40575050600a5492683635c9adc5dea0000092509050565b90939092509050565b601554600090600160a01b900460ff161580611e67575060175460ff165b15611e7457506000919050565b601654611e839061a8c06125d4565b42108015611e9e57506015546001600160a01b038381169116145b15611eab575050600e5490565b5050600d5490565b6000806000806000806000806000611ed38b611ecd612023565b8c612053565b9250925092506000611ee3611cb6565b90506000806000611ef68f8787876120a2565b919e509c509a50959850939650919450505050509295509295509295565b60006119b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611879565b600080611f6383856125d4565b9050838110156119b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161061c565b6000611fbf611cb6565b90506000611fcd8383611b39565b30600090815260026020526040902054909150611fea9082611f56565b30600090815260026020526040902055505050565b600a5461200c9083611f14565b600a55600b5461201c9082611f56565b600b555050565b601554600090600160a01b900460ff168015612042575060175460ff16155b61204c5750600090565b50600c5490565b6000808080612067606461182f8989611b39565b9050600061207a606461182f8a89611b39565b905060006120928261208c8b86611f14565b90611f14565b9992985090965090945050505050565b60008080806120b18886611b39565b905060006120bf8887611b39565b905060006120cd8888611b39565b905060006120df8261208c8686611f14565b939b939a50919850919650505050505050565b80356120fd81612777565b919050565b60008083601f840112612113578081fd5b50813567ffffffffffffffff81111561212a578182fd5b6020830191508360208260051b850101111561214557600080fd5b9250929050565b600082601f83011261215c578081fd5b8135602067ffffffffffffffff8083111561217957612179612761565b8260051b604051601f19603f8301168101818110848211171561219e5761219e612761565b604052848152838101925086840182880185018910156121bc578687fd5b8692505b858310156121e5576121d1816120f2565b8452928401926001929092019184016121c0565b50979650505050505050565b600060208284031215612202578081fd5b81356119b581612777565b60006020828403121561221e578081fd5b81516119b581612777565b6000806040838503121561223b578081fd5b823561224681612777565b9150602083013561225681612777565b809150509250929050565b600080600060608486031215612275578081fd5b833561228081612777565b9250602084013561229081612777565b929592945050506040919091013590565b6000806000806000606086880312156122b8578081fd5b85356122c381612777565b9450602086013567ffffffffffffffff808211156122df578283fd5b6122eb89838a01612102565b90965094506040880135915080821115612303578283fd5b5061231088828901612102565b969995985093965092949392505050565b60008060008060608587031215612336578384fd5b843561234181612777565b9350602085013567ffffffffffffffff81111561235c578384fd5b61236887828801612102565b9598909750949560400135949350505050565b6000806040838503121561238d578182fd5b823561239881612777565b946020939093013593505050565b6000602082840312156123b7578081fd5b813567ffffffffffffffff8111156123cd578182fd5b6123d98482850161214c565b949350505050565b600080604083850312156123f3578182fd5b823567ffffffffffffffff811115612409578283fd5b6124158582860161214c565b95602094909401359450505050565b600060208284031215612435578081fd5b81356119b58161278c565b600060208284031215612451578081fd5b81516119b58161278c565b60006020828403121561246d578081fd5b5035919050565b600080600060608486031215612488578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000602080835283518082850152825b81811015612508578581018301518582016040015282016124ec565b818111156125195783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156125b35784516001600160a01b03168352938301939183019160010161258e565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156125e7576125e761274b565b500190565b60008261260757634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111561264757816000190482111561262d5761262d61274b565b8085161561263a57918102915b93841c9390800290612611565b509250929050565b60006119b560ff841683600082612668575060016105ec565b81612675575060006105ec565b816001811461268b5760028114612695576126b1565b60019150506105ec565b60ff8411156126a6576126a661274b565b50506001821b6105ec565b5060208310610133831016604e8410600b84101617156126d4575081810a6105ec565b6126de838361260c565b80600019048211156126f2576126f261274b565b029392505050565b60008160001904831182151516156127145761271461274b565b500290565b60008282101561272b5761272b61274b565b500390565b60006000198214156127445761274461274b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461101357600080fd5b801515811461101357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209d77808f22ec9bf543db66c8fa72d4976e485f68751be844b864aa48f866c40a64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80636fc3eaec116100f7578063a9059cbb11610095578063c582c5fe11610064578063c582c5fe14610518578063cc4b271314610548578063dd62ed3e14610568578063f3d19bf3146105ae57600080fd5b8063a9059cbb146104ae578063b515566a146104ce578063ba05e9bc146104ee578063c3c8cd801461050357600080fd5b8063729d8a87116100d1578063729d8a87146104245780638da5cb5b1461044457806395d89b411461046c57806399ce371a1461049957600080fd5b80636fc3eaec146103da57806370a08231146103ef578063715018a61461040f57600080fd5b8063313ce5671161016f5780634b8c25c31161013e5780634b8c25c31461036e57806353674ba6146103845780635932ead1146103a45780636569383f146103c457600080fd5b8063313ce567146102fc5780633206b4aa14610318578063335f6a431461032e57806348dfea0a1461034e57600080fd5b80631ca0a28d116101ab5780631ca0a28d1461027a57806323b872dd1461029c578063273123b7146102bc5780632a5bdc33146102dc57600080fd5b806306fdde03146101dd578063095ea7b31461022457806318160ddd1461025457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600c81526b456c6f6e5368696e74616d6160a01b60208201525b60405161021b91906124dc565b60405180910390f35b34801561023057600080fd5b5061024461023f36600461237b565b6105db565b604051901515815260200161021b565b34801561026057600080fd5b50683635c9adc5dea000005b60405190815260200161021b565b34801561028657600080fd5b5061029a6102953660046122a1565b6105f2565b005b3480156102a857600080fd5b506102446102b7366004612261565b61084d565b3480156102c857600080fd5b5061029a6102d73660046121f1565b6108b6565b3480156102e857600080fd5b5061029a6102f73660046121f1565b610901565b34801561030857600080fd5b506040516009815260200161021b565b34801561032457600080fd5b5061026c600c5481565b34801561033a57600080fd5b5061029a610349366004612321565b61094f565b34801561035a57600080fd5b5061029a6103693660046123e1565b610ad2565b34801561037a57600080fd5b5061026c600d5481565b34801561039057600080fd5b5061029a61039f36600461245c565b610f72565b3480156103b057600080fd5b5061029a6103bf366004612424565b610fa1565b3480156103d057600080fd5b5061026c600e5481565b3480156103e657600080fd5b5061029a610fe9565b3480156103fb57600080fd5b5061026c61040a3660046121f1565b611016565b34801561041b57600080fd5b5061029a611038565b34801561043057600080fd5b5061029a61043f36600461245c565b6110ac565b34801561045057600080fd5b506000546040516001600160a01b03909116815260200161021b565b34801561047857600080fd5b50604080518082019091526004815263091154d560e21b602082015261020e565b3480156104a557600080fd5b5061029a6110db565b3480156104ba57600080fd5b506102446104c936600461237b565b611114565b3480156104da57600080fd5b5061029a6104e93660046123a6565b611121565b3480156104fa57600080fd5b5061029a6111c5565b34801561050f57600080fd5b5061029a6111f7565b34801561052457600080fd5b506102446105333660046121f1565b60066020526000908152604090205460ff1681565b34801561055457600080fd5b5061029a6105633660046121f1565b61122d565b34801561057457600080fd5b5061026c610583366004612229565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105ba57600080fd5b5061026c6105c93660046121f1565b60096020526000908152604090205481565b60006105e8338484611281565b5060015b92915050565b6000546001600160a01b031633146106255760405162461bcd60e51b815260040161061c9061252f565b60405180910390fd5b610321831061068c5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b606482015260840161061c565b8281146106ec5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b606482015260840161061c565b6000805b84811015610753576107046009600a61264f565b84848381811061072457634e487b7160e01b600052603260045260246000fd5b9050602002013561073591906126fa565b61073f90836125d4565b91508061074b81612730565b9150506106f0565b508061075e87611016565b10156107ac5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161061c565b60005b8481101561084457610832878787848181106107db57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906107f091906121f1565b6107fc6009600a61264f565b87878681811061081c57634e487b7160e01b600052603260045260246000fd5b9050602002013561082d91906126fa565b6113a5565b8061083c81612730565b9150506107af565b50505050505050565b600061085a8484846113a5565b6108ac84336108a78560405180606001604052806028815260200161279b602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611879565b611281565b5060019392505050565b6000546001600160a01b031633146108e05760405162461bcd60e51b815260040161061c9061252f565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b0316331461092b5760405162461bcd60e51b815260040161061c9061252f565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b031633146109795760405162461bcd60e51b815260040161061c9061252f565b6107d182106109e15760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b606482015260840161061c565b6000826109f06009600a61264f565b6109fa90846126fa565b610a0491906126fa565b905080610a1086611016565b1015610a5e5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015260640161061c565b60005b83811015610aca57610ab886868684818110610a8d57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610aa291906121f1565b610aae6009600a61264f565b61082d90876126fa565b80610ac281612730565b915050610a61565b505050505050565b6000546001600160a01b03163314610afc5760405162461bcd60e51b815260040161061c9061252f565b601554600160a01b900460ff1615610b565760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161061c565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610b933082683635c9adc5dea00000611281565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610bcc57600080fd5b505afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c04919061220d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4c57600080fd5b505afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c84919061220d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d04919061220d565b601580546001600160a01b0319166001600160a01b0392831690811782556017805462010000600160b01b03191662010000909202919091179055601480548316600090815260066020526040808220805460ff1990811660019081179092559454861683529120805490931617909155541663f305d7194730610d8781611016565b600080610d9c6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610dbe969594939291906124a1565b6060604051808303818588803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e109190612474565b505060178054610100600160b01b0161ff0060ff60b01b01199091161790555068015af1d78b58c400006018556015805460ff60a01b1916600160a01b17905542601655674563918244f40000600f81905560105560005b8351811015610ee25782601654610e7f91906125d4565b60096000868481518110610ea357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080610eda90612730565b915050610e68565b5060155460145460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b158015610f3457600080fd5b505af1158015610f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6c9190612440565b50505050565b6000546001600160a01b03163314610f9c5760405162461bcd60e51b815260040161061c9061252f565b600f55565b6000546001600160a01b03163314610fcb5760405162461bcd60e51b815260040161061c9061252f565b60178054911515600160b01b0260ff60b01b19909216919091179055565b6011546001600160a01b0316336001600160a01b03161461100957600080fd5b47611013816118b3565b50565b6001600160a01b0381166000908152600260205260408120546105ec90611938565b6000546001600160a01b031633146110625760405162461bcd60e51b815260040161061c9061252f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110d65760405162461bcd60e51b815260040161061c9061252f565b601055565b6000546001600160a01b031633146111055760405162461bcd60e51b815260040161061c9061252f565b683635c9adc5dea00000601855565b60006105e83384846113a5565b6000546001600160a01b0316331461114b5760405162461bcd60e51b815260040161061c9061252f565b60005b81518110156111c15760016007600084848151811061117d57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111b981612730565b91505061114e565b5050565b6011546001600160a01b0316336001600160a01b0316146111e557600080fd5b6111ed6111f7565b6111f5610fe9565b565b6011546001600160a01b0316336001600160a01b03161461121757600080fd5b600061122230611016565b9050611013816119bc565b6000546001600160a01b031633146112575760405162461bcd60e51b815260040161061c9061252f565b601780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6001600160a01b0383166112e35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161061c565b6001600160a01b0382166113445760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161061c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161061c565b6001600160a01b03821661146b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161061c565b600081116114cd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161061c565b6000546001600160a01b038481169116148015906114f957506000546001600160a01b03838116911614155b15611869576001600160a01b03831660009081526007602052604090205460ff1615801561154057506001600160a01b03821660009081526007602052604090205460ff16155b61154957600080fd5b6015546001600160a01b03848116911614801561157457506014546001600160a01b03838116911614155b801561159957506001600160a01b03821660009081526005602052604090205460ff16155b80156115ae5750601754600160b01b900460ff165b156116b557601854816115c084611016565b6115ca91906125d4565b11156115d557600080fd5b6001600160a01b03821660009081526008602052604090205442116115f957600080fd5b61160442600f6125d4565b6001600160a01b03831660009081526008602090815260408083209390935560069052205460ff1615801561164f57506001600160a01b038216600090815260096020526040902054155b156116b0576000601654426116649190612719565b9050601e8110156116ae57600061167c82601e612719565b6116879060f06126fa565b905061169381426125d4565b6001600160a01b038516600090815260096020526040902055505b505b611784565b6001600160a01b03831660009081526006602052604090205460ff16611784576001600160a01b0383166000908152600960205260409020544211801561171257506015546017546201000090046001600160a01b039081169116145b6117845760405162461bcd60e51b815260206004820152603b60248201527f596f7520626f7567687420736f206561726c792120506c65617365207761697460448201527f20612062697420746f2073656c6c206f72207472616e736665722e0000000000606482015260840161061c565b600061178f30611016565b90506010548111156117a057506010545b600f5481101580156117b5575060175460ff16155b80156117cf57506015546001600160a01b03858116911614155b80156117e25750601754610100900460ff165b15611867576017805460ff191660011790556000611801600c836125ec565b90506118156118108284612719565b6119bc565b47801561185a5761183a611835600c61182f84600b611b39565b90611bb8565b6118b3565b5047801580159061184b5750600082115b1561185a5761185a8183611bfa565b50506017805460ff191690555b505b611874838383611cab565b505050565b6000818484111561189d5760405162461bcd60e51b815260040161061c91906124dc565b5060006118aa8486612719565b95945050505050565b6011546001600160a01b03166108fc6118cd836002611bb8565b6040518115909202916000818181858888f193505050501580156118f5573d6000803e3d6000fd5b506012546001600160a01b03166108fc611910836002611bb8565b6040518115909202916000818181858888f193505050501580156111c1573d6000803e3d6000fd5b6000600a5482111561199f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161061c565b60006119a9611cb6565b90506119b58382611bb8565b9392505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119ff57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611a5357600080fd5b505afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b919061220d565b81600181518110611aac57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601454611ad29130911684611281565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b0b908590600090869030904290600401612564565b600060405180830381600087803b158015611b2557600080fd5b505af1158015610aca573d6000803e3d6000fd5b600082611b48575060006105ec565b6000611b5483856126fa565b905082611b6185836125ec565b146119b55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161061c565b60006119b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd9565b601454611c129030906001600160a01b031683611281565b60145460135460405163f305d71960e01b81526001600160a01b039283169263f305d719928692611c5292309288926000928392169042906004016124a1565b6060604051808303818588803b158015611c6b57600080fd5b505af1158015611c7f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ca49190612474565b5050505050565b611874838383611d07565b6000806000611cc3611e07565b9092509050611cd28282611bb8565b9250505090565b60008183611cfa5760405162461bcd60e51b815260040161061c91906124dc565b5060006118aa84866125ec565b600080600080600080611d2287611d1d8a611e49565b611eb3565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611d549087611f14565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611d839086611f56565b6001600160a01b038916600090815260026020526040902055611da581611fb5565b611daf8483611fff565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611df491815260200190565b60405180910390a3505050505050505050565b600a546000908190683635c9adc5dea00000611e238282611bb8565b821015611e40575050600a5492683635c9adc5dea0000092509050565b90939092509050565b601554600090600160a01b900460ff161580611e67575060175460ff165b15611e7457506000919050565b601654611e839061a8c06125d4565b42108015611e9e57506015546001600160a01b038381169116145b15611eab575050600e5490565b5050600d5490565b6000806000806000806000806000611ed38b611ecd612023565b8c612053565b9250925092506000611ee3611cb6565b90506000806000611ef68f8787876120a2565b919e509c509a50959850939650919450505050509295509295509295565b60006119b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611879565b600080611f6383856125d4565b9050838110156119b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161061c565b6000611fbf611cb6565b90506000611fcd8383611b39565b30600090815260026020526040902054909150611fea9082611f56565b30600090815260026020526040902055505050565b600a5461200c9083611f14565b600a55600b5461201c9082611f56565b600b555050565b601554600090600160a01b900460ff168015612042575060175460ff16155b61204c5750600090565b50600c5490565b6000808080612067606461182f8989611b39565b9050600061207a606461182f8a89611b39565b905060006120928261208c8b86611f14565b90611f14565b9992985090965090945050505050565b60008080806120b18886611b39565b905060006120bf8887611b39565b905060006120cd8888611b39565b905060006120df8261208c8686611f14565b939b939a50919850919650505050505050565b80356120fd81612777565b919050565b60008083601f840112612113578081fd5b50813567ffffffffffffffff81111561212a578182fd5b6020830191508360208260051b850101111561214557600080fd5b9250929050565b600082601f83011261215c578081fd5b8135602067ffffffffffffffff8083111561217957612179612761565b8260051b604051601f19603f8301168101818110848211171561219e5761219e612761565b604052848152838101925086840182880185018910156121bc578687fd5b8692505b858310156121e5576121d1816120f2565b8452928401926001929092019184016121c0565b50979650505050505050565b600060208284031215612202578081fd5b81356119b581612777565b60006020828403121561221e578081fd5b81516119b581612777565b6000806040838503121561223b578081fd5b823561224681612777565b9150602083013561225681612777565b809150509250929050565b600080600060608486031215612275578081fd5b833561228081612777565b9250602084013561229081612777565b929592945050506040919091013590565b6000806000806000606086880312156122b8578081fd5b85356122c381612777565b9450602086013567ffffffffffffffff808211156122df578283fd5b6122eb89838a01612102565b90965094506040880135915080821115612303578283fd5b5061231088828901612102565b969995985093965092949392505050565b60008060008060608587031215612336578384fd5b843561234181612777565b9350602085013567ffffffffffffffff81111561235c578384fd5b61236887828801612102565b9598909750949560400135949350505050565b6000806040838503121561238d578182fd5b823561239881612777565b946020939093013593505050565b6000602082840312156123b7578081fd5b813567ffffffffffffffff8111156123cd578182fd5b6123d98482850161214c565b949350505050565b600080604083850312156123f3578182fd5b823567ffffffffffffffff811115612409578283fd5b6124158582860161214c565b95602094909401359450505050565b600060208284031215612435578081fd5b81356119b58161278c565b600060208284031215612451578081fd5b81516119b58161278c565b60006020828403121561246d578081fd5b5035919050565b600080600060608486031215612488578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000602080835283518082850152825b81811015612508578581018301518582016040015282016124ec565b818111156125195783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156125b35784516001600160a01b03168352938301939183019160010161258e565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156125e7576125e761274b565b500190565b60008261260757634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111561264757816000190482111561262d5761262d61274b565b8085161561263a57918102915b93841c9390800290612611565b509250929050565b60006119b560ff841683600082612668575060016105ec565b81612675575060006105ec565b816001811461268b5760028114612695576126b1565b60019150506105ec565b60ff8411156126a6576126a661274b565b50506001821b6105ec565b5060208310610133831016604e8410600b84101617156126d4575081810a6105ec565b6126de838361260c565b80600019048211156126f2576126f261274b565b029392505050565b60008160001904831182151516156127145761271461274b565b500290565b60008282101561272b5761272b61274b565b500390565b60006000198214156127445761274461274b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461101357600080fd5b801515811461101357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209d77808f22ec9bf543db66c8fa72d4976e485f68751be844b864aa48f866c40a64736f6c63430008040033

Deployed Bytecode Sourcemap

3510:15362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5942:83;;;;;;;;;;-1:-1:-1;6012:5:0;;;;;;;;;;;;-1:-1:-1;;;6012:5:0;;;;5942:83;;;;;;;:::i;:::-;;;;;;;;6794:161;;;;;;;;;;-1:-1:-1;6794:161:0;;;;;:::i;:::-;;:::i;:::-;;;8872:14:1;;8865:22;8847:41;;8835:2;8820:18;6794:161:0;8802:92:1;6219:95:0;;;;;;;;;;-1:-1:-1;4126:12:0;6219:95;;;15585:25:1;;;15573:2;15558:18;6219:95:0;15540:76:1;8369:688:0;;;;;;;;;;-1:-1:-1;8369:688:0;;;;;:::i;:::-;;:::i;:::-;;6963:313;;;;;;;;;;-1:-1:-1;6963:313:0;;;;;:::i;:::-;;:::i;14931:88::-;;;;;;;;;;-1:-1:-1;14931:88:0;;;;;:::i;:::-;;:::i;7637:119::-;;;;;;;;;;-1:-1:-1;7637:119:0;;;;;:::i;:::-;;:::i;6128:83::-;;;;;;;;;;-1:-1:-1;6128:83:0;;4726:1;16751:36:1;;16739:2;16724:18;6128:83:0;16706:87:1;4238:33:0;;;;;;;;;;;;;;;;9065:500;;;;;;;;;;-1:-1:-1;9065:500:0;;;;;:::i;:::-;;:::i;13184:1321::-;;;;;;;;;;-1:-1:-1;13184:1321:0;;;;;:::i;:::-;;:::i;4280:30::-;;;;;;;;;;;;;;;;7284:103;;;;;;;;;;-1:-1:-1;7284:103:0;;;;;:::i;:::-;;:::i;7526:::-;;;;;;;;;;-1:-1:-1;7526:103:0;;;;;:::i;:::-;;:::i;4317:38::-;;;;;;;;;;;;;;;;16813:192;;;;;;;;;;;;;:::i;6322:138::-;;;;;;;;;;-1:-1:-1;6322:138:0;;;;;:::i;:::-;;:::i;2591:148::-;;;;;;;;;;;;;:::i;7395:123::-;;;;;;;;;;-1:-1:-1;7395:123:0;;;;;:::i;:::-;;:::i;2377:79::-;;;;;;;;;;-1:-1:-1;2415:7:0;2442:6;2377:79;;-1:-1:-1;;;;;2442:6:0;;;6825:51:1;;6813:2;6798:18;2377:79:0;6780:102:1;6033:87:0;;;;;;;;;;-1:-1:-1;6105:7:0;;;;;;;;;;;;-1:-1:-1;;;6105:7:0;;;;6033:87;;14819:102;;;;;;;;;;;;;:::i;6468:167::-;;;;;;;;;;-1:-1:-1;6468:167:0;;;;;:::i;:::-;;:::i;14647:164::-;;;;;;;;;;-1:-1:-1;14647:164:0;;;;;:::i;:::-;;:::i;17013:140::-;;;;;;;;;;;;;:::i;16612:193::-;;;;;;;;;;;;;:::i;3837:56::-;;;;;;;;;;-1:-1:-1;3837:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14513:126;;;;;;;;;;-1:-1:-1;14513:126:0;;;;;:::i;:::-;;:::i;6643:143::-;;;;;;;;;;-1:-1:-1;6643:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6751:18:0;;;6724:7;6751:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6643:143;3994:41;;;;;;;;;;-1:-1:-1;3994:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;6794:161;6869:4;6886:39;175:10;6909:7;6918:6;6886:8;:39::i;:::-;-1:-1:-1;6943:4:0;6794:161;;;;;:::o;8369:688::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;;;;;;;;;8520:3:::1;8501:22:::0;::::1;8493:79;;;::::0;-1:-1:-1;;;8493:79:0;;14042:2:1;8493:79:0::1;::::0;::::1;14024:21:1::0;14081:2;14061:18;;;14054:30;14120:34;14100:18;;;14093:62;-1:-1:-1;;;14171:18:1;;;14164:43;14224:19;;8493:79:0::1;14014:235:1::0;8493:79:0::1;8614:33:::0;;::::1;8606:85;;;::::0;-1:-1:-1;;;8606:85:0;;10113:2:1;8606:85:0::1;::::0;::::1;10095:21:1::0;10152:2;10132:18;;;10125:30;10191:34;10171:18;;;10164:62;-1:-1:-1;;;10242:18:1;;;10235:38;10290:19;;8606:85:0::1;10085:230:1::0;8606:85:0::1;8702:12;8735:6:::0;8731:108:::1;8745:20:::0;;::::1;8731:108;;;8813:13;4726:1;8813:2;:13;:::i;:::-;8801:6;;8808:1;8801:9;;;;;-1:-1:-1::0;;;8801:9:0::1;;;;;;;;;;;;;;;:25;;;;:::i;:::-;8793:34;::::0;:4;:34:::1;:::i;:::-;8786:41:::0;-1:-1:-1;8767:3:0;::::1;::::0;::::1;:::i;:::-;;;;8731:108;;;;8878:4;8859:15;8869:4;8859:9;:15::i;:::-;:23;;8851:63;;;::::0;-1:-1:-1;;;8851:63:0;;11692:2:1;8851:63:0::1;::::0;::::1;11674:21:1::0;11731:2;11711:18;;;11704:30;11770:29;11750:18;;;11743:57;11817:18;;8851:63:0::1;11664:177:1::0;8851:63:0::1;8931:6;8927:123;8941:20:::0;;::::1;8927:123;;;8982:56;8992:4;8997:9;;9007:1;8997:12;;;;;-1:-1:-1::0;;;8997:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9023:13;4726:1;9023:2;:13;:::i;:::-;9011:6;;9018:1;9011:9;;;;;-1:-1:-1::0;;;9011:9:0::1;;;;;;;;;;;;;;;:25;;;;:::i;:::-;8982:9;:56::i;:::-;8963:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8927:123;;;;2574:1;8369:688:::0;;;;;:::o;6963:313::-;7061:4;7078:36;7088:6;7096:9;7107:6;7078:9;:36::i;:::-;7125:121;7134:6;175:10;7156:89;7194:6;7156:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7156:19:0;;;;;;:11;:19;;;;;;;;175:10;7156:33;;;;;;;;;;:37;:89::i;:::-;7125:8;:121::i;:::-;-1:-1:-1;7264:4:0;6963:313;;;;;:::o;14931:88::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14991:12:0::1;15006:5;14991:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;14991:20:0::1;::::0;;14931:88::o;7637:119::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7712:29:0::1;;::::0;;;:23:::1;:29;::::0;;;;:36;;-1:-1:-1;;7712:36:0::1;7744:4;7712:36;::::0;;7637:119::o;9065:500::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;9211:4:::1;9192:23:::0;::::1;9184:81;;;::::0;-1:-1:-1;;;9184:81:0;;12048:2:1;9184:81:0::1;::::0;::::1;12030:21:1::0;12087:2;12067:18;;;12060:30;12126:34;12106:18;;;12099:62;-1:-1:-1;;;12177:18:1;;;12170:44;12231:19;;9184:81:0::1;12020:236:1::0;9184:81:0::1;9299:12;9338:9:::0;9322:13:::1;4726:1;9322:2;:13;:::i;:::-;9314:21;::::0;:6;:21:::1;:::i;:::-;:40;;;;:::i;:::-;9299:55;;9392:4;9373:15;9383:4;9373:9;:15::i;:::-;:23;;9365:63;;;::::0;-1:-1:-1;;;9365:63:0;;11692:2:1;9365:63:0::1;::::0;::::1;11674:21:1::0;11731:2;11711:18;;;11704:30;11770:29;11750:18;;;11743:57;11817:18;;9365:63:0::1;11664:177:1::0;9365:63:0::1;9443:6;9439:119;9453:20:::0;;::::1;9439:119;;;9494:52;9504:4;9509:9;;9519:1;9509:12;;;;;-1:-1:-1::0;;;9509:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9531:13;4726:1;9531:2;:13;:::i;:::-;9523:21;::::0;:6;:21:::1;:::i;9494:52::-;9475:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9439:119;;;;2574:1;9065:500:::0;;;;:::o;13184:1321::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;13289:11:::1;::::0;-1:-1:-1;;;13289:11:0;::::1;;;13288:12;13280:47;;;::::0;-1:-1:-1;;;13280:47:0;;14861:2:1;13280:47:0::1;::::0;::::1;14843:21:1::0;14900:2;14880:18;;;14873:30;14939:25;14919:18;;;14912:53;14982:18;;13280:47:0::1;14833:173:1::0;13280:47:0::1;13466:15;:34:::0;;-1:-1:-1;;;;;;13466:34:0::1;13410:42;13466:34:::0;;::::1;::::0;;;13511:58:::1;13528:4;13410:42:::0;4126:12:::1;13511:8;:58::i;:::-;13614:16;-1:-1:-1::0;;;;;13614:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13596:56:0::1;;13661:4;13668:16;-1:-1:-1::0;;;;;13668:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13596:96;::::0;-1:-1:-1;;;;;;13596:96:0::1;::::0;;;;;;-1:-1:-1;;;;;7117:15:1;;;13596:96:0::1;::::0;::::1;7099:34:1::0;7169:15;;7149:18;;;7142:43;7034:18;;13596:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13580:13;:112:::0;;-1:-1:-1;;;;;;13580:112:0::1;-1:-1:-1::0;;;;;13580:112:0;;::::1;::::0;;::::1;::::0;;13703:19:::1;:35:::0;;-1:-1:-1;;;;;;13703:35:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;13783:15:::1;::::0;;;::::1;-1:-1:-1::0;13751:49:0;;;:23:::1;:49;::::0;;;;;:56;;-1:-1:-1;;13751:56:0;;::::1;-1:-1:-1::0;13751:56:0;;::::1;::::0;;;13850:13;;;::::1;13818:47:::0;;;;:54;;;;::::1;;::::0;;;13885:15;::::1;:31;13924:21;13955:4;13961:24;13955:4:::0;13961:9:::1;:24::i;:::-;13986:1;13988::::0;13990:7:::1;2415::::0;2442:6;-1:-1:-1;;;;;2442:6:0;;2377:79;13990:7:::1;13998:15;13885:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14025:11:0::1;:18:::0;;-1:-1:-1;;;;;;;;;;;14054:22:0;;;;;;-1:-1:-1;14106:12:0::1;14087:16;:31:::0;14129:11:::1;:18:::0;;-1:-1:-1;;;;14129:18:0::1;-1:-1:-1::0;;;14129:18:0::1;::::0;;14176:15:::1;14054;14158:33:::0;14220:11:::1;14204:13;:27:::0;;;14242:23:::1;:37:::0;14025:18;14292:122:::1;14313:9;:16;14309:1;:20;14292:122;;;14394:8;14376:15;;:26;;;;:::i;:::-;14351:8;:22;14360:9;14370:1;14360:12;;;;;;-1:-1:-1::0;;;14360:12:0::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14351:22:0::1;-1:-1:-1::0;;;;;14351:22:0::1;;;;;;;;;;;;:51;;;;14331:3;;;;;:::i;:::-;;;;14292:122;;;-1:-1:-1::0;14433:13:0::1;::::0;14464:15:::1;::::0;14426:71:::1;::::0;-1:-1:-1;;;14426:71:0;;-1:-1:-1;;;;;14464:15:0;;::::1;14426:71;::::0;::::1;7370:51:1::0;-1:-1:-1;;7437:18:1;;;7430:34;14433:13:0;::::1;::::0;14426:29:::1;::::0;7343:18:1;;14426:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2574:1;13184:1321:::0;;:::o;7284:103::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;7357:13:::1;:22:::0;7284:103::o;7526:::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;7598:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;7598:23:0::1;-1:-1:-1::0;;;;7598:23:0;;::::1;::::0;;;::::1;::::0;;7526:103::o;16813:192::-;16877:15;;-1:-1:-1;;;;;16877:15:0;175:10;-1:-1:-1;;;;;16861:31:0;;16853:40;;;;;;16933:21;16965:32;16933:21;16965:12;:32::i;:::-;16813:192;:::o;6322:138::-;-1:-1:-1;;;;;6435:16:0;;6388:7;6435:16;;;:7;:16;;;;;;6415:37;;:19;:37::i;2591:148::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;2698:1:::1;2682:6:::0;;2661:40:::1;::::0;-1:-1:-1;;;;;2682:6:0;;::::1;::::0;2661:40:::1;::::0;2698:1;;2661:40:::1;2729:1;2712:19:::0;;-1:-1:-1;;;;;;2712:19:0::1;::::0;;2591:148::o;7395:123::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;7478:23:::1;:32:::0;7395:123::o;14819:102::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;14901:12:::1;14882:16;:31:::0;14819:102::o;6468:167::-;6546:4;6563:42;175:10;6587:9;6598:6;6563:9;:42::i;14647:164::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;14721:6:::1;14716:88;14737:5;:12;14733:1;:16;14716:88;;;14788:4;14771;:14;14776:5;14782:1;14776:8;;;;;;-1:-1:-1::0;;;14776:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14771:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14771:14:0;:21;;-1:-1:-1;;14771:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14751:3;::::1;::::0;::::1;:::i;:::-;;;;14716:88;;;;14647:164:::0;:::o;17013:140::-;17083:15;;-1:-1:-1;;;;;17083:15:0;175:10;-1:-1:-1;;;;;17067:31:0;;17059:40;;;;;;17110:12;:10;:12::i;:::-;17133;:10;:12::i;:::-;17013:140::o;16612:193::-;16676:15;;-1:-1:-1;;;;;16676:15:0;175:10;-1:-1:-1;;;;;16660:31:0;;16652:40;;;;;;16703:23;16729:24;16747:4;16729:9;:24::i;:::-;16703:50;;16764:33;16781:15;16764:16;:33::i;14513:126::-;2504:6;;-1:-1:-1;;;;;2504:6:0;175:10;2504:22;2496:67;;;;-1:-1:-1;;;2496:67:0;;;;;;;:::i;:::-;14598:19:::1;:33:::0;;-1:-1:-1;;;;;14598:33:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;14598:33:0;;::::1;::::0;;;::::1;::::0;;14513:126::o;8026:335::-;-1:-1:-1;;;;;8119:19:0;;8111:68;;;;-1:-1:-1;;;8111:68:0;;14456:2:1;8111:68:0;;;14438:21:1;14495:2;14475:18;;;14468:30;14534:34;14514:18;;;14507:62;-1:-1:-1;;;14585:18:1;;;14578:34;14629:19;;8111:68:0;14428:226:1;8111:68:0;-1:-1:-1;;;;;8198:21:0;;8190:68;;;;-1:-1:-1;;;8190:68:0;;10933:2:1;8190:68:0;;;10915:21:1;10972:2;10952:18;;;10945:30;11011:34;10991:18;;;10984:62;-1:-1:-1;;;11062:18:1;;;11055:32;11104:19;;8190:68:0;10905:224:1;8190:68:0;-1:-1:-1;;;;;8269:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8321:32;;15585:25:1;;;8321:32:0;;15558:18:1;8321:32:0;;;;;;;8026:335;;;:::o;9573:2520::-;-1:-1:-1;;;;;9661:18:0;;9653:68;;;;-1:-1:-1;;;9653:68:0;;13636:2:1;9653:68:0;;;13618:21:1;13675:2;13655:18;;;13648:30;13714:34;13694:18;;;13687:62;-1:-1:-1;;;13765:18:1;;;13758:35;13810:19;;9653:68:0;13608:227:1;9653:68:0;-1:-1:-1;;;;;9740:16:0;;9732:64;;;;-1:-1:-1;;;9732:64:0;;9709:2:1;9732:64:0;;;9691:21:1;9748:2;9728:18;;;9721:30;9787:34;9767:18;;;9760:62;-1:-1:-1;;;9838:18:1;;;9831:33;9881:19;;9732:64:0;9681:225:1;9732:64:0;9824:1;9815:6;:10;9807:64;;;;-1:-1:-1;;;9807:64:0;;13226:2:1;9807:64:0;;;13208:21:1;13265:2;13245:18;;;13238:30;13304:34;13284:18;;;13277:62;-1:-1:-1;;;13355:18:1;;;13348:39;13404:19;;9807:64:0;13198:231:1;9807:64:0;2415:7;2442:6;-1:-1:-1;;;;;9888:15:0;;;2442:6;;9888:15;;;;:32;;-1:-1:-1;2415:7:0;2442:6;-1:-1:-1;;;;;9907:13:0;;;2442:6;;9907:13;;9888:32;9884:2159;;;-1:-1:-1;;;;;9946:10:0;;;;;;:4;:10;;;;;;;;9945:11;:24;;;;-1:-1:-1;;;;;;9961:8:0;;;;;;:4;:8;;;;;;;;9960:9;9945:24;9937:33;;;;;;10015:13;;-1:-1:-1;;;;;10007:21:0;;;10015:13;;10007:21;:72;;;;-1:-1:-1;10063:15:0;;-1:-1:-1;;;;;10049:30:0;;;10063:15;;10049:30;;10007:72;:116;;;;-1:-1:-1;;;;;;10101:22:0;;;;;;:18;:22;;;;;;;;10100:23;10007:116;:152;;;;-1:-1:-1;10144:15:0;;-1:-1:-1;;;10144:15:0;;;;10007:152;9985:1030;;;10214:16;;10204:6;10188:13;10198:2;10188:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;10180:51;;;;;;-1:-1:-1;;;;;10289:12:0;;;;;;:8;:12;;;;;;10304:15;-1:-1:-1;10281:39:0;;;;;;10354:30;:15;10373:10;10354:30;:::i;:::-;-1:-1:-1;;;;;10339:12:0;;;;;;:8;:12;;;;;;;;:45;;;;10409:23;:27;;;;;;10408:28;:49;;;;-1:-1:-1;;;;;;10440:12:0;;;;;;:8;:12;;;;;;:17;10408:49;10405:362;;;10482:12;10515:15;;10497;:33;;;;:::i;:::-;10482:48;;10568:2;10558:7;:12;10555:193;;;10599:24;10627:12;10632:7;10627:2;:12;:::i;:::-;10626:20;;10643:3;10626:20;:::i;:::-;10599:47;-1:-1:-1;10690:34:0;10599:47;10690:15;:34;:::i;:::-;-1:-1:-1;;;;;10675:12:0;;;;;;:8;:12;;;;;:49;-1:-1:-1;10555:193:0;10405:362;;9985:1030;;;-1:-1:-1;;;;;10805:29:0;;;;;;:23;:29;;;;;;;;10801:214;;-1:-1:-1;;;;;10863:14:0;;;;;;:8;:14;;;;;;10880:15;-1:-1:-1;10863:72:0;;;;-1:-1:-1;10922:13:0;;10899:19;;;;;-1:-1:-1;;;;;10899:19:0;;;10922:13;;10899:36;10863:72;10855:144;;;;-1:-1:-1;;;10855:144:0;;15213:2:1;10855:144:0;;;15195:21:1;15252:2;15232:18;;;15225:30;15291:34;15271:18;;;15264:62;15362:29;15342:18;;;15335:57;15409:19;;10855:144:0;15185:249:1;10855:144:0;11031:18;11052:24;11070:4;11052:9;:24::i;:::-;11031:45;;11109:23;;11096:10;:36;11093:112;;;-1:-1:-1;11166:23:0;;11093:112;11239:13;;11225:10;:27;;:55;;;;-1:-1:-1;11274:6:0;;;;11273:7;11225:55;:97;;;;-1:-1:-1;11309:13:0;;-1:-1:-1;;;;;11301:21:0;;;11309:13;;11301:21;;11225:97;:129;;;;-1:-1:-1;11343:11:0;;;;;;;11225:129;11221:811;;;11377:6;:13;;-1:-1:-1;;11377:13:0;11386:4;11377:13;;;:6;11440:15;11453:2;11440:10;:15;:::i;:::-;11411:44;-1:-1:-1;11476:49:0;11493:31;11411:44;11493:10;:31;:::i;:::-;11476:16;:49::i;:::-;11575:21;11620:22;;11617:365;;11667:48;11680:34;11711:2;11680:26;:18;11703:2;11680:22;:26::i;:::-;:30;;:34::i;:::-;11667:12;:48::i;:::-;-1:-1:-1;11761:21:0;11810:22;;;;;:48;;;11857:1;11836:18;:22;11810:48;11807:156;;;11887:52;11900:18;11920;11887:12;:52::i;:::-;-1:-1:-1;;12002:6:0;:14;;-1:-1:-1;;12002:14:0;;;11221:811;9884:2159;;12055:30;12070:4;12075:2;12078:6;12055:14;:30::i;:::-;9573:2520;;;:::o;1232:190::-;1318:7;1354:12;1346:6;;;;1338:29;;;;-1:-1:-1;;;1338:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1378:9:0;1390:5;1394:1;1390;:5;:::i;:::-;1378:17;1232:190;-1:-1:-1;;;;;1232:190:0:o;12582:154::-;12639:15;;-1:-1:-1;;;;;12639:15:0;:39;12664:13;:6;12675:1;12664:10;:13::i;:::-;12639:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12689:15:0;;-1:-1:-1;;;;;12689:15:0;:39;12714:13;:6;12725:1;12714:10;:13::i;:::-;12689:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7764:254;7831:7;7870;;7859;:18;;7851:73;;;;-1:-1:-1;;;7851:73:0;;10522:2:1;7851:73:0;;;10504:21:1;10561:2;10541:18;;;10534:30;10600:34;10580:18;;;10573:62;-1:-1:-1;;;10651:18:1;;;10644:40;10701:19;;7851:73:0;10494:232:1;7851:73:0;7935:19;7958:10;:8;:10::i;:::-;7935:33;-1:-1:-1;7986:24:0;:7;7935:33;7986:11;:24::i;:::-;7979:31;7764:254;-1:-1:-1;;;7764:254:0:o;12101:473::-;12191:16;;;12205:1;12191:16;;;;;;;;12167:21;;12191:16;;;;;;;;;;-1:-1:-1;12191:16:0;12167:40;;12236:4;12218;12223:1;12218:7;;;;;;-1:-1:-1;;;12218:7:0;;;;;;;;;-1:-1:-1;;;;;12218:23:0;;;:7;;;;;;;;;;:23;;;;12262:15;;:22;;;-1:-1:-1;;;12262:22:0;;;;:15;;;;;:20;;:22;;;;;12218:7;;12262:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12252:4;12257:1;12252:7;;;;;;-1:-1:-1;;;12252:7:0;;;;;;;;;-1:-1:-1;;;;;12252:32:0;;;:7;;;;;;;;;:32;12327:15;;12295:62;;12312:4;;12327:15;12345:11;12295:8;:62::i;:::-;12370:15;;:196;;-1:-1:-1;;;12370:196:0;;-1:-1:-1;;;;;12370:15:0;;;;:66;;:196;;12451:11;;12370:15;;12493:4;;12520;;12540:15;;12370:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1430:246;1488:7;1512:6;1508:47;;-1:-1:-1;1542:1:0;1535:8;;1508:47;1565:9;1577:5;1581:1;1577;:5;:::i;:::-;1565:17;-1:-1:-1;1610:1:0;1601:5;1605:1;1565:17;1601:5;:::i;:::-;:10;1593:56;;;;-1:-1:-1;;;1593:56:0;;12463:2:1;1593:56:0;;;12445:21:1;12502:2;12482:18;;;12475:30;12541:34;12521:18;;;12514:62;-1:-1:-1;;;12592:18:1;;;12585:31;12633:19;;1593:56:0;12435:223:1;1684:132:0;1742:7;1769:39;1773:1;1776;1769:39;;;;;;;;;;;;;;;;;:3;:39::i;12744:432::-;12848:15;;12816:57;;12833:4;;-1:-1:-1;;;;;12848:15:0;12866:6;12816:8;:57::i;:::-;12916:15;;13111:16;;12916:252;;-1:-1:-1;;;12916:252:0;;-1:-1:-1;;;;;12916:15:0;;;;:31;;12955:5;;12916:252;;12984:4;;13004:6;;12916:15;;;;13111:16;;13142:15;;12916:252;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12744:432;;:::o;15027:146::-;15121:44;15139:6;15147:9;15158:6;15121:17;:44::i;18442:163::-;18483:7;18504:15;18521;18540:19;:17;:19::i;:::-;18503:56;;-1:-1:-1;18503:56:0;-1:-1:-1;18577:20:0;18503:56;;18577:11;:20::i;:::-;18570:27;;;;18442:163;:::o;1824:189::-;1910:7;1945:12;1938:5;1930:28;;;;-1:-1:-1;;;1930:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1969:9:0;1981:5;1985:1;1981;:5;:::i;15680:512::-;15779:15;15796:23;15821:12;15835:23;15860:12;15874:13;15891:44;15902:7;15911:23;15924:9;15911:12;:23::i;:::-;15891:10;:44::i;:::-;-1:-1:-1;;;;;15964:15:0;;;;;;:7;:15;;;;;;15778:157;;-1:-1:-1;15778:157:0;;-1:-1:-1;15778:157:0;;-1:-1:-1;15778:157:0;-1:-1:-1;15778:157:0;-1:-1:-1;15778:157:0;-1:-1:-1;15964:28:0;;15778:157;15964:19;:28::i;:::-;-1:-1:-1;;;;;15946:15:0;;;;;;;:7;:15;;;;;;:46;;;;16024:18;;;;;;;:39;;16047:15;16024:22;:39::i;:::-;-1:-1:-1;;;;;16003:18:0;;;;;;:7;:18;;;;;:60;16074:16;16084:5;16074:9;:16::i;:::-;16101:23;16113:4;16119;16101:11;:23::i;:::-;16157:9;-1:-1:-1;;;;;16140:44:0;16149:6;-1:-1:-1;;;;;16140:44:0;;16168:15;16140:44;;;;15585:25:1;;15573:2;15558:18;;15540:76;16140:44:0;;;;;;;;15680:512;;;;;;;;;:::o;18613:256::-;18710:7;;18663;;;;4126:12;18778:20;18710:7;4126:12;18778:11;:20::i;:::-;18768:7;:30;18764:61;;;-1:-1:-1;;18808:7:0;;;4126:12;;-1:-1:-1;18613:256:0;-1:-1:-1;18613:256:0:o;18764:61::-;18844:7;;18853;;-1:-1:-1;18613:256:0;-1:-1:-1;18613:256:0:o;15181:353::-;15268:11;;15244:7;;-1:-1:-1;;;15268:11:0;;;;15267:12;;:22;;-1:-1:-1;15283:6:0;;;;15267:22;15264:62;;;-1:-1:-1;15313:1:0;;15181:353;-1:-1:-1;15181:353:0:o;15264:62::-;15373:15;;:23;;15391:5;15373:23;:::i;:::-;15355:15;:41;:84;;;;-1:-1:-1;15426:13:0;;-1:-1:-1;;;;;15413:26:0;;;15426:13;;15413:26;15355:84;15338:159;;;-1:-1:-1;;15467:18:0;;;15181:353::o;15338:159::-;-1:-1:-1;;15516:10:0;;;15181:353::o;17161:500::-;17238:7;17247;17256;17265;17274;17283;17306:23;17331:12;17345:13;17362:51;17374:7;17383:19;:17;:19::i;:::-;17404:8;17362:11;:51::i;:::-;17305:108;;;;;;17424:19;17447:10;:8;:10::i;:::-;17424:33;;17469:15;17486:23;17511:12;17527:46;17539:7;17548:4;17554:5;17561:11;17527;:46::i;:::-;17468:105;;-1:-1:-1;17468:105:0;-1:-1:-1;17468:105:0;-1:-1:-1;17624:15:0;;-1:-1:-1;17641:4:0;;-1:-1:-1;17647:5:0;;-1:-1:-1;;;;;17161:500:0;;;;;;;;:::o;1088:136::-;1146:7;1173:43;1177:1;1180;1173:43;;;;;;;;;;;;;;;;;:3;:43::i;901:179::-;959:7;;991:5;995:1;991;:5;:::i;:::-;979:17;;1020:1;1015;:6;;1007:46;;;;-1:-1:-1;;;1007:46:0;;11336:2:1;1007:46:0;;;11318:21:1;11375:2;11355:18;;;11348:30;11414:29;11394:18;;;11387:57;11461:18;;1007:46:0;11308:177:1;16200:212:0;16253:19;16276:10;:8;:10::i;:::-;16253:33;-1:-1:-1;16297:13:0;16313:22;:5;16253:33;16313:9;:22::i;:::-;16387:4;16371:22;;;;:7;:22;;;;;;16297:38;;-1:-1:-1;16371:33:0;;16297:38;16371:26;:33::i;:::-;16362:4;16346:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;16200:212:0:o;16420:147::-;16498:7;;:17;;16510:4;16498:11;:17::i;:::-;16488:7;:27;16539:10;;:20;;16554:4;16539:14;:20::i;:::-;16526:10;:33;-1:-1:-1;;16420:147:0:o;15542:130::-;15621:11;;15594:7;;-1:-1:-1;;;15621:11:0;;;;:22;;;;-1:-1:-1;15637:6:0;;;;15636:7;15621:22;:43;;-1:-1:-1;15663:1:0;;15542:130::o;15621:43::-;-1:-1:-1;15646:14:0;;;15542:130::o;17669:351::-;17762:7;;;;17815:28;17839:3;17815:19;:7;17827:6;17815:11;:19::i;:28::-;17800:43;-1:-1:-1;17854:13:0;17870:29;17895:3;17870:20;:7;17882;17870:11;:20::i;:29::-;17854:45;-1:-1:-1;17910:23:0;17936:28;17854:45;17936:17;:7;17948:4;17936:11;:17::i;:::-;:21;;:28::i;:::-;17910:54;18000:4;;-1:-1:-1;18006:5:0;;-1:-1:-1;17669:351:0;;-1:-1:-1;;;;;17669:351:0:o;18028:409::-;18138:7;;;;18194:24;:7;18206:11;18194;:24::i;:::-;18176:42;-1:-1:-1;18229:12:0;18244:21;:4;18253:11;18244:8;:21::i;:::-;18229:36;-1:-1:-1;18276:13:0;18292:22;:5;18302:11;18292:9;:22::i;:::-;18276:38;-1:-1:-1;18325:23:0;18351:28;18276:38;18351:17;:7;18363:4;18351:11;:17::i;:28::-;18398:7;;;;-1:-1:-1;18424:4:0;;-1:-1:-1;18028:409:0;;-1:-1:-1;;;;;;;18028:409:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;63:85;;;:::o;153:391::-;216:8;226:6;280:3;273:4;265:6;261:17;257:27;247:2;;303:6;295;288:22;247:2;-1:-1:-1;331:20:1;;374:18;363:30;;360:2;;;413:8;403;396:26;360:2;457:4;449:6;445:17;433:29;;517:3;510:4;500:6;497:1;493:14;485:6;481:27;477:38;474:47;471:2;;;534:1;531;524:12;471:2;237:307;;;;;:::o;549:939::-;603:5;656:3;649:4;641:6;637:17;633:27;623:2;;678:5;671;664:20;623:2;718:6;705:20;744:4;767:18;804:2;800;797:10;794:2;;;810:18;;:::i;:::-;856:2;853:1;849:10;888:2;882:9;951:2;947:7;942:2;938;934:11;930:25;922:6;918:38;1006:6;994:10;991:22;986:2;974:10;971:18;968:46;965:2;;;1017:18;;:::i;:::-;1053:2;1046:22;1103:18;;;1137:15;;;;-1:-1:-1;1172:15:1;;;1206;;;1202:24;;1199:33;-1:-1:-1;1196:2:1;;;1249:5;1242;1235:20;1196:2;1275:5;1266:14;;1289:169;1303:2;1300:1;1297:9;1289:169;;;1360:23;1379:3;1360:23;:::i;:::-;1348:36;;1404:12;;;;1321:1;1314:9;;;;;1436:12;;1289:169;;;-1:-1:-1;1476:6:1;613:875;-1:-1:-1;;;;;;;613:875:1:o;1493:257::-;1552:6;1605:2;1593:9;1584:7;1580:23;1576:32;1573:2;;;1626:6;1618;1611:22;1573:2;1670:9;1657:23;1689:31;1714:5;1689:31;:::i;1755:261::-;1825:6;1878:2;1866:9;1857:7;1853:23;1849:32;1846:2;;;1899:6;1891;1884:22;1846:2;1936:9;1930:16;1955:31;1980:5;1955:31;:::i;2021:398::-;2089:6;2097;2150:2;2138:9;2129:7;2125:23;2121:32;2118:2;;;2171:6;2163;2156:22;2118:2;2215:9;2202:23;2234:31;2259:5;2234:31;:::i;:::-;2284:5;-1:-1:-1;2341:2:1;2326:18;;2313:32;2354:33;2313:32;2354:33;:::i;:::-;2406:7;2396:17;;;2108:311;;;;;:::o;2424:466::-;2501:6;2509;2517;2570:2;2558:9;2549:7;2545:23;2541:32;2538:2;;;2591:6;2583;2576:22;2538:2;2635:9;2622:23;2654:31;2679:5;2654:31;:::i;:::-;2704:5;-1:-1:-1;2761:2:1;2746:18;;2733:32;2774:33;2733:32;2774:33;:::i;:::-;2528:362;;2826:7;;-1:-1:-1;;;2880:2:1;2865:18;;;;2852:32;;2528:362::o;2895:938::-;3026:6;3034;3042;3050;3058;3111:2;3099:9;3090:7;3086:23;3082:32;3079:2;;;3132:6;3124;3117:22;3079:2;3176:9;3163:23;3195:31;3220:5;3195:31;:::i;:::-;3245:5;-1:-1:-1;3301:2:1;3286:18;;3273:32;3324:18;3354:14;;;3351:2;;;3386:6;3378;3371:22;3351:2;3430:70;3492:7;3483:6;3472:9;3468:22;3430:70;:::i;:::-;3519:8;;-1:-1:-1;3404:96:1;-1:-1:-1;3607:2:1;3592:18;;3579:32;;-1:-1:-1;3623:16:1;;;3620:2;;;3657:6;3649;3642:22;3620:2;;3701:72;3765:7;3754:8;3743:9;3739:24;3701:72;:::i;:::-;3069:764;;;;-1:-1:-1;3069:764:1;;-1:-1:-1;3792:8:1;;3675:98;3069:764;-1:-1:-1;;;3069:764:1:o;3838:660::-;3942:6;3950;3958;3966;4019:2;4007:9;3998:7;3994:23;3990:32;3987:2;;;4040:6;4032;4025:22;3987:2;4084:9;4071:23;4103:31;4128:5;4103:31;:::i;:::-;4153:5;-1:-1:-1;4209:2:1;4194:18;;4181:32;4236:18;4225:30;;4222:2;;;4273:6;4265;4258:22;4222:2;4317:70;4379:7;4370:6;4359:9;4355:22;4317:70;:::i;:::-;3977:521;;4406:8;;-1:-1:-1;4291:96:1;;4488:2;4473:18;4460:32;;3977:521;-1:-1:-1;;;;3977:521:1:o;4503:325::-;4571:6;4579;4632:2;4620:9;4611:7;4607:23;4603:32;4600:2;;;4653:6;4645;4638:22;4600:2;4697:9;4684:23;4716:31;4741:5;4716:31;:::i;:::-;4766:5;4818:2;4803:18;;;;4790:32;;-1:-1:-1;;;4590:238:1:o;4833:368::-;4917:6;4970:2;4958:9;4949:7;4945:23;4941:32;4938:2;;;4991:6;4983;4976:22;4938:2;5036:9;5023:23;5069:18;5061:6;5058:30;5055:2;;;5106:6;5098;5091:22;5055:2;5134:61;5187:7;5178:6;5167:9;5163:22;5134:61;:::i;:::-;5124:71;4928:273;-1:-1:-1;;;;4928:273:1:o;5206:436::-;5299:6;5307;5360:2;5348:9;5339:7;5335:23;5331:32;5328:2;;;5381:6;5373;5366:22;5328:2;5426:9;5413:23;5459:18;5451:6;5448:30;5445:2;;;5496:6;5488;5481:22;5445:2;5524:61;5577:7;5568:6;5557:9;5553:22;5524:61;:::i;:::-;5514:71;5632:2;5617:18;;;;5604:32;;-1:-1:-1;;;;5318:324:1:o;5647:251::-;5703:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:2;;;5777:6;5769;5762:22;5724:2;5821:9;5808:23;5840:28;5862:5;5840:28;:::i;5903:255::-;5970:6;6023:2;6011:9;6002:7;5998:23;5994:32;5991:2;;;6044:6;6036;6029:22;5991:2;6081:9;6075:16;6100:28;6122:5;6100:28;:::i;6163:190::-;6222:6;6275:2;6263:9;6254:7;6250:23;6246:32;6243:2;;;6296:6;6288;6281:22;6243:2;-1:-1:-1;6324:23:1;;6233:120;-1:-1:-1;6233:120:1:o;6358:316::-;6446:6;6454;6462;6515:2;6503:9;6494:7;6490:23;6486:32;6483:2;;;6536:6;6528;6521:22;6483:2;6570:9;6564:16;6554:26;;6620:2;6609:9;6605:18;6599:25;6589:35;;6664:2;6653:9;6649:18;6643:25;6633:35;;6473:201;;;;;:::o;7475:615::-;-1:-1:-1;;;;;7842:15:1;;;7824:34;;7889:2;7874:18;;7867:34;;;;7932:2;7917:18;;7910:34;;;;7975:2;7960:18;;7953:34;;;;8024:15;;;8018:3;8003:19;;7996:44;7804:3;8056:19;;8049:35;;;;7773:3;7758:19;;7740:350::o;8899:603::-;9011:4;9040:2;9069;9058:9;9051:21;9101:6;9095:13;9144:6;9139:2;9128:9;9124:18;9117:34;9169:4;9182:140;9196:6;9193:1;9190:13;9182:140;;;9291:14;;;9287:23;;9281:30;9257:17;;;9276:2;9253:26;9246:66;9211:10;;9182:140;;;9340:6;9337:1;9334:13;9331:2;;;9410:4;9405:2;9396:6;9385:9;9381:22;9377:31;9370:45;9331:2;-1:-1:-1;9486:2:1;9465:15;-1:-1:-1;;9461:29:1;9446:45;;;;9493:2;9442:54;;9020:482;-1:-1:-1;;;9020:482:1:o;12663:356::-;12865:2;12847:21;;;12884:18;;;12877:30;12943:34;12938:2;12923:18;;12916:62;13010:2;12995:18;;12837:182::o;15621:983::-;15883:4;15931:3;15920:9;15916:19;15962:6;15951:9;15944:25;15988:2;16026:6;16021:2;16010:9;16006:18;15999:34;16069:3;16064:2;16053:9;16049:18;16042:31;16093:6;16128;16122:13;16159:6;16151;16144:22;16197:3;16186:9;16182:19;16175:26;;16236:2;16228:6;16224:15;16210:29;;16257:4;16270:195;16284:6;16281:1;16278:13;16270:195;;;16349:13;;-1:-1:-1;;;;;16345:39:1;16333:52;;16440:15;;;;16405:12;;;;16381:1;16299:9;16270:195;;;-1:-1:-1;;;;;;;16521:32:1;;;;16516:2;16501:18;;16494:60;-1:-1:-1;;;16585:3:1;16570:19;16563:35;16482:3;15892:712;-1:-1:-1;;;15892:712:1:o;16798:128::-;16838:3;16869:1;16865:6;16862:1;16859:13;16856:2;;;16875:18;;:::i;:::-;-1:-1:-1;16911:9:1;;16846:80::o;16931:217::-;16971:1;16997;16987:2;;-1:-1:-1;;;17022:31:1;;17076:4;17073:1;17066:15;17104:4;17029:1;17094:15;16987:2;-1:-1:-1;17133:9:1;;16977:171::o;17153:422::-;17242:1;17285:5;17242:1;17299:270;17320:7;17310:8;17307:21;17299:270;;;17379:4;17375:1;17371:6;17367:17;17361:4;17358:27;17355:2;;;17388:18;;:::i;:::-;17438:7;17428:8;17424:22;17421:2;;;17458:16;;;;17421:2;17537:22;;;;17497:15;;;;17299:270;;;17303:3;17217:358;;;;;:::o;17580:140::-;17638:5;17667:47;17708:4;17698:8;17694:19;17688:4;17774:5;17804:8;17794:2;;-1:-1:-1;17845:1:1;17859:5;;17794:2;17893:4;17883:2;;-1:-1:-1;17930:1:1;17944:5;;17883:2;17975:4;17993:1;17988:59;;;;18061:1;18056:130;;;;17968:218;;17988:59;18018:1;18009:10;;18032:5;;;18056:130;18093:3;18083:8;18080:17;18077:2;;;18100:18;;:::i;:::-;-1:-1:-1;;18156:1:1;18142:16;;18171:5;;17968:218;;18270:2;18260:8;18257:16;18251:3;18245:4;18242:13;18238:36;18232:2;18222:8;18219:16;18214:2;18208:4;18205:12;18201:35;18198:77;18195:2;;;-1:-1:-1;18307:19:1;;;18339:5;;18195:2;18386:34;18411:8;18405:4;18386:34;:::i;:::-;18456:6;18452:1;18448:6;18444:19;18435:7;18432:32;18429:2;;;18467:18;;:::i;:::-;18505:20;;17784:747;-1:-1:-1;;;17784:747:1:o;18536:168::-;18576:7;18642:1;18638;18634:6;18630:14;18627:1;18624:21;18619:1;18612:9;18605:17;18601:45;18598:2;;;18649:18;;:::i;:::-;-1:-1:-1;18689:9:1;;18588:116::o;18709:125::-;18749:4;18777:1;18774;18771:8;18768:2;;;18782:18;;:::i;:::-;-1:-1:-1;18819:9:1;;18758:76::o;18839:135::-;18878:3;-1:-1:-1;;18899:17:1;;18896:2;;;18919:18;;:::i;:::-;-1:-1:-1;18966:1:1;18955:13;;18886:88::o;18979:127::-;19040:10;19035:3;19031:20;19028:1;19021:31;19071:4;19068:1;19061:15;19095:4;19092:1;19085:15;19111:127;19172:10;19167:3;19163:20;19160:1;19153:31;19203:4;19200:1;19193:15;19227:4;19224:1;19217:15;19243:131;-1:-1:-1;;;;;19318:31:1;;19308:42;;19298:2;;19364:1;19361;19354:12;19379:118;19465:5;19458:13;19451:21;19444:5;19441:32;19431:2;;19487:1;19484;19477:12

Swarm Source

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