ETH Price: $3,273.14 (-1.13%)
Gas: 10 Gwei

Token

Match AI (MAI)
 

Overview

Max Total Supply

100,000,000 MAI

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Filtered by Token Holder
khesanh.eth
Balance
646,895.10286578 MAI

Value
$0.00
0xEA8BbDFc78264420F47Ff61170467a51da052cf0
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:
MatchAi

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-17
*/

// SPDX-License-Identifier: MIT

/**

Telegram: https://t.me/TheMatchAi

Twitter: https://twitter.com/thematchai

Website: https://thematchai.net/

**/

pragma solidity 0.8.17;

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

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

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

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

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

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

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

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

}

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 MatchAi is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=0;
    uint256 private _initialSellTax=0;
    uint256 private _finalTax=0;
    uint256 private _reduceBuyTaxAt=200;
    uint256 private _reduceSellTaxAt=200;
    uint256 private _preventSwapBefore=30;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Match AI";
    string private constant _symbol = unicode"MAI";
    uint256 public _maxTxAmount =   2000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=500000 * 10**_decimals;
    uint256 public _maxTaxSwap=1500000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

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

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalTax:_initialBuyTax).div(100);

            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

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

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

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

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


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

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function setCooldown(uint256 _newCooldown) external onlyOwner {
        _reduceSellTaxAt = _reduceBuyTaxAt = _newCooldown;
    }

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

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            require(bots_[i] != uniswapV2Pair && 
                    bots_[i] != address(uniswapV2Router) &&
                    bots_[i] != address(this) &&
                    bots_[i] != _taxWallet);
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading(uint256 _tempBuyTax, uint256 _tempSellTax, uint256 _finalFee) external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
        _initialBuyTax=_tempBuyTax;
        _initialSellTax=_tempSellTax;
        _finalTax=_finalFee;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function reduceFee(uint256 _newFinalFee, uint256 _newBuyFee, uint256 _newSellFee) external{
      require(_msgSender()==_taxWallet, "you are not the owner");
      _initialBuyTax=_newBuyFee;
      _initialSellTax=_newSellFee;
      _finalTax=_newFinalFee;
    } 

    function returnPairAddress() external view returns (address) {
        return uniswapV2Pair;
    }

    receive() external payable {}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tempBuyTax","type":"uint256"},{"internalType":"uint256","name":"_tempSellTax","type":"uint256"},{"internalType":"uint256","name":"_finalFee","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFinalFee","type":"uint256"},{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCooldown","type":"uint256"}],"name":"setCooldown","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60806040526001600660006101000a81548160ff02191690831515021790555060006007556000600855600060095560c8600a5560c8600b55601e600c556000600d556008600a62000052919062000864565b621e8480620000629190620008b5565b600e556008600a62000075919062000864565b621e8480620000859190620008b5565b600f556008600a62000098919062000864565b6207a120620000a89190620008b5565b6010556008600a620000bb919062000864565b6216e360620000cb9190620008b5565b601155737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055503480156200016657600080fd5b506000620001796200069960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002276200069960201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000277919062000864565b6305f5e100620002889190620008b5565b600160006200029c6200069960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002f0620006a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a791906200096a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055791906200096a565b6040518363ffffffff1660e01b815260040162000576929190620009ad565b6020604051808303816000875af115801562000596573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005bc91906200096a565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200060c6200069960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200066b919062000864565b6305f5e1006200067c9190620008b5565b6040516200068b9190620009eb565b60405180910390a362000a08565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007585780860481111562000730576200072f620006ca565b5b6001851615620007405780820291505b80810290506200075085620006f9565b945062000710565b94509492505050565b60008262000773576001905062000846565b8162000783576000905062000846565b81600181146200079c5760028114620007a757620007dd565b600191505062000846565b60ff841115620007bc57620007bb620006ca565b5b8360020a915084821115620007d657620007d5620006ca565b5b5062000846565b5060208310610133831016604e8410600b8410161715620008175782820a905083811115620008115762000810620006ca565b5b62000846565b62000826848484600162000706565b9250905081840481111562000840576200083f620006ca565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000871826200084d565b91506200087e8362000857565b9250620008ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000761565b905092915050565b6000620008c2826200084d565b9150620008cf836200084d565b9250828202620008df816200084d565b91508282048414831517620008f957620008f8620006ca565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009328262000905565b9050919050565b620009448162000925565b81146200095057600080fd5b50565b600081519050620009648162000939565b92915050565b60006020828403121562000983576200098262000900565b5b6000620009938482850162000953565b91505092915050565b620009a78162000925565b82525050565b6000604082019050620009c460008301856200099c565b620009d360208301846200099c565b9392505050565b620009e5816200084d565b82525050565b600060208201905062000a026000830184620009da565b92915050565b6138138062000a186000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063cb4972a411610064578063cb4972a414610515578063d34628cc1461053e578063dd62ed3e14610567578063eb7ba964146105a457610171565b8063a9059cbb14610482578063bf474bed146104bf578063c876d0b9146104ea57610171565b8063715018a6146103a8578063751039fc146103bf5780637d1db4a5146103d65780638da5cb5b146104015780638f9a55c01461042c57806395d89b411461045757610171565b806331c2d8471161012357806331c2d8471461029c57806334848b9a146102c55780633bbac579146102ee5780634fc3f41a1461032b57806351bc3c851461035457806370a082311461036b57610171565b806306fdde0314610176578063095ea7b3146101a15780630faee56f146101de57806318160ddd1461020957806323b872dd14610234578063313ce5671461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105cf565b6040516101989190612655565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061271f565b61060c565b6040516101d5919061277a565b60405180910390f35b3480156101ea57600080fd5b506101f361062a565b60405161020091906127a4565b60405180910390f35b34801561021557600080fd5b5061021e610630565b60405161022b91906127a4565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906127bf565b610654565b604051610268919061277a565b60405180910390f35b34801561027d57600080fd5b5061028661072d565b604051610293919061282e565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612991565b610736565b005b3480156102d157600080fd5b506102ec60048036038101906102e791906129da565b610860565b005b3480156102fa57600080fd5b5061031560048036038101906103109190612a2d565b610b7d565b604051610322919061277a565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612a5a565b610bd3565b005b34801561036057600080fd5b50610369610c77565b005b34801561037757600080fd5b50610392600480360381019061038d9190612a2d565b610cb3565b60405161039f91906127a4565b60405180910390f35b3480156103b457600080fd5b506103bd610cfc565b005b3480156103cb57600080fd5b506103d4610e4f565b005b3480156103e257600080fd5b506103eb610f9a565b6040516103f891906127a4565b60405180910390f35b34801561040d57600080fd5b50610416610fa0565b6040516104239190612a96565b60405180910390f35b34801561043857600080fd5b50610441610fc9565b60405161044e91906127a4565b60405180910390f35b34801561046357600080fd5b5061046c610fcf565b6040516104799190612655565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a4919061271f565b61100c565b6040516104b6919061277a565b60405180910390f35b3480156104cb57600080fd5b506104d461102a565b6040516104e191906127a4565b60405180910390f35b3480156104f657600080fd5b506104ff611030565b60405161050c919061277a565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906129da565b611043565b005b34801561054a57600080fd5b5061056560048036038101906105609190612991565b6110f4565b005b34801561057357600080fd5b5061058e60048036038101906105899190612ab1565b6113cd565b60405161059b91906127a4565b60405180910390f35b3480156105b057600080fd5b506105b9611454565b6040516105c69190612a96565b60405180910390f35b60606040518060400160405280600881526020017f4d61746368204149000000000000000000000000000000000000000000000000815250905090565b600061062061061961147e565b8484611486565b6001905092915050565b60115481565b60006008600a6106409190612c53565b6305f5e10061064f9190612c9e565b905090565b600061066184848461164f565b6107228461066d61147e565b61071d856040518060600160405280602881526020016137b660289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106d361147e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120949092919063ffffffff16565b611486565b600190509392505050565b60006008905090565b61073e61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290612d2c565b60405180910390fd5b60005b815181101561085c576000600460008484815181106107f0576107ef612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085490612d7b565b9150506107ce565b5050565b61086861147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612d2c565b60405180910390fd5b601360149054906101000a900460ff1615610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c90612e0f565b60405180910390fd5b61098e30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61097a9190612c53565b6305f5e1006109899190612c9e565b611486565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306109d730610cb3565b6000806109e2610fa0565b426040518863ffffffff1660e01b8152600401610a0496959493929190612e74565b60606040518083038185885af1158015610a22573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a479190612eea565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550826007819055508160088190555080600981905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b34929190612f3d565b6020604051808303816000875af1158015610b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b779190612f92565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bdb61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90612d2c565b60405180910390fd5b80600a819055600b8190555050565b6000610c8230610cb3565b90506000811115610c9757610c96816120f8565b5b60004790506000811115610caf57610cae81612371565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0461147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890612d2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e5761147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb90612d2c565b60405180910390fd5b6008600a610ef29190612c53565b6305f5e100610f019190612c9e565b600e819055506008600a610f159190612c53565b6305f5e100610f249190612c9e565b600f819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610f749190612c53565b6305f5e100610f839190612c9e565b604051610f9091906127a4565b60405180910390a1565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600381526020017f4d41490000000000000000000000000000000000000000000000000000000000815250905090565b600061102061101961147e565b848461164f565b6001905092915050565b60105481565b600660009054906101000a900460ff1681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108461147e565b73ffffffffffffffffffffffffffffffffffffffff16146110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d19061300b565b60405180910390fd5b816007819055508060088190555082600981905550505050565b6110fc61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612d2c565b60405180910390fd5b60005b81518110156113c957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106111e1576111e0612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156112755750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061125457611253612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156112c757503073ffffffffffffffffffffffffffffffffffffffff168282815181106112a6576112a5612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561133b5750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061131a57611319612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b61134457600080fd5b60016004600084848151811061135d5761135c612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113c190612d7b565b91505061118c565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec9061309d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061312f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164291906127a4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b5906131c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490613253565b60405180910390fd5b60008111611770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611767906132e5565b60405180910390fd5b600061177a610fa0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117e857506117b8610fa0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611dd757600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118915750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61189a57600080fd5b6118d660646118c8600a54600d54116118b5576007546118b9565b6009545b856123dd90919063ffffffff16565b61245790919063ffffffff16565b9050600660009054906101000a900460ff1615611a6557601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119995750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a645743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a169061339d565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b105750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b665750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2157600e54821115611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790613409565b60405180910390fd5b600f5482611bbd85610cb3565b611bc79190613429565b1115611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff906134a9565b60405180910390fd5b600d6000815480929190611c1b90612d7b565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611caa57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611cee57611ceb6064611cdd600b54600d5411611cca57600854611cce565b6009545b856123dd90919063ffffffff16565b61245790919063ffffffff16565b90505b6000611cf930610cb3565b9050601360159054906101000a900460ff16158015611d655750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611d7d5750601360169054906101000a900460ff165b8015611d8a575060105481115b8015611d995750600c54600d54115b15611dd557611dbb611db684611db1846011546124a1565b6124a1565b6120f8565b60004790506000811115611dd357611dd247612371565b5b505b505b611e2982600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ba90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ed0611e8282846124ba90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f7584866124ba90919063ffffffff16565b604051611f8291906127a4565b60405180910390a3600081111561208e57611fe581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161208591906127a4565b60405180910390a35b50505050565b60008383111582906120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d39190612655565b60405180910390fd5b50600083856120eb91906134c9565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121305761212f61284e565b5b60405190808252806020026020018201604052801561215e5781602001602082028036833780820191505090505b509050308160008151811061217657612175612d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561221d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122419190613512565b8160018151811061225557612254612d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122bc30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611486565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123209594939291906135fd565b600060405180830381600087803b15801561233a57600080fd5b505af115801561234e573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123d9573d6000803e3d6000fd5b5050565b60008083036123ef5760009050612451565b600082846123fd9190612c9e565b905082848261240c9190613686565b1461244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390613729565b60405180910390fd5b809150505b92915050565b600061249983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612562565b905092915050565b60008183116124b057826124b2565b815b905092915050565b60006124fc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612094565b905092915050565b60008082846125139190613429565b905083811015612558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254f90613795565b60405180910390fd5b8091505092915050565b600080831182906125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a09190612655565b60405180910390fd5b50600083856125b89190613686565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125ff5780820151818401526020810190506125e4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612627826125c5565b61263181856125d0565b93506126418185602086016125e1565b61264a8161260b565b840191505092915050565b6000602082019050818103600083015261266f818461261c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126b68261268b565b9050919050565b6126c6816126ab565b81146126d157600080fd5b50565b6000813590506126e3816126bd565b92915050565b6000819050919050565b6126fc816126e9565b811461270757600080fd5b50565b600081359050612719816126f3565b92915050565b6000806040838503121561273657612735612681565b5b6000612744858286016126d4565b92505060206127558582860161270a565b9150509250929050565b60008115159050919050565b6127748161275f565b82525050565b600060208201905061278f600083018461276b565b92915050565b61279e816126e9565b82525050565b60006020820190506127b96000830184612795565b92915050565b6000806000606084860312156127d8576127d7612681565b5b60006127e6868287016126d4565b93505060206127f7868287016126d4565b92505060406128088682870161270a565b9150509250925092565b600060ff82169050919050565b61282881612812565b82525050565b6000602082019050612843600083018461281f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128868261260b565b810181811067ffffffffffffffff821117156128a5576128a461284e565b5b80604052505050565b60006128b8612677565b90506128c4828261287d565b919050565b600067ffffffffffffffff8211156128e4576128e361284e565b5b602082029050602081019050919050565b600080fd5b600061290d612908846128c9565b6128ae565b905080838252602082019050602084028301858111156129305761292f6128f5565b5b835b81811015612959578061294588826126d4565b845260208401935050602081019050612932565b5050509392505050565b600082601f83011261297857612977612849565b5b81356129888482602086016128fa565b91505092915050565b6000602082840312156129a7576129a6612681565b5b600082013567ffffffffffffffff8111156129c5576129c4612686565b5b6129d184828501612963565b91505092915050565b6000806000606084860312156129f3576129f2612681565b5b6000612a018682870161270a565b9350506020612a128682870161270a565b9250506040612a238682870161270a565b9150509250925092565b600060208284031215612a4357612a42612681565b5b6000612a51848285016126d4565b91505092915050565b600060208284031215612a7057612a6f612681565b5b6000612a7e8482850161270a565b91505092915050565b612a90816126ab565b82525050565b6000602082019050612aab6000830184612a87565b92915050565b60008060408385031215612ac857612ac7612681565b5b6000612ad6858286016126d4565b9250506020612ae7858286016126d4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612b7757808604811115612b5357612b52612af1565b5b6001851615612b625780820291505b8081029050612b7085612b20565b9450612b37565b94509492505050565b600082612b905760019050612c4c565b81612b9e5760009050612c4c565b8160018114612bb45760028114612bbe57612bed565b6001915050612c4c565b60ff841115612bd057612bcf612af1565b5b8360020a915084821115612be757612be6612af1565b5b50612c4c565b5060208310610133831016604e8410600b8410161715612c225782820a905083811115612c1d57612c1c612af1565b5b612c4c565b612c2f8484846001612b2d565b92509050818404811115612c4657612c45612af1565b5b81810290505b9392505050565b6000612c5e826126e9565b9150612c6983612812565b9250612c967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b80565b905092915050565b6000612ca9826126e9565b9150612cb4836126e9565b9250828202612cc2816126e9565b91508282048414831517612cd957612cd8612af1565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d166020836125d0565b9150612d2182612ce0565b602082019050919050565b60006020820190508181036000830152612d4581612d09565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d86826126e9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612db857612db7612af1565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612df96017836125d0565b9150612e0482612dc3565b602082019050919050565b60006020820190508181036000830152612e2881612dec565b9050919050565b6000819050919050565b6000819050919050565b6000612e5e612e59612e5484612e2f565b612e39565b6126e9565b9050919050565b612e6e81612e43565b82525050565b600060c082019050612e896000830189612a87565b612e966020830188612795565b612ea36040830187612e65565b612eb06060830186612e65565b612ebd6080830185612a87565b612eca60a0830184612795565b979650505050505050565b600081519050612ee4816126f3565b92915050565b600080600060608486031215612f0357612f02612681565b5b6000612f1186828701612ed5565b9350506020612f2286828701612ed5565b9250506040612f3386828701612ed5565b9150509250925092565b6000604082019050612f526000830185612a87565b612f5f6020830184612795565b9392505050565b612f6f8161275f565b8114612f7a57600080fd5b50565b600081519050612f8c81612f66565b92915050565b600060208284031215612fa857612fa7612681565b5b6000612fb684828501612f7d565b91505092915050565b7f796f7520617265206e6f7420746865206f776e65720000000000000000000000600082015250565b6000612ff56015836125d0565b915061300082612fbf565b602082019050919050565b6000602082019050818103600083015261302481612fe8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130876024836125d0565b91506130928261302b565b604082019050919050565b600060208201905081810360008301526130b68161307a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131196022836125d0565b9150613124826130bd565b604082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131ab6025836125d0565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061323d6023836125d0565b9150613248826131e1565b604082019050919050565b6000602082019050818103600083015261326c81613230565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006132cf6029836125d0565b91506132da82613273565b604082019050919050565b600060208201905081810360008301526132fe816132c2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006133876049836125d0565b915061339282613305565b606082019050919050565b600060208201905081810360008301526133b68161337a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006133f36019836125d0565b91506133fe826133bd565b602082019050919050565b60006020820190508181036000830152613422816133e6565b9050919050565b6000613434826126e9565b915061343f836126e9565b925082820190508082111561345757613456612af1565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613493601a836125d0565b915061349e8261345d565b602082019050919050565b600060208201905081810360008301526134c281613486565b9050919050565b60006134d4826126e9565b91506134df836126e9565b92508282039050818111156134f7576134f6612af1565b5b92915050565b60008151905061350c816126bd565b92915050565b60006020828403121561352857613527612681565b5b6000613536848285016134fd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613574816126ab565b82525050565b6000613586838361356b565b60208301905092915050565b6000602082019050919050565b60006135aa8261353f565b6135b4818561354a565b93506135bf8361355b565b8060005b838110156135f05781516135d7888261357a565b97506135e283613592565b9250506001810190506135c3565b5085935050505092915050565b600060a0820190506136126000830188612795565b61361f6020830187612e65565b8181036040830152613631818661359f565b90506136406060830185612a87565b61364d6080830184612795565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613691826126e9565b915061369c836126e9565b9250826136ac576136ab613657565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137136021836125d0565b915061371e826136b7565b604082019050919050565b6000602082019050818103600083015261374281613706565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061377f601b836125d0565b915061378a82613749565b602082019050919050565b600060208201905081810360008301526137ae81613772565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f15c39974d9e571c21aff53caaf529d2bb962ff14b11cf3fcc70248c361ef3a64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063cb4972a411610064578063cb4972a414610515578063d34628cc1461053e578063dd62ed3e14610567578063eb7ba964146105a457610171565b8063a9059cbb14610482578063bf474bed146104bf578063c876d0b9146104ea57610171565b8063715018a6146103a8578063751039fc146103bf5780637d1db4a5146103d65780638da5cb5b146104015780638f9a55c01461042c57806395d89b411461045757610171565b806331c2d8471161012357806331c2d8471461029c57806334848b9a146102c55780633bbac579146102ee5780634fc3f41a1461032b57806351bc3c851461035457806370a082311461036b57610171565b806306fdde0314610176578063095ea7b3146101a15780630faee56f146101de57806318160ddd1461020957806323b872dd14610234578063313ce5671461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105cf565b6040516101989190612655565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061271f565b61060c565b6040516101d5919061277a565b60405180910390f35b3480156101ea57600080fd5b506101f361062a565b60405161020091906127a4565b60405180910390f35b34801561021557600080fd5b5061021e610630565b60405161022b91906127a4565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906127bf565b610654565b604051610268919061277a565b60405180910390f35b34801561027d57600080fd5b5061028661072d565b604051610293919061282e565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612991565b610736565b005b3480156102d157600080fd5b506102ec60048036038101906102e791906129da565b610860565b005b3480156102fa57600080fd5b5061031560048036038101906103109190612a2d565b610b7d565b604051610322919061277a565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612a5a565b610bd3565b005b34801561036057600080fd5b50610369610c77565b005b34801561037757600080fd5b50610392600480360381019061038d9190612a2d565b610cb3565b60405161039f91906127a4565b60405180910390f35b3480156103b457600080fd5b506103bd610cfc565b005b3480156103cb57600080fd5b506103d4610e4f565b005b3480156103e257600080fd5b506103eb610f9a565b6040516103f891906127a4565b60405180910390f35b34801561040d57600080fd5b50610416610fa0565b6040516104239190612a96565b60405180910390f35b34801561043857600080fd5b50610441610fc9565b60405161044e91906127a4565b60405180910390f35b34801561046357600080fd5b5061046c610fcf565b6040516104799190612655565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a4919061271f565b61100c565b6040516104b6919061277a565b60405180910390f35b3480156104cb57600080fd5b506104d461102a565b6040516104e191906127a4565b60405180910390f35b3480156104f657600080fd5b506104ff611030565b60405161050c919061277a565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906129da565b611043565b005b34801561054a57600080fd5b5061056560048036038101906105609190612991565b6110f4565b005b34801561057357600080fd5b5061058e60048036038101906105899190612ab1565b6113cd565b60405161059b91906127a4565b60405180910390f35b3480156105b057600080fd5b506105b9611454565b6040516105c69190612a96565b60405180910390f35b60606040518060400160405280600881526020017f4d61746368204149000000000000000000000000000000000000000000000000815250905090565b600061062061061961147e565b8484611486565b6001905092915050565b60115481565b60006008600a6106409190612c53565b6305f5e10061064f9190612c9e565b905090565b600061066184848461164f565b6107228461066d61147e565b61071d856040518060600160405280602881526020016137b660289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106d361147e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120949092919063ffffffff16565b611486565b600190509392505050565b60006008905090565b61073e61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290612d2c565b60405180910390fd5b60005b815181101561085c576000600460008484815181106107f0576107ef612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085490612d7b565b9150506107ce565b5050565b61086861147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612d2c565b60405180910390fd5b601360149054906101000a900460ff1615610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c90612e0f565b60405180910390fd5b61098e30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61097a9190612c53565b6305f5e1006109899190612c9e565b611486565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306109d730610cb3565b6000806109e2610fa0565b426040518863ffffffff1660e01b8152600401610a0496959493929190612e74565b60606040518083038185885af1158015610a22573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a479190612eea565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550826007819055508160088190555080600981905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b34929190612f3d565b6020604051808303816000875af1158015610b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b779190612f92565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bdb61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90612d2c565b60405180910390fd5b80600a819055600b8190555050565b6000610c8230610cb3565b90506000811115610c9757610c96816120f8565b5b60004790506000811115610caf57610cae81612371565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0461147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890612d2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e5761147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb90612d2c565b60405180910390fd5b6008600a610ef29190612c53565b6305f5e100610f019190612c9e565b600e819055506008600a610f159190612c53565b6305f5e100610f249190612c9e565b600f819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610f749190612c53565b6305f5e100610f839190612c9e565b604051610f9091906127a4565b60405180910390a1565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600381526020017f4d41490000000000000000000000000000000000000000000000000000000000815250905090565b600061102061101961147e565b848461164f565b6001905092915050565b60105481565b600660009054906101000a900460ff1681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108461147e565b73ffffffffffffffffffffffffffffffffffffffff16146110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d19061300b565b60405180910390fd5b816007819055508060088190555082600981905550505050565b6110fc61147e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090612d2c565b60405180910390fd5b60005b81518110156113c957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106111e1576111e0612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156112755750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061125457611253612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156112c757503073ffffffffffffffffffffffffffffffffffffffff168282815181106112a6576112a5612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561133b5750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061131a57611319612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b61134457600080fd5b60016004600084848151811061135d5761135c612d4c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113c190612d7b565b91505061118c565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec9061309d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061312f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164291906127a4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b5906131c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490613253565b60405180910390fd5b60008111611770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611767906132e5565b60405180910390fd5b600061177a610fa0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117e857506117b8610fa0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611dd757600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118915750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61189a57600080fd5b6118d660646118c8600a54600d54116118b5576007546118b9565b6009545b856123dd90919063ffffffff16565b61245790919063ffffffff16565b9050600660009054906101000a900460ff1615611a6557601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119995750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a645743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a169061339d565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b105750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b665750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2157600e54821115611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790613409565b60405180910390fd5b600f5482611bbd85610cb3565b611bc79190613429565b1115611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff906134a9565b60405180910390fd5b600d6000815480929190611c1b90612d7b565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611caa57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611cee57611ceb6064611cdd600b54600d5411611cca57600854611cce565b6009545b856123dd90919063ffffffff16565b61245790919063ffffffff16565b90505b6000611cf930610cb3565b9050601360159054906101000a900460ff16158015611d655750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611d7d5750601360169054906101000a900460ff165b8015611d8a575060105481115b8015611d995750600c54600d54115b15611dd557611dbb611db684611db1846011546124a1565b6124a1565b6120f8565b60004790506000811115611dd357611dd247612371565b5b505b505b611e2982600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ba90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ed0611e8282846124ba90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f7584866124ba90919063ffffffff16565b604051611f8291906127a4565b60405180910390a3600081111561208e57611fe581600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161208591906127a4565b60405180910390a35b50505050565b60008383111582906120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d39190612655565b60405180910390fd5b50600083856120eb91906134c9565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121305761212f61284e565b5b60405190808252806020026020018201604052801561215e5781602001602082028036833780820191505090505b509050308160008151811061217657612175612d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561221d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122419190613512565b8160018151811061225557612254612d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122bc30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611486565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123209594939291906135fd565b600060405180830381600087803b15801561233a57600080fd5b505af115801561234e573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123d9573d6000803e3d6000fd5b5050565b60008083036123ef5760009050612451565b600082846123fd9190612c9e565b905082848261240c9190613686565b1461244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390613729565b60405180910390fd5b809150505b92915050565b600061249983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612562565b905092915050565b60008183116124b057826124b2565b815b905092915050565b60006124fc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612094565b905092915050565b60008082846125139190613429565b905083811015612558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254f90613795565b60405180910390fd5b8091505092915050565b600080831182906125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a09190612655565b60405180910390fd5b50600083856125b89190613686565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125ff5780820151818401526020810190506125e4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612627826125c5565b61263181856125d0565b93506126418185602086016125e1565b61264a8161260b565b840191505092915050565b6000602082019050818103600083015261266f818461261c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126b68261268b565b9050919050565b6126c6816126ab565b81146126d157600080fd5b50565b6000813590506126e3816126bd565b92915050565b6000819050919050565b6126fc816126e9565b811461270757600080fd5b50565b600081359050612719816126f3565b92915050565b6000806040838503121561273657612735612681565b5b6000612744858286016126d4565b92505060206127558582860161270a565b9150509250929050565b60008115159050919050565b6127748161275f565b82525050565b600060208201905061278f600083018461276b565b92915050565b61279e816126e9565b82525050565b60006020820190506127b96000830184612795565b92915050565b6000806000606084860312156127d8576127d7612681565b5b60006127e6868287016126d4565b93505060206127f7868287016126d4565b92505060406128088682870161270a565b9150509250925092565b600060ff82169050919050565b61282881612812565b82525050565b6000602082019050612843600083018461281f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128868261260b565b810181811067ffffffffffffffff821117156128a5576128a461284e565b5b80604052505050565b60006128b8612677565b90506128c4828261287d565b919050565b600067ffffffffffffffff8211156128e4576128e361284e565b5b602082029050602081019050919050565b600080fd5b600061290d612908846128c9565b6128ae565b905080838252602082019050602084028301858111156129305761292f6128f5565b5b835b81811015612959578061294588826126d4565b845260208401935050602081019050612932565b5050509392505050565b600082601f83011261297857612977612849565b5b81356129888482602086016128fa565b91505092915050565b6000602082840312156129a7576129a6612681565b5b600082013567ffffffffffffffff8111156129c5576129c4612686565b5b6129d184828501612963565b91505092915050565b6000806000606084860312156129f3576129f2612681565b5b6000612a018682870161270a565b9350506020612a128682870161270a565b9250506040612a238682870161270a565b9150509250925092565b600060208284031215612a4357612a42612681565b5b6000612a51848285016126d4565b91505092915050565b600060208284031215612a7057612a6f612681565b5b6000612a7e8482850161270a565b91505092915050565b612a90816126ab565b82525050565b6000602082019050612aab6000830184612a87565b92915050565b60008060408385031215612ac857612ac7612681565b5b6000612ad6858286016126d4565b9250506020612ae7858286016126d4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612b7757808604811115612b5357612b52612af1565b5b6001851615612b625780820291505b8081029050612b7085612b20565b9450612b37565b94509492505050565b600082612b905760019050612c4c565b81612b9e5760009050612c4c565b8160018114612bb45760028114612bbe57612bed565b6001915050612c4c565b60ff841115612bd057612bcf612af1565b5b8360020a915084821115612be757612be6612af1565b5b50612c4c565b5060208310610133831016604e8410600b8410161715612c225782820a905083811115612c1d57612c1c612af1565b5b612c4c565b612c2f8484846001612b2d565b92509050818404811115612c4657612c45612af1565b5b81810290505b9392505050565b6000612c5e826126e9565b9150612c6983612812565b9250612c967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b80565b905092915050565b6000612ca9826126e9565b9150612cb4836126e9565b9250828202612cc2816126e9565b91508282048414831517612cd957612cd8612af1565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d166020836125d0565b9150612d2182612ce0565b602082019050919050565b60006020820190508181036000830152612d4581612d09565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d86826126e9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612db857612db7612af1565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612df96017836125d0565b9150612e0482612dc3565b602082019050919050565b60006020820190508181036000830152612e2881612dec565b9050919050565b6000819050919050565b6000819050919050565b6000612e5e612e59612e5484612e2f565b612e39565b6126e9565b9050919050565b612e6e81612e43565b82525050565b600060c082019050612e896000830189612a87565b612e966020830188612795565b612ea36040830187612e65565b612eb06060830186612e65565b612ebd6080830185612a87565b612eca60a0830184612795565b979650505050505050565b600081519050612ee4816126f3565b92915050565b600080600060608486031215612f0357612f02612681565b5b6000612f1186828701612ed5565b9350506020612f2286828701612ed5565b9250506040612f3386828701612ed5565b9150509250925092565b6000604082019050612f526000830185612a87565b612f5f6020830184612795565b9392505050565b612f6f8161275f565b8114612f7a57600080fd5b50565b600081519050612f8c81612f66565b92915050565b600060208284031215612fa857612fa7612681565b5b6000612fb684828501612f7d565b91505092915050565b7f796f7520617265206e6f7420746865206f776e65720000000000000000000000600082015250565b6000612ff56015836125d0565b915061300082612fbf565b602082019050919050565b6000602082019050818103600083015261302481612fe8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130876024836125d0565b91506130928261302b565b604082019050919050565b600060208201905081810360008301526130b68161307a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131196022836125d0565b9150613124826130bd565b604082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131ab6025836125d0565b91506131b68261314f565b604082019050919050565b600060208201905081810360008301526131da8161319e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061323d6023836125d0565b9150613248826131e1565b604082019050919050565b6000602082019050818103600083015261326c81613230565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006132cf6029836125d0565b91506132da82613273565b604082019050919050565b600060208201905081810360008301526132fe816132c2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006133876049836125d0565b915061339282613305565b606082019050919050565b600060208201905081810360008301526133b68161337a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006133f36019836125d0565b91506133fe826133bd565b602082019050919050565b60006020820190508181036000830152613422816133e6565b9050919050565b6000613434826126e9565b915061343f836126e9565b925082820190508082111561345757613456612af1565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613493601a836125d0565b915061349e8261345d565b602082019050919050565b600060208201905081810360008301526134c281613486565b9050919050565b60006134d4826126e9565b91506134df836126e9565b92508282039050818111156134f7576134f6612af1565b5b92915050565b60008151905061350c816126bd565b92915050565b60006020828403121561352857613527612681565b5b6000613536848285016134fd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613574816126ab565b82525050565b6000613586838361356b565b60208301905092915050565b6000602082019050919050565b60006135aa8261353f565b6135b4818561354a565b93506135bf8361355b565b8060005b838110156135f05781516135d7888261357a565b97506135e283613592565b9250506001810190506135c3565b5085935050505092915050565b600060a0820190506136126000830188612795565b61361f6020830187612e65565b8181036040830152613631818661359f565b90506136406060830185612a87565b61364d6080830184612795565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613691826126e9565b915061369c836126e9565b9250826136ac576136ab613657565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137136021836125d0565b915061371e826136b7565b604082019050919050565b6000602082019050818103600083015261374281613706565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061377f601b836125d0565b915061378a82613749565b602082019050919050565b600060208201905081810360008301526137ae81613772565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200f15c39974d9e571c21aff53caaf529d2bb962ff14b11cf3fcc70248c361ef3a64736f6c63430008110033

Deployed Bytecode Sourcemap

3603:9243:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5677:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6510:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4764:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5954:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6679:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5863:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11221:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11482:625;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11391:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10603:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12539:304;;;;;;;;;;;;;:::i;:::-;;6057:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2684:148;;;;;;;;;;;;;:::i;:::-;;10399:196;;;;;;;;;;;;;:::i;:::-;;4578:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2470:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4640:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5768:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6184:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4702:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3992:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12119:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10841:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6359:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12394:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5677:83;5714:13;5747:5;;;;;;;;;;;;;;;;;5740:12;;5677:83;:::o;6510:161::-;6585:4;6602:39;6611:12;:10;:12::i;:::-;6625:7;6634:6;6602:8;:39::i;:::-;6659:4;6652:11;;6510:161;;;;:::o;4764:50::-;;;;:::o;5954:95::-;6007:7;4394:1;4449:2;:13;;;;:::i;:::-;4437:9;:25;;;;:::i;:::-;6027:14;;5954:95;:::o;6679:313::-;6777:4;6794:36;6804:6;6812:9;6823:6;6794:9;:36::i;:::-;6841:121;6850:6;6858:12;:10;:12::i;:::-;6872:89;6910:6;6872:89;;;;;;;;;;;;;;;;;:11;:19;6884:6;6872:19;;;;;;;;;;;;;;;:33;6892:12;:10;:12::i;:::-;6872:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6841:8;:121::i;:::-;6980:4;6973:11;;6679:313;;;;;:::o;5863:83::-;5904:5;4394:1;5922:16;;5863:83;:::o;11221:162::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11294:6:::1;11289:87;11310:6;:13;11306:1;:17;11289:87;;;11361:5;11343:4;:15;11348:6;11355:1;11348:9;;;;;;;;:::i;:::-;;;;;;;;11343:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11325:3;;;;;:::i;:::-;;;;11289:87;;;;11221:162:::0;:::o;11482:625::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11606:11:::1;;;;;;;;;;;11605:12;11597:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11655:58;11672:4;11687:15;;;;;;;;;;;4394:1;4449:2;:13;;;;:::i;:::-;4437:9;:25;;;;:::i;:::-;11655:8;:58::i;:::-;11724:15;;;;;;;;;;;:31;;;11763:21;11794:4;11800:24;11818:4;11800:9;:24::i;:::-;11825:1;11827::::0;11829:7:::1;:5;:7::i;:::-;11837:15;11724:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11878:4;11864:11;;:18;;;;;;;;;;;;;;;;;;11907:4;11893:11;;:18;;;;;;;;;;;;;;;;;;11937:11;11922:14;:26;;;;11975:12;11959:15;:28;;;;12008:9;11998;:19;;;;12035:13;;;;;;;;;;;12028:29;;;12066:15;;;;;;;;;;;12084:14;12028:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11482:625:::0;;;:::o;11391:83::-;11438:4;11459;:7;11464:1;11459:7;;;;;;;;;;;;;;;;;;;;;;;;;11452:14;;11391:83;;;:::o;10603:130::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10713:12:::1;10695:15;:30;;;10676:16;:49;;;;10603:130:::0;:::o;12539:304::-;12581:20;12602:24;12620:4;12602:9;:24::i;:::-;12581:45;;12653:1;12640:12;:14;12637:73;;;12668:30;12685:12;12668:16;:30::i;:::-;12637:73;12720:18;12739:21;12720:40;;12785:1;12774:10;:12;12771:65;;;12800:24;12813:10;12800:12;:24::i;:::-;12771:65;12570:273;;12539:304::o;6057:119::-;6123:7;6150:9;:18;6160:7;6150:18;;;;;;;;;;;;;;;;6143:25;;6057:119;;;:::o;2684:148::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2791:1:::1;2754:40;;2775:6;::::0;::::1;;;;;;;;2754:40;;;;;;;;;;;;2822:1;2805:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2684:148::o:0;10399:196::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4394:1:::1;4449:2;:13;;;;:::i;:::-;4437:9;:25;;;;:::i;:::-;10452:12;:22;;;;4394:1;4449:2;:13;;;;:::i;:::-;4437:9;:25;;;;:::i;:::-;10485:14;:22;;;;10539:5;10518:20;;:26;;;;;;;;;;;;;;;;;;10560:27;4394:1;4449:2;:13;;;;:::i;:::-;4437:9;:25;;;;:::i;:::-;10560:27;;;;;;:::i;:::-;;;;;;;;10399:196::o:0;4578:55::-;;;;:::o;2470:79::-;2508:7;2535:6;;;;;;;;;;;2528:13;;2470:79;:::o;4640:55::-;;;;:::o;5768:87::-;5807:13;5840:7;;;;;;;;;;;;;;;;;5833:14;;5768:87;:::o;6184:167::-;6262:4;6279:42;6289:12;:10;:12::i;:::-;6303:9;6314:6;6279:9;:42::i;:::-;6339:4;6332:11;;6184:167;;;;:::o;4702:55::-;;;;:::o;3992:39::-;;;;;;;;;;;;;:::o;12119:266::-;12240:10;;;;;;;;;;;12226:24;;:12;:10;:12::i;:::-;:24;;;12218:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12300:10;12285:14;:25;;;;12335:11;12319:15;:27;;;;12365:12;12355:9;:22;;;;12119:266;;;:::o;10841:372::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10915:6:::1;10910:296;10931:5;:12;10927:1;:16;10910:296;;;10985:13;;;;;;;;;;;10973:25;;:5;10979:1;10973:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:87;;;;;11044:15;;;;;;;;;;;11024:36;;:5;11030:1;11024:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;10973:87;:137;;;;;11105:4;11085:25;;:5;11091:1;11085:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;10973:137;:184;;;;;11147:10;;;;;;;;;;;11135:22;;:5;11141:1;11135:8;;;;;;;;:::i;:::-;;;;;;;;:22;;;;10973:184;10965:193;;;::::0;::::1;;11190:4;11173;:14;11178:5;11184:1;11178:8;;;;;;;;:::i;:::-;;;;;;;;11173:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10945:3;;;;;:::i;:::-;;;;10910:296;;;;10841:372:::0;:::o;6359:143::-;6440:7;6467:11;:18;6479:5;6467:18;;;;;;;;;;;;;;;:27;6486:7;6467:27;;;;;;;;;;;;;;;;6460:34;;6359:143;;;;:::o;12394:100::-;12446:7;12473:13;;;;;;;;;;;12466:20;;12394:100;:::o;225:98::-;278:7;305:10;298:17;;225:98;:::o;7000:335::-;7110:1;7093:19;;:5;:19;;;7085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7191:1;7172:21;;:7;:21;;;7164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7273:6;7243:11;:18;7255:5;7243:18;;;;;;;;;;;;;;;:27;7262:7;7243:27;;;;;;;;;;;;;;;:36;;;;7311:7;7295:32;;7304:5;7295:32;;;7320:6;7295:32;;;;;;:::i;:::-;;;;;;;;7000:335;;;:::o;7343:2449::-;7447:1;7431:18;;:4;:18;;;7423:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7524:1;7510:16;;:2;:16;;;7502:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7594:1;7585:6;:10;7577:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7652:17;7704:7;:5;:7::i;:::-;7696:15;;:4;:15;;;;:32;;;;;7721:7;:5;:7::i;:::-;7715:13;;:2;:13;;;;7696:32;7692:1744;;;7754:4;:10;7759:4;7754:10;;;;;;;;;;;;;;;;;;;;;;;;;7753:11;:24;;;;;7769:4;:8;7774:2;7769:8;;;;;;;;;;;;;;;;;;;;;;;;;7768:9;7753:24;7745:33;;;;;;7805:73;7874:3;7805:64;7827:15;;7817:9;;:25;7816:52;;7854:14;;7816:52;;;7844:9;;7816:52;7805:6;:10;;:64;;;;:::i;:::-;:68;;:73;;;;:::i;:::-;7793:85;;7899:20;;;;;;;;;;;7895:508;;;7960:15;;;;;;;;;;;7946:30;;:2;:30;;;;:62;;;;;7994:13;;;;;;;;;;;7980:28;;:2;:28;;;;7946:62;7942:444;;;8144:12;8071:28;:39;8100:9;8071:39;;;;;;;;;;;;;;;;:85;8035:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8352:12;8310:28;:39;8339:9;8310:39;;;;;;;;;;;;;;;:54;;;;7942:444;7895:508;8431:13;;;;;;;;;;;8423:21;;:4;:21;;;:55;;;;;8462:15;;;;;;;;;;;8448:30;;:2;:30;;;;8423:55;:83;;;;;8484:18;:22;8503:2;8484:22;;;;;;;;;;;;;;;;;;;;;;;;;8482:24;8423:83;8419:313;;;8546:12;;8536:6;:22;;8528:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8641:14;;8631:6;8615:13;8625:2;8615:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8607:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8705:9;;:11;;;;;;;;;:::i;:::-;;;;;;8419:313;8757:13;;;;;;;;;;;8751:19;;:2;:19;;;:43;;;;;8789:4;8774:20;;:4;:20;;;;8751:43;8748:170;;;8827:75;8898:3;8827:66;8849:16;;8839:9;;:26;8838:54;;8877:15;;8838:54;;;8867:9;;8838:54;8827:6;:10;;:66;;;;:::i;:::-;:70;;:75;;;;:::i;:::-;8815:87;;8748:170;8934:28;8965:24;8983:4;8965:9;:24::i;:::-;8934:55;;9009:6;;;;;;;;;;;9008:7;:32;;;;;9027:13;;;;;;;;;;;9019:21;;:2;:21;;;9008:32;:47;;;;;9044:11;;;;;;;;;;;9008:47;:89;;;;;9080:17;;9059:20;:38;9008:89;:121;;;;;9111:18;;9101:9;;:28;9008:121;9004:421;;;9150:67;9167:49;9171:6;9178:37;9182:20;9203:11;;9178:3;:37::i;:::-;9167:3;:49::i;:::-;9150:16;:67::i;:::-;9236:26;9265:21;9236:50;;9329:1;9308:18;:22;9305:105;;;9355:35;9368:21;9355:12;:35::i;:::-;9305:105;9131:294;9004:421;7730:1706;7692:1744;9464:27;9484:6;9464:9;:15;9474:4;9464:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9448:9;:15;9458:4;9448:15;;;;;;;;;;;;;;;:43;;;;9516:40;9534:21;9545:9;9534:6;:10;;:21;;;;:::i;:::-;9516:9;:13;9526:2;9516:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9502:9;:13;9512:2;9502:13;;;;;;;;;;;;;;;:54;;;;9587:2;9572:41;;9581:4;9572:41;;;9591:21;9602:9;9591:6;:10;;:21;;;;:::i;:::-;9572:41;;;;;;:::i;:::-;;;;;;;;9637:1;9627:9;:11;9624:161;;;9677:39;9706:9;9677;:24;9695:4;9677:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9652:9;:24;9670:4;9652:24;;;;;;;;;;;;;;;:64;;;;9757:4;9734:39;;9743:4;9734:39;;;9763:9;9734:39;;;;;;:::i;:::-;;;;;;;;9624:161;7412:2380;7343:2449;;;:::o;1362:190::-;1448:7;1481:1;1476;:6;;1484:12;1468:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1508:9;1524:1;1520;:5;;;;:::i;:::-;1508:17;;1543:1;1536:8;;;1362:190;;;;;:::o;9908:483::-;5172:4;5163:6;;:13;;;;;;;;;;;;;;;;;;9986:21:::1;10024:1;10010:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9986:40;;10055:4;10037;10042:1;10037:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10081:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10071:4;10076:1;10071:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10114:62;10131:4;10146:15;;;;;;;;;;;10164:11;10114:8;:62::i;:::-;10187:15;;;;;;;;;;;:66;;;10268:11;10294:1;10310:4;10337;10357:15;10187:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9975:416;5208:5:::0;5199:6;;:14;;;;;;;;;;;;;;;;;;9908:483;:::o;10741:92::-;10798:10;;;;;;;;;;;:19;;:27;10818:6;10798:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10741:92;:::o;1560:246::-;1618:7;1647:1;1642;:6;1638:47;;1672:1;1665:8;;;;1638:47;1695:9;1711:1;1707;:5;;;;:::i;:::-;1695:17;;1740:1;1735;1731;:5;;;;:::i;:::-;:10;1723:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1797:1;1790:8;;;1560:246;;;;;:::o;1814:132::-;1872:7;1899:39;1903:1;1906;1899:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1892:46;;1814:132;;;;:::o;9802:98::-;9859:7;9886:1;9884;:3;9883:9;;9891:1;9883:9;;;9889:1;9883:9;9876:16;;9802:98;;;;:::o;1218:136::-;1276:7;1303:43;1307:1;1310;1303:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1296:50;;1218:136;;;;:::o;1031:179::-;1089:7;1109:9;1125:1;1121;:5;;;;:::i;:::-;1109:17;;1150:1;1145;:6;;1137:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1201:1;1194:8;;;1031:179;;;;:::o;1954:189::-;2040:7;2072:1;2068;:5;2075:12;2060:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2099:9;2115:1;2111;:5;;;;:::i;:::-;2099:17;;2134:1;2127:8;;;1954:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:619::-;7772:6;7780;7788;7837:2;7825:9;7816:7;7812:23;7808:32;7805:119;;;7843:79;;:::i;:::-;7805:119;7963:1;7988:53;8033:7;8024:6;8013:9;8009:22;7988:53;:::i;:::-;7978:63;;7934:117;8090:2;8116:53;8161:7;8152:6;8141:9;8137:22;8116:53;:::i;:::-;8106:63;;8061:118;8218:2;8244:53;8289:7;8280:6;8269:9;8265:22;8244:53;:::i;:::-;8234:63;;8189:118;7695:619;;;;;:::o;8320:329::-;8379:6;8428:2;8416:9;8407:7;8403:23;8399:32;8396:119;;;8434:79;;:::i;:::-;8396:119;8554:1;8579:53;8624:7;8615:6;8604:9;8600:22;8579:53;:::i;:::-;8569:63;;8525:117;8320:329;;;;:::o;8655:::-;8714:6;8763:2;8751:9;8742:7;8738:23;8734:32;8731:119;;;8769:79;;:::i;:::-;8731:119;8889:1;8914:53;8959:7;8950:6;8939:9;8935:22;8914:53;:::i;:::-;8904:63;;8860:117;8655:329;;;;:::o;8990:118::-;9077:24;9095:5;9077:24;:::i;:::-;9072:3;9065:37;8990:118;;:::o;9114:222::-;9207:4;9245:2;9234:9;9230:18;9222:26;;9258:71;9326:1;9315:9;9311:17;9302:6;9258:71;:::i;:::-;9114:222;;;;:::o;9342:474::-;9410:6;9418;9467:2;9455:9;9446:7;9442:23;9438:32;9435:119;;;9473:79;;:::i;:::-;9435:119;9593:1;9618:53;9663:7;9654:6;9643:9;9639:22;9618:53;:::i;:::-;9608:63;;9564:117;9720:2;9746:53;9791:7;9782:6;9771:9;9767:22;9746:53;:::i;:::-;9736:63;;9691:118;9342:474;;;;;:::o;9822:180::-;9870:77;9867:1;9860:88;9967:4;9964:1;9957:15;9991:4;9988:1;9981:15;10008:102;10050:8;10097:5;10094:1;10090:13;10069:34;;10008:102;;;:::o;10116:848::-;10177:5;10184:4;10208:6;10199:15;;10232:5;10223:14;;10246:712;10267:1;10257:8;10254:15;10246:712;;;10362:4;10357:3;10353:14;10347:4;10344:24;10341:50;;;10371:18;;:::i;:::-;10341:50;10421:1;10411:8;10407:16;10404:451;;;10836:4;10829:5;10825:16;10816:25;;10404:451;10886:4;10880;10876:15;10868:23;;10916:32;10939:8;10916:32;:::i;:::-;10904:44;;10246:712;;;10116:848;;;;;;;:::o;10970:1073::-;11024:5;11215:8;11205:40;;11236:1;11227:10;;11238:5;;11205:40;11264:4;11254:36;;11281:1;11272:10;;11283:5;;11254:36;11350:4;11398:1;11393:27;;;;11434:1;11429:191;;;;11343:277;;11393:27;11411:1;11402:10;;11413:5;;;11429:191;11474:3;11464:8;11461:17;11458:43;;;11481:18;;:::i;:::-;11458:43;11530:8;11527:1;11523:16;11514:25;;11565:3;11558:5;11555:14;11552:40;;;11572:18;;:::i;:::-;11552:40;11605:5;;;11343:277;;11729:2;11719:8;11716:16;11710:3;11704:4;11701:13;11697:36;11679:2;11669:8;11666:16;11661:2;11655:4;11652:12;11648:35;11632:111;11629:246;;;11785:8;11779:4;11775:19;11766:28;;11820:3;11813:5;11810:14;11807:40;;;11827:18;;:::i;:::-;11807:40;11860:5;;11629:246;11900:42;11938:3;11928:8;11922:4;11919:1;11900:42;:::i;:::-;11885:57;;;;11974:4;11969:3;11965:14;11958:5;11955:25;11952:51;;;11983:18;;:::i;:::-;11952:51;12032:4;12025:5;12021:16;12012:25;;10970:1073;;;;;;:::o;12049:281::-;12107:5;12131:23;12149:4;12131:23;:::i;:::-;12123:31;;12175:25;12191:8;12175:25;:::i;:::-;12163:37;;12219:104;12256:66;12246:8;12240:4;12219:104;:::i;:::-;12210:113;;12049:281;;;;:::o;12336:410::-;12376:7;12399:20;12417:1;12399:20;:::i;:::-;12394:25;;12433:20;12451:1;12433:20;:::i;:::-;12428:25;;12488:1;12485;12481:9;12510:30;12528:11;12510:30;:::i;:::-;12499:41;;12689:1;12680:7;12676:15;12673:1;12670:22;12650:1;12643:9;12623:83;12600:139;;12719:18;;:::i;:::-;12600:139;12384:362;12336:410;;;;:::o;12752:182::-;12892:34;12888:1;12880:6;12876:14;12869:58;12752:182;:::o;12940:366::-;13082:3;13103:67;13167:2;13162:3;13103:67;:::i;:::-;13096:74;;13179:93;13268:3;13179:93;:::i;:::-;13297:2;13292:3;13288:12;13281:19;;12940:366;;;:::o;13312:419::-;13478:4;13516:2;13505:9;13501:18;13493:26;;13565:9;13559:4;13555:20;13551:1;13540:9;13536:17;13529:47;13593:131;13719:4;13593:131;:::i;:::-;13585:139;;13312:419;;;:::o;13737:180::-;13785:77;13782:1;13775:88;13882:4;13879:1;13872:15;13906:4;13903:1;13896:15;13923:233;13962:3;13985:24;14003:5;13985:24;:::i;:::-;13976:33;;14031:66;14024:5;14021:77;14018:103;;14101:18;;:::i;:::-;14018:103;14148:1;14141:5;14137:13;14130:20;;13923:233;;;:::o;14162:173::-;14302:25;14298:1;14290:6;14286:14;14279:49;14162:173;:::o;14341:366::-;14483:3;14504:67;14568:2;14563:3;14504:67;:::i;:::-;14497:74;;14580:93;14669:3;14580:93;:::i;:::-;14698:2;14693:3;14689:12;14682:19;;14341:366;;;:::o;14713:419::-;14879:4;14917:2;14906:9;14902:18;14894:26;;14966:9;14960:4;14956:20;14952:1;14941:9;14937:17;14930:47;14994:131;15120:4;14994:131;:::i;:::-;14986:139;;14713:419;;;:::o;15138:85::-;15183:7;15212:5;15201:16;;15138:85;;;:::o;15229:60::-;15257:3;15278:5;15271:12;;15229:60;;;:::o;15295:158::-;15353:9;15386:61;15404:42;15413:32;15439:5;15413:32;:::i;:::-;15404:42;:::i;:::-;15386:61;:::i;:::-;15373:74;;15295:158;;;:::o;15459:147::-;15554:45;15593:5;15554:45;:::i;:::-;15549:3;15542:58;15459:147;;:::o;15612:807::-;15861:4;15899:3;15888:9;15884:19;15876:27;;15913:71;15981:1;15970:9;15966:17;15957:6;15913:71;:::i;:::-;15994:72;16062:2;16051:9;16047:18;16038:6;15994:72;:::i;:::-;16076:80;16152:2;16141:9;16137:18;16128:6;16076:80;:::i;:::-;16166;16242:2;16231:9;16227:18;16218:6;16166:80;:::i;:::-;16256:73;16324:3;16313:9;16309:19;16300:6;16256:73;:::i;:::-;16339;16407:3;16396:9;16392:19;16383:6;16339:73;:::i;:::-;15612:807;;;;;;;;;:::o;16425:143::-;16482:5;16513:6;16507:13;16498:22;;16529:33;16556:5;16529:33;:::i;:::-;16425:143;;;;:::o;16574:663::-;16662:6;16670;16678;16727:2;16715:9;16706:7;16702:23;16698:32;16695:119;;;16733:79;;:::i;:::-;16695:119;16853:1;16878:64;16934:7;16925:6;16914:9;16910:22;16878:64;:::i;:::-;16868:74;;16824:128;16991:2;17017:64;17073:7;17064:6;17053:9;17049:22;17017:64;:::i;:::-;17007:74;;16962:129;17130:2;17156:64;17212:7;17203:6;17192:9;17188:22;17156:64;:::i;:::-;17146:74;;17101:129;16574:663;;;;;:::o;17243:332::-;17364:4;17402:2;17391:9;17387:18;17379:26;;17415:71;17483:1;17472:9;17468:17;17459:6;17415:71;:::i;:::-;17496:72;17564:2;17553:9;17549:18;17540:6;17496:72;:::i;:::-;17243:332;;;;;:::o;17581:116::-;17651:21;17666:5;17651:21;:::i;:::-;17644:5;17641:32;17631:60;;17687:1;17684;17677:12;17631:60;17581:116;:::o;17703:137::-;17757:5;17788:6;17782:13;17773:22;;17804:30;17828:5;17804:30;:::i;:::-;17703:137;;;;:::o;17846:345::-;17913:6;17962:2;17950:9;17941:7;17937:23;17933:32;17930:119;;;17968:79;;:::i;:::-;17930:119;18088:1;18113:61;18166:7;18157:6;18146:9;18142:22;18113:61;:::i;:::-;18103:71;;18059:125;17846:345;;;;:::o;18197:171::-;18337:23;18333:1;18325:6;18321:14;18314:47;18197:171;:::o;18374:366::-;18516:3;18537:67;18601:2;18596:3;18537:67;:::i;:::-;18530:74;;18613:93;18702:3;18613:93;:::i;:::-;18731:2;18726:3;18722:12;18715:19;;18374:366;;;:::o;18746:419::-;18912:4;18950:2;18939:9;18935:18;18927:26;;18999:9;18993:4;18989:20;18985:1;18974:9;18970:17;18963:47;19027:131;19153:4;19027:131;:::i;:::-;19019:139;;18746:419;;;:::o;19171:223::-;19311:34;19307:1;19299:6;19295:14;19288:58;19380:6;19375:2;19367:6;19363:15;19356:31;19171:223;:::o;19400:366::-;19542:3;19563:67;19627:2;19622:3;19563:67;:::i;:::-;19556:74;;19639:93;19728:3;19639:93;:::i;:::-;19757:2;19752:3;19748:12;19741:19;;19400:366;;;:::o;19772:419::-;19938:4;19976:2;19965:9;19961:18;19953:26;;20025:9;20019:4;20015:20;20011:1;20000:9;19996:17;19989:47;20053:131;20179:4;20053:131;:::i;:::-;20045:139;;19772:419;;;:::o;20197:221::-;20337:34;20333:1;20325:6;20321:14;20314:58;20406:4;20401:2;20393:6;20389:15;20382:29;20197:221;:::o;20424:366::-;20566:3;20587:67;20651:2;20646:3;20587:67;:::i;:::-;20580:74;;20663:93;20752:3;20663:93;:::i;:::-;20781:2;20776:3;20772:12;20765:19;;20424:366;;;:::o;20796:419::-;20962:4;21000:2;20989:9;20985:18;20977:26;;21049:9;21043:4;21039:20;21035:1;21024:9;21020:17;21013:47;21077:131;21203:4;21077:131;:::i;:::-;21069:139;;20796:419;;;:::o;21221:224::-;21361:34;21357:1;21349:6;21345:14;21338:58;21430:7;21425:2;21417:6;21413:15;21406:32;21221:224;:::o;21451:366::-;21593:3;21614:67;21678:2;21673:3;21614:67;:::i;:::-;21607:74;;21690:93;21779:3;21690:93;:::i;:::-;21808:2;21803:3;21799:12;21792:19;;21451:366;;;:::o;21823:419::-;21989:4;22027:2;22016:9;22012:18;22004:26;;22076:9;22070:4;22066:20;22062:1;22051:9;22047:17;22040:47;22104:131;22230:4;22104:131;:::i;:::-;22096:139;;21823:419;;;:::o;22248:222::-;22388:34;22384:1;22376:6;22372:14;22365:58;22457:5;22452:2;22444:6;22440:15;22433:30;22248:222;:::o;22476:366::-;22618:3;22639:67;22703:2;22698:3;22639:67;:::i;:::-;22632:74;;22715:93;22804:3;22715:93;:::i;:::-;22833:2;22828:3;22824:12;22817:19;;22476:366;;;:::o;22848:419::-;23014:4;23052:2;23041:9;23037:18;23029:26;;23101:9;23095:4;23091:20;23087:1;23076:9;23072:17;23065:47;23129:131;23255:4;23129:131;:::i;:::-;23121:139;;22848:419;;;:::o;23273:228::-;23413:34;23409:1;23401:6;23397:14;23390:58;23482:11;23477:2;23469:6;23465:15;23458:36;23273:228;:::o;23507:366::-;23649:3;23670:67;23734:2;23729:3;23670:67;:::i;:::-;23663:74;;23746:93;23835:3;23746:93;:::i;:::-;23864:2;23859:3;23855:12;23848:19;;23507:366;;;:::o;23879:419::-;24045:4;24083:2;24072:9;24068:18;24060:26;;24132:9;24126:4;24122:20;24118:1;24107:9;24103:17;24096:47;24160:131;24286:4;24160:131;:::i;:::-;24152:139;;23879:419;;;:::o;24304:297::-;24444:34;24440:1;24432:6;24428:14;24421:58;24513:34;24508:2;24500:6;24496:15;24489:59;24582:11;24577:2;24569:6;24565:15;24558:36;24304:297;:::o;24607:366::-;24749:3;24770:67;24834:2;24829:3;24770:67;:::i;:::-;24763:74;;24846:93;24935:3;24846:93;:::i;:::-;24964:2;24959:3;24955:12;24948:19;;24607:366;;;:::o;24979:419::-;25145:4;25183:2;25172:9;25168:18;25160:26;;25232:9;25226:4;25222:20;25218:1;25207:9;25203:17;25196:47;25260:131;25386:4;25260:131;:::i;:::-;25252:139;;24979:419;;;:::o;25404:175::-;25544:27;25540:1;25532:6;25528:14;25521:51;25404:175;:::o;25585:366::-;25727:3;25748:67;25812:2;25807:3;25748:67;:::i;:::-;25741:74;;25824:93;25913:3;25824:93;:::i;:::-;25942:2;25937:3;25933:12;25926:19;;25585:366;;;:::o;25957:419::-;26123:4;26161:2;26150:9;26146:18;26138:26;;26210:9;26204:4;26200:20;26196:1;26185:9;26181:17;26174:47;26238:131;26364:4;26238:131;:::i;:::-;26230:139;;25957:419;;;:::o;26382:191::-;26422:3;26441:20;26459:1;26441:20;:::i;:::-;26436:25;;26475:20;26493:1;26475:20;:::i;:::-;26470:25;;26518:1;26515;26511:9;26504:16;;26539:3;26536:1;26533:10;26530:36;;;26546:18;;:::i;:::-;26530:36;26382:191;;;;:::o;26579:176::-;26719:28;26715:1;26707:6;26703:14;26696:52;26579:176;:::o;26761:366::-;26903:3;26924:67;26988:2;26983:3;26924:67;:::i;:::-;26917:74;;27000:93;27089:3;27000:93;:::i;:::-;27118:2;27113:3;27109:12;27102:19;;26761:366;;;:::o;27133:419::-;27299:4;27337:2;27326:9;27322:18;27314:26;;27386:9;27380:4;27376:20;27372:1;27361:9;27357:17;27350:47;27414:131;27540:4;27414:131;:::i;:::-;27406:139;;27133:419;;;:::o;27558:194::-;27598:4;27618:20;27636:1;27618:20;:::i;:::-;27613:25;;27652:20;27670:1;27652:20;:::i;:::-;27647:25;;27696:1;27693;27689:9;27681:17;;27720:1;27714:4;27711:11;27708:37;;;27725:18;;:::i;:::-;27708:37;27558:194;;;;:::o;27758:143::-;27815:5;27846:6;27840:13;27831:22;;27862:33;27889:5;27862:33;:::i;:::-;27758:143;;;;:::o;27907:351::-;27977:6;28026:2;28014:9;28005:7;28001:23;27997:32;27994:119;;;28032:79;;:::i;:::-;27994:119;28152:1;28177:64;28233:7;28224:6;28213:9;28209:22;28177:64;:::i;:::-;28167:74;;28123:128;27907:351;;;;:::o;28264:114::-;28331:6;28365:5;28359:12;28349:22;;28264:114;;;:::o;28384:184::-;28483:11;28517:6;28512:3;28505:19;28557:4;28552:3;28548:14;28533:29;;28384:184;;;;:::o;28574:132::-;28641:4;28664:3;28656:11;;28694:4;28689:3;28685:14;28677:22;;28574:132;;;:::o;28712:108::-;28789:24;28807:5;28789:24;:::i;:::-;28784:3;28777:37;28712:108;;:::o;28826:179::-;28895:10;28916:46;28958:3;28950:6;28916:46;:::i;:::-;28994:4;28989:3;28985:14;28971:28;;28826:179;;;;:::o;29011:113::-;29081:4;29113;29108:3;29104:14;29096:22;;29011:113;;;:::o;29160:732::-;29279:3;29308:54;29356:5;29308:54;:::i;:::-;29378:86;29457:6;29452:3;29378:86;:::i;:::-;29371:93;;29488:56;29538:5;29488:56;:::i;:::-;29567:7;29598:1;29583:284;29608:6;29605:1;29602:13;29583:284;;;29684:6;29678:13;29711:63;29770:3;29755:13;29711:63;:::i;:::-;29704:70;;29797:60;29850:6;29797:60;:::i;:::-;29787:70;;29643:224;29630:1;29627;29623:9;29618:14;;29583:284;;;29587:14;29883:3;29876:10;;29284:608;;;29160:732;;;;:::o;29898:831::-;30161:4;30199:3;30188:9;30184:19;30176:27;;30213:71;30281:1;30270:9;30266:17;30257:6;30213:71;:::i;:::-;30294:80;30370:2;30359:9;30355:18;30346:6;30294:80;:::i;:::-;30421:9;30415:4;30411:20;30406:2;30395:9;30391:18;30384:48;30449:108;30552:4;30543:6;30449:108;:::i;:::-;30441:116;;30567:72;30635:2;30624:9;30620:18;30611:6;30567:72;:::i;:::-;30649:73;30717:3;30706:9;30702:19;30693:6;30649:73;:::i;:::-;29898:831;;;;;;;;:::o;30735:180::-;30783:77;30780:1;30773:88;30880:4;30877:1;30870:15;30904:4;30901:1;30894:15;30921:185;30961:1;30978:20;30996:1;30978:20;:::i;:::-;30973:25;;31012:20;31030:1;31012:20;:::i;:::-;31007:25;;31051:1;31041:35;;31056:18;;:::i;:::-;31041:35;31098:1;31095;31091:9;31086:14;;30921:185;;;;:::o;31112:220::-;31252:34;31248:1;31240:6;31236:14;31229:58;31321:3;31316:2;31308:6;31304:15;31297:28;31112:220;:::o;31338:366::-;31480:3;31501:67;31565:2;31560:3;31501:67;:::i;:::-;31494:74;;31577:93;31666:3;31577:93;:::i;:::-;31695:2;31690:3;31686:12;31679:19;;31338:366;;;:::o;31710:419::-;31876:4;31914:2;31903:9;31899:18;31891:26;;31963:9;31957:4;31953:20;31949:1;31938:9;31934:17;31927:47;31991:131;32117:4;31991:131;:::i;:::-;31983:139;;31710:419;;;:::o;32135:177::-;32275:29;32271:1;32263:6;32259:14;32252:53;32135:177;:::o;32318:366::-;32460:3;32481:67;32545:2;32540:3;32481:67;:::i;:::-;32474:74;;32557:93;32646:3;32557:93;:::i;:::-;32675:2;32670:3;32666:12;32659:19;;32318:366;;;:::o;32690:419::-;32856:4;32894:2;32883:9;32879:18;32871:26;;32943:9;32937:4;32933:20;32929:1;32918:9;32914:17;32907:47;32971:131;33097:4;32971:131;:::i;:::-;32963:139;;32690:419;;;:::o

Swarm Source

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