ETH Price: $3,154.71 (-1.01%)

Token

THE ZERO PROTOCOL (TZP)
 

Overview

Max Total Supply

1,000,000 TZP

Holders

73

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,304.658507536 TZP

Value
$0.00
0x1C9D31d64A7863969F83Bb91Dd027Daf284a67d4
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:
THEZEROPROTOCOL

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-28
*/

/*

THE ZERO PROTOCOL

A ZERO TAX TOKEN WHERE MAX LIMIT OF 1.5% IS AUTO LIFTED AFTER FIRST 50 BUYS

TOTAL CIRCULATING SUPPLY IS 1,000,000 TOKENS

LIQUIDITY OF $1000 IS ADDED AND LOCKED FOR 1 MONTH

LIQUIDITY LOCK IS EXTENDED AFTER EVERY 100k MARKETCAP GROWTH

COMMUNITY TG ONCE CREATED WILL BE SHARED VIA ON CHAIN MESSAGE 

TIME TO UNITE AND TAKE OVER THOSE TAX HUNGRY AND LOW LIFE RUGGING DEVS 

5% SUPPLY HELD BACK FOR AIRDROPS


*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

contract THEZEROPROTOCOL is Context, IERC20, Ownable { 
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    uint256 private _initialTax;
    uint256 private _finalTax;
    uint256 private _reduceTaxTarget;
    uint256 private _reduceTaxCountdown;
    address payable private _feeAddrWallet;

    string private constant _name = "THE ZERO PROTOCOL";
    string private constant _symbol = "TZP";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 public _maxTxAmount = _tTotal.mul(15).div(1000); 
    uint256 public _maxWalletSize = _tTotal.mul(15).div(1000);
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _feeAddrWallet = payable(_msgSender());
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet] = true;
        _initialTax=0;
        _finalTax=0;
        _reduceTaxCountdown=50;
        _reduceTaxTarget = _reduceTaxCountdown.div(2);
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

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

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

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

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


        if (from != owner() && to != owner()) {
            _feeAddr1 = 0;
            _feeAddr2 = (_reduceTaxCountdown==0)?_finalTax:_initialTax;
            if(_reduceTaxCountdown==0) {
                cooldownEnabled = false;
             _maxTxAmount = _tTotal;
            _maxWalletSize = _tTotal; 
            }
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                if(_reduceTaxCountdown>0){_reduceTaxCountdown--;}
            }


            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance>0 && _reduceTaxCountdown<_reduceTaxTarget) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }else{
          _feeAddr1 = 0;
          _feeAddr2 = 0;
        }

        _tokenTransfer(from,to,amount);
    }

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


    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

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


    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;

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

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

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

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

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

    receive() external payable {}




    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b919062000600565b6000196200002a919062000667565b6007556000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff0219169083151502179055506000601160176101000a81548160ff021916908315150217905550620000bb6103e8620000a7600f66038d7ea4c680006200045960201b62000e3b1790919060201c565b620004dc60201b62000eb51790919060201c565b601255620000fb6103e8620000e7600f66038d7ea4c680006200045960201b62000e3b1790919060201c565b620004dc60201b62000eb51790919060201c565b6013553480156200010b57600080fd5b5060006200011e6200052e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001cc6200052e60201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460026000620002236200052e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002776200053660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b819055506000600c819055506032600e81905550620003cf6002600e54620004dc60201b62000eb51790919060201c565b600d81905550620003e56200052e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200044b9190620006b3565b60405180910390a3620008bf565b60008083036200046d5760009050620004d6565b600082846200047d9190620006d0565b90508284826200048e919062000731565b14620004d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c890620007f0565b60405180910390fd5b809150505b92915050565b60006200052683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055f60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620005a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005a091906200089b565b60405180910390fd5b5060008385620005ba919062000731565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200060d82620005c7565b91506200061a83620005c7565b9250826200062d576200062c620005d1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200067482620005c7565b91506200068183620005c7565b92508282039050818111156200069c576200069b62000638565b5b92915050565b620006ad81620005c7565b82525050565b6000602082019050620006ca6000830184620006a2565b92915050565b6000620006dd82620005c7565b9150620006ea83620005c7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000726576200072562000638565b5b828202905092915050565b60006200073e82620005c7565b91506200074b83620005c7565b9250826200075e576200075d620005d1565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620007d860218362000769565b9150620007e5826200077a565b604082019050919050565b600060208201905081810360008301526200080b81620007c9565b9050919050565b600081519050919050565b60005b838110156200083d57808201518184015260208101905062000820565b60008484015250505050565b6000601f19601f8301169050919050565b6000620008678262000812565b62000873818562000769565b9350620008858185602086016200081d565b620008908162000849565b840191505092915050565b60006020820190508181036000830152620008b781846200085a565b905092915050565b612dff80620008cf6000396000f3fe6080604052600436106100f75760003560e01c8063751039fc1161008a57806395d89b411161005957806395d89b4114610313578063a9059cbb1461033e578063c9567bf91461037b578063dd62ed3e14610392576100fe565b8063751039fc1461027b5780637d1db4a5146102925780638da5cb5b146102bd5780638f9a55c0146102e8576100fe565b8063313ce567116100c6578063313ce567146101d35780635932ead1146101fe57806370a0823114610227578063715018a614610264576100fe565b806306fdde0314610103578063095ea7b31461012e57806318160ddd1461016b57806323b872dd14610196576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b506101186103cf565b6040516101259190611fde565b60405180910390f35b34801561013a57600080fd5b5061015560048036038101906101509190612099565b61040c565b60405161016291906120f4565b60405180910390f35b34801561017757600080fd5b5061018061042a565b60405161018d919061211e565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190612139565b610439565b6040516101ca91906120f4565b60405180910390f35b3480156101df57600080fd5b506101e8610512565b6040516101f591906121a8565b60405180910390f35b34801561020a57600080fd5b50610225600480360381019061022091906121ef565b61051b565b005b34801561023357600080fd5b5061024e6004803603810190610249919061221c565b6105cd565b60405161025b919061211e565b60405180910390f35b34801561027057600080fd5b5061027961061e565b005b34801561028757600080fd5b50610290610771565b005b34801561029e57600080fd5b506102a7610824565b6040516102b4919061211e565b60405180910390f35b3480156102c957600080fd5b506102d261082a565b6040516102df9190612258565b60405180910390f35b3480156102f457600080fd5b506102fd610853565b60405161030a919061211e565b60405180910390f35b34801561031f57600080fd5b50610328610859565b6040516103359190611fde565b60405180910390f35b34801561034a57600080fd5b5061036560048036038101906103609190612099565b610896565b60405161037291906120f4565b60405180910390f35b34801561038757600080fd5b506103906108b4565b005b34801561039e57600080fd5b506103b960048036038101906103b49190612273565b610db4565b6040516103c6919061211e565b60405180910390f35b60606040518060400160405280601181526020017f544845205a45524f2050524f544f434f4c000000000000000000000000000000815250905090565b6000610420610419610eff565b8484610f07565b6001905092915050565b600066038d7ea4c68000905090565b60006104468484846110d0565b61050784610452610eff565b61050285604051806060016040528060288152602001612da260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104b8610eff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115ac9092919063ffffffff16565b610f07565b600190509392505050565b60006009905090565b610523610eff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a7906122ff565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b6000610617600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611610565b9050919050565b610626610eff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106aa906122ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610779610eff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd906122ff565b60405180910390fd5b66038d7ea4c6800060128190555066038d7ea4c68000601381905550565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600381526020017f545a500000000000000000000000000000000000000000000000000000000000815250905090565b60006108aa6108a3610eff565b84846110d0565b6001905092915050565b6108bc610eff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906122ff565b60405180910390fd5b601160149054906101000a900460ff1615610999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109909061236b565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a2730601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1666038d7ea4c68000610f07565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9691906123a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2191906123a0565b6040518363ffffffff1660e01b8152600401610b3e9291906123cd565b6020604051808303816000875af1158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8191906123a0565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c0a306105cd565b600080610c1561082a565b426040518863ffffffff1660e01b8152600401610c379695949392919061243b565b60606040518083038185885af1158015610c55573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c7a91906124b1565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff0219169083151502179055506001601160146101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610d6d929190612504565b6020604051808303816000875af1158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190612542565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808303610e4d5760009050610eaf565b60008284610e5b919061259e565b9050828482610e6a9190612627565b14610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906126ca565b60405180910390fd5b809150505b92915050565b6000610ef783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061167e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d9061275c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc906127ee565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c3919061211e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690612880565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590612912565b60405180910390fd5b600081116111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e8906129a4565b60405180910390fd5b6111f961082a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611267575061123761082a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561158b5760006009819055506000600e541461128657600b5461128a565b600c545b600a819055506000600e54036112d2576000601160176101000a81548160ff02191690831515021790555066038d7ea4c6800060128190555066038d7ea4c680006013819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561137d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156113d35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113eb5750601160179054906101000a900460ff165b156114b257601254811115611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c90612a10565b60405180910390fd5b60135481611442846105cd565b61144c9190612a30565b111561148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148490612ab0565b60405180910390fd5b6000600e5411156114b157600e60008154809291906114ab90612ad0565b91905055505b5b60006114bd306105cd565b9050601160159054906101000a900460ff1615801561152a5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156115425750601160169054906101000a900460ff165b801561154e5750600081115b801561155d5750600d54600e54105b156115855761156b816116e1565b60004790506000811115611583576115824761195a565b5b505b5061159c565b60006009819055506000600a819055505b6115a78383836119c6565b505050565b60008383111582906115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9190611fde565b60405180910390fd5b50600083856116039190612af9565b9050809150509392505050565b6000600754821115611657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164e90612b9f565b60405180910390fd5b60006116616119d6565b90506116768184610eb590919063ffffffff16565b915050919050565b600080831182906116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc9190611fde565b60405180910390fd5b50600083856116d49190612627565b9050809150509392505050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561171957611718612bbf565b5b6040519080825280602002602001820160405280156117475781602001602082028036833780820191505090505b509050308160008151811061175f5761175e612bee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a91906123a0565b8160018151811061183e5761183d612bee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506118a530601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f07565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611909959493929190612cdb565b600060405180830381600087803b15801561192357600080fd5b505af1158015611937573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119c2573d6000803e3d6000fd5b5050565b6119d1838383611a01565b505050565b60008060006119e3611bcc565b915091506119fa8183610eb590919063ffffffff16565b9250505090565b600080600080600080611a1387611c28565b955095509550955095509550611a7186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c9090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b0685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cda90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5281611d38565b611b5c8483611df5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611bb9919061211e565b60405180910390a3505050505050505050565b60008060006007549050600066038d7ea4c680009050611bfe66038d7ea4c68000600754610eb590919063ffffffff16565b821015611c1b5760075466038d7ea4c68000935093505050611c24565b81819350935050505b9091565b6000806000806000806000806000611c458a600954600a54611e2f565b9250925092506000611c556119d6565b90506000806000611c688e878787611ec5565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611cd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115ac565b905092915050565b6000808284611ce99190612a30565b905083811015611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590612d81565b60405180910390fd5b8091505092915050565b6000611d426119d6565b90506000611d598284610e3b90919063ffffffff16565b9050611dad81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cda90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b611e0a82600754611c9090919063ffffffff16565b600781905550611e2581600854611cda90919063ffffffff16565b6008819055505050565b600080600080611e5b6064611e4d888a610e3b90919063ffffffff16565b610eb590919063ffffffff16565b90506000611e856064611e77888b610e3b90919063ffffffff16565b610eb590919063ffffffff16565b90506000611eae82611ea0858c611c9090919063ffffffff16565b611c9090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080611ede8589610e3b90919063ffffffff16565b90506000611ef58689610e3b90919063ffffffff16565b90506000611f0c8789610e3b90919063ffffffff16565b90506000611f3582611f278587611c9090919063ffffffff16565b611c9090919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f88578082015181840152602081019050611f6d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fb082611f4e565b611fba8185611f59565b9350611fca818560208601611f6a565b611fd381611f94565b840191505092915050565b60006020820190508181036000830152611ff88184611fa5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061203082612005565b9050919050565b61204081612025565b811461204b57600080fd5b50565b60008135905061205d81612037565b92915050565b6000819050919050565b61207681612063565b811461208157600080fd5b50565b6000813590506120938161206d565b92915050565b600080604083850312156120b0576120af612000565b5b60006120be8582860161204e565b92505060206120cf85828601612084565b9150509250929050565b60008115159050919050565b6120ee816120d9565b82525050565b600060208201905061210960008301846120e5565b92915050565b61211881612063565b82525050565b6000602082019050612133600083018461210f565b92915050565b60008060006060848603121561215257612151612000565b5b60006121608682870161204e565b93505060206121718682870161204e565b925050604061218286828701612084565b9150509250925092565b600060ff82169050919050565b6121a28161218c565b82525050565b60006020820190506121bd6000830184612199565b92915050565b6121cc816120d9565b81146121d757600080fd5b50565b6000813590506121e9816121c3565b92915050565b60006020828403121561220557612204612000565b5b6000612213848285016121da565b91505092915050565b60006020828403121561223257612231612000565b5b60006122408482850161204e565b91505092915050565b61225281612025565b82525050565b600060208201905061226d6000830184612249565b92915050565b6000806040838503121561228a57612289612000565b5b60006122988582860161204e565b92505060206122a98582860161204e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006122e9602083611f59565b91506122f4826122b3565b602082019050919050565b60006020820190508181036000830152612318816122dc565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612355601783611f59565b91506123608261231f565b602082019050919050565b6000602082019050818103600083015261238481612348565b9050919050565b60008151905061239a81612037565b92915050565b6000602082840312156123b6576123b5612000565b5b60006123c48482850161238b565b91505092915050565b60006040820190506123e26000830185612249565b6123ef6020830184612249565b9392505050565b6000819050919050565b6000819050919050565b600061242561242061241b846123f6565b612400565b612063565b9050919050565b6124358161240a565b82525050565b600060c0820190506124506000830189612249565b61245d602083018861210f565b61246a604083018761242c565b612477606083018661242c565b6124846080830185612249565b61249160a083018461210f565b979650505050505050565b6000815190506124ab8161206d565b92915050565b6000806000606084860312156124ca576124c9612000565b5b60006124d88682870161249c565b93505060206124e98682870161249c565b92505060406124fa8682870161249c565b9150509250925092565b60006040820190506125196000830185612249565b612526602083018461210f565b9392505050565b60008151905061253c816121c3565b92915050565b60006020828403121561255857612557612000565b5b60006125668482850161252d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125a982612063565b91506125b483612063565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125ed576125ec61256f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061263282612063565b915061263d83612063565b92508261264d5761264c6125f8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006126b4602183611f59565b91506126bf82612658565b604082019050919050565b600060208201905081810360008301526126e3816126a7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612746602483611f59565b9150612751826126ea565b604082019050919050565b6000602082019050818103600083015261277581612739565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006127d8602283611f59565b91506127e38261277c565b604082019050919050565b60006020820190508181036000830152612807816127cb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061286a602583611f59565b91506128758261280e565b604082019050919050565b600060208201905081810360008301526128998161285d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128fc602383611f59565b9150612907826128a0565b604082019050919050565b6000602082019050818103600083015261292b816128ef565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061298e602983611f59565b915061299982612932565b604082019050919050565b600060208201905081810360008301526129bd81612981565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006129fa601983611f59565b9150612a05826129c4565b602082019050919050565b60006020820190508181036000830152612a29816129ed565b9050919050565b6000612a3b82612063565b9150612a4683612063565b9250828201905080821115612a5e57612a5d61256f565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612a9a601a83611f59565b9150612aa582612a64565b602082019050919050565b60006020820190508181036000830152612ac981612a8d565b9050919050565b6000612adb82612063565b915060008203612aee57612aed61256f565b5b600182039050919050565b6000612b0482612063565b9150612b0f83612063565b9250828203905081811115612b2757612b2661256f565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612b89602a83611f59565b9150612b9482612b2d565b604082019050919050565b60006020820190508181036000830152612bb881612b7c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c5281612025565b82525050565b6000612c648383612c49565b60208301905092915050565b6000602082019050919050565b6000612c8882612c1d565b612c928185612c28565b9350612c9d83612c39565b8060005b83811015612cce578151612cb58882612c58565b9750612cc083612c70565b925050600181019050612ca1565b5085935050505092915050565b600060a082019050612cf0600083018861210f565b612cfd602083018761242c565b8181036040830152612d0f8186612c7d565b9050612d1e6060830185612249565b612d2b608083018461210f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612d6b601b83611f59565b9150612d7682612d35565b602082019050919050565b60006020820190508181036000830152612d9a81612d5e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040c308daa6b11818029c0ec3fbdd73f81c62b8ce7aad660dedd13c966d02407464736f6c63430008100033

Deployed Bytecode

0x6080604052600436106100f75760003560e01c8063751039fc1161008a57806395d89b411161005957806395d89b4114610313578063a9059cbb1461033e578063c9567bf91461037b578063dd62ed3e14610392576100fe565b8063751039fc1461027b5780637d1db4a5146102925780638da5cb5b146102bd5780638f9a55c0146102e8576100fe565b8063313ce567116100c6578063313ce567146101d35780635932ead1146101fe57806370a0823114610227578063715018a614610264576100fe565b806306fdde0314610103578063095ea7b31461012e57806318160ddd1461016b57806323b872dd14610196576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b506101186103cf565b6040516101259190611fde565b60405180910390f35b34801561013a57600080fd5b5061015560048036038101906101509190612099565b61040c565b60405161016291906120f4565b60405180910390f35b34801561017757600080fd5b5061018061042a565b60405161018d919061211e565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190612139565b610439565b6040516101ca91906120f4565b60405180910390f35b3480156101df57600080fd5b506101e8610512565b6040516101f591906121a8565b60405180910390f35b34801561020a57600080fd5b50610225600480360381019061022091906121ef565b61051b565b005b34801561023357600080fd5b5061024e6004803603810190610249919061221c565b6105cd565b60405161025b919061211e565b60405180910390f35b34801561027057600080fd5b5061027961061e565b005b34801561028757600080fd5b50610290610771565b005b34801561029e57600080fd5b506102a7610824565b6040516102b4919061211e565b60405180910390f35b3480156102c957600080fd5b506102d261082a565b6040516102df9190612258565b60405180910390f35b3480156102f457600080fd5b506102fd610853565b60405161030a919061211e565b60405180910390f35b34801561031f57600080fd5b50610328610859565b6040516103359190611fde565b60405180910390f35b34801561034a57600080fd5b5061036560048036038101906103609190612099565b610896565b60405161037291906120f4565b60405180910390f35b34801561038757600080fd5b506103906108b4565b005b34801561039e57600080fd5b506103b960048036038101906103b49190612273565b610db4565b6040516103c6919061211e565b60405180910390f35b60606040518060400160405280601181526020017f544845205a45524f2050524f544f434f4c000000000000000000000000000000815250905090565b6000610420610419610eff565b8484610f07565b6001905092915050565b600066038d7ea4c68000905090565b60006104468484846110d0565b61050784610452610eff565b61050285604051806060016040528060288152602001612da260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104b8610eff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115ac9092919063ffffffff16565b610f07565b600190509392505050565b60006009905090565b610523610eff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a7906122ff565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b6000610617600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611610565b9050919050565b610626610eff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106aa906122ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610779610eff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd906122ff565b60405180910390fd5b66038d7ea4c6800060128190555066038d7ea4c68000601381905550565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600381526020017f545a500000000000000000000000000000000000000000000000000000000000815250905090565b60006108aa6108a3610eff565b84846110d0565b6001905092915050565b6108bc610eff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906122ff565b60405180910390fd5b601160149054906101000a900460ff1615610999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109909061236b565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a2730601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1666038d7ea4c68000610f07565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9691906123a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2191906123a0565b6040518363ffffffff1660e01b8152600401610b3e9291906123cd565b6020604051808303816000875af1158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8191906123a0565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c0a306105cd565b600080610c1561082a565b426040518863ffffffff1660e01b8152600401610c379695949392919061243b565b60606040518083038185885af1158015610c55573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c7a91906124b1565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff0219169083151502179055506001601160146101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610d6d929190612504565b6020604051808303816000875af1158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190612542565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808303610e4d5760009050610eaf565b60008284610e5b919061259e565b9050828482610e6a9190612627565b14610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906126ca565b60405180910390fd5b809150505b92915050565b6000610ef783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061167e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d9061275c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc906127ee565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c3919061211e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690612880565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590612912565b60405180910390fd5b600081116111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e8906129a4565b60405180910390fd5b6111f961082a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611267575061123761082a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561158b5760006009819055506000600e541461128657600b5461128a565b600c545b600a819055506000600e54036112d2576000601160176101000a81548160ff02191690831515021790555066038d7ea4c6800060128190555066038d7ea4c680006013819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561137d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156113d35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113eb5750601160179054906101000a900460ff165b156114b257601254811115611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c90612a10565b60405180910390fd5b60135481611442846105cd565b61144c9190612a30565b111561148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148490612ab0565b60405180910390fd5b6000600e5411156114b157600e60008154809291906114ab90612ad0565b91905055505b5b60006114bd306105cd565b9050601160159054906101000a900460ff1615801561152a5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156115425750601160169054906101000a900460ff165b801561154e5750600081115b801561155d5750600d54600e54105b156115855761156b816116e1565b60004790506000811115611583576115824761195a565b5b505b5061159c565b60006009819055506000600a819055505b6115a78383836119c6565b505050565b60008383111582906115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9190611fde565b60405180910390fd5b50600083856116039190612af9565b9050809150509392505050565b6000600754821115611657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164e90612b9f565b60405180910390fd5b60006116616119d6565b90506116768184610eb590919063ffffffff16565b915050919050565b600080831182906116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc9190611fde565b60405180910390fd5b50600083856116d49190612627565b9050809150509392505050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561171957611718612bbf565b5b6040519080825280602002602001820160405280156117475781602001602082028036833780820191505090505b509050308160008151811061175f5761175e612bee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a91906123a0565b8160018151811061183e5761183d612bee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506118a530601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f07565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611909959493929190612cdb565b600060405180830381600087803b15801561192357600080fd5b505af1158015611937573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119c2573d6000803e3d6000fd5b5050565b6119d1838383611a01565b505050565b60008060006119e3611bcc565b915091506119fa8183610eb590919063ffffffff16565b9250505090565b600080600080600080611a1387611c28565b955095509550955095509550611a7186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c9090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b0685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cda90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5281611d38565b611b5c8483611df5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611bb9919061211e565b60405180910390a3505050505050505050565b60008060006007549050600066038d7ea4c680009050611bfe66038d7ea4c68000600754610eb590919063ffffffff16565b821015611c1b5760075466038d7ea4c68000935093505050611c24565b81819350935050505b9091565b6000806000806000806000806000611c458a600954600a54611e2f565b9250925092506000611c556119d6565b90506000806000611c688e878787611ec5565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611cd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115ac565b905092915050565b6000808284611ce99190612a30565b905083811015611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590612d81565b60405180910390fd5b8091505092915050565b6000611d426119d6565b90506000611d598284610e3b90919063ffffffff16565b9050611dad81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cda90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b611e0a82600754611c9090919063ffffffff16565b600781905550611e2581600854611cda90919063ffffffff16565b6008819055505050565b600080600080611e5b6064611e4d888a610e3b90919063ffffffff16565b610eb590919063ffffffff16565b90506000611e856064611e77888b610e3b90919063ffffffff16565b610eb590919063ffffffff16565b90506000611eae82611ea0858c611c9090919063ffffffff16565b611c9090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080611ede8589610e3b90919063ffffffff16565b90506000611ef58689610e3b90919063ffffffff16565b90506000611f0c8789610e3b90919063ffffffff16565b90506000611f3582611f278587611c9090919063ffffffff16565b611c9090919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f88578082015181840152602081019050611f6d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fb082611f4e565b611fba8185611f59565b9350611fca818560208601611f6a565b611fd381611f94565b840191505092915050565b60006020820190508181036000830152611ff88184611fa5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061203082612005565b9050919050565b61204081612025565b811461204b57600080fd5b50565b60008135905061205d81612037565b92915050565b6000819050919050565b61207681612063565b811461208157600080fd5b50565b6000813590506120938161206d565b92915050565b600080604083850312156120b0576120af612000565b5b60006120be8582860161204e565b92505060206120cf85828601612084565b9150509250929050565b60008115159050919050565b6120ee816120d9565b82525050565b600060208201905061210960008301846120e5565b92915050565b61211881612063565b82525050565b6000602082019050612133600083018461210f565b92915050565b60008060006060848603121561215257612151612000565b5b60006121608682870161204e565b93505060206121718682870161204e565b925050604061218286828701612084565b9150509250925092565b600060ff82169050919050565b6121a28161218c565b82525050565b60006020820190506121bd6000830184612199565b92915050565b6121cc816120d9565b81146121d757600080fd5b50565b6000813590506121e9816121c3565b92915050565b60006020828403121561220557612204612000565b5b6000612213848285016121da565b91505092915050565b60006020828403121561223257612231612000565b5b60006122408482850161204e565b91505092915050565b61225281612025565b82525050565b600060208201905061226d6000830184612249565b92915050565b6000806040838503121561228a57612289612000565b5b60006122988582860161204e565b92505060206122a98582860161204e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006122e9602083611f59565b91506122f4826122b3565b602082019050919050565b60006020820190508181036000830152612318816122dc565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612355601783611f59565b91506123608261231f565b602082019050919050565b6000602082019050818103600083015261238481612348565b9050919050565b60008151905061239a81612037565b92915050565b6000602082840312156123b6576123b5612000565b5b60006123c48482850161238b565b91505092915050565b60006040820190506123e26000830185612249565b6123ef6020830184612249565b9392505050565b6000819050919050565b6000819050919050565b600061242561242061241b846123f6565b612400565b612063565b9050919050565b6124358161240a565b82525050565b600060c0820190506124506000830189612249565b61245d602083018861210f565b61246a604083018761242c565b612477606083018661242c565b6124846080830185612249565b61249160a083018461210f565b979650505050505050565b6000815190506124ab8161206d565b92915050565b6000806000606084860312156124ca576124c9612000565b5b60006124d88682870161249c565b93505060206124e98682870161249c565b92505060406124fa8682870161249c565b9150509250925092565b60006040820190506125196000830185612249565b612526602083018461210f565b9392505050565b60008151905061253c816121c3565b92915050565b60006020828403121561255857612557612000565b5b60006125668482850161252d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125a982612063565b91506125b483612063565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125ed576125ec61256f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061263282612063565b915061263d83612063565b92508261264d5761264c6125f8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006126b4602183611f59565b91506126bf82612658565b604082019050919050565b600060208201905081810360008301526126e3816126a7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612746602483611f59565b9150612751826126ea565b604082019050919050565b6000602082019050818103600083015261277581612739565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006127d8602283611f59565b91506127e38261277c565b604082019050919050565b60006020820190508181036000830152612807816127cb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061286a602583611f59565b91506128758261280e565b604082019050919050565b600060208201905081810360008301526128998161285d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128fc602383611f59565b9150612907826128a0565b604082019050919050565b6000602082019050818103600083015261292b816128ef565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061298e602983611f59565b915061299982612932565b604082019050919050565b600060208201905081810360008301526129bd81612981565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006129fa601983611f59565b9150612a05826129c4565b602082019050919050565b60006020820190508181036000830152612a29816129ed565b9050919050565b6000612a3b82612063565b9150612a4683612063565b9250828201905080821115612a5e57612a5d61256f565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612a9a601a83611f59565b9150612aa582612a64565b602082019050919050565b60006020820190508181036000830152612ac981612a8d565b9050919050565b6000612adb82612063565b915060008203612aee57612aed61256f565b5b600182039050919050565b6000612b0482612063565b9150612b0f83612063565b9250828203905081811115612b2757612b2661256f565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612b89602a83611f59565b9150612b9482612b2d565b604082019050919050565b60006020820190508181036000830152612bb881612b7c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c5281612025565b82525050565b6000612c648383612c49565b60208301905092915050565b6000602082019050919050565b6000612c8882612c1d565b612c928185612c28565b9350612c9d83612c39565b8060005b83811015612cce578151612cb58882612c58565b9750612cc083612c70565b925050600181019050612ca1565b5085935050505092915050565b600060a082019050612cf0600083018861210f565b612cfd602083018761242c565b8181036040830152612d0f8186612c7d565b9050612d1e6060830185612249565b612d2b608083018461210f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612d6b601b83611f59565b9150612d7682612d35565b602082019050919050565b60006020820190508181036000830152612d9a81612d5e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040c308daa6b11818029c0ec3fbdd73f81c62b8ce7aad660dedd13c966d02407464736f6c63430008100033

Deployed Bytecode Sourcemap

3967:9918:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5922:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6199:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6943:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6108:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7264:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6302:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3048:148;;;;;;;;;;;;;:::i;:::-;;10123:118;;;;;;;;;;;;;:::i;:::-;;5183:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2834:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5246:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6013:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6448:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10355:773;;;;;;;;;;;;;:::i;:::-;;6623:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5922:83;5959:13;5992:5;;;;;;;;;;;;;;;;;5985:12;;5922:83;:::o;6774:161::-;6849:4;6866:39;6875:12;:10;:12::i;:::-;6889:7;6898:6;6866:8;:39::i;:::-;6923:4;6916:11;;6774:161;;;;:::o;6199:95::-;6252:7;4431:15;6272:14;;6199:95;:::o;6943:313::-;7041:4;7058:36;7068:6;7076:9;7087:6;7058:9;:36::i;:::-;7105:121;7114:6;7122:12;:10;:12::i;:::-;7136:89;7174:6;7136:89;;;;;;;;;;;;;;;;;:11;:19;7148:6;7136:19;;;;;;;;;;;;;;;:33;7156:12;:10;:12::i;:::-;7136:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7105:8;:121::i;:::-;7244:4;7237:11;;6943:313;;;;;:::o;6108:83::-;6149:5;4941:1;6167:16;;6108:83;:::o;7264:103::-;2971:12;:10;:12::i;:::-;2961:22;;:6;;;;;;;;;;:22;;;2953:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7354:5:::1;7336:15;;:23;;;;;;;;;;;;;;;;;;7264:103:::0;:::o;6302:138::-;6368:7;6395:37;6415:7;:16;6423:7;6415:16;;;;;;;;;;;;;;;;6395:19;:37::i;:::-;6388:44;;6302:138;;;:::o;3048:148::-;2971:12;:10;:12::i;:::-;2961:22;;:6;;;;;;;;;;:22;;;2953:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3155:1:::1;3118:40;;3139:6;::::0;::::1;;;;;;;;3118:40;;;;;;;;;;;;3186:1;3169:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3048:148::o:0;10123:118::-;2971:12;:10;:12::i;:::-;2961:22;;:6;;;;;;;;;;:22;;;2953:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4431:15:::1;10176:12;:22;;;;4431:15;10209:14;:24;;;;10123:118::o:0;5183:55::-;;;;:::o;2834:79::-;2872:7;2899:6;;;;;;;;;;;2892:13;;2834:79;:::o;5246:57::-;;;;:::o;6013:87::-;6052:13;6085:7;;;;;;;;;;;;;;;;;6078:14;;6013:87;:::o;6448:167::-;6526:4;6543:42;6553:12;:10;:12::i;:::-;6567:9;6578:6;6543:9;:42::i;:::-;6603:4;6596:11;;6448:167;;;;:::o;10355:773::-;2971:12;:10;:12::i;:::-;2961:22;;:6;;;;;;;;;;:22;;;2953:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10419:11:::1;;;;;;;;;;;10418:12;10410:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10468:35;10525:42;10468:100;;10597:16;10579:15;;:34;;;;;;;;;;;;;;;;;;10624:58;10641:4;10656:15;;;;;;;;;;;4431;10624:8;:58::i;:::-;10727:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10709:56;;;10774:4;10781:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10709:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10693:13;;:112;;;;;;;;;;;;;;;;;;10816:15;;;;;;;;;;;:31;;;10855:21;10886:4;10892:24;10910:4;10892:9;:24::i;:::-;10917:1;10919::::0;10921:7:::1;:5;:7::i;:::-;10929:15;10816:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10970:4;10956:11;;:18;;;;;;;;;;;;;;;;;;11003:4;10985:15;;:22;;;;;;;;;;;;;;;;;;11034:4;11020:11;;:18;;;;;;;;;;;;;;;;;;11056:13;;;;;;;;;;;11049:29;;;11087:15;;;;;;;;;;;11105:14;11049:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10399:729;10355:773::o:0;6623:143::-;6704:7;6731:11;:18;6743:5;6731:18;;;;;;;;;;;;;;;:27;6750:7;6731:27;;;;;;;;;;;;;;;;6724:34;;6623:143;;;;:::o;1887:246::-;1945:7;1974:1;1969;:6;1965:47;;1999:1;1992:8;;;;1965:47;2022:9;2038:1;2034;:5;;;;:::i;:::-;2022:17;;2067:1;2062;2058;:5;;;;:::i;:::-;:10;2050:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2124:1;2117:8;;;1887:246;;;;;:::o;2141:132::-;2199:7;2226:39;2230:1;2233;2226:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2219:46;;2141:132;;;;:::o;552:98::-;605:7;632:10;625:17;;552:98;:::o;7637:335::-;7747:1;7730:19;;:5;:19;;;7722:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7828:1;7809:21;;:7;:21;;;7801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7910:6;7880:11;:18;7892:5;7880:18;;;;;;;;;;;;;;;:27;7899:7;7880:27;;;;;;;;;;;;;;;:36;;;;7948:7;7932:32;;7941:5;7932:32;;;7957:6;7932:32;;;;;;:::i;:::-;;;;;;;;7637:335;;;:::o;7980:1642::-;8084:1;8068:18;;:4;:18;;;8060:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8161:1;8147:16;;:2;:16;;;8139:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8231:1;8222:6;:10;8214:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8305:7;:5;:7::i;:::-;8297:15;;:4;:15;;;;:32;;;;;8322:7;:5;:7::i;:::-;8316:13;;:2;:13;;;;8297:32;8293:1279;;;8358:1;8346:9;:13;;;;8408:1;8387:19;;:22;8386:46;;8421:11;;8386:46;;;8411:9;;8386:46;8374:9;:58;;;;8471:1;8450:19;;:22;8447:163;;8511:5;8493:15;;:23;;;;;;;;;;;;;;;;;;4431:15;8532:12;:22;;;;4431:15;8569:14;:24;;;;8447:163;8636:13;;;;;;;;;;;8628:21;;:4;:21;;;:55;;;;;8667:15;;;;;;;;;;;8653:30;;:2;:30;;;;8628:55;:83;;;;;8689:18;:22;8708:2;8689:22;;;;;;;;;;;;;;;;;;;;;;;;;8687:24;8628:83;:102;;;;;8715:15;;;;;;;;;;;8628:102;8624:397;;;8798:12;;8788:6;:22;;8780:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8893:14;;8883:6;8867:13;8877:2;8867:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8859:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8980:1;8960:19;;:21;8957:49;;;8983:19;;:21;;;;;;;;;:::i;:::-;;;;;;8957:49;8624:397;9039:28;9070:24;9088:4;9070:9;:24::i;:::-;9039:55;;9114:6;;;;;;;;;;;9113:7;:32;;;;;9132:13;;;;;;;;;;;9124:21;;:4;:21;;;;9113:32;:47;;;;;9149:11;;;;;;;;;;;9113:47;:73;;;;;9185:1;9164:20;:22;9113:73;:113;;;;;9210:16;;9190:19;;:36;9113:113;9109:384;;;9247:38;9264:20;9247:16;:38::i;:::-;9304:26;9333:21;9304:50;;9397:1;9376:18;:22;9373:105;;;9423:35;9436:21;9423:12;:35::i;:::-;9373:105;9228:265;9109:384;8331:1173;8293:1279;;;9533:1;9521:9;:13;;;;9559:1;9547:9;:13;;;;8293:1279;9584:30;9599:4;9604:2;9607:6;9584:14;:30::i;:::-;7980:1642;;;:::o;1689:190::-;1775:7;1808:1;1803;:6;;1811:12;1795:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1835:9;1851:1;1847;:5;;;;:::i;:::-;1835:17;;1870:1;1863:8;;;1689:190;;;;;:::o;7375:254::-;7442:7;7481;;7470;:18;;7462:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7546:19;7569:10;:8;:10::i;:::-;7546:33;;7597:24;7609:11;7597:7;:11;;:24;;;;:::i;:::-;7590:31;;;7375:254;;;:::o;2281:189::-;2367:7;2399:1;2395;:5;2402:12;2387:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2426:9;2442:1;2438;:5;;;;:::i;:::-;2426:17;;2461:1;2454:8;;;2281:189;;;;;:::o;9630:483::-;5401:4;5392:6;;:13;;;;;;;;;;;;;;;;;;9708:21:::1;9746:1;9732:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9708:40;;9777:4;9759;9764:1;9759:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9803:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9793:4;9798:1;9793:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9836:62;9853:4;9868:15;;;;;;;;;;;9886:11;9836:8;:62::i;:::-;9909:15;;;;;;;;;;;:66;;;9990:11;10016:1;10032:4;10059;10079:15;9909:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9697:416;5437:5:::0;5428:6;;:14;;;;;;;;;;;;;;;;;;9630:483;:::o;10249:96::-;10306:14;;;;;;;;;;;:23;;:31;10330:6;10306:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10249:96;:::o;11136:146::-;11230:44;11248:6;11256:9;11267:6;11230:17;:44::i;:::-;11136:146;;;:::o;13455:163::-;13496:7;13517:15;13534;13553:19;:17;:19::i;:::-;13516:56;;;;13590:20;13602:7;13590;:11;;:20;;;;:::i;:::-;13583:27;;;;13455:163;:::o;11290:487::-;11389:15;11406:23;11431:12;11445:23;11470:12;11484:13;11501:19;11512:7;11501:10;:19::i;:::-;11388:132;;;;;;;;;;;;11549:28;11569:7;11549;:15;11557:6;11549:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11531:7;:15;11539:6;11531:15;;;;;;;;;;;;;;;:46;;;;11609:39;11632:15;11609:7;:18;11617:9;11609:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11588:7;:18;11596:9;11588:18;;;;;;;;;;;;;;;:60;;;;11659:16;11669:5;11659:9;:16::i;:::-;11686:23;11698:4;11704;11686:11;:23::i;:::-;11742:9;11725:44;;11734:6;11725:44;;;11753:15;11725:44;;;;;;:::i;:::-;;;;;;;;11377:400;;;;;;11290:487;;;:::o;13626:256::-;13676:7;13685;13705:15;13723:7;;13705:25;;13741:15;4431;13741:25;;13791:20;4431:15;13791:7;;:11;;:20;;;;:::i;:::-;13781:7;:30;13777:61;;;13821:7;;4431:15;13813:25;;;;;;;;13777:61;13857:7;13866;13849:25;;;;;;13626:256;;;:::o;12203:471::-;12262:7;12271;12280;12289;12298;12307;12328:23;12353:12;12367:13;12384:42;12396:7;12405:9;;12416;;12384:11;:42::i;:::-;12327:99;;;;;;12437:19;12460:10;:8;:10::i;:::-;12437:33;;12482:15;12499:23;12524:12;12540:46;12552:7;12561:4;12567:5;12574:11;12540;:46::i;:::-;12481:105;;;;;;12605:7;12614:15;12631:4;12637:15;12654:4;12660:5;12597:69;;;;;;;;;;;;;;;;;;;12203:471;;;;;;;:::o;1545:136::-;1603:7;1630:43;1634:1;1637;1630:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1623:50;;1545:136;;;;:::o;1358:179::-;1416:7;1436:9;1452:1;1448;:5;;;;:::i;:::-;1436:17;;1477:1;1472;:6;;1464:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1528:1;1521:8;;;1358:179;;;;:::o;11785:212::-;11838:19;11861:10;:8;:10::i;:::-;11838:33;;11882:13;11898:22;11908:11;11898:5;:9;;:22;;;;:::i;:::-;11882:38;;11956:33;11983:5;11956:7;:22;11972:4;11956:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11931:7;:22;11947:4;11931:22;;;;;;;;;;;;;;;:58;;;;11827:170;;11785:212;:::o;12005:147::-;12083:17;12095:4;12083:7;;:11;;:17;;;;:::i;:::-;12073:7;:27;;;;12124:20;12139:4;12124:10;;:14;;:20;;;;:::i;:::-;12111:10;:33;;;;12005:147;;:::o;12682:351::-;12775:7;12784;12793;12813:12;12828:28;12852:3;12828:19;12840:6;12828:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;12813:43;;12867:13;12883:29;12908:3;12883:20;12895:7;12883;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;12867:45;;12923:23;12949:28;12971:5;12949:17;12961:4;12949:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;12923:54;;12996:15;13013:4;13019:5;12988:37;;;;;;;;;12682:351;;;;;;;:::o;13041:409::-;13151:7;13160;13169;13189:15;13207:24;13219:11;13207:7;:11;;:24;;;;:::i;:::-;13189:42;;13242:12;13257:21;13266:11;13257:4;:8;;:21;;;;:::i;:::-;13242:36;;13289:13;13305:22;13315:11;13305:5;:9;;:22;;;;:::i;:::-;13289:38;;13338:23;13364:28;13386:5;13364:17;13376:4;13364:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13338:54;;13411:7;13420:15;13437:4;13403:39;;;;;;;;;;13041:409;;;;;;;;:::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:118::-;5865:24;5883:5;5865:24;:::i;:::-;5860:3;5853:37;5778:118;;:::o;5902:222::-;5995:4;6033:2;6022:9;6018:18;6010:26;;6046:71;6114:1;6103:9;6099:17;6090:6;6046:71;:::i;:::-;5902:222;;;;:::o;6130:474::-;6198:6;6206;6255:2;6243:9;6234:7;6230:23;6226:32;6223:119;;;6261:79;;:::i;:::-;6223:119;6381:1;6406:53;6451:7;6442:6;6431:9;6427:22;6406:53;:::i;:::-;6396:63;;6352:117;6508:2;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6479:118;6130:474;;;;;:::o;6610:182::-;6750:34;6746:1;6738:6;6734:14;6727:58;6610:182;:::o;6798:366::-;6940:3;6961:67;7025:2;7020:3;6961:67;:::i;:::-;6954:74;;7037:93;7126:3;7037:93;:::i;:::-;7155:2;7150:3;7146:12;7139:19;;6798:366;;;:::o;7170:419::-;7336:4;7374:2;7363:9;7359:18;7351:26;;7423:9;7417:4;7413:20;7409:1;7398:9;7394:17;7387:47;7451:131;7577:4;7451:131;:::i;:::-;7443:139;;7170:419;;;:::o;7595:173::-;7735:25;7731:1;7723:6;7719:14;7712:49;7595:173;:::o;7774:366::-;7916:3;7937:67;8001:2;7996:3;7937:67;:::i;:::-;7930:74;;8013:93;8102:3;8013:93;:::i;:::-;8131:2;8126:3;8122:12;8115:19;;7774:366;;;:::o;8146:419::-;8312:4;8350:2;8339:9;8335:18;8327:26;;8399:9;8393:4;8389:20;8385:1;8374:9;8370:17;8363:47;8427:131;8553:4;8427:131;:::i;:::-;8419:139;;8146:419;;;:::o;8571:143::-;8628:5;8659:6;8653:13;8644:22;;8675:33;8702:5;8675:33;:::i;:::-;8571:143;;;;:::o;8720:351::-;8790:6;8839:2;8827:9;8818:7;8814:23;8810:32;8807:119;;;8845:79;;:::i;:::-;8807:119;8965:1;8990:64;9046:7;9037:6;9026:9;9022:22;8990:64;:::i;:::-;8980:74;;8936:128;8720:351;;;;:::o;9077:332::-;9198:4;9236:2;9225:9;9221:18;9213:26;;9249:71;9317:1;9306:9;9302:17;9293:6;9249:71;:::i;:::-;9330:72;9398:2;9387:9;9383:18;9374:6;9330:72;:::i;:::-;9077:332;;;;;:::o;9415:85::-;9460:7;9489:5;9478:16;;9415:85;;;:::o;9506:60::-;9534:3;9555:5;9548:12;;9506:60;;;:::o;9572:158::-;9630:9;9663:61;9681:42;9690:32;9716:5;9690:32;:::i;:::-;9681:42;:::i;:::-;9663:61;:::i;:::-;9650:74;;9572:158;;;:::o;9736:147::-;9831:45;9870:5;9831:45;:::i;:::-;9826:3;9819:58;9736:147;;:::o;9889:807::-;10138:4;10176:3;10165:9;10161:19;10153:27;;10190:71;10258:1;10247:9;10243:17;10234:6;10190:71;:::i;:::-;10271:72;10339:2;10328:9;10324:18;10315:6;10271:72;:::i;:::-;10353:80;10429:2;10418:9;10414:18;10405:6;10353:80;:::i;:::-;10443;10519:2;10508:9;10504:18;10495:6;10443:80;:::i;:::-;10533:73;10601:3;10590:9;10586:19;10577:6;10533:73;:::i;:::-;10616;10684:3;10673:9;10669:19;10660:6;10616:73;:::i;:::-;9889:807;;;;;;;;;:::o;10702:143::-;10759:5;10790:6;10784:13;10775:22;;10806:33;10833:5;10806:33;:::i;:::-;10702:143;;;;:::o;10851:663::-;10939:6;10947;10955;11004:2;10992:9;10983:7;10979:23;10975:32;10972:119;;;11010:79;;:::i;:::-;10972:119;11130:1;11155:64;11211:7;11202:6;11191:9;11187:22;11155:64;:::i;:::-;11145:74;;11101:128;11268:2;11294:64;11350:7;11341:6;11330:9;11326:22;11294:64;:::i;:::-;11284:74;;11239:129;11407:2;11433:64;11489:7;11480:6;11469:9;11465:22;11433:64;:::i;:::-;11423:74;;11378:129;10851:663;;;;;:::o;11520:332::-;11641:4;11679:2;11668:9;11664:18;11656:26;;11692:71;11760:1;11749:9;11745:17;11736:6;11692:71;:::i;:::-;11773:72;11841:2;11830:9;11826:18;11817:6;11773:72;:::i;:::-;11520:332;;;;;:::o;11858:137::-;11912:5;11943:6;11937:13;11928:22;;11959:30;11983:5;11959:30;:::i;:::-;11858:137;;;;:::o;12001:345::-;12068:6;12117:2;12105:9;12096:7;12092:23;12088:32;12085:119;;;12123:79;;:::i;:::-;12085:119;12243:1;12268:61;12321:7;12312:6;12301:9;12297:22;12268:61;:::i;:::-;12258:71;;12214:125;12001:345;;;;:::o;12352:180::-;12400:77;12397:1;12390:88;12497:4;12494:1;12487:15;12521:4;12518:1;12511:15;12538:348;12578:7;12601:20;12619:1;12601:20;:::i;:::-;12596:25;;12635:20;12653:1;12635:20;:::i;:::-;12630:25;;12823:1;12755:66;12751:74;12748:1;12745:81;12740:1;12733:9;12726:17;12722:105;12719:131;;;12830:18;;:::i;:::-;12719:131;12878:1;12875;12871:9;12860:20;;12538:348;;;;:::o;12892:180::-;12940:77;12937:1;12930:88;13037:4;13034:1;13027:15;13061:4;13058:1;13051:15;13078:185;13118:1;13135:20;13153:1;13135:20;:::i;:::-;13130:25;;13169:20;13187:1;13169:20;:::i;:::-;13164:25;;13208:1;13198:35;;13213:18;;:::i;:::-;13198:35;13255:1;13252;13248:9;13243:14;;13078:185;;;;:::o;13269:220::-;13409:34;13405:1;13397:6;13393:14;13386:58;13478:3;13473:2;13465:6;13461:15;13454:28;13269:220;:::o;13495:366::-;13637:3;13658:67;13722:2;13717:3;13658:67;:::i;:::-;13651:74;;13734:93;13823:3;13734:93;:::i;:::-;13852:2;13847:3;13843:12;13836:19;;13495:366;;;:::o;13867:419::-;14033:4;14071:2;14060:9;14056:18;14048:26;;14120:9;14114:4;14110:20;14106:1;14095:9;14091:17;14084:47;14148:131;14274:4;14148:131;:::i;:::-;14140:139;;13867:419;;;:::o;14292:223::-;14432:34;14428:1;14420:6;14416:14;14409:58;14501:6;14496:2;14488:6;14484:15;14477:31;14292:223;:::o;14521:366::-;14663:3;14684:67;14748:2;14743:3;14684:67;:::i;:::-;14677:74;;14760:93;14849:3;14760:93;:::i;:::-;14878:2;14873:3;14869:12;14862:19;;14521:366;;;:::o;14893:419::-;15059:4;15097:2;15086:9;15082:18;15074:26;;15146:9;15140:4;15136:20;15132:1;15121:9;15117:17;15110:47;15174:131;15300:4;15174:131;:::i;:::-;15166:139;;14893:419;;;:::o;15318:221::-;15458:34;15454:1;15446:6;15442:14;15435:58;15527:4;15522:2;15514:6;15510:15;15503:29;15318:221;:::o;15545:366::-;15687:3;15708:67;15772:2;15767:3;15708:67;:::i;:::-;15701:74;;15784:93;15873:3;15784:93;:::i;:::-;15902:2;15897:3;15893:12;15886:19;;15545:366;;;:::o;15917:419::-;16083:4;16121:2;16110:9;16106:18;16098:26;;16170:9;16164:4;16160:20;16156:1;16145:9;16141:17;16134:47;16198:131;16324:4;16198:131;:::i;:::-;16190:139;;15917:419;;;:::o;16342:224::-;16482:34;16478:1;16470:6;16466:14;16459:58;16551:7;16546:2;16538:6;16534:15;16527:32;16342:224;:::o;16572:366::-;16714:3;16735:67;16799:2;16794:3;16735:67;:::i;:::-;16728:74;;16811:93;16900:3;16811:93;:::i;:::-;16929:2;16924:3;16920:12;16913:19;;16572:366;;;:::o;16944:419::-;17110:4;17148:2;17137:9;17133:18;17125:26;;17197:9;17191:4;17187:20;17183:1;17172:9;17168:17;17161:47;17225:131;17351:4;17225:131;:::i;:::-;17217:139;;16944:419;;;:::o;17369:222::-;17509:34;17505:1;17497:6;17493:14;17486:58;17578:5;17573:2;17565:6;17561:15;17554:30;17369:222;:::o;17597:366::-;17739:3;17760:67;17824:2;17819:3;17760:67;:::i;:::-;17753:74;;17836:93;17925:3;17836:93;:::i;:::-;17954:2;17949:3;17945:12;17938:19;;17597:366;;;:::o;17969:419::-;18135:4;18173:2;18162:9;18158:18;18150:26;;18222:9;18216:4;18212:20;18208:1;18197:9;18193:17;18186:47;18250:131;18376:4;18250:131;:::i;:::-;18242:139;;17969:419;;;:::o;18394:228::-;18534:34;18530:1;18522:6;18518:14;18511:58;18603:11;18598:2;18590:6;18586:15;18579:36;18394:228;:::o;18628:366::-;18770:3;18791:67;18855:2;18850:3;18791:67;:::i;:::-;18784:74;;18867:93;18956:3;18867:93;:::i;:::-;18985:2;18980:3;18976:12;18969:19;;18628:366;;;:::o;19000:419::-;19166:4;19204:2;19193:9;19189:18;19181:26;;19253:9;19247:4;19243:20;19239:1;19228:9;19224:17;19217:47;19281:131;19407:4;19281:131;:::i;:::-;19273:139;;19000:419;;;:::o;19425:175::-;19565:27;19561:1;19553:6;19549:14;19542:51;19425:175;:::o;19606:366::-;19748:3;19769:67;19833:2;19828:3;19769:67;:::i;:::-;19762:74;;19845:93;19934:3;19845:93;:::i;:::-;19963:2;19958:3;19954:12;19947:19;;19606:366;;;:::o;19978:419::-;20144:4;20182:2;20171:9;20167:18;20159:26;;20231:9;20225:4;20221:20;20217:1;20206:9;20202:17;20195:47;20259:131;20385:4;20259:131;:::i;:::-;20251:139;;19978:419;;;:::o;20403:191::-;20443:3;20462:20;20480:1;20462:20;:::i;:::-;20457:25;;20496:20;20514:1;20496:20;:::i;:::-;20491:25;;20539:1;20536;20532:9;20525:16;;20560:3;20557:1;20554:10;20551:36;;;20567:18;;:::i;:::-;20551:36;20403:191;;;;:::o;20600:176::-;20740:28;20736:1;20728:6;20724:14;20717:52;20600:176;:::o;20782:366::-;20924:3;20945:67;21009:2;21004:3;20945:67;:::i;:::-;20938:74;;21021:93;21110:3;21021:93;:::i;:::-;21139:2;21134:3;21130:12;21123:19;;20782:366;;;:::o;21154:419::-;21320:4;21358:2;21347:9;21343:18;21335:26;;21407:9;21401:4;21397:20;21393:1;21382:9;21378:17;21371:47;21435:131;21561:4;21435:131;:::i;:::-;21427:139;;21154:419;;;:::o;21579:171::-;21618:3;21641:24;21659:5;21641:24;:::i;:::-;21632:33;;21687:4;21680:5;21677:15;21674:41;;21695:18;;:::i;:::-;21674:41;21742:1;21735:5;21731:13;21724:20;;21579:171;;;:::o;21756:194::-;21796:4;21816:20;21834:1;21816:20;:::i;:::-;21811:25;;21850:20;21868:1;21850:20;:::i;:::-;21845:25;;21894:1;21891;21887:9;21879:17;;21918:1;21912:4;21909:11;21906:37;;;21923:18;;:::i;:::-;21906:37;21756:194;;;;:::o;21956:229::-;22096:34;22092:1;22084:6;22080:14;22073:58;22165:12;22160:2;22152:6;22148:15;22141:37;21956:229;:::o;22191:366::-;22333:3;22354:67;22418:2;22413:3;22354:67;:::i;:::-;22347:74;;22430:93;22519:3;22430:93;:::i;:::-;22548:2;22543:3;22539:12;22532:19;;22191:366;;;:::o;22563:419::-;22729:4;22767:2;22756:9;22752:18;22744:26;;22816:9;22810:4;22806:20;22802:1;22791:9;22787:17;22780:47;22844:131;22970:4;22844:131;:::i;:::-;22836:139;;22563:419;;;:::o;22988:180::-;23036:77;23033:1;23026:88;23133:4;23130:1;23123:15;23157:4;23154:1;23147:15;23174:180;23222:77;23219:1;23212:88;23319:4;23316:1;23309:15;23343:4;23340:1;23333:15;23360:114;23427:6;23461:5;23455:12;23445:22;;23360:114;;;:::o;23480:184::-;23579:11;23613:6;23608:3;23601:19;23653:4;23648:3;23644:14;23629:29;;23480:184;;;;:::o;23670:132::-;23737:4;23760:3;23752:11;;23790:4;23785:3;23781:14;23773:22;;23670:132;;;:::o;23808:108::-;23885:24;23903:5;23885:24;:::i;:::-;23880:3;23873:37;23808:108;;:::o;23922:179::-;23991:10;24012:46;24054:3;24046:6;24012:46;:::i;:::-;24090:4;24085:3;24081:14;24067:28;;23922:179;;;;:::o;24107:113::-;24177:4;24209;24204:3;24200:14;24192:22;;24107:113;;;:::o;24256:732::-;24375:3;24404:54;24452:5;24404:54;:::i;:::-;24474:86;24553:6;24548:3;24474:86;:::i;:::-;24467:93;;24584:56;24634:5;24584:56;:::i;:::-;24663:7;24694:1;24679:284;24704:6;24701:1;24698:13;24679:284;;;24780:6;24774:13;24807:63;24866:3;24851:13;24807:63;:::i;:::-;24800:70;;24893:60;24946:6;24893:60;:::i;:::-;24883:70;;24739:224;24726:1;24723;24719:9;24714:14;;24679:284;;;24683:14;24979:3;24972:10;;24380:608;;;24256:732;;;;:::o;24994:831::-;25257:4;25295:3;25284:9;25280:19;25272:27;;25309:71;25377:1;25366:9;25362:17;25353:6;25309:71;:::i;:::-;25390:80;25466:2;25455:9;25451:18;25442:6;25390:80;:::i;:::-;25517:9;25511:4;25507:20;25502:2;25491:9;25487:18;25480:48;25545:108;25648:4;25639:6;25545:108;:::i;:::-;25537:116;;25663:72;25731:2;25720:9;25716:18;25707:6;25663:72;:::i;:::-;25745:73;25813:3;25802:9;25798:19;25789:6;25745:73;:::i;:::-;24994:831;;;;;;;;:::o;25831:177::-;25971:29;25967:1;25959:6;25955:14;25948:53;25831:177;:::o;26014:366::-;26156:3;26177:67;26241:2;26236:3;26177:67;:::i;:::-;26170:74;;26253:93;26342:3;26253:93;:::i;:::-;26371:2;26366:3;26362:12;26355:19;;26014:366;;;:::o;26386:419::-;26552:4;26590:2;26579:9;26575:18;26567:26;;26639:9;26633:4;26629:20;26625:1;26614:9;26610:17;26603:47;26667:131;26793:4;26667:131;:::i;:::-;26659:139;;26386:419;;;:::o

Swarm Source

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