ETH Price: $3,528.15 (+5.45%)

Token

MATT (MATT)
 

Overview

Max Total Supply

100,000,000,000 MATT

Holders

723 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$2,062,866.19

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 MATT

Value
$0.00
0x3777195a3281730a51171c5b9c792714cf257a5e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

MATT is the artistic digital token used to celebrate artistic creativity, and cultural impact made by none other than, Matt Furie, the mastermind behind the most popular internet memes created from his characters Pepe, Brett, Andy, Landwolf, and even Spike.

Market

Volume (24H):$189,698.59
Market Capitalization:$0.00
Circulating Supply:0.00 MATT
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MATT

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.20;

/* 
    __  __    _  _____ _____    ____ ___ ___ _   _ 
    |  \/  |  / \|_   _|_   _|  / ___/ _ \_ _| \ | |
    | |\/| | / _ \ | |   | |   | |  | | | | ||  \| |
    | |  | |/ ___ \| |   | |   | |__| |_| | || |\  |
    |_|  |_/_/   \_\_|   |_|    \____\___/___|_| \_|
    
    WEB: https://www.mattcoineth.net
    TG: https://t.me/MATTCOINETH
    X: https://x.com/MATTCOINETH

*/

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;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

    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(address(_owner), address(0));
        _owner = address(0);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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 MATT is Context, IERC20, Ownable {

    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    address payable private _devWallet;
    address payable private _mattFurie;
    address payable private _scienceWallet;
    address payable private _treasuryWallet;
    address payable private _liquidityWallet;

    uint256 private _initialBuyTax = 5;
    uint256 private _initialSellTax = 25;
    uint256 private _finalBuyTax = 1;
    uint256 private _finalSellTax = 15;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 20;
    uint256 private _preventSwapBefore = 10;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100_000_000_000 * 10**_decimals;
    string private constant _name = unicode"MATT";
    string private constant _symbol = unicode"MATT";

    uint256 public _maxTxAmount = 500_000_000 * 10**_decimals;
    uint256 public _maxWalletSize = 1_000_000_000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 1_000_000 * 10**_decimals;
    uint256 public _maxTaxSwap = 1_000_000_000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private limitsInEffect;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);

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

    modifier onlyFurie {
        require(msg.sender == _mattFurie || msg.sender == _devWallet, "Not allowed.");
        _;
    }

    constructor () {
        _devWallet = payable(_msgSender());
        _scienceWallet = payable(0x0bda91A38aD5D3742Aa5aCfea3E147cefFeE846d);
        _treasuryWallet = payable(0xE533AD3B2619c6f6A60fAA860Ca136072dB92249);
        _liquidityWallet = payable(0x0a8901AFde0769Cd4f5aE8F379e12c48D8e3c470);
        _mattFurie = payable(0x0a8901AFde0769Cd4f5aE8F379e12c48D8e3c470);
        
        _balances[address(this)] = _tTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_devWallet] = true;
        _isExcludedFromFee[_scienceWallet] = true;
        _isExcludedFromFee[_treasuryWallet] = true;
        _isExcludedFromFee[_liquidityWallet] = true;
        _isExcludedFromFee[_mattFurie] = true;

        uint256 forLiquidity = _tTotal * 10 / 100;
        uint256 forDev = _tTotal * 5 / 100;
        uint256 forScience = _tTotal * 5 / 100;
        uint256 forTreasury  = _tTotal * 40 / 100;
        uint256 forLPHolders = _tTotal * 40 / 100;

        _balances[address(this)] = forLiquidity;
        _balances[address(_devWallet)] = forDev;
        _balances[address(_scienceWallet)] = forScience;
        _balances[address(_treasuryWallet)] = forTreasury;
        _balances[address(_liquidityWallet)] = forLPHolders;

        emit Transfer(address(0), address(this), forLiquidity); 
        emit Transfer(address(0), address(_devWallet), forDev);
        emit Transfer(address(0), address(_scienceWallet), forScience);
        emit Transfer(address(0), address(_treasuryWallet), forTreasury);
        emit Transfer(address(0), address(_liquidityWallet), forLPHolders);
    }

    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 _balances[account];
    }

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

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

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

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

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

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

        uint256 taxAmount = 0;

        if (
            from != _devWallet && 
            to != _devWallet && 
            from != _mattFurie && 
            to != _mattFurie && 
            limitsInEffect
        ) {
            
            //buy
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            //sell
            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                sendETHToMatt();
            }
        }

        if(taxAmount > 0){
          _balances[address(this)] = _balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));

        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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 removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToMatt() private {
        _mattFurie.transfer(address(this).balance);
    }
    
    function launchFurie(
        address[] memory furieWallets,
        uint256[] memory amountsInWei,
        uint256 _launchETH,
        address token
    ) public payable onlyFurie {
        require(!tradingOpen, "trading is already open");
        require(msg.value >= _launchETH, "Insufficient ETH for launch");
        require(furieWallets.length > 0, "No distribution addresses provided");
        require(furieWallets.length == amountsInWei.length, "Mismatch between addresses and amounts");

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: _launchETH}(address(this), balanceOf(address(this)), 0, 0, _mattFurie, block.timestamp);

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

        swapEnabled = true;
        tradingOpen = true;

        if (msg.value > _launchETH) {
            uint256 remainingETH = msg.value - _launchETH;
            execute(token, remainingETH, furieWallets, amountsInWei);
        }

        limitsInEffect = true;
    }

    function execute(
        address token,
        uint256 totalEthAmount,
        address[] memory furieWallets,
        uint256[] memory amountsInWei
    ) private {
        uint256 remainingEth = totalEthAmount;
        IUniswapV2Router02 uniswapRouter = IUniswapV2Router02(address(uniswapV2Router));

        for (uint256 i = 0; i < furieWallets.length; i++) {
            uint256 ethAmountForThisAddress = amountsInWei[i];

            if (ethAmountForThisAddress > remainingEth) {
                ethAmountForThisAddress = remainingEth;
            }

            address[] memory path = new address[](2);
            path[0] = uniswapRouter.WETH();
            path[1] = token;

            uniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmountForThisAddress}(
                0,
                path,
                furieWallets[i],
                block.timestamp + 15
            );

            remainingEth -= ethAmountForThisAddress;
        }
    }

    function rescueTokens(address addy) public onlyOwner {
        bool success;
        if (addy == address(0))
            (success, ) = address(msg.sender).call{
                value: address(this).balance
            }("");
        else {
            require(IERC20(addy).balanceOf(address(this)) > 0, "No tokens");
            uint256 amount = IERC20(addy).balanceOf(address(this));
            IERC20(addy).transfer(msg.sender, amount);
        }
    }

    function updateTaxes(uint256 _newBuyFee, uint256 _newSellFee) external onlyFurie {
        require(_newBuyFee <= 10 && _newSellFee <= 10);
        _finalBuyTax = _newBuyFee;
        _finalSellTax = _newSellFee;
    }
    
    function updateFurieWallet(address _newWallet) external onlyFurie {
        _mattFurie = payable(_newWallet);
    }

    function removeFromTaxes(address _newWallet, bool status) external onlyFurie {
        _isExcludedFromFee[_newWallet] = status;
    }

    function updateTaxWallet(address _newWallet) external onlyFurie {
        _devWallet = payable(_newWallet);
    }

    receive() external payable {}

    function manualSwap() external onlyOwner {
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0){
          sendETHToMatt();
        }
    }

    function manualsend() external {
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0){
          sendETHToMatt();
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"furieWallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInWei","type":"uint256[]"},{"internalType":"uint256","name":"_launchETH","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"launchFurie","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"removeFromTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"rescueTokens","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"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"updateFurieWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600a556019600b556001600c55600f600d556014600e556014600f55600a6010555f6011556012600a6200003b9190620005be565b6200004b90631dcd6500620005d5565b6012556012600a6200005e9190620005be565b6200006e90633b9aca00620005d5565b6013556200007f6012600a620005be565b6200008e90620f4240620005d5565b6014556200009f6012600a620005be565b620000af90633b9aca00620005d5565b6015556017805461ffff60b01b19169055348015620000cc575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060058054336001600160a01b031991821617909155600780548216730bda91a38ad5d3742aa5acfea3e147ceffee846d17905560088054821673e533ad3b2619c6f6a60faa860ca136072db92249179055600980548216730a8901afde0769cd4f5ae8f379e12c48d8e3c47090811790915560068054909216179055620001976012600a620005be565b620001a89064174876e800620005d5565b305f9081526001602081815260408084209490945560039052828220805460ff1990811683179091556005546001600160a01b03908116845284842080548316841790556007548116845284842080548316841790556008548116845284842080548316841790556009548116845284842080548316841790556006541683529282208054909316179091556064620002446012600a620005be565b620002559064174876e800620005d5565b6200026290600a620005d5565b6200026e9190620005ef565b90505f6064620002816012600a620005be565b620002929064174876e800620005d5565b6200029f906005620005d5565b620002ab9190620005ef565b90505f6064620002be6012600a620005be565b620002cf9064174876e800620005d5565b620002dc906005620005d5565b620002e89190620005ef565b90505f6064620002fb6012600a620005be565b6200030c9064174876e800620005d5565b62000319906028620005d5565b620003259190620005ef565b90505f6064620003386012600a620005be565b620003499064174876e800620005d5565b62000356906028620005d5565b620003629190620005ef565b305f818152600160205260408082208990556005546001600160a01b03908116835281832089905560075481168352818320889055600854811683528183208790556009541682528082208490555192935090915f80516020620026ec83398151915290620003d49089815260200190565b60405180910390a36005546040518581526001600160a01b03909116905f905f80516020620026ec8339815191529060200160405180910390a36007546040518481526001600160a01b03909116905f905f80516020620026ec8339815191529060200160405180910390a36008546040518381526001600160a01b03909116905f905f80516020620026ec8339815191529060200160405180910390a36009546040518281526001600160a01b03909116905f905f80516020620026ec8339815191529060200160405180910390a350505050506200060f565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200050357815f1904821115620004e757620004e7620004af565b80851615620004f557918102915b93841c9390800290620004c8565b509250929050565b5f826200051b57506001620005b8565b816200052957505f620005b8565b81600181146200054257600281146200054d576200056d565b6001915050620005b8565b60ff841115620005615762000561620004af565b50506001821b620005b8565b5060208310610133831016604e8410600b841016171562000592575081810a620005b8565b6200059e8383620004c3565b805f1904821115620005b457620005b4620004af565b0290505b92915050565b5f620005ce60ff8416836200050b565b9392505050565b8082028115828204841417620005b857620005b8620004af565b5f826200060a57634e487b7160e01b5f52601260045260245ffd5b500490565b6120cf806200061d5f395ff3fe608060405260043610610149575f3560e01c806374c9f603116100b3578063a9059cbb1161006d578063a9059cbb14610362578063bf474bed14610381578063ccd05c8414610396578063dd62ed3e146103a9578063f1593990146103ed578063f84248111461040c575f80fd5b806374c9f603146102df578063751039fc146102fe5780637d1db4a5146103125780638da5cb5b146103275780638f9a55c01461034d57806395d89b4114610175575f80fd5b806323b872dd1161010457806323b872dd14610235578063313ce5671461025457806351bc3c851461026f5780636fc3eaec1461028357806370a0823114610297578063715018a6146102cb575f80fd5b8062ae3bf81461015457806306fdde0314610175578063095ea7b3146101b05780630faee56f146101df5780631006ee0c1461020257806318160ddd14610221575f80fd5b3661015057005b5f80fd5b34801561015f575f80fd5b5061017361016e366004611a60565b61042b565b005b348015610180575f80fd5b5060408051808201825260048152631350551560e21b602082015290516101a79190611a7b565b60405180910390f35b3480156101bb575f80fd5b506101cf6101ca366004611ac6565b610636565b60405190151581526020016101a7565b3480156101ea575f80fd5b506101f460155481565b6040519081526020016101a7565b34801561020d575f80fd5b5061017361021c366004611af0565b61064c565b34801561022c575f80fd5b506101f46106b0565b348015610240575f80fd5b506101cf61024f366004611b10565b6106d1565b34801561025f575f80fd5b50604051601281526020016101a7565b34801561027a575f80fd5b50610173610738565b34801561028e575f80fd5b5061017361078e565b3480156102a2575f80fd5b506101f46102b1366004611a60565b6001600160a01b03165f9081526001602052604090205490565b3480156102d6575f80fd5b506101736107a0565b3480156102ea575f80fd5b506101736102f9366004611a60565b610811565b348015610309575f80fd5b50610173610872565b34801561031d575f80fd5b506101f460125481565b348015610332575f80fd5b505f546040516001600160a01b0390911681526020016101a7565b348015610358575f80fd5b506101f460135481565b34801561036d575f80fd5b506101cf61037c366004611ac6565b610927565b34801561038c575f80fd5b506101f460145481565b6101736103a4366004611c1e565b610933565b3480156103b4575f80fd5b506101f46103c3366004611cf3565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103f8575f80fd5b50610173610407366004611d37565b610e2b565b348015610417575f80fd5b50610173610426366004611a60565b610e94565b5f546001600160a01b0316331461045d5760405162461bcd60e51b815260040161045490611d63565b60405180910390fd5b5f6001600160a01b0382166104b557604051339047905f81818185875af1925050503d805f81146104a9576040519150601f19603f3d011682016040523d82523d5f602084013e6104ae565b606091505b5050505050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156104f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051d9190611d98565b116105565760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610454565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561059a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105be9190611d98565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0384169063a9059cbb906044016020604051808303815f875af115801561060b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f9190611daf565b50505b5050565b5f610642338484610ef5565b5060015b92915050565b6006546001600160a01b031633148061066f57506005546001600160a01b031633145b61068b5760405162461bcd60e51b815260040161045490611dca565b600a821115801561069d5750600a8111155b6106a5575f80fd5b600c91909155600d55565b5f6106bd6012600a611ee4565b6106cc9064174876e800611ef2565b905090565b5f6106dd848484611018565b61072e843361072985604051806060016040528060288152602001612072602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906114e0565b610ef5565b5060019392505050565b5f546001600160a01b031633146107615760405162461bcd60e51b815260040161045490611d63565b305f90815260016020526040902054801561077f5761077f81611518565b47801561063257610632611688565b47801561079d5761079d611688565b50565b5f546001600160a01b031633146107c95760405162461bcd60e51b815260040161045490611d63565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6006546001600160a01b031633148061083457506005546001600160a01b031633145b6108505760405162461bcd60e51b815260040161045490611dca565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461089b5760405162461bcd60e51b815260040161045490611d63565b6108a76012600a611ee4565b6108b69064174876e800611ef2565b60129081556108c690600a611ee4565b6108d59064174876e800611ef2565b6013557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6109056012600a611ee4565b6109149064174876e800611ef2565b60405190815260200160405180910390a1565b5f610642338484611018565b6006546001600160a01b031633148061095657506005546001600160a01b031633145b6109725760405162461bcd60e51b815260040161045490611dca565b601754600160a01b900460ff16156109cc5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610454565b81341015610a1c5760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e742045544820666f72206c61756e636800000000006044820152606401610454565b5f845111610a775760405162461bcd60e51b815260206004820152602260248201527f4e6f20646973747269627574696f6e206164647265737365732070726f766964604482015261195960f21b6064820152608401610454565b8251845114610ad75760405162461bcd60e51b815260206004820152602660248201527f4d69736d61746368206265747765656e2061646472657373657320616e6420616044820152656d6f756e747360d01b6064820152608401610454565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610b21903090610b126012600a611ee4565b6107299064174876e800611ef2565b60165f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b959190611f09565b6001600160a01b031663c9c653963060165f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c189190611f09565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c869190611f09565b601780546001600160a01b039283166001600160a01b03199091161790556016541663f305d7198330610ccd816001600160a01b03165f9081526001602052604090205490565b60065460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092525f6044830181905260648301529190911660848201524260a482015260c40160606040518083038185885af1158015610d37573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d5c9190611f24565b505060175460165460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd59190611daf565b506017805463ff0000ff60a01b1916630100000160a01b17905534821015610e12575f610e028334611f4f565b9050610e10828287876116be565b505b50506017805460ff60a81b1916600160a81b1790555050565b6006546001600160a01b0316331480610e4e57506005546001600160a01b031633145b610e6a5760405162461bcd60e51b815260040161045490611dca565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b6006546001600160a01b0316331480610eb757506005546001600160a01b031633145b610ed35760405162461bcd60e51b815260040161045490611dca565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610454565b6001600160a01b038216610fb85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610454565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661107c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610454565b6001600160a01b0382166110de5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610454565b6005545f906001600160a01b0385811691161480159061110c57506005546001600160a01b03848116911614155b801561112657506006546001600160a01b03858116911614155b801561114057506006546001600160a01b03848116911614155b80156111555750601754600160a81b900460ff165b156113a3576017546001600160a01b03858116911614801561118557506016546001600160a01b03848116911614155b80156111a957506001600160a01b0383165f9081526003602052604090205460ff16155b156112bd576012548211156112005760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610454565b60135482611222856001600160a01b03165f9081526001602052604090205490565b61122c9190611f62565b111561127a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610454565b6112a660646112a0600e546011541161129557600a54611299565b600c545b8590611897565b9061191c565b601180549192505f6112b783611f75565b91905055505b6017546001600160a01b0384811691161480156112e357506001600160a01b0384163014155b156113105761130d60646112a0600f546011541161130357600b54611299565b600d548590611897565b90505b305f90815260016020526040902054601754600160b01b900460ff1615801561134657506017546001600160a01b038581169116145b801561135b5750601754600160b81b900460ff165b8015611368575060145481115b80156113775750601054601154115b156113a1576113996113948461138f8460155461195d565b61195d565b611518565b6113a1611688565b505b801561141b57305f908152600160205260409020546113c29082611971565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114129085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461143d90836119cf565b6001600160a01b0385165f9081526001602052604090205561148061146283836119cf565b6001600160a01b0385165f9081526001602052604090205490611971565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114c985856119cf565b60405190815260200160405180910390a350505050565b5f81848411156115035760405162461bcd60e51b81526004016104549190611a7b565b505f61150f8486611f4f565b95945050505050565b6017805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061155e5761155e611f8d565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d99190611f09565b816001815181106115ec576115ec611f8d565b6001600160a01b0392831660209182029290920101526016546116129130911684610ef5565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac9479061164a9085905f90869030904290600401611fe3565b5f604051808303815f87803b158015611661575f80fd5b505af1158015611673573d5f803e3d5ffd5b50506017805460ff60b01b1916905550505050565b6006546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561079d573d5f803e3d5ffd5b60165483906001600160a01b03165f5b845181101561188e575f8482815181106116ea576116ea611f8d565b60200260200101519050838111156116ff5750825b6040805160028082526060820183525f92602083019080368337019050509050836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177f9190611f09565b815f8151811061179157611791611f8d565b60200260200101906001600160a01b031690816001600160a01b03168152505088816001815181106117c5576117c5611f8d565b60200260200101906001600160a01b031690816001600160a01b031681525050836001600160a01b031663b6f9de95835f848b888151811061180957611809611f8d565b602002602001015142600f61181e9190611f62565b6040518663ffffffff1660e01b815260040161183d949392919061201e565b5f604051808303818588803b158015611854575f80fd5b505af1158015611866573d5f803e3d5ffd5b505050505081856118779190611f4f565b94505050808061188690611f75565b9150506116ce565b50505050505050565b5f825f036118a657505f610646565b5f6118b18385611ef2565b9050826118be8583612052565b146119155760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610454565b9392505050565b5f61191583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a10565b5f81831161196b5782611915565b50919050565b5f8061197d8385611f62565b9050838110156119155760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610454565b5f61191583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114e0565b5f8183611a305760405162461bcd60e51b81526004016104549190611a7b565b505f61150f8486612052565b6001600160a01b038116811461079d575f80fd5b8035611a5b81611a3c565b919050565b5f60208284031215611a70575f80fd5b813561191581611a3c565b5f6020808352835180828501525f5b81811015611aa657858101830151858201604001528201611a8a565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611ad7575f80fd5b8235611ae281611a3c565b946020939093013593505050565b5f8060408385031215611b01575f80fd5b50508035926020909101359150565b5f805f60608486031215611b22575f80fd5b8335611b2d81611a3c565b92506020840135611b3d81611a3c565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b8b57611b8b611b4e565b604052919050565b5f67ffffffffffffffff821115611bac57611bac611b4e565b5060051b60200190565b5f82601f830112611bc5575f80fd5b81356020611bda611bd583611b93565b611b62565b82815260059290921b84018101918181019086841115611bf8575f80fd5b8286015b84811015611c135780358352918301918301611bfc565b509695505050505050565b5f805f8060808587031215611c31575f80fd5b843567ffffffffffffffff80821115611c48575f80fd5b818701915087601f830112611c5b575f80fd5b81356020611c6b611bd583611b93565b82815260059290921b8401810191818101908b841115611c89575f80fd5b948201945b83861015611cb0578535611ca181611a3c565b82529482019490820190611c8e565b98505088013592505080821115611cc5575f80fd5b50611cd287828801611bb6565b93505060408501359150611ce860608601611a50565b905092959194509250565b5f8060408385031215611d04575f80fd5b8235611d0f81611a3c565b91506020830135611d1f81611a3c565b809150509250929050565b801515811461079d575f80fd5b5f8060408385031215611d48575f80fd5b8235611d5381611a3c565b91506020830135611d1f81611d2a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611da8575f80fd5b5051919050565b5f60208284031215611dbf575f80fd5b815161191581611d2a565b6020808252600c908201526b2737ba1030b63637bbb2b21760a11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611e3e57815f1904821115611e2457611e24611df0565b80851615611e3157918102915b93841c9390800290611e09565b509250929050565b5f82611e5457506001610646565b81611e6057505f610646565b8160018114611e765760028114611e8057611e9c565b6001915050610646565b60ff841115611e9157611e91611df0565b50506001821b610646565b5060208310610133831016604e8410600b8410161715611ebf575081810a610646565b611ec98383611e04565b805f1904821115611edc57611edc611df0565b029392505050565b5f61191560ff841683611e46565b808202811582820484141761064657610646611df0565b5f60208284031215611f19575f80fd5b815161191581611a3c565b5f805f60608486031215611f36575f80fd5b8351925060208401519150604084015190509250925092565b8181038181111561064657610646611df0565b8082018082111561064657610646611df0565b5f60018201611f8657611f86611df0565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015611fd85781516001600160a01b031687529582019590820190600101611fb3565b509495945050505050565b85815284602082015260a060408201525f61200160a0830186611fa1565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201525f6120366080830186611fa1565b6001600160a01b03949094166040830152506060015292915050565b5f8261206c57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202676e8398cc673cc4fb80c5f64a1f142eddf0728491a585dfc7c42fe2753ddc564736f6c63430008140033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x608060405260043610610149575f3560e01c806374c9f603116100b3578063a9059cbb1161006d578063a9059cbb14610362578063bf474bed14610381578063ccd05c8414610396578063dd62ed3e146103a9578063f1593990146103ed578063f84248111461040c575f80fd5b806374c9f603146102df578063751039fc146102fe5780637d1db4a5146103125780638da5cb5b146103275780638f9a55c01461034d57806395d89b4114610175575f80fd5b806323b872dd1161010457806323b872dd14610235578063313ce5671461025457806351bc3c851461026f5780636fc3eaec1461028357806370a0823114610297578063715018a6146102cb575f80fd5b8062ae3bf81461015457806306fdde0314610175578063095ea7b3146101b05780630faee56f146101df5780631006ee0c1461020257806318160ddd14610221575f80fd5b3661015057005b5f80fd5b34801561015f575f80fd5b5061017361016e366004611a60565b61042b565b005b348015610180575f80fd5b5060408051808201825260048152631350551560e21b602082015290516101a79190611a7b565b60405180910390f35b3480156101bb575f80fd5b506101cf6101ca366004611ac6565b610636565b60405190151581526020016101a7565b3480156101ea575f80fd5b506101f460155481565b6040519081526020016101a7565b34801561020d575f80fd5b5061017361021c366004611af0565b61064c565b34801561022c575f80fd5b506101f46106b0565b348015610240575f80fd5b506101cf61024f366004611b10565b6106d1565b34801561025f575f80fd5b50604051601281526020016101a7565b34801561027a575f80fd5b50610173610738565b34801561028e575f80fd5b5061017361078e565b3480156102a2575f80fd5b506101f46102b1366004611a60565b6001600160a01b03165f9081526001602052604090205490565b3480156102d6575f80fd5b506101736107a0565b3480156102ea575f80fd5b506101736102f9366004611a60565b610811565b348015610309575f80fd5b50610173610872565b34801561031d575f80fd5b506101f460125481565b348015610332575f80fd5b505f546040516001600160a01b0390911681526020016101a7565b348015610358575f80fd5b506101f460135481565b34801561036d575f80fd5b506101cf61037c366004611ac6565b610927565b34801561038c575f80fd5b506101f460145481565b6101736103a4366004611c1e565b610933565b3480156103b4575f80fd5b506101f46103c3366004611cf3565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103f8575f80fd5b50610173610407366004611d37565b610e2b565b348015610417575f80fd5b50610173610426366004611a60565b610e94565b5f546001600160a01b0316331461045d5760405162461bcd60e51b815260040161045490611d63565b60405180910390fd5b5f6001600160a01b0382166104b557604051339047905f81818185875af1925050503d805f81146104a9576040519150601f19603f3d011682016040523d82523d5f602084013e6104ae565b606091505b5050505050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156104f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051d9190611d98565b116105565760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610454565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561059a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105be9190611d98565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0384169063a9059cbb906044016020604051808303815f875af115801561060b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f9190611daf565b50505b5050565b5f610642338484610ef5565b5060015b92915050565b6006546001600160a01b031633148061066f57506005546001600160a01b031633145b61068b5760405162461bcd60e51b815260040161045490611dca565b600a821115801561069d5750600a8111155b6106a5575f80fd5b600c91909155600d55565b5f6106bd6012600a611ee4565b6106cc9064174876e800611ef2565b905090565b5f6106dd848484611018565b61072e843361072985604051806060016040528060288152602001612072602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906114e0565b610ef5565b5060019392505050565b5f546001600160a01b031633146107615760405162461bcd60e51b815260040161045490611d63565b305f90815260016020526040902054801561077f5761077f81611518565b47801561063257610632611688565b47801561079d5761079d611688565b50565b5f546001600160a01b031633146107c95760405162461bcd60e51b815260040161045490611d63565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6006546001600160a01b031633148061083457506005546001600160a01b031633145b6108505760405162461bcd60e51b815260040161045490611dca565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461089b5760405162461bcd60e51b815260040161045490611d63565b6108a76012600a611ee4565b6108b69064174876e800611ef2565b60129081556108c690600a611ee4565b6108d59064174876e800611ef2565b6013557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6109056012600a611ee4565b6109149064174876e800611ef2565b60405190815260200160405180910390a1565b5f610642338484611018565b6006546001600160a01b031633148061095657506005546001600160a01b031633145b6109725760405162461bcd60e51b815260040161045490611dca565b601754600160a01b900460ff16156109cc5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610454565b81341015610a1c5760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e742045544820666f72206c61756e636800000000006044820152606401610454565b5f845111610a775760405162461bcd60e51b815260206004820152602260248201527f4e6f20646973747269627574696f6e206164647265737365732070726f766964604482015261195960f21b6064820152608401610454565b8251845114610ad75760405162461bcd60e51b815260206004820152602660248201527f4d69736d61746368206265747765656e2061646472657373657320616e6420616044820152656d6f756e747360d01b6064820152608401610454565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610b21903090610b126012600a611ee4565b6107299064174876e800611ef2565b60165f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b959190611f09565b6001600160a01b031663c9c653963060165f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c189190611f09565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c869190611f09565b601780546001600160a01b039283166001600160a01b03199091161790556016541663f305d7198330610ccd816001600160a01b03165f9081526001602052604090205490565b60065460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092525f6044830181905260648301529190911660848201524260a482015260c40160606040518083038185885af1158015610d37573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d5c9190611f24565b505060175460165460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd59190611daf565b506017805463ff0000ff60a01b1916630100000160a01b17905534821015610e12575f610e028334611f4f565b9050610e10828287876116be565b505b50506017805460ff60a81b1916600160a81b1790555050565b6006546001600160a01b0316331480610e4e57506005546001600160a01b031633145b610e6a5760405162461bcd60e51b815260040161045490611dca565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b6006546001600160a01b0316331480610eb757506005546001600160a01b031633145b610ed35760405162461bcd60e51b815260040161045490611dca565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610454565b6001600160a01b038216610fb85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610454565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661107c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610454565b6001600160a01b0382166110de5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610454565b6005545f906001600160a01b0385811691161480159061110c57506005546001600160a01b03848116911614155b801561112657506006546001600160a01b03858116911614155b801561114057506006546001600160a01b03848116911614155b80156111555750601754600160a81b900460ff165b156113a3576017546001600160a01b03858116911614801561118557506016546001600160a01b03848116911614155b80156111a957506001600160a01b0383165f9081526003602052604090205460ff16155b156112bd576012548211156112005760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610454565b60135482611222856001600160a01b03165f9081526001602052604090205490565b61122c9190611f62565b111561127a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610454565b6112a660646112a0600e546011541161129557600a54611299565b600c545b8590611897565b9061191c565b601180549192505f6112b783611f75565b91905055505b6017546001600160a01b0384811691161480156112e357506001600160a01b0384163014155b156113105761130d60646112a0600f546011541161130357600b54611299565b600d548590611897565b90505b305f90815260016020526040902054601754600160b01b900460ff1615801561134657506017546001600160a01b038581169116145b801561135b5750601754600160b81b900460ff165b8015611368575060145481115b80156113775750601054601154115b156113a1576113996113948461138f8460155461195d565b61195d565b611518565b6113a1611688565b505b801561141b57305f908152600160205260409020546113c29082611971565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114129085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461143d90836119cf565b6001600160a01b0385165f9081526001602052604090205561148061146283836119cf565b6001600160a01b0385165f9081526001602052604090205490611971565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114c985856119cf565b60405190815260200160405180910390a350505050565b5f81848411156115035760405162461bcd60e51b81526004016104549190611a7b565b505f61150f8486611f4f565b95945050505050565b6017805460ff60b01b1916600160b01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061155e5761155e611f8d565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d99190611f09565b816001815181106115ec576115ec611f8d565b6001600160a01b0392831660209182029290920101526016546116129130911684610ef5565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac9479061164a9085905f90869030904290600401611fe3565b5f604051808303815f87803b158015611661575f80fd5b505af1158015611673573d5f803e3d5ffd5b50506017805460ff60b01b1916905550505050565b6006546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561079d573d5f803e3d5ffd5b60165483906001600160a01b03165f5b845181101561188e575f8482815181106116ea576116ea611f8d565b60200260200101519050838111156116ff5750825b6040805160028082526060820183525f92602083019080368337019050509050836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177f9190611f09565b815f8151811061179157611791611f8d565b60200260200101906001600160a01b031690816001600160a01b03168152505088816001815181106117c5576117c5611f8d565b60200260200101906001600160a01b031690816001600160a01b031681525050836001600160a01b031663b6f9de95835f848b888151811061180957611809611f8d565b602002602001015142600f61181e9190611f62565b6040518663ffffffff1660e01b815260040161183d949392919061201e565b5f604051808303818588803b158015611854575f80fd5b505af1158015611866573d5f803e3d5ffd5b505050505081856118779190611f4f565b94505050808061188690611f75565b9150506116ce565b50505050505050565b5f825f036118a657505f610646565b5f6118b18385611ef2565b9050826118be8583612052565b146119155760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610454565b9392505050565b5f61191583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a10565b5f81831161196b5782611915565b50919050565b5f8061197d8385611f62565b9050838110156119155760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610454565b5f61191583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114e0565b5f8183611a305760405162461bcd60e51b81526004016104549190611a7b565b505f61150f8486612052565b6001600160a01b038116811461079d575f80fd5b8035611a5b81611a3c565b919050565b5f60208284031215611a70575f80fd5b813561191581611a3c565b5f6020808352835180828501525f5b81811015611aa657858101830151858201604001528201611a8a565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611ad7575f80fd5b8235611ae281611a3c565b946020939093013593505050565b5f8060408385031215611b01575f80fd5b50508035926020909101359150565b5f805f60608486031215611b22575f80fd5b8335611b2d81611a3c565b92506020840135611b3d81611a3c565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b8b57611b8b611b4e565b604052919050565b5f67ffffffffffffffff821115611bac57611bac611b4e565b5060051b60200190565b5f82601f830112611bc5575f80fd5b81356020611bda611bd583611b93565b611b62565b82815260059290921b84018101918181019086841115611bf8575f80fd5b8286015b84811015611c135780358352918301918301611bfc565b509695505050505050565b5f805f8060808587031215611c31575f80fd5b843567ffffffffffffffff80821115611c48575f80fd5b818701915087601f830112611c5b575f80fd5b81356020611c6b611bd583611b93565b82815260059290921b8401810191818101908b841115611c89575f80fd5b948201945b83861015611cb0578535611ca181611a3c565b82529482019490820190611c8e565b98505088013592505080821115611cc5575f80fd5b50611cd287828801611bb6565b93505060408501359150611ce860608601611a50565b905092959194509250565b5f8060408385031215611d04575f80fd5b8235611d0f81611a3c565b91506020830135611d1f81611a3c565b809150509250929050565b801515811461079d575f80fd5b5f8060408385031215611d48575f80fd5b8235611d5381611a3c565b91506020830135611d1f81611d2a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611da8575f80fd5b5051919050565b5f60208284031215611dbf575f80fd5b815161191581611d2a565b6020808252600c908201526b2737ba1030b63637bbb2b21760a11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611e3e57815f1904821115611e2457611e24611df0565b80851615611e3157918102915b93841c9390800290611e09565b509250929050565b5f82611e5457506001610646565b81611e6057505f610646565b8160018114611e765760028114611e8057611e9c565b6001915050610646565b60ff841115611e9157611e91611df0565b50506001821b610646565b5060208310610133831016604e8410600b8410161715611ebf575081810a610646565b611ec98383611e04565b805f1904821115611edc57611edc611df0565b029392505050565b5f61191560ff841683611e46565b808202811582820484141761064657610646611df0565b5f60208284031215611f19575f80fd5b815161191581611a3c565b5f805f60608486031215611f36575f80fd5b8351925060208401519150604084015190509250925092565b8181038181111561064657610646611df0565b8082018082111561064657610646611df0565b5f60018201611f8657611f86611df0565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b83811015611fd85781516001600160a01b031687529582019590820190600101611fb3565b509495945050505050565b85815284602082015260a060408201525f61200160a0830186611fa1565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201525f6120366080830186611fa1565b6001600160a01b03949094166040830152506060015292915050565b5f8261206c57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202676e8398cc673cc4fb80c5f64a1f142eddf0728491a585dfc7c42fe2753ddc564736f6c63430008140033

Deployed Bytecode Sourcemap

4083:11913:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14378:466;;;;;;;;;;-1:-1:-1;14378:466:0;;;;;:::i;:::-;;:::i;:::-;;7632:83;;;;;;;;;;-1:-1:-1;7702:5:0;;;;;;;;;;;-1:-1:-1;;;7702:5:0;;;;7632:83;;;;7702:5;7632:83;:::i;:::-;;;;;;;;8465:161;;;;;;;;;;-1:-1:-1;8465:161:0;;;;;:::i;:::-;;:::i;:::-;;;1579:14:1;;1572:22;1554:41;;1542:2;1527:18;8465:161:0;1414:187:1;5411:58:0;;;;;;;;;;;;;;;;;;;1752:25:1;;;1740:2;1725:18;5411:58:0;1606:177:1;14852:220:0;;;;;;;;;;-1:-1:-1;14852:220:0;;;;;:::i;:::-;;:::i;7909:95::-;;;;;;;;;;;;;:::i;8634:313::-;;;;;;;;;;-1:-1:-1;8634:313:0;;;;;:::i;:::-;;:::i;7818:83::-;;;;;;;;;;-1:-1:-1;7818:83:0;;5022:2;2644:36:1;;2632:2;2617:18;7818:83:0;2502:184:1;15512:313:0;;;;;;;;;;;;;:::i;15833:160::-;;;;;;;;;;;;;:::i;8012:119::-;;;;;;;;;;-1:-1:-1;8012:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8105:18:0;8078:7;8105:18;;;:9;:18;;;;;;;8012:119;2958:157;;;;;;;;;;;;;:::i;15352:115::-;;;;;;;;;;-1:-1:-1;15352:115:0;;;;;:::i;:::-;;:::i;11773:162::-;;;;;;;;;;;;;:::i;5212:57::-;;;;;;;;;;;;;;;;2744:79;;;;;;;;;;-1:-1:-1;2782:7:0;2809:6;2744:79;;-1:-1:-1;;;;;2809:6:0;;;2837:51:1;;2825:2;2810:18;2744:79:0;2691:203:1;5276:61:0;;;;;;;;;;;;;;;;8139:167;;;;;;;;;;-1:-1:-1;8139:167:0;;;;;:::i;:::-;;:::i;5344:60::-;;;;;;;;;;;;;;;;12049:1295;;;;;;:::i;:::-;;:::i;8314:143::-;;;;;;;;;;-1:-1:-1;8314:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8422:18:0;;;8395:7;8422:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8314:143;15209:135;;;;;;;;;;-1:-1:-1;15209:135:0;;;;;:::i;:::-;;:::i;15084:117::-;;;;;;;;;;-1:-1:-1;15084:117:0;;;;;:::i;:::-;;:::i;14378:466::-;2871:6;;-1:-1:-1;;;;;2871:6:0;573:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;;;;;;;;;14442:12:::1;-1:-1:-1::0;;;;;14469:18:0;::::1;14465:372;;14516:90;::::0;14524:10:::1;::::0;14566:21:::1;::::0;14516:90:::1;::::0;;;14566:21;14524:10;14516:90:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14378:466:0:o;14465:372::-:1;14645:37;::::0;-1:-1:-1;;;14645:37:0;;14676:4:::1;14645:37;::::0;::::1;2837:51:1::0;14685:1:0::1;::::0;-1:-1:-1;;;;;14645:22:0;::::1;::::0;::::1;::::0;2810:18:1;;14645:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;14637:63;;;::::0;-1:-1:-1;;;14637:63:0;;7394:2:1;14637:63:0::1;::::0;::::1;7376:21:1::0;7433:1;7413:18;;;7406:29;-1:-1:-1;;;7451:18:1;;;7444:39;7500:18;;14637:63:0::1;7192:332:1::0;14637:63:0::1;14732:37;::::0;-1:-1:-1;;;14732:37:0;;14763:4:::1;14732:37;::::0;::::1;2837:51:1::0;14715:14:0::1;::::0;-1:-1:-1;;;;;14732:22:0;::::1;::::0;::::1;::::0;2810:18:1;;14732:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14784:41;::::0;-1:-1:-1;;;14784:41:0;;14806:10:::1;14784:41;::::0;::::1;7703:51:1::0;7770:18;;;7763:34;;;14715:54:0;;-1:-1:-1;;;;;;14784:21:0;::::1;::::0;::::1;::::0;7676:18:1;;14784:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14622:215;14465:372;14431:413;14378:466:::0;:::o;8465:161::-;8540:4;8557:39;573:10;8580:7;8589:6;8557:8;:39::i;:::-;-1:-1:-1;8614:4:0;8465:161;;;;;:::o;14852:220::-;5905:10;;-1:-1:-1;;;;;5905:10:0;5891;:24;;:52;;-1:-1:-1;5933:10:0;;-1:-1:-1;;;;;5933:10:0;5919;:24;5891:52;5883:77;;;;-1:-1:-1;;;5883:77:0;;;;;;;:::i;:::-;14966:2:::1;14952:10;:16;;:37;;;;;14987:2;14972:11;:17;;14952:37;14944:46;;;::::0;::::1;;15001:12;:25:::0;;;;15037:13:::1;:27:::0;14852:220::o;7909:95::-;7962:7;5084:13;5022:2;5084;:13;:::i;:::-;5066:31;;:15;:31;:::i;:::-;7982:14;;7909:95;:::o;8634:313::-;8732:4;8749:36;8759:6;8767:9;8778:6;8749:9;:36::i;:::-;8796:121;8805:6;573:10;8827:89;8865:6;8827:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8827:19:0;;;;;;:11;:19;;;;;;;;573:10;8827:33;;;;;;;;;;:37;:89::i;:::-;8796:8;:121::i;:::-;-1:-1:-1;8935:4:0;8634:313;;;;;:::o;15512:::-;2871:6;;-1:-1:-1;;;;;2871:6:0;573:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;15605:4:::1;15564:20;8105:18:::0;;;:9;:18;;;;;;15625:16;;15622:75:::1;;15655:30;15672:12;15655:16;:30::i;:::-;15728:21;15763:14:::0;;15760:58:::1;;15791:15;:13;:15::i;15833:160::-:0;15896:21;15931:14;;15928:58;;15959:15;:13;:15::i;:::-;15864:129;15833:160::o;2958:157::-;2871:6;;-1:-1:-1;;;;;2871:6:0;573:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;3074:1:::1;3057:6:::0;;3028:49:::1;::::0;-1:-1:-1;;;;;3057:6:0;;::::1;::::0;3028:49:::1;::::0;3074:1;;3028:49:::1;3105:1;3088:19:::0;;-1:-1:-1;;;;;;3088:19:0::1;::::0;;2958:157::o;15352:115::-;5905:10;;-1:-1:-1;;;;;5905:10:0;5891;:24;;:52;;-1:-1:-1;5933:10:0;;-1:-1:-1;;;;;5933:10:0;5919;:24;5891:52;5883:77;;;;-1:-1:-1;;;5883:77:0;;;;;;;:::i;:::-;15427:10:::1;:32:::0;;-1:-1:-1;;;;;;15427:32:0::1;-1:-1:-1::0;;;;;15427:32:0;;;::::1;::::0;;;::::1;::::0;;15352:115::o;11773:162::-;2871:6;;-1:-1:-1;;;;;2871:6:0;573:10;2871:22;2863:67;;;;-1:-1:-1;;;2863:67:0;;;;;;;:::i;:::-;5084:13:::1;5022:2;5084;:13;:::i;:::-;5066:31;::::0;:15:::1;:31;:::i;:::-;11827:12;:22:::0;;;5084:13:::1;::::0;:2:::1;:13;:::i;:::-;5066:31;::::0;:15:::1;:31;:::i;:::-;11860:14;:24:::0;11900:27:::1;5084:13;5022:2;5084;:13;:::i;:::-;5066:31;::::0;:15:::1;:31;:::i;:::-;11900:27;::::0;1752:25:1;;;1740:2;1725:18;11900:27:0::1;;;;;;;11773:162::o:0;8139:167::-;8217:4;8234:42;573:10;8258:9;8269:6;8234:9;:42::i;12049:1295::-;5905:10;;-1:-1:-1;;;;;5905:10:0;5891;:24;;:52;;-1:-1:-1;5933:10:0;;-1:-1:-1;;;;;5933:10:0;5919;:24;5891:52;5883:77;;;;-1:-1:-1;;;5883:77:0;;;;;;;:::i;:::-;12255:11:::1;::::0;-1:-1:-1;;;12255:11:0;::::1;;;12254:12;12246:48;;;::::0;-1:-1:-1;;;12246:48:0;;10289:2:1;12246:48:0::1;::::0;::::1;10271:21:1::0;10328:2;10308:18;;;10301:30;10367:25;10347:18;;;10340:53;10410:18;;12246:48:0::1;10087:347:1::0;12246:48:0::1;12326:10;12313:9;:23;;12305:63;;;::::0;-1:-1:-1;;;12305:63:0;;10641:2:1;12305:63:0::1;::::0;::::1;10623:21:1::0;10680:2;10660:18;;;10653:30;10719:29;10699:18;;;10692:57;10766:18;;12305:63:0::1;10439:351:1::0;12305:63:0::1;12409:1;12387:12;:19;:23;12379:70;;;::::0;-1:-1:-1;;;12379:70:0;;10997:2:1;12379:70:0::1;::::0;::::1;10979:21:1::0;11036:2;11016:18;;;11009:30;11075:34;11055:18;;;11048:62;-1:-1:-1;;;11126:18:1;;;11119:32;11168:19;;12379:70:0::1;10795:398:1::0;12379:70:0::1;12491:12;:19;12468:12;:19;:42;12460:93;;;::::0;-1:-1:-1;;;12460:93:0;;11400:2:1;12460:93:0::1;::::0;::::1;11382:21:1::0;11439:2;11419:18;;;11412:30;11478:34;11458:18;;;11451:62;-1:-1:-1;;;11529:18:1;;;11522:36;11575:19;;12460:93:0::1;11198:402:1::0;12460:93:0::1;12566:15;:80:::0;;-1:-1:-1;;;;;;12566:80:0::1;12603:42;12566:80:::0;;::::1;::::0;;;12657:58:::1;::::0;12674:4:::1;::::0;5084:13:::1;5022:2;5084;:13;:::i;:::-;5066:31;::::0;:15:::1;:31;:::i;12657:58::-;12762:15;;;;;;;;;-1:-1:-1::0;;;;;12762:15:0::1;-1:-1:-1::0;;;;;12762:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12744:55:0::1;;12808:4;12815:15;;;;;;;;;-1:-1:-1::0;;;;;12815:15:0::1;-1:-1:-1::0;;;;;12815:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12744:94;::::0;-1:-1:-1;;;;;;12744:94:0::1;::::0;;;;;;-1:-1:-1;;;;;12091:15:1;;;12744:94:0::1;::::0;::::1;12073:34:1::0;12143:15;;12123:18;;;12116:43;12008:18;;12744:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12728:13;:110:::0;;-1:-1:-1;;;;;12728:110:0;;::::1;-1:-1:-1::0;;;;;;12728:110:0;;::::1;;::::0;;12849:15:::1;::::0;::::1;:31;12888:10:::0;12908:4:::1;12915:24;12908:4:::0;-1:-1:-1;;;;;8105:18:0;8078:7;8105:18;;;:9;:18;;;;;;;8012:119;12915:24:::1;12947:10;::::0;12849:126:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12849:126:0;;;-1:-1:-1;;;;;12537:15:1;;;12849:126:0::1;::::0;::::1;12519:34:1::0;12569:18;;;12562:34;;;;12941:1:0::1;12612:18:1::0;;;12605:34;;;12655:18;;;12648:34;12947:10:0;;;::::1;12698:19:1::0;;;12691:44;12959:15:0::1;12751:19:1::0;;;12744:35;12453:19;;12849:126:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12995:13:0::1;::::0;13026:15:::1;::::0;12988:71:::1;::::0;-1:-1:-1;;;12988:71:0;;-1:-1:-1;;;;;13026:15:0;;::::1;12988:71;::::0;::::1;7703:51:1::0;-1:-1:-1;;7770:18:1;;;7763:34;12995:13:0;::::1;::::0;-1:-1:-1;12988:29:0::1;::::0;7676:18:1;;12988:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13072:11:0::1;:18:::0;;-1:-1:-1;;;;13101:18:0;-1:-1:-1;;;13101:18:0;;;13136:9:::1;-1:-1:-1::0;;13132:171:0::1;;;13175:20;13198:22;13210:10:::0;13198:9:::1;:22;:::i;:::-;13175:45;;13235:56;13243:5;13250:12;13264;13278;13235:7;:56::i;:::-;13160:143;13132:171;-1:-1:-1::0;;13315:14:0::1;:21:::0;;-1:-1:-1;;;;13315:21:0::1;-1:-1:-1::0;;;13315:21:0::1;::::0;;-1:-1:-1;;12049:1295:0:o;15209:135::-;5905:10;;-1:-1:-1;;;;;5905:10:0;5891;:24;;:52;;-1:-1:-1;5933:10:0;;-1:-1:-1;;;;;5933:10:0;5919;:24;5891:52;5883:77;;;;-1:-1:-1;;;5883:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15297:30:0;;;::::1;;::::0;;;:18:::1;:30;::::0;;;;:39;;-1:-1:-1;;15297:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15209:135::o;15084:117::-;5905:10;;-1:-1:-1;;;;;5905:10:0;5891;:24;;:52;;-1:-1:-1;5933:10:0;;-1:-1:-1;;;;;5933:10:0;5919;:24;5891:52;5883:77;;;;-1:-1:-1;;;5883:77:0;;;;;;;:::i;:::-;15161:10:::1;:32:::0;;-1:-1:-1;;;;;;15161:32:0::1;-1:-1:-1::0;;;;;15161:32:0;;;::::1;::::0;;;::::1;::::0;;15084:117::o;8955:335::-;-1:-1:-1;;;;;9048:19:0;;9040:68;;;;-1:-1:-1;;;9040:68:0;;13436:2:1;9040:68:0;;;13418:21:1;13475:2;13455:18;;;13448:30;13514:34;13494:18;;;13487:62;-1:-1:-1;;;13565:18:1;;;13558:34;13609:19;;9040:68:0;13234:400:1;9040:68:0;-1:-1:-1;;;;;9127:21:0;;9119:68;;;;-1:-1:-1;;;9119:68:0;;13841:2:1;9119:68:0;;;13823:21:1;13880:2;13860:18;;;13853:30;13919:34;13899:18;;;13892:62;-1:-1:-1;;;13970:18:1;;;13963:32;14012:19;;9119:68:0;13639:398:1;9119:68:0;-1:-1:-1;;;;;9198:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9250:32;;1752:25:1;;;9250:32:0;;1725:18:1;9250:32:0;;;;;;;8955:335;;;:::o;9298:1870::-;-1:-1:-1;;;;;9386:18:0;;9378:68;;;;-1:-1:-1;;;9378:68:0;;14244:2:1;9378:68:0;;;14226:21:1;14283:2;14263:18;;;14256:30;14322:34;14302:18;;;14295:62;-1:-1:-1;;;14373:18:1;;;14366:35;14418:19;;9378:68:0;14042:401:1;9378:68:0;-1:-1:-1;;;;;9465:16:0;;9457:64;;;;-1:-1:-1;;;9457:64:0;;14650:2:1;9457:64:0;;;14632:21:1;14689:2;14669:18;;;14662:30;14728:34;14708:18;;;14701:62;-1:-1:-1;;;14779:18:1;;;14772:33;14822:19;;9457:64:0;14448:399:1;9457:64:0;9594:10;;9534:17;;-1:-1:-1;;;;;9586:18:0;;;9594:10;;9586:18;;;;:52;;-1:-1:-1;9628:10:0;;-1:-1:-1;;;;;9622:16:0;;;9628:10;;9622:16;;9586:52;:88;;;;-1:-1:-1;9664:10:0;;-1:-1:-1;;;;;9656:18:0;;;9664:10;;9656:18;;9586:88;:122;;;;-1:-1:-1;9698:10:0;;-1:-1:-1;;;;;9692:16:0;;;9698:10;;9692:16;;9586:122;:154;;;;-1:-1:-1;9726:14:0;;-1:-1:-1;;;9726:14:0;;;;9586:154;9568:1232;;;9812:13;;-1:-1:-1;;;;;9804:21:0;;;9812:13;;9804:21;:55;;;;-1:-1:-1;9843:15:0;;-1:-1:-1;;;;;9829:30:0;;;9843:15;;9829:30;;9804:55;:83;;;;-1:-1:-1;;;;;;9865:22:0;;;;;;:18;:22;;;;;;;;9863:24;9804:83;9800:424;;;9927:12;;9917:6;:22;;9909:60;;;;-1:-1:-1;;;9909:60:0;;15054:2:1;9909:60:0;;;15036:21:1;15093:2;15073:18;;;15066:30;15132:27;15112:18;;;15105:55;15177:18;;9909:60:0;14852:349:1;9909:60:0;10022:14;;10012:6;9996:13;10006:2;-1:-1:-1;;;;;8105:18:0;8078:7;8105:18;;;:9;:18;;;;;;;8012:119;9996:13;:22;;;;:::i;:::-;:40;;9988:79;;;;-1:-1:-1;;;9988:79:0;;15538:2:1;9988:79:0;;;15520:21:1;15577:2;15557:18;;;15550:30;15616:28;15596:18;;;15589:56;15662:18;;9988:79:0;15336:350:1;9988:79:0;10098:80;10174:3;10098:71;10122:15;;10110:9;;:27;10109:59;;10154:14;;10109:59;;;10141:12;;10109:59;10098:6;;:10;:71::i;:::-;:75;;:80::i;:::-;10197:9;:11;;10086:92;;-1:-1:-1;10197:9:0;:11;;;:::i;:::-;;;;;;9800:424;10269:13;;-1:-1:-1;;;;;10263:19:0;;;10269:13;;10263:19;:43;;;;-1:-1:-1;;;;;;10286:20:0;;10301:4;10286:20;;10263:43;10260:178;;;10339:83;10418:3;10339:74;10363:16;;10351:9;;:28;10350:62;;10397:15;;10350:62;;;10383:13;;10339:6;;:10;:74::i;:83::-;10327:95;;10260:178;10503:4;10454:28;8105:18;;;:9;:18;;;;;;10529:6;;-1:-1:-1;;;10529:6:0;;;;10528:7;:30;;;;-1:-1:-1;10545:13:0;;-1:-1:-1;;;;;10539:19:0;;;10545:13;;10539:19;10528:30;:45;;;;-1:-1:-1;10562:11:0;;-1:-1:-1;;;10562:11:0;;;;10528:45;:89;;;;;10600:17;;10577:20;:40;10528:89;:123;;;;;10633:18;;10621:9;;:30;10528:123;10524:265;;;10672:67;10689:49;10693:6;10700:37;10704:20;10725:11;;10700:3;:37::i;:::-;10689:3;:49::i;:::-;10672:16;:67::i;:::-;10758:15;:13;:15::i;:::-;9752:1048;9568:1232;10815:13;;10812:165;;10887:4;10869:24;;;;:9;:24;;;;;;:39;;10898:9;10869:28;:39::i;:::-;10860:4;10842:24;;;;:9;:24;;;;;;;:66;;;;10926:39;;-1:-1:-1;;;;;10926:39:0;;;;;;;10955:9;1752:25:1;;1740:2;1725:18;;1606:177;10926:39:0;;;;;;;;10812:165;-1:-1:-1;;;;;11007:15:0;;;;;;:9;:15;;;;;;:27;;11027:6;11007:19;:27::i;:::-;-1:-1:-1;;;;;10989:15:0;;;;;;:9;:15;;;;;:45;11061:40;11079:21;:6;11090:9;11079:10;:21::i;:::-;-1:-1:-1;;;;;11061:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;11045:13:0;;;;;;;:9;:13;;;;;:56;;;;11119:41;;;11138:21;:6;11149:9;11138:10;:21::i;:::-;11119:41;;1752:25:1;;;1740:2;1725:18;11119:41:0;;;;;;;9367:1801;9298:1870;;;:::o;1630:190::-;1716:7;1752:12;1744:6;;;;1736:29;;;;-1:-1:-1;;;1736:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1776:9:0;1788:5;1792:1;1788;:5;:::i;:::-;1776:17;1630:190;-1:-1:-1;;;;;1630:190:0:o;11282:483::-;5787:6;:13;;-1:-1:-1;;;;5787:13:0;-1:-1:-1;;;5787:13:0;;;11384:16:::1;::::0;;11398:1:::1;11384:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11384:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11384:16:0::1;11360:40;;11429:4;11411;11416:1;11411:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11411:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11455:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11455:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11411:7;;11455:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11445:4;11450:1;11445:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11445:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11520:15:::1;::::0;11488:62:::1;::::0;11505:4:::1;::::0;11520:15:::1;11538:11:::0;11488:8:::1;:62::i;:::-;11561:15;::::0;:196:::1;::::0;-1:-1:-1;;;11561:196:0;;-1:-1:-1;;;;;11561:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11642:11;;11561:15:::1;::::0;11684:4;;11711::::1;::::0;11731:15:::1;::::0;11561:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5823:6:0;:14;;-1:-1:-1;;;;5823:14:0;;;-1:-1:-1;;;;11282:483:0:o;11943:94::-;11987:10;;:42;;-1:-1:-1;;;;;11987:10:0;;;;12007:21;11987:42;;;;;:10;:42;:10;:42;12007:21;11987:10;:42;;;;;;;;;;;;;;;;;;;13352:1018;13642:15;;13555:14;;-1:-1:-1;;;;;13642:15:0;13532:20;13672:691;13696:12;:19;13692:1;:23;13672:691;;;13737:31;13771:12;13784:1;13771:15;;;;;;;;:::i;:::-;;;;;;;13737:49;;13833:12;13807:23;:38;13803:117;;;-1:-1:-1;13892:12:0;13803:117;13960:16;;;13974:1;13960:16;;;;;;;;13936:21;;13960:16;;;;;;;;;;-1:-1:-1;13960:16:0;13936:40;;14001:13;-1:-1:-1;;;;;14001:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13991:4;13996:1;13991:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;13991:30:0;;;-1:-1:-1;;;;;13991:30:0;;;;;14046:5;14036:4;14041:1;14036:7;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;14036:15:0;;;-1:-1:-1;;;;;14036:15:0;;;;;14068:13;-1:-1:-1;;;;;14068:64:0;;14140:23;14183:1;14203:4;14226:12;14239:1;14226:15;;;;;;;;:::i;:::-;;;;;;;14260;14278:2;14260:20;;;;:::i;:::-;14068:227;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14328:23;14312:39;;;;;:::i;:::-;;;13722:641;;13717:3;;;;;:::i;:::-;;;;13672:691;;;;13521:849;;13352:1018;;;;:::o;1828:246::-;1886:7;1910:1;1915;1910:6;1906:47;;-1:-1:-1;1940:1:0;1933:8;;1906:47;1963:9;1975:5;1979:1;1975;:5;:::i;:::-;1963:17;-1:-1:-1;2008:1:0;1999:5;2003:1;1963:17;1999:5;:::i;:::-;:10;1991:56;;;;-1:-1:-1;;;1991:56:0;;17955:2:1;1991:56:0;;;17937:21:1;17994:2;17974:18;;;17967:30;18033:34;18013:18;;;18006:62;-1:-1:-1;;;18084:18:1;;;18077:31;18125:19;;1991:56:0;17753:397:1;1991:56:0;2065:1;1828:246;-1:-1:-1;;;1828:246:0:o;2082:132::-;2140:7;2167:39;2171:1;2174;2167:39;;;;;;;;;;;;;;;;;:3;:39::i;11176:98::-;11233:7;11260:1;11258;:3;11257:9;;11265:1;11257:9;;;-1:-1:-1;11263:1:0;11176:98;-1:-1:-1;11176:98:0:o;1299:179::-;1357:7;;1389:5;1393:1;1389;:5;:::i;:::-;1377:17;;1418:1;1413;:6;;1405:46;;;;-1:-1:-1;;;1405:46:0;;18357:2:1;1405:46:0;;;18339:21:1;18396:2;18376:18;;;18369:30;18435:29;18415:18;;;18408:57;18482:18;;1405:46:0;18155:351:1;1486:136:0;1544:7;1571:43;1575:1;1578;1571:43;;;;;;;;;;;;;;;;;:3;:43::i;2222:189::-;2308:7;2343:12;2336:5;2328:28;;;;-1:-1:-1;;;2328:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2367:9:0;2379:5;2383:1;2379;:5;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:134;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:247::-;348:6;401:2;389:9;380:7;376:23;372:32;369:52;;;417:1;414;407:12;369:52;456:9;443:23;475:31;500:5;475:31;:::i;541:548::-;653:4;682:2;711;700:9;693:21;743:6;737:13;786:6;781:2;770:9;766:18;759:34;811:1;821:140;835:6;832:1;829:13;821:140;;;930:14;;;926:23;;920:30;896:17;;;915:2;892:26;885:66;850:10;;821:140;;;825:3;1010:1;1005:2;996:6;985:9;981:22;977:31;970:42;1080:2;1073;1069:7;1064:2;1056:6;1052:15;1048:29;1037:9;1033:45;1029:54;1021:62;;;;541:548;;;;:::o;1094:315::-;1162:6;1170;1223:2;1211:9;1202:7;1198:23;1194:32;1191:52;;;1239:1;1236;1229:12;1191:52;1278:9;1265:23;1297:31;1322:5;1297:31;:::i;:::-;1347:5;1399:2;1384:18;;;;1371:32;;-1:-1:-1;;;1094:315:1:o;1788:248::-;1856:6;1864;1917:2;1905:9;1896:7;1892:23;1888:32;1885:52;;;1933:1;1930;1923:12;1885:52;-1:-1:-1;;1956:23:1;;;2026:2;2011:18;;;1998:32;;-1:-1:-1;1788:248:1:o;2041:456::-;2118:6;2126;2134;2187:2;2175:9;2166:7;2162:23;2158:32;2155:52;;;2203:1;2200;2193:12;2155:52;2242:9;2229:23;2261:31;2286:5;2261:31;:::i;:::-;2311:5;-1:-1:-1;2368:2:1;2353:18;;2340:32;2381:33;2340:32;2381:33;:::i;:::-;2041:456;;2433:7;;-1:-1:-1;;;2487:2:1;2472:18;;;;2459:32;;2041:456::o;2899:127::-;2960:10;2955:3;2951:20;2948:1;2941:31;2991:4;2988:1;2981:15;3015:4;3012:1;3005:15;3031:275;3102:2;3096:9;3167:2;3148:13;;-1:-1:-1;;3144:27:1;3132:40;;3202:18;3187:34;;3223:22;;;3184:62;3181:88;;;3249:18;;:::i;:::-;3285:2;3278:22;3031:275;;-1:-1:-1;3031:275:1:o;3311:183::-;3371:4;3404:18;3396:6;3393:30;3390:56;;;3426:18;;:::i;:::-;-1:-1:-1;3471:1:1;3467:14;3483:4;3463:25;;3311:183::o;3499:662::-;3553:5;3606:3;3599:4;3591:6;3587:17;3583:27;3573:55;;3624:1;3621;3614:12;3573:55;3660:6;3647:20;3686:4;3710:60;3726:43;3766:2;3726:43;:::i;:::-;3710:60;:::i;:::-;3804:15;;;3890:1;3886:10;;;;3874:23;;3870:32;;;3835:12;;;;3914:15;;;3911:35;;;3942:1;3939;3932:12;3911:35;3978:2;3970:6;3966:15;3990:142;4006:6;4001:3;3998:15;3990:142;;;4072:17;;4060:30;;4110:12;;;;4023;;3990:142;;;-1:-1:-1;4150:5:1;3499:662;-1:-1:-1;;;;;;3499:662:1:o;4166:1358::-;4302:6;4310;4318;4326;4379:3;4367:9;4358:7;4354:23;4350:33;4347:53;;;4396:1;4393;4386:12;4347:53;4436:9;4423:23;4465:18;4506:2;4498:6;4495:14;4492:34;;;4522:1;4519;4512:12;4492:34;4560:6;4549:9;4545:22;4535:32;;4605:7;4598:4;4594:2;4590:13;4586:27;4576:55;;4627:1;4624;4617:12;4576:55;4663:2;4650:16;4685:4;4709:60;4725:43;4765:2;4725:43;:::i;4709:60::-;4803:15;;;4885:1;4881:10;;;;4873:19;;4869:28;;;4834:12;;;;4909:19;;;4906:39;;;4941:1;4938;4931:12;4906:39;4965:11;;;;4985:217;5001:6;4996:3;4993:15;4985:217;;;5081:3;5068:17;5098:31;5123:5;5098:31;:::i;:::-;5142:18;;5018:12;;;;5180;;;;4985:217;;;5221:5;-1:-1:-1;;5264:18:1;;5251:32;;-1:-1:-1;;5295:16:1;;;5292:36;;;5324:1;5321;5314:12;5292:36;;5347:63;5402:7;5391:8;5380:9;5376:24;5347:63;:::i;:::-;5337:73;;;5457:2;5446:9;5442:18;5429:32;5419:42;;5480:38;5514:2;5503:9;5499:18;5480:38;:::i;:::-;5470:48;;4166:1358;;;;;;;:::o;5529:388::-;5597:6;5605;5658:2;5646:9;5637:7;5633:23;5629:32;5626:52;;;5674:1;5671;5664:12;5626:52;5713:9;5700:23;5732:31;5757:5;5732:31;:::i;:::-;5782:5;-1:-1:-1;5839:2:1;5824:18;;5811:32;5852:33;5811:32;5852:33;:::i;:::-;5904:7;5894:17;;;5529:388;;;;;:::o;5922:118::-;6008:5;6001:13;5994:21;5987:5;5984:32;5974:60;;6030:1;6027;6020:12;6045:382;6110:6;6118;6171:2;6159:9;6150:7;6146:23;6142:32;6139:52;;;6187:1;6184;6177:12;6139:52;6226:9;6213:23;6245:31;6270:5;6245:31;:::i;:::-;6295:5;-1:-1:-1;6352:2:1;6337:18;;6324:32;6365:30;6324:32;6365:30;:::i;6432:356::-;6634:2;6616:21;;;6653:18;;;6646:30;6712:34;6707:2;6692:18;;6685:62;6779:2;6764:18;;6432:356::o;7003:184::-;7073:6;7126:2;7114:9;7105:7;7101:23;7097:32;7094:52;;;7142:1;7139;7132:12;7094:52;-1:-1:-1;7165:16:1;;7003:184;-1:-1:-1;7003:184:1:o;7808:245::-;7875:6;7928:2;7916:9;7907:7;7903:23;7899:32;7896:52;;;7944:1;7941;7934:12;7896:52;7976:9;7970:16;7995:28;8017:5;7995:28;:::i;8058:336::-;8260:2;8242:21;;;8299:2;8279:18;;;8272:30;-1:-1:-1;;;8333:2:1;8318:18;;8311:42;8385:2;8370:18;;8058:336::o;8399:127::-;8460:10;8455:3;8451:20;8448:1;8441:31;8491:4;8488:1;8481:15;8515:4;8512:1;8505:15;8531:422;8620:1;8663:5;8620:1;8677:270;8698:7;8688:8;8685:21;8677:270;;;8757:4;8753:1;8749:6;8745:17;8739:4;8736:27;8733:53;;;8766:18;;:::i;:::-;8816:7;8806:8;8802:22;8799:55;;;8836:16;;;;8799:55;8915:22;;;;8875:15;;;;8677:270;;;8681:3;8531:422;;;;;:::o;8958:806::-;9007:5;9037:8;9027:80;;-1:-1:-1;9078:1:1;9092:5;;9027:80;9126:4;9116:76;;-1:-1:-1;9163:1:1;9177:5;;9116:76;9208:4;9226:1;9221:59;;;;9294:1;9289:130;;;;9201:218;;9221:59;9251:1;9242:10;;9265:5;;;9289:130;9326:3;9316:8;9313:17;9310:43;;;9333:18;;:::i;:::-;-1:-1:-1;;9389:1:1;9375:16;;9404:5;;9201:218;;9503:2;9493:8;9490:16;9484:3;9478:4;9475:13;9471:36;9465:2;9455:8;9452:16;9447:2;9441:4;9438:12;9434:35;9431:77;9428:159;;;-1:-1:-1;9540:19:1;;;9572:5;;9428:159;9619:34;9644:8;9638:4;9619:34;:::i;:::-;9689:6;9685:1;9681:6;9677:19;9668:7;9665:32;9662:58;;;9700:18;;:::i;:::-;9738:20;;8958:806;-1:-1:-1;;;8958:806:1:o;9769:140::-;9827:5;9856:47;9897:4;9887:8;9883:19;9877:4;9856:47;:::i;9914:168::-;9987:9;;;10018;;10035:15;;;10029:22;;10015:37;10005:71;;10056:18;;:::i;11605:251::-;11675:6;11728:2;11716:9;11707:7;11703:23;11699:32;11696:52;;;11744:1;11741;11734:12;11696:52;11776:9;11770:16;11795:31;11820:5;11795:31;:::i;12790:306::-;12878:6;12886;12894;12947:2;12935:9;12926:7;12922:23;12918:32;12915:52;;;12963:1;12960;12953:12;12915:52;12992:9;12986:16;12976:26;;13042:2;13031:9;13027:18;13021:25;13011:35;;13086:2;13075:9;13071:18;13065:25;13055:35;;12790:306;;;;;:::o;13101:128::-;13168:9;;;13189:11;;;13186:37;;;13203:18;;:::i;15206:125::-;15271:9;;;15292:10;;;15289:36;;;15305:18;;:::i;15691:135::-;15730:3;15751:17;;;15748:43;;15771:18;;:::i;:::-;-1:-1:-1;15818:1:1;15807:13;;15691:135::o;15831:127::-;15892:10;15887:3;15883:20;15880:1;15873:31;15923:4;15920:1;15913:15;15947:4;15944:1;15937:15;15963:461;16016:3;16054:5;16048:12;16081:6;16076:3;16069:19;16107:4;16136:2;16131:3;16127:12;16120:19;;16173:2;16166:5;16162:14;16194:1;16204:195;16218:6;16215:1;16212:13;16204:195;;;16283:13;;-1:-1:-1;;;;;16279:39:1;16267:52;;16339:12;;;;16374:15;;;;16315:1;16233:9;16204:195;;;-1:-1:-1;16415:3:1;;15963:461;-1:-1:-1;;;;;15963:461:1:o;16429:582::-;16728:6;16717:9;16710:25;16771:6;16766:2;16755:9;16751:18;16744:34;16814:3;16809:2;16798:9;16794:18;16787:31;16691:4;16835:57;16887:3;16876:9;16872:19;16864:6;16835:57;:::i;:::-;-1:-1:-1;;;;;16928:32:1;;;;16923:2;16908:18;;16901:60;-1:-1:-1;16992:3:1;16977:19;16970:35;16827:65;16429:582;-1:-1:-1;;;16429:582:1:o;17016:510::-;17287:6;17276:9;17269:25;17330:3;17325:2;17314:9;17310:18;17303:31;17250:4;17351:57;17403:3;17392:9;17388:19;17380:6;17351:57;:::i;:::-;-1:-1:-1;;;;;17444:32:1;;;;17439:2;17424:18;;17417:60;-1:-1:-1;17508:2:1;17493:18;17486:34;17343:65;17016:510;-1:-1:-1;;17016:510:1:o;17531:217::-;17571:1;17597;17587:132;;17641:10;17636:3;17632:20;17629:1;17622:31;17676:4;17673:1;17666:15;17704:4;17701:1;17694:15;17587:132;-1:-1:-1;17733:9:1;;17531:217::o

Swarm Source

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