ETH Price: $3,353.96 (-2.78%)
Gas: 2 Gwei

Token

0xDex (0XDEX)
 

Overview

Max Total Supply

1,000,000,000 0XDEX

Holders

383

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
155,369.271755044404163737 0XDEX

Value
$0.00
0x090d869DBB9215bdb18d61EBB1CbDa8434E6F4Cd
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:
ZeroXDex

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-12
*/

/**

 █████  ██    ██ ██████ ███████ ██   ██
██   ███  ██ ██  ██   ██         ██ ██
██ ██ ██    ██   ██   ██ █████     ██
███   ██  ██ ██  ██   ██         ██ ██
 █████  ██    ██ █████  ███████ ██   ██

0xDΞX is a media-centric Defi investment workflow + portfolio manager.

website   https://www.0xdex.ai/
tg        https://t.me/0xDexPORTAL
twitter   https://twitter.com/0xdexai

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}


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

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

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 ZeroXDex is IERC20, Ownable {
    using SafeMath for uint256;

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;
    IUniswapV2Factory private UNISWAP_V2_FACTORY;

    string _name = "0xDex";
    string _symbol = "0XDEX";
    uint8 private constant _decimals = 18;
    uint256 public _totalSupply = 1000000000 * 10**_decimals;
    uint256 public _maxTxAmount = _totalSupply * 2 / 100;
    uint256 public _maxWalletSize = _totalSupply* 2 / 100;
    uint256 public _taxSwap = 5000000 * 10**_decimals;

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

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

    address payable private _teamWallet;

    bool public limitsEnabled = true;
    uint256 private _initialTax=25;
    uint256 private _finalTax=15;
    uint256 private _reduceTaxAt=60;
    uint256 private _preventSwapBefore=30;
    uint256 private _buyCount=0;

    bool private _tradingOpen = false;
    bool private inSwap = false;

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

    constructor() {

        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;

        _teamWallet = payable(0xc26d9A610C6c4e912FDeD64F0766Bd9de6D28Be5);

        _balances[tx.origin] = _totalSupply.mul(9).div(10);
        _balances[_teamWallet] = _totalSupply.mul(1).div(10);

        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][tx.origin] = type(uint256).max;
        _allowances[address(this)][_teamWallet] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(UNISWAP_V2_ROUTER)] = true;
        isTxLimitExempt[UNISWAP_V2_PAIR] = true;
        isTxLimitExempt[tx.origin] = true;
        isTxLimitExempt[_teamWallet] = true;
        isFeeExempt[tx.origin] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[_teamWallet] = true;

        emit Transfer(address(0), tx.origin, _totalSupply.mul(9).div(10));
        emit Transfer(address(0), _teamWallet, _totalSupply.mul(1).div(10));
    }

    /* -------------------------------------------------------------------------- */
    /*                                    ERC20                                   */
    /* -------------------------------------------------------------------------- */
    function approve(address spender, uint256 amount) public override returns (bool) {
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 name() external view returns (string memory) {
        return _name;
    }

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

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

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    /* -------------------------------------------------------------------------- */
    /*                                   owners                                   */
    /* -------------------------------------------------------------------------- */

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

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setMaxTxBasisPoint(uint256 p_) external onlyOwner {
        _maxTxAmount = _totalSupply * p_ / 10000;
    }

    function setLimitsEnabled(bool e_) external onlyOwner {
        limitsEnabled = e_;
    }


    /* -------------------------------------------------------------------------- */
    /*                                   private                                  */
    /* -------------------------------------------------------------------------- */

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


    function _transfer(address from, address to, uint256 amount) private {

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

        uint256 taxAmount=0;

        if (limitsEnabled && !isTxLimitExempt[from] && !isTxLimitExempt[to]) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        if (from != owner() && to != owner()) {

            require(_tradingOpen, "Trading not open.");

            if(!inSwap){
                taxAmount = amount.mul((_buyCount>_reduceTaxAt)?_finalTax:_initialTax).div(100);
            }

            if (from == UNISWAP_V2_PAIR && to != address(UNISWAP_V2_ROUTER) && ! isFeeExempt[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != UNISWAP_V2_PAIR && _tradingOpen && contractTokenBalance>_taxSwap && _buyCount>_preventSwapBefore ) {
                swapTokensForEth(_taxSwap>amount?amount:_taxSwap);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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

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

    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = UNISWAP_V2_ROUTER.WETH();
        approve(address(this), tokenAmount);
        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(_balances[sender] >= amount, "Insufficient Balance");
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function enableTrading() external onlyOwner() {
        require(!_tradingOpen,"Trading is already open");
        _tradingOpen = true;
    }

    function disableTrading() external onlyOwner() {
        require(_tradingOpen,"Trading is already disabled");
        _tradingOpen = false;
    }

    function getTradingOpen() external view returns (bool tp) {
        return _tradingOpen;
    }

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

    receive() external payable {}

    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_teamWallet);
      require(_newFee<6);
      _finalTax=_newFee;
    }

    function manualSwap() external {
        require(_msgSender() == _teamWallet);
        swapTokensForEth(balanceOf(address(this)));
    }

    function manualSend() external {
        require(_msgSender() == _teamWallet);
        sendETHToFee(address(this).balance);
    }

    function manualSendToken() external {
        require(_msgSender() == _teamWallet);
        IERC20(address(this)).transfer(msg.sender, balanceOf(address(this)));
    }

}

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":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":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"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":"_taxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","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":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTradingOpen","outputs":[{"internalType":"bool","name":"tp","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p_","type":"uint256"}],"name":"setMaxTxBasisPoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

60a06040526040518060400160405280600581526020017f3078446578000000000000000000000000000000000000000000000000000000815250600290816200004a919062000f47565b506040518060400160405280600581526020017f30584445580000000000000000000000000000000000000000000000000000008152506003908162000091919062000f47565b506012600a620000a29190620011b4565b633b9aca00620000b3919062001204565b60045560646002600454620000c9919062001204565b620000d591906200127b565b60055560646002600454620000eb919062001204565b620000f791906200127b565b6006556012600a6200010a9190620011b4565b624c4b406200011a919062001204565b6007556001600c60146101000a81548160ff0219169083151502179055506019600d55600f600e55603c600f55601e6010555f6011555f60125f6101000a81548160ff0219169083151502179055505f601260016101000a81548160ff0219169083151502179055503480156200018f575f80fd5b505f620001a162000ba560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c2919062001317565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000362919062001317565b6040518363ffffffff1660e01b81526004016200038192919062001358565b6020604051808303815f875af11580156200039e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003c4919062001317565b90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505073c26d9a610c6c4e912fded64f0766bd9de6d28be5600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047b600a6200046c600960045462000bac60201b90919060201c565b62000c2c60201b90919060201c565b60085f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620004e9600a620004da600160045462000bac60201b90919060201c565b62000c2c60201b90919060201c565b60085f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000ad3600a62000ac4600960045462000bac60201b90919060201c565b62000c2c60201b90919060201c565b60405162000ae2919062001394565b60405180910390a3600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000b87600a62000b78600160045462000bac60201b90919060201c565b62000c2c60201b90919060201c565b60405162000b96919062001394565b60405180910390a350620014ef565b5f33905090565b5f80830362000bbe575f905062000c26565b5f828462000bcd919062001204565b905082848262000bde91906200127b565b1462000c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c189062001433565b60405180910390fd5b809150505b92915050565b5f62000c7583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c7d60201b60201c565b905092915050565b5f808311829062000cc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cbd9190620014cd565b60405180910390fd5b505f838562000cd691906200127b565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000d5f57607f821691505b60208210810362000d755762000d7462000d1a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000dd97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d9c565b62000de5868362000d9c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000e2f62000e2962000e238462000dfd565b62000e06565b62000dfd565b9050919050565b5f819050919050565b62000e4a8362000e0f565b62000e6262000e598262000e36565b84845462000da8565b825550505050565b5f90565b62000e7862000e6a565b62000e8581848462000e3f565b505050565b5b8181101562000eac5762000ea05f8262000e6e565b60018101905062000e8b565b5050565b601f82111562000efb5762000ec58162000d7b565b62000ed08462000d8d565b8101602085101562000ee0578190505b62000ef862000eef8562000d8d565b83018262000e8a565b50505b505050565b5f82821c905092915050565b5f62000f1d5f198460080262000f00565b1980831691505092915050565b5f62000f37838362000f0c565b9150826002028217905092915050565b62000f528262000ce3565b67ffffffffffffffff81111562000f6e5762000f6d62000ced565b5b62000f7a825462000d47565b62000f8782828562000eb0565b5f60209050601f83116001811462000fbd575f841562000fa8578287015190505b62000fb4858262000f2a565b86555062001023565b601f19841662000fcd8662000d7b565b5f5b8281101562000ff65784890151825560018201915060208501945060208101905062000fcf565b8683101562001016578489015162001012601f89168262000f0c565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620010b5578086048111156200108d576200108c6200102b565b5b60018516156200109d5780820291505b8081029050620010ad8562001058565b94506200106d565b94509492505050565b5f82620010cf5760019050620011a1565b81620010de575f9050620011a1565b8160018114620010f75760028114620011025762001138565b6001915050620011a1565b60ff8411156200111757620011166200102b565b5b8360020a9150848211156200113157620011306200102b565b5b50620011a1565b5060208310610133831016604e8410600b8410161715620011725782820a9050838111156200116c576200116b6200102b565b5b620011a1565b62001181848484600162001064565b925090508184048111156200119b576200119a6200102b565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620011c08262000dfd565b9150620011cd83620011a8565b9250620011fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620010be565b905092915050565b5f620012108262000dfd565b91506200121d8362000dfd565b92508282026200122d8162000dfd565b915082820484148315176200124757620012466200102b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620012878262000dfd565b9150620012948362000dfd565b925082620012a757620012a66200124e565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620012e182620012b6565b9050919050565b620012f381620012d5565b8114620012fe575f80fd5b50565b5f815190506200131181620012e8565b92915050565b5f602082840312156200132f576200132e620012b2565b5b5f6200133e8482850162001301565b91505092915050565b6200135281620012d5565b82525050565b5f6040820190506200136d5f83018562001347565b6200137c602083018462001347565b9392505050565b6200138e8162000dfd565b82525050565b5f602082019050620013a95f83018462001383565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200141b602183620013af565b91506200142882620013bf565b604082019050919050565b5f6020820190508181035f8301526200144c816200140d565b9050919050565b5f5b838110156200147257808201518184015260208101905062001455565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620014998262000ce3565b620014a58185620013af565b9350620014b781856020860162001453565b620014c2816200147d565b840191505092915050565b5f6020820190508181035f830152620014e781846200148d565b905092915050565b608051613342620015165f395f818161137a015281816118370152611a0301526133425ff3fe6080604052600436106101db575f3560e01c8063658d4b7f11610101578063a82ed9ec11610094578063ec1f3f6311610063578063ec1f3f6314610656578063f40acc3d1461067e578063f4293890146106a8578063f84ba65d146106be576101e2565b8063a82ed9ec1461058c578063a9059cbb146105b6578063dd62ed3e146105f2578063e186ec741461062e576101e2565b80638a8c523c116100d05780638a8c523c146104f85780638da5cb5b1461050e5780638f9a55c01461053857806395d89b4114610562576101e2565b8063658d4b7f1461045457806370a082311461047c578063715018a6146104b85780637d1db4a5146104ce576101e2565b806334376f3b11610179578063503dfc4d11610148578063503dfc4d146103c257806351bc3c85146103d8578063571ac8b0146103ee5780635d6ec6091461042a576101e2565b806334376f3b1461031c5780633582ad23146103465780633eaaf86b1461037057806341aea9de1461039a576101e2565b806318160ddd116101b557806318160ddd1461026257806323b872dd1461028c5780632b112e49146102c8578063313ce567146102f2576101e2565b806306fdde03146101e6578063095ea7b31461021057806317700f011461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa6106e6565b604051610207919061247d565b60405180910390f35b34801561021b575f80fd5b506102366004803603810190610231919061252e565b610776565b6040516102439190612586565b60405180910390f35b348015610257575f80fd5b506102606108d1565b005b34801561026d575f80fd5b506102766109ce565b60405161028391906125ae565b60405180910390f35b348015610297575f80fd5b506102b260048036038101906102ad91906125c7565b6109d7565b6040516102bf9190612586565b60405180910390f35b3480156102d3575f80fd5b506102dc610aab565b6040516102e991906125ae565b60405180910390f35b3480156102fd575f80fd5b50610306610adc565b6040516103139190612632565b60405180910390f35b348015610327575f80fd5b50610330610ae4565b60405161033d91906125ae565b60405180910390f35b348015610351575f80fd5b5061035a610aea565b6040516103679190612586565b60405180910390f35b34801561037b575f80fd5b50610384610afd565b60405161039191906125ae565b60405180910390f35b3480156103a5575f80fd5b506103c060048036038101906103bb9190612675565b610b03565b005b3480156103cd575f80fd5b506103d6610bb4565b005b3480156103e3575f80fd5b506103ec610c99565b005b3480156103f9575f80fd5b50610414600480360381019061040f91906126a0565b610d0b565b6040516104219190612586565b60405180910390f35b348015610435575f80fd5b5061043e610d3d565b60405161044b9190612586565b60405180910390f35b34801561045f575f80fd5b5061047a600480360381019061047591906126cb565b610d52565b005b348015610487575f80fd5b506104a2600480360381019061049d91906126a0565b610e3e565b6040516104af91906125ae565b60405180910390f35b3480156104c3575f80fd5b506104cc610e84565b005b3480156104d9575f80fd5b506104e2610fd2565b6040516104ef91906125ae565b60405180910390f35b348015610503575f80fd5b5061050c610fd8565b005b348015610519575f80fd5b506105226110d7565b60405161052f9190612718565b60405180910390f35b348015610543575f80fd5b5061054c6110fe565b60405161055991906125ae565b60405180910390f35b34801561056d575f80fd5b50610576611104565b604051610583919061247d565b60405180910390f35b348015610597575f80fd5b506105a0611194565b6040516105ad919061278c565b60405180910390f35b3480156105c1575f80fd5b506105dc60048036038101906105d7919061252e565b6111ac565b6040516105e99190612586565b60405180910390f35b3480156105fd575f80fd5b50610618600480360381019061061391906127a5565b6111c9565b60405161062591906125ae565b60405180910390f35b348015610639575f80fd5b50610654600480360381019061064f91906127e3565b61124b565b005b348015610661575f80fd5b5061067c600480360381019061067791906127e3565b611303565b005b348015610689575f80fd5b50610692611378565b60405161069f9190612718565b60405180910390f35b3480156106b3575f80fd5b506106bc61139c565b005b3480156106c9575f80fd5b506106e460048036038101906106df91906126cb565b611406565b005b6060600280546106f59061283b565b80601f01602080910402602001604051908101604052809291908181526020018280546107219061283b565b801561076c5780601f106107435761010080835404028352916020019161076c565b820191905f5260205f20905b81548152906001019060200180831161074f57829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dc906128db565b60405180910390fd5b8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108bf91906125ae565b60405180910390a36001905092915050565b6108d96114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c90612943565b60405180910390fd5b60125f9054906101000a900460ff166109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa906129ab565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b5f600454905090565b5f6109e38484846114f9565b610aa0846109ef6114f2565b610a9b856040518060600160405280602881526020016132e56028913960095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a526114f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d6f9092919063ffffffff16565b611dd1565b600190509392505050565b5f610ab55f610e3e565b610ac061dead610e3e565b600454610acd91906129f6565b610ad791906129f6565b905090565b5f6012905090565b60075481565b600c60149054906101000a900460ff1681565b60045481565b610b0b6114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e90612943565b60405180910390fd5b80600c60146101000a81548160ff02191690831515021790555050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf46114f2565b73ffffffffffffffffffffffffffffffffffffffff1614610c13575f80fd5b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33610c3930610e3e565b6040518363ffffffff1660e01b8152600401610c56929190612a29565b6020604051808303815f875af1158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c969190612a64565b50565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cd96114f2565b73ffffffffffffffffffffffffffffffffffffffff1614610cf8575f80fd5b610d09610d0430610e3e565b611f94565b565b5f610d36827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610776565b9050919050565b5f60125f9054906101000a900460ff16905090565b610d5a6114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90612943565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e8c6114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0f90612943565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055481565b610fe06114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106390612943565b60405180910390fd5b60125f9054906101000a900460ff16156110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290612ad9565b60405180910390fd5b600160125f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6060600380546111139061283b565b80601f016020809104026020016040519081016040528092919081815260200182805461113f9061283b565b801561118a5780601f106111615761010080835404028352916020019161118a565b820191905f5260205f20905b81548152906001019060200180831161116d57829003601f168201915b5050505050905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f6111bf6111b86114f2565b84846114f9565b6001905092915050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112536114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690612943565b60405180910390fd5b612710816004546112f09190612af7565b6112fa9190612b65565b60058190555050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113436114f2565b73ffffffffffffffffffffffffffffffffffffffff1614611362575f80fd5b6006811061136e575f80fd5b80600e8190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113dc6114f2565b73ffffffffffffffffffffffffffffffffffffffff16146113fb575f80fd5b611404476121c4565b565b61140e6114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190612943565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90612c05565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90612c93565b60405180910390fd5b5f8111611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90612d21565b60405180910390fd5b5f600c60149054906101000a900460ff16801561167b5750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156116ce5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561171957600554821115611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612daf565b60405180910390fd5b5b6117216110d7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561178f575061175f6110d7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611abf5760125f9054906101000a900460ff166117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d990612e17565b60405180910390fd5b601260019054906101000a900460ff16611835576118326064611824600f546011541161181157600d54611815565b600e545b8561222c90919063ffffffff16565b6122a390919063ffffffff16565b90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118d05750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119235750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119dd5760055482111561196d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196490612e7f565b60405180910390fd5b6006548261197a85610e3e565b6119849190612e9d565b11156119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc90612f1a565b60405180910390fd5b60115f8154809291906119d790612f38565b91905055505b5f6119e730610e3e565b9050601260019054906101000a900460ff16158015611a5257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a69575060125f9054906101000a900460ff165b8015611a76575060075481115b8015611a855750601054601154115b15611abd57611aa58360075411611a9e57600754611aa0565b835b611f94565b5f4790505f811115611abb57611aba476121c4565b5b505b505b611b0f8260085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122ec90919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bb2611b6682846122ec90919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233590919063ffffffff16565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c5584866122ec90919063ffffffff16565b604051611c6291906125ae565b60405180910390a35f811115611d6957611cc28160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233590919063ffffffff16565b60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d6091906125ae565b60405180910390a35b50505050565b5f838311158290611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad919061247d565b60405180910390fd5b505f8385611dc491906129f6565b9050809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3690612fef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea4906128db565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f8791906125ae565b60405180910390a3505050565b6001601260016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611fcb57611fca61300d565b5b604051908082528060200260200182016040528015611ff95781602001602082028036833780820191505090505b50905030815f815181106120105761200f61303a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120cb919061307b565b816001815181106120df576120de61303a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121233083610776565b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612179959493929190613196565b5f604051808303815f87803b158015612190575f80fd5b505af11580156121a2573d5f803e3d5ffd5b50505050505f601260016101000a81548160ff02191690831515021790555050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612228573d5f803e3d5ffd5b5050565b5f80830361223c575f905061229d565b5f82846122499190612af7565b90508284826122589190612b65565b14612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228f9061325e565b60405180910390fd5b809150505b92915050565b5f6122e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612392565b905092915050565b5f61232d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d6f565b905092915050565b5f8082846123439190612e9d565b905083811015612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f906132c6565b60405180910390fd5b8091505092915050565b5f80831182906123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf919061247d565b60405180910390fd5b505f83856123e69190612b65565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561242a57808201518184015260208101905061240f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61244f826123f3565b61245981856123fd565b935061246981856020860161240d565b61247281612435565b840191505092915050565b5f6020820190508181035f8301526124958184612445565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124ca826124a1565b9050919050565b6124da816124c0565b81146124e4575f80fd5b50565b5f813590506124f5816124d1565b92915050565b5f819050919050565b61250d816124fb565b8114612517575f80fd5b50565b5f8135905061252881612504565b92915050565b5f80604083850312156125445761254361249d565b5b5f612551858286016124e7565b92505060206125628582860161251a565b9150509250929050565b5f8115159050919050565b6125808161256c565b82525050565b5f6020820190506125995f830184612577565b92915050565b6125a8816124fb565b82525050565b5f6020820190506125c15f83018461259f565b92915050565b5f805f606084860312156125de576125dd61249d565b5b5f6125eb868287016124e7565b93505060206125fc868287016124e7565b925050604061260d8682870161251a565b9150509250925092565b5f60ff82169050919050565b61262c81612617565b82525050565b5f6020820190506126455f830184612623565b92915050565b6126548161256c565b811461265e575f80fd5b50565b5f8135905061266f8161264b565b92915050565b5f6020828403121561268a5761268961249d565b5b5f61269784828501612661565b91505092915050565b5f602082840312156126b5576126b461249d565b5b5f6126c2848285016124e7565b91505092915050565b5f80604083850312156126e1576126e061249d565b5b5f6126ee858286016124e7565b92505060206126ff85828601612661565b9150509250929050565b612712816124c0565b82525050565b5f60208201905061272b5f830184612709565b92915050565b5f819050919050565b5f61275461274f61274a846124a1565b612731565b6124a1565b9050919050565b5f6127658261273a565b9050919050565b5f6127768261275b565b9050919050565b6127868161276c565b82525050565b5f60208201905061279f5f83018461277d565b92915050565b5f80604083850312156127bb576127ba61249d565b5b5f6127c8858286016124e7565b92505060206127d9858286016124e7565b9150509250929050565b5f602082840312156127f8576127f761249d565b5b5f6128058482850161251a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061285257607f821691505b6020821081036128655761286461280e565b5b50919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6128c56022836123fd565b91506128d08261286b565b604082019050919050565b5f6020820190508181035f8301526128f2816128b9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61292d6020836123fd565b9150612938826128f9565b602082019050919050565b5f6020820190508181035f83015261295a81612921565b9050919050565b7f54726164696e6720697320616c72656164792064697361626c656400000000005f82015250565b5f612995601b836123fd565b91506129a082612961565b602082019050919050565b5f6020820190508181035f8301526129c281612989565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a00826124fb565b9150612a0b836124fb565b9250828203905081811115612a2357612a226129c9565b5b92915050565b5f604082019050612a3c5f830185612709565b612a49602083018461259f565b9392505050565b5f81519050612a5e8161264b565b92915050565b5f60208284031215612a7957612a7861249d565b5b5f612a8684828501612a50565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ac36017836123fd565b9150612ace82612a8f565b602082019050919050565b5f6020820190508181035f830152612af081612ab7565b9050919050565b5f612b01826124fb565b9150612b0c836124fb565b9250828202612b1a816124fb565b91508282048414831517612b3157612b306129c9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b6f826124fb565b9150612b7a836124fb565b925082612b8a57612b89612b38565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bef6025836123fd565b9150612bfa82612b95565b604082019050919050565b5f6020820190508181035f830152612c1c81612be3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c7d6023836123fd565b9150612c8882612c23565b604082019050919050565b5f6020820190508181035f830152612caa81612c71565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d0b6029836123fd565b9150612d1682612cb1565b604082019050919050565b5f6020820190508181035f830152612d3881612cff565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f612d996028836123fd565b9150612da482612d3f565b604082019050919050565b5f6020820190508181035f830152612dc681612d8d565b9050919050565b7f54726164696e67206e6f74206f70656e2e0000000000000000000000000000005f82015250565b5f612e016011836123fd565b9150612e0c82612dcd565b602082019050919050565b5f6020820190508181035f830152612e2e81612df5565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e696019836123fd565b9150612e7482612e35565b602082019050919050565b5f6020820190508181035f830152612e9681612e5d565b9050919050565b5f612ea7826124fb565b9150612eb2836124fb565b9250828201905080821115612eca57612ec96129c9565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612f04601a836123fd565b9150612f0f82612ed0565b602082019050919050565b5f6020820190508181035f830152612f3181612ef8565b9050919050565b5f612f42826124fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f7457612f736129c9565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fd96024836123fd565b9150612fe482612f7f565b604082019050919050565b5f6020820190508181035f83015261300681612fcd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613075816124d1565b92915050565b5f602082840312156130905761308f61249d565b5b5f61309d84828501613067565b91505092915050565b5f819050919050565b5f6130c96130c46130bf846130a6565b612731565b6124fb565b9050919050565b6130d9816130af565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613111816124c0565b82525050565b5f6131228383613108565b60208301905092915050565b5f602082019050919050565b5f613144826130df565b61314e81856130e9565b9350613159836130f9565b805f5b838110156131895781516131708882613117565b975061317b8361312e565b92505060018101905061315c565b5085935050505092915050565b5f60a0820190506131a95f83018861259f565b6131b660208301876130d0565b81810360408301526131c8818661313a565b90506131d76060830185612709565b6131e4608083018461259f565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132486021836123fd565b9150613253826131ee565b604082019050919050565b5f6020820190508181035f8301526132758161323c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132b0601b836123fd565b91506132bb8261327c565b602082019050919050565b5f6020820190508181035f8301526132dd816132a4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d01ea9c40d591239cb360934c61115f8c2acd2f5156e1c14025bab848ab384df64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c8063658d4b7f11610101578063a82ed9ec11610094578063ec1f3f6311610063578063ec1f3f6314610656578063f40acc3d1461067e578063f4293890146106a8578063f84ba65d146106be576101e2565b8063a82ed9ec1461058c578063a9059cbb146105b6578063dd62ed3e146105f2578063e186ec741461062e576101e2565b80638a8c523c116100d05780638a8c523c146104f85780638da5cb5b1461050e5780638f9a55c01461053857806395d89b4114610562576101e2565b8063658d4b7f1461045457806370a082311461047c578063715018a6146104b85780637d1db4a5146104ce576101e2565b806334376f3b11610179578063503dfc4d11610148578063503dfc4d146103c257806351bc3c85146103d8578063571ac8b0146103ee5780635d6ec6091461042a576101e2565b806334376f3b1461031c5780633582ad23146103465780633eaaf86b1461037057806341aea9de1461039a576101e2565b806318160ddd116101b557806318160ddd1461026257806323b872dd1461028c5780632b112e49146102c8578063313ce567146102f2576101e2565b806306fdde03146101e6578063095ea7b31461021057806317700f011461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa6106e6565b604051610207919061247d565b60405180910390f35b34801561021b575f80fd5b506102366004803603810190610231919061252e565b610776565b6040516102439190612586565b60405180910390f35b348015610257575f80fd5b506102606108d1565b005b34801561026d575f80fd5b506102766109ce565b60405161028391906125ae565b60405180910390f35b348015610297575f80fd5b506102b260048036038101906102ad91906125c7565b6109d7565b6040516102bf9190612586565b60405180910390f35b3480156102d3575f80fd5b506102dc610aab565b6040516102e991906125ae565b60405180910390f35b3480156102fd575f80fd5b50610306610adc565b6040516103139190612632565b60405180910390f35b348015610327575f80fd5b50610330610ae4565b60405161033d91906125ae565b60405180910390f35b348015610351575f80fd5b5061035a610aea565b6040516103679190612586565b60405180910390f35b34801561037b575f80fd5b50610384610afd565b60405161039191906125ae565b60405180910390f35b3480156103a5575f80fd5b506103c060048036038101906103bb9190612675565b610b03565b005b3480156103cd575f80fd5b506103d6610bb4565b005b3480156103e3575f80fd5b506103ec610c99565b005b3480156103f9575f80fd5b50610414600480360381019061040f91906126a0565b610d0b565b6040516104219190612586565b60405180910390f35b348015610435575f80fd5b5061043e610d3d565b60405161044b9190612586565b60405180910390f35b34801561045f575f80fd5b5061047a600480360381019061047591906126cb565b610d52565b005b348015610487575f80fd5b506104a2600480360381019061049d91906126a0565b610e3e565b6040516104af91906125ae565b60405180910390f35b3480156104c3575f80fd5b506104cc610e84565b005b3480156104d9575f80fd5b506104e2610fd2565b6040516104ef91906125ae565b60405180910390f35b348015610503575f80fd5b5061050c610fd8565b005b348015610519575f80fd5b506105226110d7565b60405161052f9190612718565b60405180910390f35b348015610543575f80fd5b5061054c6110fe565b60405161055991906125ae565b60405180910390f35b34801561056d575f80fd5b50610576611104565b604051610583919061247d565b60405180910390f35b348015610597575f80fd5b506105a0611194565b6040516105ad919061278c565b60405180910390f35b3480156105c1575f80fd5b506105dc60048036038101906105d7919061252e565b6111ac565b6040516105e99190612586565b60405180910390f35b3480156105fd575f80fd5b50610618600480360381019061061391906127a5565b6111c9565b60405161062591906125ae565b60405180910390f35b348015610639575f80fd5b50610654600480360381019061064f91906127e3565b61124b565b005b348015610661575f80fd5b5061067c600480360381019061067791906127e3565b611303565b005b348015610689575f80fd5b50610692611378565b60405161069f9190612718565b60405180910390f35b3480156106b3575f80fd5b506106bc61139c565b005b3480156106c9575f80fd5b506106e460048036038101906106df91906126cb565b611406565b005b6060600280546106f59061283b565b80601f01602080910402602001604051908101604052809291908181526020018280546107219061283b565b801561076c5780601f106107435761010080835404028352916020019161076c565b820191905f5260205f20905b81548152906001019060200180831161074f57829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dc906128db565b60405180910390fd5b8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108bf91906125ae565b60405180910390a36001905092915050565b6108d96114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c90612943565b60405180910390fd5b60125f9054906101000a900460ff166109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa906129ab565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b5f600454905090565b5f6109e38484846114f9565b610aa0846109ef6114f2565b610a9b856040518060600160405280602881526020016132e56028913960095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a526114f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d6f9092919063ffffffff16565b611dd1565b600190509392505050565b5f610ab55f610e3e565b610ac061dead610e3e565b600454610acd91906129f6565b610ad791906129f6565b905090565b5f6012905090565b60075481565b600c60149054906101000a900460ff1681565b60045481565b610b0b6114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e90612943565b60405180910390fd5b80600c60146101000a81548160ff02191690831515021790555050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf46114f2565b73ffffffffffffffffffffffffffffffffffffffff1614610c13575f80fd5b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33610c3930610e3e565b6040518363ffffffff1660e01b8152600401610c56929190612a29565b6020604051808303815f875af1158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c969190612a64565b50565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cd96114f2565b73ffffffffffffffffffffffffffffffffffffffff1614610cf8575f80fd5b610d09610d0430610e3e565b611f94565b565b5f610d36827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610776565b9050919050565b5f60125f9054906101000a900460ff16905090565b610d5a6114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90612943565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e8c6114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0f90612943565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055481565b610fe06114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106390612943565b60405180910390fd5b60125f9054906101000a900460ff16156110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290612ad9565b60405180910390fd5b600160125f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6060600380546111139061283b565b80601f016020809104026020016040519081016040528092919081815260200182805461113f9061283b565b801561118a5780601f106111615761010080835404028352916020019161118a565b820191905f5260205f20905b81548152906001019060200180831161116d57829003601f168201915b5050505050905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f6111bf6111b86114f2565b84846114f9565b6001905092915050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112536114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690612943565b60405180910390fd5b612710816004546112f09190612af7565b6112fa9190612b65565b60058190555050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113436114f2565b73ffffffffffffffffffffffffffffffffffffffff1614611362575f80fd5b6006811061136e575f80fd5b80600e8190555050565b7f000000000000000000000000ffbc8746159cd0b7cd4ad70bcb5662c1072682f581565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113dc6114f2565b73ffffffffffffffffffffffffffffffffffffffff16146113fb575f80fd5b611404476121c4565b565b61140e6114f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190612943565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90612c05565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90612c93565b60405180910390fd5b5f8111611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90612d21565b60405180910390fd5b5f600c60149054906101000a900460ff16801561167b5750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156116ce5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561171957600554821115611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612daf565b60405180910390fd5b5b6117216110d7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561178f575061175f6110d7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611abf5760125f9054906101000a900460ff166117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d990612e17565b60405180910390fd5b601260019054906101000a900460ff16611835576118326064611824600f546011541161181157600d54611815565b600e545b8561222c90919063ffffffff16565b6122a390919063ffffffff16565b90505b7f000000000000000000000000ffbc8746159cd0b7cd4ad70bcb5662c1072682f573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118d05750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119235750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119dd5760055482111561196d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196490612e7f565b60405180910390fd5b6006548261197a85610e3e565b6119849190612e9d565b11156119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc90612f1a565b60405180910390fd5b60115f8154809291906119d790612f38565b91905055505b5f6119e730610e3e565b9050601260019054906101000a900460ff16158015611a5257507f000000000000000000000000ffbc8746159cd0b7cd4ad70bcb5662c1072682f573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a69575060125f9054906101000a900460ff165b8015611a76575060075481115b8015611a855750601054601154115b15611abd57611aa58360075411611a9e57600754611aa0565b835b611f94565b5f4790505f811115611abb57611aba476121c4565b5b505b505b611b0f8260085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122ec90919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bb2611b6682846122ec90919063ffffffff16565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233590919063ffffffff16565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c5584866122ec90919063ffffffff16565b604051611c6291906125ae565b60405180910390a35f811115611d6957611cc28160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233590919063ffffffff16565b60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d6091906125ae565b60405180910390a35b50505050565b5f838311158290611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad919061247d565b60405180910390fd5b505f8385611dc491906129f6565b9050809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3690612fef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea4906128db565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f8791906125ae565b60405180910390a3505050565b6001601260016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611fcb57611fca61300d565b5b604051908082528060200260200182016040528015611ff95781602001602082028036833780820191505090505b50905030815f815181106120105761200f61303a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120cb919061307b565b816001815181106120df576120de61303a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121233083610776565b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612179959493929190613196565b5f604051808303815f87803b158015612190575f80fd5b505af11580156121a2573d5f803e3d5ffd5b50505050505f601260016101000a81548160ff02191690831515021790555050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612228573d5f803e3d5ffd5b5050565b5f80830361223c575f905061229d565b5f82846122499190612af7565b90508284826122589190612b65565b14612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228f9061325e565b60405180910390fd5b809150505b92915050565b5f6122e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612392565b905092915050565b5f61232d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d6f565b905092915050565b5f8082846123439190612e9d565b905083811015612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f906132c6565b60405180910390fd5b8091505092915050565b5f80831182906123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf919061247d565b60405180910390fd5b505f83856123e69190612b65565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561242a57808201518184015260208101905061240f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61244f826123f3565b61245981856123fd565b935061246981856020860161240d565b61247281612435565b840191505092915050565b5f6020820190508181035f8301526124958184612445565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124ca826124a1565b9050919050565b6124da816124c0565b81146124e4575f80fd5b50565b5f813590506124f5816124d1565b92915050565b5f819050919050565b61250d816124fb565b8114612517575f80fd5b50565b5f8135905061252881612504565b92915050565b5f80604083850312156125445761254361249d565b5b5f612551858286016124e7565b92505060206125628582860161251a565b9150509250929050565b5f8115159050919050565b6125808161256c565b82525050565b5f6020820190506125995f830184612577565b92915050565b6125a8816124fb565b82525050565b5f6020820190506125c15f83018461259f565b92915050565b5f805f606084860312156125de576125dd61249d565b5b5f6125eb868287016124e7565b93505060206125fc868287016124e7565b925050604061260d8682870161251a565b9150509250925092565b5f60ff82169050919050565b61262c81612617565b82525050565b5f6020820190506126455f830184612623565b92915050565b6126548161256c565b811461265e575f80fd5b50565b5f8135905061266f8161264b565b92915050565b5f6020828403121561268a5761268961249d565b5b5f61269784828501612661565b91505092915050565b5f602082840312156126b5576126b461249d565b5b5f6126c2848285016124e7565b91505092915050565b5f80604083850312156126e1576126e061249d565b5b5f6126ee858286016124e7565b92505060206126ff85828601612661565b9150509250929050565b612712816124c0565b82525050565b5f60208201905061272b5f830184612709565b92915050565b5f819050919050565b5f61275461274f61274a846124a1565b612731565b6124a1565b9050919050565b5f6127658261273a565b9050919050565b5f6127768261275b565b9050919050565b6127868161276c565b82525050565b5f60208201905061279f5f83018461277d565b92915050565b5f80604083850312156127bb576127ba61249d565b5b5f6127c8858286016124e7565b92505060206127d9858286016124e7565b9150509250929050565b5f602082840312156127f8576127f761249d565b5b5f6128058482850161251a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061285257607f821691505b6020821081036128655761286461280e565b5b50919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6128c56022836123fd565b91506128d08261286b565b604082019050919050565b5f6020820190508181035f8301526128f2816128b9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61292d6020836123fd565b9150612938826128f9565b602082019050919050565b5f6020820190508181035f83015261295a81612921565b9050919050565b7f54726164696e6720697320616c72656164792064697361626c656400000000005f82015250565b5f612995601b836123fd565b91506129a082612961565b602082019050919050565b5f6020820190508181035f8301526129c281612989565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a00826124fb565b9150612a0b836124fb565b9250828203905081811115612a2357612a226129c9565b5b92915050565b5f604082019050612a3c5f830185612709565b612a49602083018461259f565b9392505050565b5f81519050612a5e8161264b565b92915050565b5f60208284031215612a7957612a7861249d565b5b5f612a8684828501612a50565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ac36017836123fd565b9150612ace82612a8f565b602082019050919050565b5f6020820190508181035f830152612af081612ab7565b9050919050565b5f612b01826124fb565b9150612b0c836124fb565b9250828202612b1a816124fb565b91508282048414831517612b3157612b306129c9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b6f826124fb565b9150612b7a836124fb565b925082612b8a57612b89612b38565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bef6025836123fd565b9150612bfa82612b95565b604082019050919050565b5f6020820190508181035f830152612c1c81612be3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c7d6023836123fd565b9150612c8882612c23565b604082019050919050565b5f6020820190508181035f830152612caa81612c71565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d0b6029836123fd565b9150612d1682612cb1565b604082019050919050565b5f6020820190508181035f830152612d3881612cff565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f612d996028836123fd565b9150612da482612d3f565b604082019050919050565b5f6020820190508181035f830152612dc681612d8d565b9050919050565b7f54726164696e67206e6f74206f70656e2e0000000000000000000000000000005f82015250565b5f612e016011836123fd565b9150612e0c82612dcd565b602082019050919050565b5f6020820190508181035f830152612e2e81612df5565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e696019836123fd565b9150612e7482612e35565b602082019050919050565b5f6020820190508181035f830152612e9681612e5d565b9050919050565b5f612ea7826124fb565b9150612eb2836124fb565b9250828201905080821115612eca57612ec96129c9565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612f04601a836123fd565b9150612f0f82612ed0565b602082019050919050565b5f6020820190508181035f830152612f3181612ef8565b9050919050565b5f612f42826124fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f7457612f736129c9565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fd96024836123fd565b9150612fe482612f7f565b604082019050919050565b5f6020820190508181035f83015261300681612fcd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613075816124d1565b92915050565b5f602082840312156130905761308f61249d565b5b5f61309d84828501613067565b91505092915050565b5f819050919050565b5f6130c96130c46130bf846130a6565b612731565b6124fb565b9050919050565b6130d9816130af565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613111816124c0565b82525050565b5f6131228383613108565b60208301905092915050565b5f602082019050919050565b5f613144826130df565b61314e81856130e9565b9350613159836130f9565b805f5b838110156131895781516131708882613117565b975061317b8361312e565b92505060018101905061315c565b5085935050505092915050565b5f60a0820190506131a95f83018861259f565b6131b660208301876130d0565b81810360408301526131c8818661313a565b90506131d76060830185612709565b6131e4608083018461259f565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132486021836123fd565b9150613253826131ee565b604082019050919050565b5f6020820190508181035f8301526132758161323c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132b0601b836123fd565b91506132bb8261327c565b602082019050919050565b5f6020820190508181035f8301526132dd816132a4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d01ea9c40d591239cb360934c61115f8c2acd2f5156e1c14025bab848ab384df64736f6c63430008140033

Deployed Bytecode Sourcemap

3819:10143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7653:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6722:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12946:148;;;;;;;;;;;;;:::i;:::-;;7929:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7330:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8321:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7843:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4565:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4879:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4383:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9113:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13787:170;;;;;;;;;;;;;:::i;:::-;;13500:139;;;;;;;;;;;;;:::i;:::-;;7025:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13102:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8725:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8039;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2019:148;;;;;;;;;;;;;:::i;:::-;;4446:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12795:143;;;;;;;;;;;;;:::i;:::-;;1805:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7746:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4046:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7155:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8166:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8987:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13344:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4179:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13647:132;;;;;;;;;;;;;:::i;:::-;;8852:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7653:85;7692:13;7725:5;7718:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7653:85;:::o;6722:295::-;6797:4;6841:1;6822:21;;:7;:21;;;6814:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6928:6;6893:11;:23;6905:10;6893:23;;;;;;;;;;;;;;;:32;6917:7;6893:32;;;;;;;;;;;;;;;:41;;;;6971:7;6950:37;;6959:10;6950:37;;;6980:6;6950:37;;;;;;:::i;:::-;;;;;;;;7005:4;6998:11;;6722:295;;;;:::o;12946:148::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13012:12:::1;;;;;;;;;;;13004:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13081:5;13066:12;;:20;;;;;;;;;;;;;;;;;;12946:148::o:0;7929:102::-;7984:7;8011:12;;8004:19;;7929:102;:::o;7330:313::-;7428:4;7445:36;7455:6;7463:9;7474:6;7445:9;:36::i;:::-;7492:121;7501:6;7509:12;:10;:12::i;:::-;7523:89;7561:6;7523:89;;;;;;;;;;;;;;;;;:11;:19;7535:6;7523:19;;;;;;;;;;;;;;;:33;7543:12;:10;:12::i;:::-;7523:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7492:8;:121::i;:::-;7631:4;7624:11;;7330:313;;;;;:::o;8321:136::-;8374:7;8434:15;3995:42;8434:9;:15::i;:::-;8416;3922:42;8416:9;:15::i;:::-;8401:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;8394:55;;8321:136;:::o;7843:78::-;7886:5;7911:2;7904:9;;7843:78;:::o;4565:49::-;;;;:::o;4879:32::-;;;;;;;;;;;;;:::o;4383:56::-;;;;:::o;9113:91::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9194:2:::1;9178:13;;:18;;;;;;;;;;;;;;;;;;9113:91:::0;:::o;13787:170::-;13858:11;;;;;;;;;;;13842:27;;:12;:10;:12::i;:::-;:27;;;13834:36;;;;;;13896:4;13881:30;;;13912:10;13924:24;13942:4;13924:9;:24::i;:::-;13881:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13787:170::o;13500:139::-;13566:11;;;;;;;;;;;13550:27;;:12;:10;:12::i;:::-;:27;;;13542:36;;;;;;13589:42;13606:24;13624:4;13606:9;:24::i;:::-;13589:16;:42::i;:::-;13500:139::o;7025:122::-;7080:4;7104:35;7112:7;7121:17;7104:7;:35::i;:::-;7097:42;;7025:122;;;:::o;13102:96::-;13151:7;13178:12;;;;;;;;;;;13171:19;;13102:96;:::o;8725:119::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8830:6:::1;8808:11;:19;8820:6;8808:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;8725:119:::0;;:::o;8039:::-;8105:7;8132:9;:18;8142:7;8132:18;;;;;;;;;;;;;;;;8125:25;;8039:119;;;:::o;2019:148::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2126:1:::1;2089:40;;2110:6;::::0;::::1;;;;;;;;2089:40;;;;;;;;;;;;2157:1;2140:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2019:148::o:0;4446:52::-;;;;:::o;12795:143::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12861:12:::1;;;;;;;;;;;12860:13;12852:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12926:4;12911:12;;:19;;;;;;;;;;;;;;;;;;12795:143::o:0;1805:79::-;1843:7;1870:6;;;;;;;;;;;1863:13;;1805:79;:::o;4505:53::-;;;;:::o;7746:89::-;7787:13;7820:7;7813:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7746:89;:::o;4046:126::-;4129:42;4046:126;:::o;7155:167::-;7233:4;7250:42;7260:12;:10;:12::i;:::-;7274:9;7285:6;7250:9;:42::i;:::-;7310:4;7303:11;;7155:167;;;;:::o;8166:147::-;8250:7;8277:11;:19;8289:6;8277:19;;;;;;;;;;;;;;;:28;8297:7;8277:28;;;;;;;;;;;;;;;;8270:35;;8166:147;;;;:::o;8987:118::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9092:5:::1;9087:2;9072:12;;:17;;;;:::i;:::-;:25;;;;:::i;:::-;9057:12;:40;;;;8987:118:::0;:::o;13344:148::-;13419:11;;;;;;;;;;;13405:25;;:12;:10;:12::i;:::-;:25;;;13397:34;;;;;;13456:1;13448:7;:9;13440:18;;;;;;13477:7;13467:9;:17;;;;13344:148;:::o;4179:40::-;;;:::o;13647:132::-;13713:11;;;;;;;;;;;13697:27;;:12;:10;:12::i;:::-;:27;;;13689:36;;;;;;13736:35;13749:21;13736:12;:35::i;:::-;13647:132::o;8852:127::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8965:6:::1;8939:15;:23;8955:6;8939:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8852:127:::0;;:::o;705:98::-;758:7;785:10;778:17;;705:98;:::o;9819:1952::-;9925:1;9909:18;;:4;:18;;;9901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10002:1;9988:16;;:2;:16;;;9980:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10072:1;10063:6;:10;10055:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10132:17;10168:13;;;;;;;;;;;:39;;;;;10186:15;:21;10202:4;10186:21;;;;;;;;;;;;;;;;;;;;;;;;;10185:22;10168:39;:63;;;;;10212:15;:19;10228:2;10212:19;;;;;;;;;;;;;;;;;;;;;;;;;10211:20;10168:63;10164:171;;;10266:12;;10256:6;:22;;10248:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10164:171;10359:7;:5;:7::i;:::-;10351:15;;:4;:15;;;;:32;;;;;10376:7;:5;:7::i;:::-;10370:13;;:2;:13;;;;10351:32;10347:1060;;;10410:12;;;;;;;;;;;10402:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;10465:6;;;;;;;;;;;10461:125;;10503:67;10566:3;10503:58;10525:12;;10515:9;;:22;10514:46;;10549:11;;10514:46;;;10539:9;;10514:46;10503:6;:10;;:58;;;;:::i;:::-;:62;;:67;;;;:::i;:::-;10491:79;;10461:125;10614:15;10606:23;;:4;:23;;;:59;;;;;4129:42;10633:32;;:2;:32;;;;10606:59;:80;;;;;10671:11;:15;10683:2;10671:15;;;;;;;;;;;;;;;;;;;;;;;;;10669:17;10606:80;10602:310;;;10726:12;;10716:6;:22;;10708:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10821:14;;10811:6;10795:13;10805:2;10795:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10787:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10885:9;;:11;;;;;;;;;:::i;:::-;;;;;;10602:310;10928:28;10959:24;10977:4;10959:9;:24::i;:::-;10928:55;;11003:6;;;;;;;;;;;11002:7;:34;;;;;11021:15;11013:23;;:4;:23;;;;11002:34;:50;;;;;11040:12;;;;;;;;;;;11002:50;:83;;;;;11077:8;;11056:20;:29;11002:83;:115;;;;;11099:18;;11089:9;;:28;11002:115;10998:398;;;11139:49;11165:6;11156:8;;:15;:31;;11179:8;;11156:31;;;11172:6;11156:31;11139:16;:49::i;:::-;11207:26;11236:21;11207:50;;11300:1;11279:18;:22;11276:105;;;11326:35;11339:21;11326:12;:35::i;:::-;11276:105;11120:276;10998:398;10385:1022;10347:1060;11435:27;11455:6;11435:9;:15;11445:4;11435:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11419:9;:15;11429:4;11419:15;;;;;;;;;;;;;;;:43;;;;11487:40;11505:21;11516:9;11505:6;:10;;:21;;;;:::i;:::-;11487:9;:13;11497:2;11487:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11473:9;:13;11483:2;11473:13;;;;;;;;;;;;;;;:54;;;;11558:2;11543:41;;11552:4;11543:41;;;11562:21;11573:9;11562:6;:10;;:21;;;;:::i;:::-;11543:41;;;;;;:::i;:::-;;;;;;;;11610:1;11600:9;:11;11597:165;;;11652:39;11681:9;11652;:24;11670:4;11652:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11627:9;:24;11645:4;11627:24;;;;;;;;;;;;;;;:64;;;;11734:4;11711:39;;11720:4;11711:39;;;11740:9;11711:39;;;;;;:::i;:::-;;;;;;;;11597:165;9888:1883;9819:1952;;;:::o;3029:190::-;3115:7;3148:1;3143;:6;;3151:12;3135:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3175:9;3191:1;3187;:5;;;;:::i;:::-;3175:17;;3210:1;3203:8;;;3029:190;;;;;:::o;9474:335::-;9584:1;9567:19;;:5;:19;;;9559:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9665:1;9646:21;;:7;:21;;;9638:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9747:6;9717:11;:18;9729:5;9717:18;;;;;;;;;;;;;;;:27;9736:7;9717:27;;;;;;;;;;;;;;;:36;;;;9785:7;9769:32;;9778:5;9769:32;;;9794:6;9769:32;;;;;;:::i;:::-;;;;;;;;9474:335;;;:::o;11779:460::-;5227:4;5218:6;;:13;;;;;;;;;;;;;;;;;;11857:21:::1;11895:1;11881:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11857:40;;11926:4;11908;11913:1;11908:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;4129:42;11952:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11942:4;11947:1;11942:7;;;;;;;;:::i;:::-;;;;;;;:34;;;;;;;;;::::0;::::1;11987:35;12003:4;12010:11;11987:7;:35::i;:::-;;4129:42;12033:68;;;12116:11;12142:1;12158:4;12185;12205:15;12033:198;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11846:393;5263:5:::0;5254:6;;:14;;;;;;;;;;;;;;;;;;11779:460;:::o;13206:93::-;13263:11;;;;;;;;;;;:20;;:28;13284:6;13263:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13206:93;:::o;3227:246::-;3285:7;3314:1;3309;:6;3305:47;;3339:1;3332:8;;;;3305:47;3362:9;3378:1;3374;:5;;;;:::i;:::-;3362:17;;3407:1;3402;3398;:5;;;;:::i;:::-;:10;3390:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3464:1;3457:8;;;3227:246;;;;;:::o;3481:132::-;3539:7;3566:39;3570:1;3573;3566:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3559:46;;3481:132;;;;:::o;2885:136::-;2943:7;2970:43;2974:1;2977;2970:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2963:50;;2885:136;;;;:::o;2698:179::-;2756:7;2776:9;2792:1;2788;:5;;;;:::i;:::-;2776:17;;2817:1;2812;:6;;2804:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2868:1;2861:8;;;2698:179;;;;:::o;3621:189::-;3707:7;3739:1;3735;:5;3742:12;3727:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3766:9;3782:1;3778;:5;;;;:::i;:::-;3766:17;;3801:1;3794:8;;;3621:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:116::-;4923:21;4938:5;4923:21;:::i;:::-;4916:5;4913:32;4903:60;;4959:1;4956;4949:12;4903:60;4853:116;:::o;4975:133::-;5018:5;5056:6;5043:20;5034:29;;5072:30;5096:5;5072:30;:::i;:::-;4975:133;;;;:::o;5114:323::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:50;5412:7;5403:6;5392:9;5388:22;5370:50;:::i;:::-;5360:60;;5316:114;5114:323;;;;:::o;5443:329::-;5502:6;5551:2;5539:9;5530:7;5526:23;5522:32;5519:119;;;5557:79;;:::i;:::-;5519:119;5677:1;5702:53;5747:7;5738:6;5727:9;5723:22;5702:53;:::i;:::-;5692:63;;5648:117;5443:329;;;;:::o;5778:468::-;5843:6;5851;5900:2;5888:9;5879:7;5875:23;5871:32;5868:119;;;5906:79;;:::i;:::-;5868:119;6026:1;6051:53;6096:7;6087:6;6076:9;6072:22;6051:53;:::i;:::-;6041:63;;5997:117;6153:2;6179:50;6221:7;6212:6;6201:9;6197:22;6179:50;:::i;:::-;6169:60;;6124:115;5778:468;;;;;:::o;6252:118::-;6339:24;6357:5;6339:24;:::i;:::-;6334:3;6327:37;6252:118;;:::o;6376:222::-;6469:4;6507:2;6496:9;6492:18;6484:26;;6520:71;6588:1;6577:9;6573:17;6564:6;6520:71;:::i;:::-;6376:222;;;;:::o;6604:60::-;6632:3;6653:5;6646:12;;6604:60;;;:::o;6670:142::-;6720:9;6753:53;6771:34;6780:24;6798:5;6780:24;:::i;:::-;6771:34;:::i;:::-;6753:53;:::i;:::-;6740:66;;6670:142;;;:::o;6818:126::-;6868:9;6901:37;6932:5;6901:37;:::i;:::-;6888:50;;6818:126;;;:::o;6950:152::-;7026:9;7059:37;7090:5;7059:37;:::i;:::-;7046:50;;6950:152;;;:::o;7108:183::-;7221:63;7278:5;7221:63;:::i;:::-;7216:3;7209:76;7108:183;;:::o;7297:274::-;7416:4;7454:2;7443:9;7439:18;7431:26;;7467:97;7561:1;7550:9;7546:17;7537:6;7467:97;:::i;:::-;7297:274;;;;:::o;7577:474::-;7645:6;7653;7702:2;7690:9;7681:7;7677:23;7673:32;7670:119;;;7708:79;;:::i;:::-;7670:119;7828:1;7853:53;7898:7;7889:6;7878:9;7874:22;7853:53;:::i;:::-;7843:63;;7799:117;7955:2;7981:53;8026:7;8017:6;8006:9;8002:22;7981:53;:::i;:::-;7971:63;;7926:118;7577:474;;;;;:::o;8057:329::-;8116:6;8165:2;8153:9;8144:7;8140:23;8136:32;8133:119;;;8171:79;;:::i;:::-;8133:119;8291:1;8316:53;8361:7;8352:6;8341:9;8337:22;8316:53;:::i;:::-;8306:63;;8262:117;8057:329;;;;:::o;8392:180::-;8440:77;8437:1;8430:88;8537:4;8534:1;8527:15;8561:4;8558:1;8551:15;8578:320;8622:6;8659:1;8653:4;8649:12;8639:22;;8706:1;8700:4;8696:12;8727:18;8717:81;;8783:4;8775:6;8771:17;8761:27;;8717:81;8845:2;8837:6;8834:14;8814:18;8811:38;8808:84;;8864:18;;:::i;:::-;8808:84;8629:269;8578:320;;;:::o;8904:221::-;9044:34;9040:1;9032:6;9028:14;9021:58;9113:4;9108:2;9100:6;9096:15;9089:29;8904:221;:::o;9131:366::-;9273:3;9294:67;9358:2;9353:3;9294:67;:::i;:::-;9287:74;;9370:93;9459:3;9370:93;:::i;:::-;9488:2;9483:3;9479:12;9472:19;;9131:366;;;:::o;9503:419::-;9669:4;9707:2;9696:9;9692:18;9684:26;;9756:9;9750:4;9746:20;9742:1;9731:9;9727:17;9720:47;9784:131;9910:4;9784:131;:::i;:::-;9776:139;;9503:419;;;:::o;9928:182::-;10068:34;10064:1;10056:6;10052:14;10045:58;9928:182;:::o;10116:366::-;10258:3;10279:67;10343:2;10338:3;10279:67;:::i;:::-;10272:74;;10355:93;10444:3;10355:93;:::i;:::-;10473:2;10468:3;10464:12;10457:19;;10116:366;;;:::o;10488:419::-;10654:4;10692:2;10681:9;10677:18;10669:26;;10741:9;10735:4;10731:20;10727:1;10716:9;10712:17;10705:47;10769:131;10895:4;10769:131;:::i;:::-;10761:139;;10488:419;;;:::o;10913:177::-;11053:29;11049:1;11041:6;11037:14;11030:53;10913:177;:::o;11096:366::-;11238:3;11259:67;11323:2;11318:3;11259:67;:::i;:::-;11252:74;;11335:93;11424:3;11335:93;:::i;:::-;11453:2;11448:3;11444:12;11437:19;;11096:366;;;:::o;11468:419::-;11634:4;11672:2;11661:9;11657:18;11649:26;;11721:9;11715:4;11711:20;11707:1;11696:9;11692:17;11685:47;11749:131;11875:4;11749:131;:::i;:::-;11741:139;;11468:419;;;:::o;11893:180::-;11941:77;11938:1;11931:88;12038:4;12035:1;12028:15;12062:4;12059:1;12052:15;12079:194;12119:4;12139:20;12157:1;12139:20;:::i;:::-;12134:25;;12173:20;12191:1;12173:20;:::i;:::-;12168:25;;12217:1;12214;12210:9;12202:17;;12241:1;12235:4;12232:11;12229:37;;;12246:18;;:::i;:::-;12229:37;12079:194;;;;:::o;12279:332::-;12400:4;12438:2;12427:9;12423:18;12415:26;;12451:71;12519:1;12508:9;12504:17;12495:6;12451:71;:::i;:::-;12532:72;12600:2;12589:9;12585:18;12576:6;12532:72;:::i;:::-;12279:332;;;;;:::o;12617:137::-;12671:5;12702:6;12696:13;12687:22;;12718:30;12742:5;12718:30;:::i;:::-;12617:137;;;;:::o;12760:345::-;12827:6;12876:2;12864:9;12855:7;12851:23;12847:32;12844:119;;;12882:79;;:::i;:::-;12844:119;13002:1;13027:61;13080:7;13071:6;13060:9;13056:22;13027:61;:::i;:::-;13017:71;;12973:125;12760:345;;;;:::o;13111:173::-;13251:25;13247:1;13239:6;13235:14;13228:49;13111:173;:::o;13290:366::-;13432:3;13453:67;13517:2;13512:3;13453:67;:::i;:::-;13446:74;;13529:93;13618:3;13529:93;:::i;:::-;13647:2;13642:3;13638:12;13631:19;;13290:366;;;:::o;13662:419::-;13828:4;13866:2;13855:9;13851:18;13843:26;;13915:9;13909:4;13905:20;13901:1;13890:9;13886:17;13879:47;13943:131;14069:4;13943:131;:::i;:::-;13935:139;;13662:419;;;:::o;14087:410::-;14127:7;14150:20;14168:1;14150:20;:::i;:::-;14145:25;;14184:20;14202:1;14184:20;:::i;:::-;14179:25;;14239:1;14236;14232:9;14261:30;14279:11;14261:30;:::i;:::-;14250:41;;14440:1;14431:7;14427:15;14424:1;14421:22;14401:1;14394:9;14374:83;14351:139;;14470:18;;:::i;:::-;14351:139;14135:362;14087:410;;;;:::o;14503:180::-;14551:77;14548:1;14541:88;14648:4;14645:1;14638:15;14672:4;14669:1;14662:15;14689:185;14729:1;14746:20;14764:1;14746:20;:::i;:::-;14741:25;;14780:20;14798:1;14780:20;:::i;:::-;14775:25;;14819:1;14809:35;;14824:18;;:::i;:::-;14809:35;14866:1;14863;14859:9;14854:14;;14689:185;;;;:::o;14880:224::-;15020:34;15016:1;15008:6;15004:14;14997:58;15089:7;15084:2;15076:6;15072:15;15065:32;14880:224;:::o;15110:366::-;15252:3;15273:67;15337:2;15332:3;15273:67;:::i;:::-;15266:74;;15349:93;15438:3;15349:93;:::i;:::-;15467:2;15462:3;15458:12;15451:19;;15110:366;;;:::o;15482:419::-;15648:4;15686:2;15675:9;15671:18;15663:26;;15735:9;15729:4;15725:20;15721:1;15710:9;15706:17;15699:47;15763:131;15889:4;15763:131;:::i;:::-;15755:139;;15482:419;;;:::o;15907:222::-;16047:34;16043:1;16035:6;16031:14;16024:58;16116:5;16111:2;16103:6;16099:15;16092:30;15907:222;:::o;16135:366::-;16277:3;16298:67;16362:2;16357:3;16298:67;:::i;:::-;16291:74;;16374:93;16463:3;16374:93;:::i;:::-;16492:2;16487:3;16483:12;16476:19;;16135:366;;;:::o;16507:419::-;16673:4;16711:2;16700:9;16696:18;16688:26;;16760:9;16754:4;16750:20;16746:1;16735:9;16731:17;16724:47;16788:131;16914:4;16788:131;:::i;:::-;16780:139;;16507:419;;;:::o;16932:228::-;17072:34;17068:1;17060:6;17056:14;17049:58;17141:11;17136:2;17128:6;17124:15;17117:36;16932:228;:::o;17166:366::-;17308:3;17329:67;17393:2;17388:3;17329:67;:::i;:::-;17322:74;;17405:93;17494:3;17405:93;:::i;:::-;17523:2;17518:3;17514:12;17507:19;;17166:366;;;:::o;17538:419::-;17704:4;17742:2;17731:9;17727:18;17719:26;;17791:9;17785:4;17781:20;17777:1;17766:9;17762:17;17755:47;17819:131;17945:4;17819:131;:::i;:::-;17811:139;;17538:419;;;:::o;17963:227::-;18103:34;18099:1;18091:6;18087:14;18080:58;18172:10;18167:2;18159:6;18155:15;18148:35;17963:227;:::o;18196:366::-;18338:3;18359:67;18423:2;18418:3;18359:67;:::i;:::-;18352:74;;18435:93;18524:3;18435:93;:::i;:::-;18553:2;18548:3;18544:12;18537:19;;18196:366;;;:::o;18568:419::-;18734:4;18772:2;18761:9;18757:18;18749:26;;18821:9;18815:4;18811:20;18807:1;18796:9;18792:17;18785:47;18849:131;18975:4;18849:131;:::i;:::-;18841:139;;18568:419;;;:::o;18993:167::-;19133:19;19129:1;19121:6;19117:14;19110:43;18993:167;:::o;19166:366::-;19308:3;19329:67;19393:2;19388:3;19329:67;:::i;:::-;19322:74;;19405:93;19494:3;19405:93;:::i;:::-;19523:2;19518:3;19514:12;19507:19;;19166:366;;;:::o;19538:419::-;19704:4;19742:2;19731:9;19727:18;19719:26;;19791:9;19785:4;19781:20;19777:1;19766:9;19762:17;19755:47;19819:131;19945:4;19819:131;:::i;:::-;19811:139;;19538:419;;;:::o;19963:175::-;20103:27;20099:1;20091:6;20087:14;20080:51;19963:175;:::o;20144:366::-;20286:3;20307:67;20371:2;20366:3;20307:67;:::i;:::-;20300:74;;20383:93;20472:3;20383:93;:::i;:::-;20501:2;20496:3;20492:12;20485:19;;20144:366;;;:::o;20516:419::-;20682:4;20720:2;20709:9;20705:18;20697:26;;20769:9;20763:4;20759:20;20755:1;20744:9;20740:17;20733:47;20797:131;20923:4;20797:131;:::i;:::-;20789:139;;20516:419;;;:::o;20941:191::-;20981:3;21000:20;21018:1;21000:20;:::i;:::-;20995:25;;21034:20;21052:1;21034:20;:::i;:::-;21029:25;;21077:1;21074;21070:9;21063:16;;21098:3;21095:1;21092:10;21089:36;;;21105:18;;:::i;:::-;21089:36;20941:191;;;;:::o;21138:176::-;21278:28;21274:1;21266:6;21262:14;21255:52;21138:176;:::o;21320:366::-;21462:3;21483:67;21547:2;21542:3;21483:67;:::i;:::-;21476:74;;21559:93;21648:3;21559:93;:::i;:::-;21677:2;21672:3;21668:12;21661:19;;21320:366;;;:::o;21692:419::-;21858:4;21896:2;21885:9;21881:18;21873:26;;21945:9;21939:4;21935:20;21931:1;21920:9;21916:17;21909:47;21973:131;22099:4;21973:131;:::i;:::-;21965:139;;21692:419;;;:::o;22117:233::-;22156:3;22179:24;22197:5;22179:24;:::i;:::-;22170:33;;22225:66;22218:5;22215:77;22212:103;;22295:18;;:::i;:::-;22212:103;22342:1;22335:5;22331:13;22324:20;;22117:233;;;:::o;22356:223::-;22496:34;22492:1;22484:6;22480:14;22473:58;22565:6;22560:2;22552:6;22548:15;22541:31;22356:223;:::o;22585:366::-;22727:3;22748:67;22812:2;22807:3;22748:67;:::i;:::-;22741:74;;22824:93;22913:3;22824:93;:::i;:::-;22942:2;22937:3;22933:12;22926:19;;22585:366;;;:::o;22957:419::-;23123:4;23161:2;23150:9;23146:18;23138:26;;23210:9;23204:4;23200:20;23196:1;23185:9;23181:17;23174:47;23238:131;23364:4;23238:131;:::i;:::-;23230:139;;22957:419;;;:::o;23382:180::-;23430:77;23427:1;23420:88;23527:4;23524:1;23517:15;23551:4;23548:1;23541:15;23568:180;23616:77;23613:1;23606:88;23713:4;23710:1;23703:15;23737:4;23734:1;23727:15;23754:143;23811:5;23842:6;23836:13;23827:22;;23858:33;23885:5;23858:33;:::i;:::-;23754:143;;;;:::o;23903:351::-;23973:6;24022:2;24010:9;24001:7;23997:23;23993:32;23990:119;;;24028:79;;:::i;:::-;23990:119;24148:1;24173:64;24229:7;24220:6;24209:9;24205:22;24173:64;:::i;:::-;24163:74;;24119:128;23903:351;;;;:::o;24260:85::-;24305:7;24334:5;24323:16;;24260:85;;;:::o;24351:158::-;24409:9;24442:61;24460:42;24469:32;24495:5;24469:32;:::i;:::-;24460:42;:::i;:::-;24442:61;:::i;:::-;24429:74;;24351:158;;;:::o;24515:147::-;24610:45;24649:5;24610:45;:::i;:::-;24605:3;24598:58;24515:147;;:::o;24668:114::-;24735:6;24769:5;24763:12;24753:22;;24668:114;;;:::o;24788:184::-;24887:11;24921:6;24916:3;24909:19;24961:4;24956:3;24952:14;24937:29;;24788:184;;;;:::o;24978:132::-;25045:4;25068:3;25060:11;;25098:4;25093:3;25089:14;25081:22;;24978:132;;;:::o;25116:108::-;25193:24;25211:5;25193:24;:::i;:::-;25188:3;25181:37;25116:108;;:::o;25230:179::-;25299:10;25320:46;25362:3;25354:6;25320:46;:::i;:::-;25398:4;25393:3;25389:14;25375:28;;25230:179;;;;:::o;25415:113::-;25485:4;25517;25512:3;25508:14;25500:22;;25415:113;;;:::o;25564:732::-;25683:3;25712:54;25760:5;25712:54;:::i;:::-;25782:86;25861:6;25856:3;25782:86;:::i;:::-;25775:93;;25892:56;25942:5;25892:56;:::i;:::-;25971:7;26002:1;25987:284;26012:6;26009:1;26006:13;25987:284;;;26088:6;26082:13;26115:63;26174:3;26159:13;26115:63;:::i;:::-;26108:70;;26201:60;26254:6;26201:60;:::i;:::-;26191:70;;26047:224;26034:1;26031;26027:9;26022:14;;25987:284;;;25991:14;26287:3;26280:10;;25688:608;;;25564:732;;;;:::o;26302:831::-;26565:4;26603:3;26592:9;26588:19;26580:27;;26617:71;26685:1;26674:9;26670:17;26661:6;26617:71;:::i;:::-;26698:80;26774:2;26763:9;26759:18;26750:6;26698:80;:::i;:::-;26825:9;26819:4;26815:20;26810:2;26799:9;26795:18;26788:48;26853:108;26956:4;26947:6;26853:108;:::i;:::-;26845:116;;26971:72;27039:2;27028:9;27024:18;27015:6;26971:72;:::i;:::-;27053:73;27121:3;27110:9;27106:19;27097:6;27053:73;:::i;:::-;26302:831;;;;;;;;:::o;27139:220::-;27279:34;27275:1;27267:6;27263:14;27256:58;27348:3;27343:2;27335:6;27331:15;27324:28;27139:220;:::o;27365:366::-;27507:3;27528:67;27592:2;27587:3;27528:67;:::i;:::-;27521:74;;27604:93;27693:3;27604:93;:::i;:::-;27722:2;27717:3;27713:12;27706:19;;27365:366;;;:::o;27737:419::-;27903:4;27941:2;27930:9;27926:18;27918:26;;27990:9;27984:4;27980:20;27976:1;27965:9;27961:17;27954:47;28018:131;28144:4;28018:131;:::i;:::-;28010:139;;27737:419;;;:::o;28162:177::-;28302:29;28298:1;28290:6;28286:14;28279:53;28162:177;:::o;28345:366::-;28487:3;28508:67;28572:2;28567:3;28508:67;:::i;:::-;28501:74;;28584:93;28673:3;28584:93;:::i;:::-;28702:2;28697:3;28693:12;28686:19;;28345:366;;;:::o;28717:419::-;28883:4;28921:2;28910:9;28906:18;28898:26;;28970:9;28964:4;28960:20;28956:1;28945:9;28941:17;28934:47;28998:131;29124:4;28998:131;:::i;:::-;28990:139;;28717:419;;;:::o

Swarm Source

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