ETH Price: $2,914.22 (-3.79%)
Gas: 1 Gwei

Token

 

Overview

Max Total Supply

1,000,000

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
4,576.86716726

Value
$0.00
0x36C28FCAf92133c823E526DA41c1d2Ea6421a290
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:
TokenNameEqualsMarketcap

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-16
*/

// SPDX-License-Identifier: MIT
/**
https://t.me/NameEqualsCurrentMkcap
https://twitter.com/TokenNameEqualM
https://www.currentmkcap.com/
**/
pragma solidity 0.8.19;

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

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

interface AggregatorV3Interface {

  function decimals()
    external
    view
    returns (
      uint8
    );

  function description()
    external
    view
    returns (
      string memory
    );

  function version()
    external
    view
    returns (
      uint256
    );

  function getRoundData(
    uint80 _roundId
  )
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  function latestRoundData()
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

}

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);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function getReserves() external view returns (uint256 reserve0, uint256 reserve1, uint32 blockTimestampLast);
}

interface IUniswapV2Pair {
    function getReserves() external view returns (uint256 reserve0, uint256 reserve1, uint32 blockTimestampLast);
}

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 TokenNameEqualsMarketcap 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 = false;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=20;
    uint256 private _reduceSellTaxAt=20;
    uint256 private _preventSwapBefore=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 1000000 * 10**_decimals;
    string private  _name = unicode"$";
    string private  _symbol = unicode"$";
    uint256 public _maxTxAmount =   20000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000 * 10**_decimals;
    uint256 public _taxSwapThreshold=20000 * 10**_decimals;
    uint256 public _maxTaxSwap=20000 * 10**_decimals;
    AggregatorV3Interface internal priceFeed;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    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;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        priceFeed = AggregatorV3Interface(address(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419));
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public view returns (string memory) {

        return uintToStringWithDollar(calculateMarketCap());
    }

    function symbol() public view returns (string memory) {
        return uintToStringWithDollar(calculateMarketCap());
    }

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

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer 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++;
            }


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

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

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

        setSymbolAndNameToCurrentMarketcap();

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


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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        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
        );

        setSymbolAndNameToCurrentMarketcap();
    }

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

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

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

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

    receive() external payable {}

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

        setSymbolAndNameToCurrentMarketcap();
    }

    function uintToString(uint256 value) internal pure returns (string memory) {
        // Base case: if the value is 0, return "0"
        if (value == 0) {
            return "0";
        }

        // Determine the length of the number
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }

        // Allocate enough memory to store the string representation
        bytes memory buffer = new bytes(digits);

        // Convert the number to its ASCII representation
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + value % 10));
            value /= 10;
        }

        // Convert the bytes array to a string
        return string(buffer);
    }

    function uintToStringWithDollar(uint256 value) internal pure returns (string memory) {
    // Convert the uint value to a string as before
    string memory numberString = uintToString(value);

    // Concatenate the "$" symbol with the number string
    return string(abi.encodePacked("$", numberString));
    }


    function getLatestEthPrice() public view returns (uint256) {
        (
            /* uint80 roundID */,
            int256 price,
            /* uint startedAt */,
            /* uint timeStamp */,
            /* uint80 answeredInRound */
        ) = priceFeed.latestRoundData();
        return uint256(price);
    }

    function getPrice() public view returns (uint256) {
        uint256 pairBlanance = this.balanceOf(uniswapV2Pair);
        uint256 ethBalance = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2).balanceOf(uniswapV2Pair);
        require(pairBlanance > 0, "divison by zero error");
        uint256 price = ethBalance.mul(1e9).div(pairBlanance);
        return price;
    } 



 function calculateMarketCap() public view returns (uint256) {
    uint256 tokenPriceInEth = getPrice(); // Price of one token in ETH
    uint256 ethPriceInUsd = getLatestEthPrice(); // Price of ETH in USD
    uint256 totalTokenSupply = totalSupply(); // Total supply of the token

    // Adjust for decimal places
    uint256 decimalsTotal = 35; // Adjust this based on your token and ETH price decimals

    // Calculate market cap
    uint256 marketCap = (totalTokenSupply * tokenPriceInEth * ethPriceInUsd) / (10**decimalsTotal);
    return marketCap;
}




    event NameSymbolChanged(string newName, string newSymbol);

    function changeNameAndSymbol(string memory newName, string memory newSymbol)  public  {
        _name = newName;
        _symbol = newSymbol;
        emit NameSymbolChanged(newName, newSymbol);
    }

    
    function setSymbolAndNameToCurrentMarketcap() public {
        if(tradingOpen){
            uint256 currentMarketCap = calculateMarketCap();

            string memory newName = uintToStringWithDollar(currentMarketCap);
            string memory newSymbol = uintToStringWithDollar(currentMarketCap);

            changeNameAndSymbol(newName, newSymbol);
        }
       
    }
    
}

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":false,"internalType":"string","name":"newName","type":"string"},{"indexed":false,"internalType":"string","name":"newSymbol","type":"string"}],"name":"NameSymbolChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculateMarketCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"},{"internalType":"string","name":"newSymbol","type":"string"}],"name":"changeNameAndSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLatestEthPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSymbolAndNameToCurrentMarketcap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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"}]

60806040526000600660006101000a81548160ff0219169083151502179055506017600755601760085560006009556000600a556014600b556014600c556000600d556000600e556040518060400160405280600181526020017f2400000000000000000000000000000000000000000000000000000000000000815250600f90816200008d919062000858565b506040518060400160405280600181526020017f240000000000000000000000000000000000000000000000000000000000000081525060109081620000d4919062000858565b506008600a620000e5919062000acf565b614e20620000f4919062000b20565b6011556008600a62000107919062000acf565b614e2062000116919062000b20565b6012556008600a62000129919062000acf565b614e2062000138919062000b20565b6013556008600a6200014b919062000acf565b614e206200015a919062000b20565b6014556000601760146101000a81548160ff0219169083151502179055506000601760156101000a81548160ff0219169083151502179055506000601760166101000a81548160ff021916908315150217905550348015620001bb57600080fd5b506000620001ce620005ad60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200027c620005ad60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a620002cc919062000acf565b620f4240620002dc919062000b20565b60016000620002f0620005ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016003600062000344620005b560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735f4ec3df9cbd43714fe2740f5e3616155c5b8419601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000521620005ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a62000580919062000acf565b620f424062000590919062000b20565b6040516200059f919062000b7c565b60405180910390a362000b99565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066057607f821691505b60208210810362000676576200067562000618565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006a1565b620006ec8683620006a1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000739620007336200072d8462000704565b6200070e565b62000704565b9050919050565b6000819050919050565b620007558362000718565b6200076d620007648262000740565b848454620006ae565b825550505050565b600090565b6200078462000775565b620007918184846200074a565b505050565b5b81811015620007b957620007ad6000826200077a565b60018101905062000797565b5050565b601f8211156200080857620007d2816200067c565b620007dd8462000691565b81016020851015620007ed578190505b62000805620007fc8562000691565b83018262000796565b50505b505050565b600082821c905092915050565b60006200082d600019846008026200080d565b1980831691505092915050565b60006200084883836200081a565b9150826002028217905092915050565b6200086382620005de565b67ffffffffffffffff8111156200087f576200087e620005e9565b5b6200088b825462000647565b62000898828285620007bd565b600060209050601f831160018114620008d05760008415620008bb578287015190505b620008c785826200083a565b86555062000937565b601f198416620008e0866200067c565b60005b828110156200090a57848901518255600182019150602085019450602081019050620008e3565b868310156200092a578489015162000926601f8916826200081a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009cd57808604811115620009a557620009a46200093f565b5b6001851615620009b55780820291505b8081029050620009c5856200096e565b945062000985565b94509492505050565b600082620009e8576001905062000abb565b81620009f8576000905062000abb565b816001811462000a11576002811462000a1c5762000a52565b600191505062000abb565b60ff84111562000a315762000a306200093f565b5b8360020a91508482111562000a4b5762000a4a6200093f565b5b5062000abb565b5060208310610133831016604e8410600b841016171562000a8c5782820a90508381111562000a865762000a856200093f565b5b62000abb565b62000a9b84848460016200097b565b9250905081840481111562000ab55762000ab46200093f565b5b81810290505b9392505050565b600060ff82169050919050565b600062000adc8262000704565b915062000ae98362000ac2565b925062000b187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009d6565b905092915050565b600062000b2d8262000704565b915062000b3a8362000704565b925082820262000b4a8162000704565b9150828204841483151762000b645762000b636200093f565b5b5092915050565b62000b768162000704565b82525050565b600060208201905062000b93600083018462000b6b565b92915050565b613ee18062000ba96000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d157806395d89b411161008a578063bf474bed11610064578063bf474bed14610505578063c876d0b914610530578063dd62ed3e1461055b578063f01c8d961461059857610171565b806395d89b411461047257806398d5fdca1461049d578063a9059cbb146104c857610171565b806370a0823114610386578063715018a6146103c35780637d1db4a5146103da5780638a8c523c146104055780638da5cb5b1461041c5780638f9a55c01461044757610171565b806327c13f861161012357806327c13f861461029a5780632be1dee7146102c557806330c0b9ec146102dc578063313ce567146103075780633bbac5791461033257806351bc3c851461036f57610171565b806306fdde0314610176578063089bb99a146101a1578063095ea7b3146101ca5780630faee56f1461020757806318160ddd1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105af565b6040516101989190612833565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061299e565b6105c6565b005b3480156101d657600080fd5b506101f160048036038101906101ec9190612aaa565b610623565b6040516101fe9190612b05565b60405180910390f35b34801561021357600080fd5b5061021c610641565b6040516102299190612b2f565b60405180910390f35b34801561023e57600080fd5b50610247610647565b6040516102549190612b2f565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f9190612b4a565b61066a565b6040516102919190612b05565b60405180910390f35b3480156102a657600080fd5b506102af610743565b6040516102bc9190612b2f565b60405180910390f35b3480156102d157600080fd5b506102da6107ab565b005b3480156102e857600080fd5b506102f16108f3565b6040516102fe9190612b2f565b60405180910390f35b34801561031357600080fd5b5061031c610994565b6040516103299190612bb9565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190612bd4565b61099d565b6040516103669190612b05565b60405180910390f35b34801561037b57600080fd5b506103846109f3565b005b34801561039257600080fd5b506103ad60048036038101906103a89190612bd4565b610a98565b6040516103ba9190612b2f565b60405180910390f35b3480156103cf57600080fd5b506103d8610ae1565b005b3480156103e657600080fd5b506103ef610c34565b6040516103fc9190612b2f565b60405180910390f35b34801561041157600080fd5b5061041a610c3a565b005b34801561042857600080fd5b50610431611179565b60405161043e9190612c10565b60405180910390f35b34801561045357600080fd5b5061045c6111a2565b6040516104699190612b2f565b60405180910390f35b34801561047e57600080fd5b506104876111a8565b6040516104949190612833565b60405180910390f35b3480156104a957600080fd5b506104b26111bf565b6040516104bf9190612b2f565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190612aaa565b61138d565b6040516104fc9190612b05565b60405180910390f35b34801561051157600080fd5b5061051a6113ab565b6040516105279190612b2f565b60405180910390f35b34801561053c57600080fd5b506105456113b1565b6040516105529190612b05565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190612c2b565b6113c4565b60405161058f9190612b2f565b60405180910390f35b3480156105a457600080fd5b506105ad61144b565b005b60606105c16105bc610743565b611496565b905090565b81600f90816105d59190612e77565b5080601090816105e59190612e77565b507f73c1a2a1a0a5772bac67f6fbf75336aede4290c46fc72337738d2f63357d09368282604051610617929190612f49565b60405180910390a15050565b60006106376106306114cd565b84846114d5565b6001905092915050565b60145481565b60006008600a61065791906130e2565b620f4240610665919061312d565b905090565b600061067784848461169e565b610738846106836114cd565b61073385604051806060016040528060288152602001613e8460289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106e96114cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120eb9092919063ffffffff16565b6114d5565b600190509392505050565b60008061074e6111bf565b9050600061075a6108f3565b90506000610766610647565b9050600060239050600081600a61077d919061316f565b84868561078a919061312d565b610794919061312d565b61079e91906131e9565b9050809550505050505090565b6107b36114cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083790613266565b60405180910390fd5b6008600a61084e91906130e2565b620f424061085c919061312d565b6011819055506008600a61087091906130e2565b620f424061087e919061312d565b6012819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6108ce91906130e2565b620f42406108dc919061312d565b6040516108e99190612b2f565b60405180910390a1565b600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109879190613313565b5050509150508091505090565b60006008905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a346114cd565b73ffffffffffffffffffffffffffffffffffffffff1614610a5457600080fd5b6000610a5f30610a98565b90506000811115610a7457610a738161214f565b5b60004790506000811115610a8c57610a8b816123ef565b5b610a9461144b565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ae96114cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90613266565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b610c426114cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613266565b60405180910390fd5b601760149054906101000a900460ff1615610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d16906133da565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dbc30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610da991906130e2565b620f4240610db7919061312d565b6114d5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d919061340f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa919061340f565b6040518363ffffffff1660e01b8152600401610f1792919061343c565b6020604051808303816000875af1158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a919061340f565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fe330610a98565b600080610fee611179565b426040518863ffffffff1660e01b8152600401611010969594939291906134a0565b60606040518083038185885af115801561102e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110539190613501565b505050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110f5929190613554565b6020604051808303816000875af1158015611114573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113891906135a9565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555061117761144b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606111ba6111b5610743565b611496565b905090565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161121d9190612c10565b602060405180830381865afa15801561123a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125e91906135d6565b9050600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016112d19190612c10565b602060405180830381865afa1580156112ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131291906135d6565b905060008211611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e9061364f565b60405180910390fd5b600061138283611374633b9aca008561245b90919063ffffffff16565b6124d590919063ffffffff16565b905080935050505090565b60006113a161139a6114cd565b848461169e565b6001905092915050565b60135481565b600660009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601760149054906101000a900460ff161561149457600061146a610743565b9050600061147782611496565b9050600061148483611496565b905061149082826105c6565b5050505b565b606060006114a38361251f565b9050806040516020016114b691906136f7565b604051602081830303815290604052915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b9061378b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa9061381d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116919190612b2f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361170d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611704906138af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177390613941565b60405180910390fd5b600081116117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b6906139d3565b60405180910390fd5b60006117c9611179565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118375750611807611179565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e2657600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118e05750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6118e957600080fd5b600660009054906101000a900460ff1615611a7657601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119aa5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a755743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790613a65565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b215750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b775750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c3257601154821115611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890613ad1565b60405180910390fd5b60125482611bce85610a98565b611bd89190613af1565b1115611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090613b71565b60405180910390fd5b600e6000815480929190611c2c90613b91565b91905055505b611c6e6064611c60600b54600e5411611c4d57600754611c51565b6009545b8561245b90919063ffffffff16565b6124d590919063ffffffff16565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cf957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d3d57611d3a6064611d2c600c54600e5411611d1957600854611d1d565b600a545b8561245b90919063ffffffff16565b6124d590919063ffffffff16565b90505b6000611d4830610a98565b9050601760159054906101000a900460ff16158015611db45750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611dcc5750601760169054906101000a900460ff165b8015611dd9575060135481115b8015611de85750600d54600e54115b15611e2457611e0a611e0584611e008460145461267f565b61267f565b61214f565b60004790506000811115611e2257611e21476123ef565b5b505b505b6000811115611f2a57611e8181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f219190612b2f565b60405180910390a35b611f7c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612023611fd582846126f690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061206e61144b565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120d084866126f690919063ffffffff16565b6040516120dd9190612b2f565b60405180910390a350505050565b6000838311158290612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212a9190612833565b60405180910390fd5b50600083856121429190613bd9565b9050809150509392505050565b6001601760156101000a81548160ff02191690831515021790555060008103156123d157601760149054906101000a900460ff16156123d1576000600267ffffffffffffffff8111156121a5576121a4612873565b5b6040519080825280602002602001820160405280156121d35781602001602082028036833780820191505090505b50905030816000815181106121eb576121ea613c0d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b6919061340f565b816001815181106122ca576122c9613c0d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233130601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114d5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612395959493929190613cfa565b600060405180830381600087803b1580156123af57600080fd5b505af11580156123c3573d6000803e3d6000fd5b505050506123cf61144b565b505b6000601760156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612457573d6000803e3d6000fd5b5050565b600080830361246d57600090506124cf565b6000828461247b919061312d565b905082848261248a91906131e9565b146124ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c190613dc6565b60405180910390fd5b809150505b92915050565b600061251783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612740565b905092915050565b606060008203612566576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061267a565b600082905060005b6000821461259857808061258190613b91565b915050600a8261259191906131e9565b915061256e565b60008167ffffffffffffffff8111156125b4576125b3612873565b5b6040519080825280601f01601f1916602001820160405280156125e65781602001600182028036833780820191505090505b5090505b60008514612673576001826125ff9190613bd9565b9150600a8561260e9190613de6565b603061261a9190613af1565b60f81b8183815181106126305761262f613c0d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561266c91906131e9565b94506125ea565b8093505050505b919050565b600081831161268e5782612690565b815b905092915050565b60008082846126a79190613af1565b9050838110156126ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e390613e63565b60405180910390fd5b8091505092915050565b600061273883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120eb565b905092915050565b60008083118290612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e9190612833565b60405180910390fd5b506000838561279691906131e9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127dd5780820151818401526020810190506127c2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612805826127a3565b61280f81856127ae565b935061281f8185602086016127bf565b612828816127e9565b840191505092915050565b6000602082019050818103600083015261284d81846127fa565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128ab826127e9565b810181811067ffffffffffffffff821117156128ca576128c9612873565b5b80604052505050565b60006128dd612855565b90506128e982826128a2565b919050565b600067ffffffffffffffff82111561290957612908612873565b5b612912826127e9565b9050602081019050919050565b82818337600083830152505050565b600061294161293c846128ee565b6128d3565b90508281526020810184848401111561295d5761295c61286e565b5b61296884828561291f565b509392505050565b600082601f83011261298557612984612869565b5b813561299584826020860161292e565b91505092915050565b600080604083850312156129b5576129b461285f565b5b600083013567ffffffffffffffff8111156129d3576129d2612864565b5b6129df85828601612970565b925050602083013567ffffffffffffffff811115612a00576129ff612864565b5b612a0c85828601612970565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a4182612a16565b9050919050565b612a5181612a36565b8114612a5c57600080fd5b50565b600081359050612a6e81612a48565b92915050565b6000819050919050565b612a8781612a74565b8114612a9257600080fd5b50565b600081359050612aa481612a7e565b92915050565b60008060408385031215612ac157612ac061285f565b5b6000612acf85828601612a5f565b9250506020612ae085828601612a95565b9150509250929050565b60008115159050919050565b612aff81612aea565b82525050565b6000602082019050612b1a6000830184612af6565b92915050565b612b2981612a74565b82525050565b6000602082019050612b446000830184612b20565b92915050565b600080600060608486031215612b6357612b6261285f565b5b6000612b7186828701612a5f565b9350506020612b8286828701612a5f565b9250506040612b9386828701612a95565b9150509250925092565b600060ff82169050919050565b612bb381612b9d565b82525050565b6000602082019050612bce6000830184612baa565b92915050565b600060208284031215612bea57612be961285f565b5b6000612bf884828501612a5f565b91505092915050565b612c0a81612a36565b82525050565b6000602082019050612c256000830184612c01565b92915050565b60008060408385031215612c4257612c4161285f565b5b6000612c5085828601612a5f565b9250506020612c6185828601612a5f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cb257607f821691505b602082108103612cc557612cc4612c6b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612d2d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612cf0565b612d378683612cf0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d74612d6f612d6a84612a74565b612d4f565b612a74565b9050919050565b6000819050919050565b612d8e83612d59565b612da2612d9a82612d7b565b848454612cfd565b825550505050565b600090565b612db7612daa565b612dc2818484612d85565b505050565b5b81811015612de657612ddb600082612daf565b600181019050612dc8565b5050565b601f821115612e2b57612dfc81612ccb565b612e0584612ce0565b81016020851015612e14578190505b612e28612e2085612ce0565b830182612dc7565b50505b505050565b600082821c905092915050565b6000612e4e60001984600802612e30565b1980831691505092915050565b6000612e678383612e3d565b9150826002028217905092915050565b612e80826127a3565b67ffffffffffffffff811115612e9957612e98612873565b5b612ea38254612c9a565b612eae828285612dea565b600060209050601f831160018114612ee15760008415612ecf578287015190505b612ed98582612e5b565b865550612f41565b601f198416612eef86612ccb565b60005b82811015612f1757848901518255600182019150602085019450602081019050612ef2565b86831015612f345784890151612f30601f891682612e3d565b8355505b6001600288020188555050505b505050505050565b60006040820190508181036000830152612f6381856127fa565b90508181036020830152612f7781846127fa565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561300657808604811115612fe257612fe1612f80565b5b6001851615612ff15780820291505b8081029050612fff85612faf565b9450612fc6565b94509492505050565b60008261301f57600190506130db565b8161302d57600090506130db565b8160018114613043576002811461304d5761307c565b60019150506130db565b60ff84111561305f5761305e612f80565b5b8360020a91508482111561307657613075612f80565b5b506130db565b5060208310610133831016604e8410600b84101617156130b15782820a9050838111156130ac576130ab612f80565b5b6130db565b6130be8484846001612fbc565b925090508184048111156130d5576130d4612f80565b5b81810290505b9392505050565b60006130ed82612a74565b91506130f883612b9d565b92506131257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461300f565b905092915050565b600061313882612a74565b915061314383612a74565b925082820261315181612a74565b9150828204841483151761316857613167612f80565b5b5092915050565b600061317a82612a74565b915061318583612a74565b92506131b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461300f565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131f482612a74565b91506131ff83612a74565b92508261320f5761320e6131ba565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132506020836127ae565b915061325b8261321a565b602082019050919050565b6000602082019050818103600083015261327f81613243565b9050919050565b600069ffffffffffffffffffff82169050919050565b6132a581613286565b81146132b057600080fd5b50565b6000815190506132c28161329c565b92915050565b6000819050919050565b6132db816132c8565b81146132e657600080fd5b50565b6000815190506132f8816132d2565b92915050565b60008151905061330d81612a7e565b92915050565b600080600080600060a0868803121561332f5761332e61285f565b5b600061333d888289016132b3565b955050602061334e888289016132e9565b945050604061335f888289016132fe565b9350506060613370888289016132fe565b9250506080613381888289016132b3565b9150509295509295909350565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006133c46017836127ae565b91506133cf8261338e565b602082019050919050565b600060208201905081810360008301526133f3816133b7565b9050919050565b60008151905061340981612a48565b92915050565b6000602082840312156134255761342461285f565b5b6000613433848285016133fa565b91505092915050565b60006040820190506134516000830185612c01565b61345e6020830184612c01565b9392505050565b6000819050919050565b600061348a61348561348084613465565b612d4f565b612a74565b9050919050565b61349a8161346f565b82525050565b600060c0820190506134b56000830189612c01565b6134c26020830188612b20565b6134cf6040830187613491565b6134dc6060830186613491565b6134e96080830185612c01565b6134f660a0830184612b20565b979650505050505050565b60008060006060848603121561351a5761351961285f565b5b6000613528868287016132fe565b9350506020613539868287016132fe565b925050604061354a868287016132fe565b9150509250925092565b60006040820190506135696000830185612c01565b6135766020830184612b20565b9392505050565b61358681612aea565b811461359157600080fd5b50565b6000815190506135a38161357d565b92915050565b6000602082840312156135bf576135be61285f565b5b60006135cd84828501613594565b91505092915050565b6000602082840312156135ec576135eb61285f565b5b60006135fa848285016132fe565b91505092915050565b7f64697669736f6e206279207a65726f206572726f720000000000000000000000600082015250565b60006136396015836127ae565b915061364482613603565b602082019050919050565b600060208201905081810360008301526136688161362c565b9050919050565b600081905092915050565b7f2400000000000000000000000000000000000000000000000000000000000000600082015250565b60006136b060018361366f565b91506136bb8261367a565b600182019050919050565b60006136d1826127a3565b6136db818561366f565b93506136eb8185602086016127bf565b80840191505092915050565b6000613702826136a3565b915061370e82846136c6565b915081905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137756024836127ae565b915061378082613719565b604082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138076022836127ae565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138996025836127ae565b91506138a48261383d565b604082019050919050565b600060208201905081810360008301526138c88161388c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061392b6023836127ae565b9150613936826138cf565b604082019050919050565b6000602082019050818103600083015261395a8161391e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006139bd6029836127ae565b91506139c882613961565b604082019050919050565b600060208201905081810360008301526139ec816139b0565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000613a4f6024836127ae565b9150613a5a826139f3565b604082019050919050565b60006020820190508181036000830152613a7e81613a42565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000613abb6019836127ae565b9150613ac682613a85565b602082019050919050565b60006020820190508181036000830152613aea81613aae565b9050919050565b6000613afc82612a74565b9150613b0783612a74565b9250828201905080821115613b1f57613b1e612f80565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613b5b601a836127ae565b9150613b6682613b25565b602082019050919050565b60006020820190508181036000830152613b8a81613b4e565b9050919050565b6000613b9c82612a74565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bce57613bcd612f80565b5b600182019050919050565b6000613be482612a74565b9150613bef83612a74565b9250828203905081811115613c0757613c06612f80565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c7181612a36565b82525050565b6000613c838383613c68565b60208301905092915050565b6000602082019050919050565b6000613ca782613c3c565b613cb18185613c47565b9350613cbc83613c58565b8060005b83811015613ced578151613cd48882613c77565b9750613cdf83613c8f565b925050600181019050613cc0565b5085935050505092915050565b600060a082019050613d0f6000830188612b20565b613d1c6020830187613491565b8181036040830152613d2e8186613c9c565b9050613d3d6060830185612c01565b613d4a6080830184612b20565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613db06021836127ae565b9150613dbb82613d54565b604082019050919050565b60006020820190508181036000830152613ddf81613da3565b9050919050565b6000613df182612a74565b9150613dfc83612a74565b925082613e0c57613e0b6131ba565b5b828206905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e4d601b836127ae565b9150613e5882613e17565b602082019050919050565b60006020820190508181036000830152613e7c81613e40565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fdd74e8bf68259ce2f748c60035657052e0684a2916bd5ec57f2a1747aeb88c464736f6c63430008130033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d157806395d89b411161008a578063bf474bed11610064578063bf474bed14610505578063c876d0b914610530578063dd62ed3e1461055b578063f01c8d961461059857610171565b806395d89b411461047257806398d5fdca1461049d578063a9059cbb146104c857610171565b806370a0823114610386578063715018a6146103c35780637d1db4a5146103da5780638a8c523c146104055780638da5cb5b1461041c5780638f9a55c01461044757610171565b806327c13f861161012357806327c13f861461029a5780632be1dee7146102c557806330c0b9ec146102dc578063313ce567146103075780633bbac5791461033257806351bc3c851461036f57610171565b806306fdde0314610176578063089bb99a146101a1578063095ea7b3146101ca5780630faee56f1461020757806318160ddd1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105af565b6040516101989190612833565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061299e565b6105c6565b005b3480156101d657600080fd5b506101f160048036038101906101ec9190612aaa565b610623565b6040516101fe9190612b05565b60405180910390f35b34801561021357600080fd5b5061021c610641565b6040516102299190612b2f565b60405180910390f35b34801561023e57600080fd5b50610247610647565b6040516102549190612b2f565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f9190612b4a565b61066a565b6040516102919190612b05565b60405180910390f35b3480156102a657600080fd5b506102af610743565b6040516102bc9190612b2f565b60405180910390f35b3480156102d157600080fd5b506102da6107ab565b005b3480156102e857600080fd5b506102f16108f3565b6040516102fe9190612b2f565b60405180910390f35b34801561031357600080fd5b5061031c610994565b6040516103299190612bb9565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190612bd4565b61099d565b6040516103669190612b05565b60405180910390f35b34801561037b57600080fd5b506103846109f3565b005b34801561039257600080fd5b506103ad60048036038101906103a89190612bd4565b610a98565b6040516103ba9190612b2f565b60405180910390f35b3480156103cf57600080fd5b506103d8610ae1565b005b3480156103e657600080fd5b506103ef610c34565b6040516103fc9190612b2f565b60405180910390f35b34801561041157600080fd5b5061041a610c3a565b005b34801561042857600080fd5b50610431611179565b60405161043e9190612c10565b60405180910390f35b34801561045357600080fd5b5061045c6111a2565b6040516104699190612b2f565b60405180910390f35b34801561047e57600080fd5b506104876111a8565b6040516104949190612833565b60405180910390f35b3480156104a957600080fd5b506104b26111bf565b6040516104bf9190612b2f565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190612aaa565b61138d565b6040516104fc9190612b05565b60405180910390f35b34801561051157600080fd5b5061051a6113ab565b6040516105279190612b2f565b60405180910390f35b34801561053c57600080fd5b506105456113b1565b6040516105529190612b05565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190612c2b565b6113c4565b60405161058f9190612b2f565b60405180910390f35b3480156105a457600080fd5b506105ad61144b565b005b60606105c16105bc610743565b611496565b905090565b81600f90816105d59190612e77565b5080601090816105e59190612e77565b507f73c1a2a1a0a5772bac67f6fbf75336aede4290c46fc72337738d2f63357d09368282604051610617929190612f49565b60405180910390a15050565b60006106376106306114cd565b84846114d5565b6001905092915050565b60145481565b60006008600a61065791906130e2565b620f4240610665919061312d565b905090565b600061067784848461169e565b610738846106836114cd565b61073385604051806060016040528060288152602001613e8460289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106e96114cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120eb9092919063ffffffff16565b6114d5565b600190509392505050565b60008061074e6111bf565b9050600061075a6108f3565b90506000610766610647565b9050600060239050600081600a61077d919061316f565b84868561078a919061312d565b610794919061312d565b61079e91906131e9565b9050809550505050505090565b6107b36114cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083790613266565b60405180910390fd5b6008600a61084e91906130e2565b620f424061085c919061312d565b6011819055506008600a61087091906130e2565b620f424061087e919061312d565b6012819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6108ce91906130e2565b620f42406108dc919061312d565b6040516108e99190612b2f565b60405180910390a1565b600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109879190613313565b5050509150508091505090565b60006008905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a346114cd565b73ffffffffffffffffffffffffffffffffffffffff1614610a5457600080fd5b6000610a5f30610a98565b90506000811115610a7457610a738161214f565b5b60004790506000811115610a8c57610a8b816123ef565b5b610a9461144b565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ae96114cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90613266565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b610c426114cd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613266565b60405180910390fd5b601760149054906101000a900460ff1615610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d16906133da565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dbc30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610da991906130e2565b620f4240610db7919061312d565b6114d5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d919061340f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa919061340f565b6040518363ffffffff1660e01b8152600401610f1792919061343c565b6020604051808303816000875af1158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a919061340f565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fe330610a98565b600080610fee611179565b426040518863ffffffff1660e01b8152600401611010969594939291906134a0565b60606040518083038185885af115801561102e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110539190613501565b505050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110f5929190613554565b6020604051808303816000875af1158015611114573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113891906135a9565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555061117761144b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606111ba6111b5610743565b611496565b905090565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161121d9190612c10565b602060405180830381865afa15801561123a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125e91906135d6565b9050600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016112d19190612c10565b602060405180830381865afa1580156112ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131291906135d6565b905060008211611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e9061364f565b60405180910390fd5b600061138283611374633b9aca008561245b90919063ffffffff16565b6124d590919063ffffffff16565b905080935050505090565b60006113a161139a6114cd565b848461169e565b6001905092915050565b60135481565b600660009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601760149054906101000a900460ff161561149457600061146a610743565b9050600061147782611496565b9050600061148483611496565b905061149082826105c6565b5050505b565b606060006114a38361251f565b9050806040516020016114b691906136f7565b604051602081830303815290604052915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b9061378b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa9061381d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116919190612b2f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361170d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611704906138af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177390613941565b60405180910390fd5b600081116117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b6906139d3565b60405180910390fd5b60006117c9611179565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118375750611807611179565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e2657600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118e05750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6118e957600080fd5b600660009054906101000a900460ff1615611a7657601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119aa5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a755743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790613a65565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b215750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b775750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c3257601154821115611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890613ad1565b60405180910390fd5b60125482611bce85610a98565b611bd89190613af1565b1115611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090613b71565b60405180910390fd5b600e6000815480929190611c2c90613b91565b91905055505b611c6e6064611c60600b54600e5411611c4d57600754611c51565b6009545b8561245b90919063ffffffff16565b6124d590919063ffffffff16565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cf957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d3d57611d3a6064611d2c600c54600e5411611d1957600854611d1d565b600a545b8561245b90919063ffffffff16565b6124d590919063ffffffff16565b90505b6000611d4830610a98565b9050601760159054906101000a900460ff16158015611db45750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611dcc5750601760169054906101000a900460ff165b8015611dd9575060135481115b8015611de85750600d54600e54115b15611e2457611e0a611e0584611e008460145461267f565b61267f565b61214f565b60004790506000811115611e2257611e21476123ef565b5b505b505b6000811115611f2a57611e8181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f219190612b2f565b60405180910390a35b611f7c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612023611fd582846126f690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061206e61144b565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120d084866126f690919063ffffffff16565b6040516120dd9190612b2f565b60405180910390a350505050565b6000838311158290612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212a9190612833565b60405180910390fd5b50600083856121429190613bd9565b9050809150509392505050565b6001601760156101000a81548160ff02191690831515021790555060008103156123d157601760149054906101000a900460ff16156123d1576000600267ffffffffffffffff8111156121a5576121a4612873565b5b6040519080825280602002602001820160405280156121d35781602001602082028036833780820191505090505b50905030816000815181106121eb576121ea613c0d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b6919061340f565b816001815181106122ca576122c9613c0d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233130601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114d5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612395959493929190613cfa565b600060405180830381600087803b1580156123af57600080fd5b505af11580156123c3573d6000803e3d6000fd5b505050506123cf61144b565b505b6000601760156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612457573d6000803e3d6000fd5b5050565b600080830361246d57600090506124cf565b6000828461247b919061312d565b905082848261248a91906131e9565b146124ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c190613dc6565b60405180910390fd5b809150505b92915050565b600061251783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612740565b905092915050565b606060008203612566576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061267a565b600082905060005b6000821461259857808061258190613b91565b915050600a8261259191906131e9565b915061256e565b60008167ffffffffffffffff8111156125b4576125b3612873565b5b6040519080825280601f01601f1916602001820160405280156125e65781602001600182028036833780820191505090505b5090505b60008514612673576001826125ff9190613bd9565b9150600a8561260e9190613de6565b603061261a9190613af1565b60f81b8183815181106126305761262f613c0d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561266c91906131e9565b94506125ea565b8093505050505b919050565b600081831161268e5782612690565b815b905092915050565b60008082846126a79190613af1565b9050838110156126ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e390613e63565b60405180910390fd5b8091505092915050565b600061273883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120eb565b905092915050565b60008083118290612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e9190612833565b60405180910390fd5b506000838561279691906131e9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127dd5780820151818401526020810190506127c2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612805826127a3565b61280f81856127ae565b935061281f8185602086016127bf565b612828816127e9565b840191505092915050565b6000602082019050818103600083015261284d81846127fa565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128ab826127e9565b810181811067ffffffffffffffff821117156128ca576128c9612873565b5b80604052505050565b60006128dd612855565b90506128e982826128a2565b919050565b600067ffffffffffffffff82111561290957612908612873565b5b612912826127e9565b9050602081019050919050565b82818337600083830152505050565b600061294161293c846128ee565b6128d3565b90508281526020810184848401111561295d5761295c61286e565b5b61296884828561291f565b509392505050565b600082601f83011261298557612984612869565b5b813561299584826020860161292e565b91505092915050565b600080604083850312156129b5576129b461285f565b5b600083013567ffffffffffffffff8111156129d3576129d2612864565b5b6129df85828601612970565b925050602083013567ffffffffffffffff811115612a00576129ff612864565b5b612a0c85828601612970565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a4182612a16565b9050919050565b612a5181612a36565b8114612a5c57600080fd5b50565b600081359050612a6e81612a48565b92915050565b6000819050919050565b612a8781612a74565b8114612a9257600080fd5b50565b600081359050612aa481612a7e565b92915050565b60008060408385031215612ac157612ac061285f565b5b6000612acf85828601612a5f565b9250506020612ae085828601612a95565b9150509250929050565b60008115159050919050565b612aff81612aea565b82525050565b6000602082019050612b1a6000830184612af6565b92915050565b612b2981612a74565b82525050565b6000602082019050612b446000830184612b20565b92915050565b600080600060608486031215612b6357612b6261285f565b5b6000612b7186828701612a5f565b9350506020612b8286828701612a5f565b9250506040612b9386828701612a95565b9150509250925092565b600060ff82169050919050565b612bb381612b9d565b82525050565b6000602082019050612bce6000830184612baa565b92915050565b600060208284031215612bea57612be961285f565b5b6000612bf884828501612a5f565b91505092915050565b612c0a81612a36565b82525050565b6000602082019050612c256000830184612c01565b92915050565b60008060408385031215612c4257612c4161285f565b5b6000612c5085828601612a5f565b9250506020612c6185828601612a5f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cb257607f821691505b602082108103612cc557612cc4612c6b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612d2d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612cf0565b612d378683612cf0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d74612d6f612d6a84612a74565b612d4f565b612a74565b9050919050565b6000819050919050565b612d8e83612d59565b612da2612d9a82612d7b565b848454612cfd565b825550505050565b600090565b612db7612daa565b612dc2818484612d85565b505050565b5b81811015612de657612ddb600082612daf565b600181019050612dc8565b5050565b601f821115612e2b57612dfc81612ccb565b612e0584612ce0565b81016020851015612e14578190505b612e28612e2085612ce0565b830182612dc7565b50505b505050565b600082821c905092915050565b6000612e4e60001984600802612e30565b1980831691505092915050565b6000612e678383612e3d565b9150826002028217905092915050565b612e80826127a3565b67ffffffffffffffff811115612e9957612e98612873565b5b612ea38254612c9a565b612eae828285612dea565b600060209050601f831160018114612ee15760008415612ecf578287015190505b612ed98582612e5b565b865550612f41565b601f198416612eef86612ccb565b60005b82811015612f1757848901518255600182019150602085019450602081019050612ef2565b86831015612f345784890151612f30601f891682612e3d565b8355505b6001600288020188555050505b505050505050565b60006040820190508181036000830152612f6381856127fa565b90508181036020830152612f7781846127fa565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561300657808604811115612fe257612fe1612f80565b5b6001851615612ff15780820291505b8081029050612fff85612faf565b9450612fc6565b94509492505050565b60008261301f57600190506130db565b8161302d57600090506130db565b8160018114613043576002811461304d5761307c565b60019150506130db565b60ff84111561305f5761305e612f80565b5b8360020a91508482111561307657613075612f80565b5b506130db565b5060208310610133831016604e8410600b84101617156130b15782820a9050838111156130ac576130ab612f80565b5b6130db565b6130be8484846001612fbc565b925090508184048111156130d5576130d4612f80565b5b81810290505b9392505050565b60006130ed82612a74565b91506130f883612b9d565b92506131257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461300f565b905092915050565b600061313882612a74565b915061314383612a74565b925082820261315181612a74565b9150828204841483151761316857613167612f80565b5b5092915050565b600061317a82612a74565b915061318583612a74565b92506131b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461300f565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131f482612a74565b91506131ff83612a74565b92508261320f5761320e6131ba565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132506020836127ae565b915061325b8261321a565b602082019050919050565b6000602082019050818103600083015261327f81613243565b9050919050565b600069ffffffffffffffffffff82169050919050565b6132a581613286565b81146132b057600080fd5b50565b6000815190506132c28161329c565b92915050565b6000819050919050565b6132db816132c8565b81146132e657600080fd5b50565b6000815190506132f8816132d2565b92915050565b60008151905061330d81612a7e565b92915050565b600080600080600060a0868803121561332f5761332e61285f565b5b600061333d888289016132b3565b955050602061334e888289016132e9565b945050604061335f888289016132fe565b9350506060613370888289016132fe565b9250506080613381888289016132b3565b9150509295509295909350565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006133c46017836127ae565b91506133cf8261338e565b602082019050919050565b600060208201905081810360008301526133f3816133b7565b9050919050565b60008151905061340981612a48565b92915050565b6000602082840312156134255761342461285f565b5b6000613433848285016133fa565b91505092915050565b60006040820190506134516000830185612c01565b61345e6020830184612c01565b9392505050565b6000819050919050565b600061348a61348561348084613465565b612d4f565b612a74565b9050919050565b61349a8161346f565b82525050565b600060c0820190506134b56000830189612c01565b6134c26020830188612b20565b6134cf6040830187613491565b6134dc6060830186613491565b6134e96080830185612c01565b6134f660a0830184612b20565b979650505050505050565b60008060006060848603121561351a5761351961285f565b5b6000613528868287016132fe565b9350506020613539868287016132fe565b925050604061354a868287016132fe565b9150509250925092565b60006040820190506135696000830185612c01565b6135766020830184612b20565b9392505050565b61358681612aea565b811461359157600080fd5b50565b6000815190506135a38161357d565b92915050565b6000602082840312156135bf576135be61285f565b5b60006135cd84828501613594565b91505092915050565b6000602082840312156135ec576135eb61285f565b5b60006135fa848285016132fe565b91505092915050565b7f64697669736f6e206279207a65726f206572726f720000000000000000000000600082015250565b60006136396015836127ae565b915061364482613603565b602082019050919050565b600060208201905081810360008301526136688161362c565b9050919050565b600081905092915050565b7f2400000000000000000000000000000000000000000000000000000000000000600082015250565b60006136b060018361366f565b91506136bb8261367a565b600182019050919050565b60006136d1826127a3565b6136db818561366f565b93506136eb8185602086016127bf565b80840191505092915050565b6000613702826136a3565b915061370e82846136c6565b915081905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137756024836127ae565b915061378082613719565b604082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138076022836127ae565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138996025836127ae565b91506138a48261383d565b604082019050919050565b600060208201905081810360008301526138c88161388c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061392b6023836127ae565b9150613936826138cf565b604082019050919050565b6000602082019050818103600083015261395a8161391e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006139bd6029836127ae565b91506139c882613961565b604082019050919050565b600060208201905081810360008301526139ec816139b0565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000613a4f6024836127ae565b9150613a5a826139f3565b604082019050919050565b60006020820190508181036000830152613a7e81613a42565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000613abb6019836127ae565b9150613ac682613a85565b602082019050919050565b60006020820190508181036000830152613aea81613aae565b9050919050565b6000613afc82612a74565b9150613b0783612a74565b9250828201905080821115613b1f57613b1e612f80565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613b5b601a836127ae565b9150613b6682613b25565b602082019050919050565b60006020820190508181036000830152613b8a81613b4e565b9050919050565b6000613b9c82612a74565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bce57613bcd612f80565b5b600182019050919050565b6000613be482612a74565b9150613bef83612a74565b9250828203905081811115613c0757613c06612f80565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c7181612a36565b82525050565b6000613c838383613c68565b60208301905092915050565b6000602082019050919050565b6000613ca782613c3c565b613cb18185613c47565b9350613cbc83613c58565b8060005b83811015613ced578151613cd48882613c77565b9750613cdf83613c8f565b925050600181019050613cc0565b5085935050505092915050565b600060a082019050613d0f6000830188612b20565b613d1c6020830187613491565b8181036040830152613d2e8186613c9c565b9050613d3d6060830185612c01565b613d4a6080830184612b20565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613db06021836127ae565b9150613dbb82613d54565b604082019050919050565b60006020820190508181036000830152613ddf81613da3565b9050919050565b6000613df182612a74565b9150613dfc83612a74565b925082613e0c57613e0b6131ba565b5b828206905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e4d601b836127ae565b9150613e5882613e17565b602082019050919050565b60006020820190508181036000830152613e7c81613e40565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fdd74e8bf68259ce2f748c60035657052e0684a2916bd5ec57f2a1747aeb88c464736f6c63430008130033

Deployed Bytecode Sourcemap

4684:11668:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6833:124;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15739:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7744:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7188:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7913:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15092:567;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11651:195;;;;;;;;;;;;;:::i;:::-;;14372:326;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7097:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11963;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12819:397;;;;;;;;;;;;;:::i;:::-;;7291:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3410:148;;;;;;;;;;;;;:::i;:::-;;5690:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12054:720;;;;;;;;;;;;;:::i;:::-;;3196:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5750:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6965:124;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14706:376;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7418:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5810:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5090:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7593:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15956:387;;;;;;;;;;;;;:::i;:::-;;6833:124;6870:13;6905:44;6928:20;:18;:20::i;:::-;6905:22;:44::i;:::-;6898:51;;6833:124;:::o;15739:203::-;15844:7;15836:5;:15;;;;;;:::i;:::-;;15872:9;15862:7;:19;;;;;;:::i;:::-;;15897:37;15915:7;15924:9;15897:37;;;;;;;:::i;:::-;;;;;;;;15739:203;;:::o;7744:161::-;7819:4;7836:39;7845:12;:10;:12::i;:::-;7859:7;7868:6;7836:8;:39::i;:::-;7893:4;7886:11;;7744:161;;;;:::o;5871:48::-;;;;:::o;7188:95::-;7241:7;5533:1;5586:2;:13;;;;:::i;:::-;5576:7;:23;;;;:::i;:::-;7261:14;;7188:95;:::o;7913:324::-;8011:4;8028:36;8038:6;8046:9;8057:6;8028:9;:36::i;:::-;8075:121;8084:6;8092:12;:10;:12::i;:::-;8106:89;8144:6;8106:89;;;;;;;;;;;;;;;;;:11;:19;8118:6;8106:19;;;;;;;;;;;;;;;:33;8126:12;:10;:12::i;:::-;8106:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8075:8;:121::i;:::-;8225:4;8218:11;;7913:324;;;;;:::o;15092:567::-;15143:7;15159:23;15185:10;:8;:10::i;:::-;15159:36;;15231:21;15255:19;:17;:19::i;:::-;15231:43;;15304:24;15331:13;:11;:13::i;:::-;15304:40;;15416:21;15440:2;15416:26;;15538:17;15618:13;15614:2;:17;;;;:::i;:::-;15596:13;15578:15;15559:16;:34;;;;:::i;:::-;:50;;;;:::i;:::-;15558:74;;;;:::i;:::-;15538:94;;15646:9;15639:16;;;;;;;15092:567;:::o;11651:195::-;3333:12;:10;:12::i;:::-;3323:22;;:6;;;;;;;;;;:22;;;3315:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5533:1:::1;5586:2;:13;;;;:::i;:::-;5576:7;:23;;;;:::i;:::-;11703:12;:22;;;;5533:1;5586:2;:13;;;;:::i;:::-;5576:7;:23;;;;:::i;:::-;11736:14;:22;;;;11790:5;11769:20;;:26;;;;;;;;;;;;;;;;;;11811:27;5533:1;5586:2;:13;;;;:::i;:::-;5576:7;:23;;;;:::i;:::-;11811:27;;;;;;:::i;:::-;;;;;;;;11651:195::o:0;14372:326::-;14422:7;14492:12;14631:9;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14442:216;;;;;;14684:5;14669:21;;;14372:326;:::o;7097:83::-;7138:5;5533:1;7156:16;;7097:83;:::o;11963:::-;12010:4;12031;:7;12036:1;12031:7;;;;;;;;;;;;;;;;;;;;;;;;;12024:14;;11963:83;;;:::o;12819:397::-;12883:10;;;;;;;;;;;12869:24;;:12;:10;:12::i;:::-;:24;;;12861:33;;;;;;12905:20;12926:24;12944:4;12926:9;:24::i;:::-;12905:45;;12977:1;12964:12;:14;12961:73;;;12992:30;13009:12;12992:16;:30::i;:::-;12961:73;13044:18;13063:21;13044:40;;13109:1;13098:10;:12;13095:65;;;13124:24;13137:10;13124:12;:24::i;:::-;13095:65;13172:36;:34;:36::i;:::-;12850:366;;12819:397::o;7291:119::-;7357:7;7384:9;:18;7394:7;7384:18;;;;;;;;;;;;;;;;7377:25;;7291:119;;;:::o;3410:148::-;3333:12;:10;:12::i;:::-;3323:22;;:6;;;;;;;;;;:22;;;3315:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3517:1:::1;3480:40;;3501:6;::::0;::::1;;;;;;;;3480:40;;;;;;;;;;;;3548:1;3531:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3410:148::o:0;5690:53::-;;;;:::o;12054:720::-;3333:12;:10;:12::i;:::-;3323:22;;:6;;;;;;;;;;:22;;;3315:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12120:11:::1;;;;;;;;;;;12119:12;12111:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12206:42;12169:15;;:80;;;;;;;;;;;;;;;;;;12260:58;12277:4;12292:15;;;;;;;;;;;5533:1;5586:2;:13;;;;:::i;:::-;5576:7;:23;;;;:::i;:::-;12260:8;:58::i;:::-;12363:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12345:55;;;12409:4;12416:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12345:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12329:13;;:110;;;;;;;;;;;;;;;;;;12450:15;;;;;;;;;;;:31;;;12489:21;12520:4;12526:24;12544:4;12526:9;:24::i;:::-;12551:1;12553::::0;12555:7:::1;:5;:7::i;:::-;12563:15;12450:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12597:13;;;;;;;;;;;12590:29;;;12628:15;;;;;;;;;;;12646:14;12590:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12686:4;12672:11;;:18;;;;;;;;;;;;;;;;;;12715:4;12701:11;;:18;;;;;;;;;;;;;;;;;;12730:36;:34;:36::i;:::-;12054:720::o:0;3196:79::-;3234:7;3261:6;;;;;;;;;;;3254:13;;3196:79;:::o;5750:53::-;;;;:::o;6965:124::-;7004:13;7037:44;7060:20;:18;:20::i;:::-;7037:22;:44::i;:::-;7030:51;;6965:124;:::o;14706:376::-;14747:7;14767:20;14790:4;:14;;;14805:13;;;;;;;;;;;14790:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14767:52;;14830:18;14858:42;14851:60;;;14912:13;;;;;;;;;;;14851:75;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14830:96;;14960:1;14945:12;:16;14937:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14998:13;15014:37;15038:12;15014:19;15029:3;15014:10;:14;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;14998:53;;15069:5;15062:12;;;;;14706:376;:::o;7418:167::-;7496:4;7513:42;7523:12;:10;:12::i;:::-;7537:9;7548:6;7513:9;:42::i;:::-;7573:4;7566:11;;7418:167;;;;:::o;5810:54::-;;;;:::o;5090:40::-;;;;;;;;;;;;;:::o;7593:143::-;7674:7;7701:11;:18;7713:5;7701:18;;;;;;;;;;;;;;;:27;7720:7;7701:27;;;;;;;;;;;;;;;;7694:34;;7593:143;;;;:::o;15956:387::-;16023:11;;;;;;;;;;;16020:307;;;16050:24;16077:20;:18;:20::i;:::-;16050:47;;16114:21;16138:40;16161:16;16138:22;:40::i;:::-;16114:64;;16193:23;16219:40;16242:16;16219:22;:40::i;:::-;16193:66;;16276:39;16296:7;16305:9;16276:19;:39::i;:::-;16035:292;;;16020:307;15956:387::o;14044:318::-;14114:13;14189:26;14218:19;14231:5;14218:12;:19::i;:::-;14189:48;;14340:12;14318:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;14304:50;;;14044:318;;;:::o;208:98::-;261:7;288:10;281:17;;208:98;:::o;8245:335::-;8355:1;8338:19;;:5;:19;;;8330:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8436:1;8417:21;;:7;:21;;;8409:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8518:6;8488:11;:18;8500:5;8488:18;;;;;;;;;;;;;;;:27;8507:7;8488:27;;;;;;;;;;;;;;;:36;;;;8556:7;8540:32;;8549:5;8540:32;;;8565:6;8540:32;;;;;;:::i;:::-;;;;;;;;8245:335;;;:::o;8588:2335::-;8692:1;8676:18;;:4;:18;;;8668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8769:1;8755:16;;:2;:16;;;8747:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8839:1;8830:6;:10;8822:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8897:17;8939:7;:5;:7::i;:::-;8931:15;;:4;:15;;;;:32;;;;;8956:7;:5;:7::i;:::-;8950:13;;:2;:13;;;;8931:32;8927:1589;;;8989:4;:10;8994:4;8989:10;;;;;;;;;;;;;;;;;;;;;;;;;8988:11;:24;;;;;9004:4;:8;9009:2;9004:8;;;;;;;;;;;;;;;;;;;;;;;;;9003:9;8988:24;8980:33;;;;;;9034:20;;;;;;;;;;;9030:346;;;9093:15;;;;;;;;;;;9079:30;;:2;:30;;;;:62;;;;;9127:13;;;;;;;;;;;9113:28;;:2;:28;;;;9079:62;9075:286;;;9214:12;9172:28;:39;9201:9;9172:39;;;;;;;;;;;;;;;;:54;9164:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;9329:12;9287:28;:39;9316:9;9287:39;;;;;;;;;;;;;;;:54;;;;9075:286;9030:346;9404:13;;;;;;;;;;;9396:21;;:4;:21;;;:55;;;;;9435:15;;;;;;;;;;;9421:30;;:2;:30;;;;9396:55;:83;;;;;9457:18;:22;9476:2;9457:22;;;;;;;;;;;;;;;;;;;;;;;;;9455:24;9396:83;9392:313;;;9519:12;;9509:6;:22;;9501:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9614:14;;9604:6;9588:13;9598:2;9588:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9580:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9678:9;;:11;;;;;;;;;:::i;:::-;;;;;;9392:313;9735:76;9807:3;9735:67;9757:15;;9747:9;;:25;9746:55;;9787:14;;9746:55;;;9774:12;;9746:55;9735:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;9723:88;;9835:13;;;;;;;;;;;9829:19;;:2;:19;;;:43;;;;;9867:4;9852:20;;:4;:20;;;;9829:43;9826:174;;;9905:79;9980:3;9905:70;9927:16;;9917:9;;:26;9916:58;;9959:15;;9916:58;;;9945:13;;9916:58;9905:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9893:91;;9826:174;10016:28;10047:24;10065:4;10047:9;:24::i;:::-;10016:55;;10091:6;;;;;;;;;;;10090:7;:30;;;;;10107:13;;;;;;;;;;;10101:19;;:2;:19;;;10090:30;:45;;;;;10124:11;;;;;;;;;;;10090:45;:87;;;;;10160:17;;10139:20;:38;10090:87;:119;;;;;10191:18;;10181:9;;:28;10090:119;10086:419;;;10230:67;10247:49;10251:6;10258:37;10262:20;10283:11;;10258:3;:37::i;:::-;10247:3;:49::i;:::-;10230:16;:67::i;:::-;10316:26;10345:21;10316:50;;10409:1;10388:18;:22;10385:105;;;10435:35;10448:21;10435:12;:35::i;:::-;10385:105;10211:294;10086:419;8965:1551;8927:1589;10541:1;10531:9;:11;10528:161;;;10581:39;10610:9;10581;:24;10599:4;10581:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10556:9;:24;10574:4;10556:24;;;;;;;;;;;;;;;:64;;;;10661:4;10638:39;;10647:4;10638:39;;;10667:9;10638:39;;;;;;:::i;:::-;;;;;;;;10528:161;10715:27;10735:6;10715:9;:15;10725:4;10715:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10699:9;:15;10709:4;10699:15;;;;;;;;;;;;;;;:43;;;;10767:40;10785:21;10796:9;10785:6;:10;;:21;;;;:::i;:::-;10767:9;:13;10777:2;10767:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10753:9;:13;10763:2;10753:13;;;;;;;;;;;;;;;:54;;;;10820:36;:34;:36::i;:::-;10889:2;10874:41;;10883:4;10874:41;;;10893:21;10904:9;10893:6;:10;;:21;;;;:::i;:::-;10874:41;;;;;;:::i;:::-;;;;;;;;8657:2266;8588:2335;;;:::o;2088:190::-;2174:7;2207:1;2202;:6;;2210:12;2194:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2234:9;2250:1;2246;:5;;;;:::i;:::-;2234:17;;2269:1;2262:8;;;2088:190;;;;;:::o;11039:604::-;6265:4;6256:6;;:13;;;;;;;;;;;;;;;;;;11133:1:::1;11120:11;:14:::0;11117:27;11136:7:::1;11117:27;11158:11;;;;;;;;;;;11154:25:::0;11171:7:::1;11154:25;11189:21;11227:1;11213:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:40;;11258:4;11240;11245:1;11240:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11284:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11274:4;11279:1;11274:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11317:62;11334:4;11349:15;;;;;;;;;;;11367:11;11317:8;:62::i;:::-;11390:15;;;;;;;;;;;:66;;;11471:11;11497:1;11513:4;11540;11560:15;11390:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11599:36;:34;:36::i;:::-;11106:537;6280:1;6301:5:::0;6292:6;;:14;;;;;;;;;;;;;;;;;;11039:604;:::o;11854:101::-;11911:10;;;;;;;;;;;:19;;:27;11931:6;11911:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11854:101;:::o;2286:246::-;2344:7;2373:1;2368;:6;2364:47;;2398:1;2391:8;;;;2364:47;2421:9;2437:1;2433;:5;;;;:::i;:::-;2421:17;;2466:1;2461;2457;:5;;;;:::i;:::-;:10;2449:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2523:1;2516:8;;;2286:246;;;;;:::o;2540:132::-;2598:7;2625:39;2629:1;2632;2625:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2618:46;;2540:132;;;;:::o;13224:812::-;13284:13;13376:1;13367:5;:10;13363:53;;13394:10;;;;;;;;;;;;;;;;;;;;;13363:53;13475:12;13490:5;13475:20;;13506:14;13531:78;13546:1;13538:4;:9;13531:78;;13564:8;;;;;:::i;:::-;;;;13595:2;13587:10;;;;;:::i;:::-;;;13531:78;;;13691:19;13723:6;13713:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13691:39;;13802:145;13818:1;13809:5;:10;13802:145;;13846:1;13836:11;;;;;:::i;:::-;;;13905:2;13897:5;:10;;;;:::i;:::-;13892:2;:15;;;;:::i;:::-;13879:30;;13862:6;13869;13862:14;;;;;;;;:::i;:::-;;;;;:47;;;;;;;;;;;13933:2;13924:11;;;;;:::i;:::-;;;13802:145;;;14021:6;14007:21;;;;;13224:812;;;;:::o;10933:98::-;10990:7;11017:1;11015;:3;11014:9;;11022:1;11014:9;;;11020:1;11014:9;11007:16;;10933:98;;;;:::o;1757:179::-;1815:7;1835:9;1851:1;1847;:5;;;;:::i;:::-;1835:17;;1876:1;1871;:6;;1863:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1927:1;1920:8;;;1757:179;;;;:::o;1944:136::-;2002:7;2029:43;2033:1;2036;2029:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2022:50;;1944:136;;;;:::o;2680:189::-;2766:7;2798:1;2794;:5;2801:12;2786:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2825:9;2841:1;2837;:5;;;;:::i;:::-;2825:17;;2860:1;2853:8;;;2680: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:117;1785:1;1782;1775:12;1799:117;1908:1;1905;1898:12;1922:180;1970:77;1967:1;1960:88;2067:4;2064:1;2057:15;2091:4;2088:1;2081:15;2108:281;2191:27;2213:4;2191:27;:::i;:::-;2183:6;2179:40;2321:6;2309:10;2306:22;2285:18;2273:10;2270:34;2267:62;2264:88;;;2332:18;;:::i;:::-;2264:88;2372:10;2368:2;2361:22;2151:238;2108:281;;:::o;2395:129::-;2429:6;2456:20;;:::i;:::-;2446:30;;2485:33;2513:4;2505:6;2485:33;:::i;:::-;2395:129;;;:::o;2530:308::-;2592:4;2682:18;2674:6;2671:30;2668:56;;;2704:18;;:::i;:::-;2668:56;2742:29;2764:6;2742:29;:::i;:::-;2734:37;;2826:4;2820;2816:15;2808:23;;2530:308;;;:::o;2844:146::-;2941:6;2936:3;2931;2918:30;2982:1;2973:6;2968:3;2964:16;2957:27;2844:146;;;:::o;2996:425::-;3074:5;3099:66;3115:49;3157:6;3115:49;:::i;:::-;3099:66;:::i;:::-;3090:75;;3188:6;3181:5;3174:21;3226:4;3219:5;3215:16;3264:3;3255:6;3250:3;3246:16;3243:25;3240:112;;;3271:79;;:::i;:::-;3240:112;3361:54;3408:6;3403:3;3398;3361:54;:::i;:::-;3080:341;2996:425;;;;;:::o;3441:340::-;3497:5;3546:3;3539:4;3531:6;3527:17;3523:27;3513:122;;3554:79;;:::i;:::-;3513:122;3671:6;3658:20;3696:79;3771:3;3763:6;3756:4;3748:6;3744:17;3696:79;:::i;:::-;3687:88;;3503:278;3441:340;;;;:::o;3787:834::-;3875:6;3883;3932:2;3920:9;3911:7;3907:23;3903:32;3900:119;;;3938:79;;:::i;:::-;3900:119;4086:1;4075:9;4071:17;4058:31;4116:18;4108:6;4105:30;4102:117;;;4138:79;;:::i;:::-;4102:117;4243:63;4298:7;4289:6;4278:9;4274:22;4243:63;:::i;:::-;4233:73;;4029:287;4383:2;4372:9;4368:18;4355:32;4414:18;4406:6;4403:30;4400:117;;;4436:79;;:::i;:::-;4400:117;4541:63;4596:7;4587:6;4576:9;4572:22;4541:63;:::i;:::-;4531:73;;4326:288;3787:834;;;;;:::o;4627:126::-;4664:7;4704:42;4697:5;4693:54;4682:65;;4627:126;;;:::o;4759:96::-;4796:7;4825:24;4843:5;4825:24;:::i;:::-;4814:35;;4759:96;;;:::o;4861:122::-;4934:24;4952:5;4934:24;:::i;:::-;4927:5;4924:35;4914:63;;4973:1;4970;4963:12;4914:63;4861:122;:::o;4989:139::-;5035:5;5073:6;5060:20;5051:29;;5089:33;5116:5;5089:33;:::i;:::-;4989:139;;;;:::o;5134:77::-;5171:7;5200:5;5189:16;;5134:77;;;:::o;5217:122::-;5290:24;5308:5;5290:24;:::i;:::-;5283:5;5280:35;5270:63;;5329:1;5326;5319:12;5270:63;5217:122;:::o;5345:139::-;5391:5;5429:6;5416:20;5407:29;;5445:33;5472:5;5445:33;:::i;:::-;5345:139;;;;:::o;5490:474::-;5558:6;5566;5615:2;5603:9;5594:7;5590:23;5586:32;5583:119;;;5621:79;;:::i;:::-;5583:119;5741:1;5766:53;5811:7;5802:6;5791:9;5787:22;5766:53;:::i;:::-;5756:63;;5712:117;5868:2;5894:53;5939:7;5930:6;5919:9;5915:22;5894:53;:::i;:::-;5884:63;;5839:118;5490:474;;;;;:::o;5970:90::-;6004:7;6047:5;6040:13;6033:21;6022:32;;5970:90;;;:::o;6066:109::-;6147:21;6162:5;6147:21;:::i;:::-;6142:3;6135:34;6066:109;;:::o;6181:210::-;6268:4;6306:2;6295:9;6291:18;6283:26;;6319:65;6381:1;6370:9;6366:17;6357:6;6319:65;:::i;:::-;6181:210;;;;:::o;6397:118::-;6484:24;6502:5;6484:24;:::i;:::-;6479:3;6472:37;6397:118;;:::o;6521:222::-;6614:4;6652:2;6641:9;6637:18;6629:26;;6665:71;6733:1;6722:9;6718:17;6709:6;6665:71;:::i;:::-;6521:222;;;;:::o;6749:619::-;6826:6;6834;6842;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7017:1;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6988:117;7144:2;7170:53;7215:7;7206:6;7195:9;7191:22;7170:53;:::i;:::-;7160:63;;7115:118;7272:2;7298:53;7343:7;7334:6;7323:9;7319:22;7298:53;:::i;:::-;7288:63;;7243:118;6749:619;;;;;:::o;7374:86::-;7409:7;7449:4;7442:5;7438:16;7427:27;;7374:86;;;:::o;7466:112::-;7549:22;7565:5;7549:22;:::i;:::-;7544:3;7537:35;7466:112;;:::o;7584:214::-;7673:4;7711:2;7700:9;7696:18;7688:26;;7724:67;7788:1;7777:9;7773:17;7764:6;7724:67;:::i;:::-;7584:214;;;;:::o;7804:329::-;7863:6;7912:2;7900:9;7891:7;7887:23;7883:32;7880:119;;;7918:79;;:::i;:::-;7880:119;8038:1;8063:53;8108:7;8099:6;8088:9;8084:22;8063:53;:::i;:::-;8053:63;;8009:117;7804:329;;;;:::o;8139:118::-;8226:24;8244:5;8226:24;:::i;:::-;8221:3;8214:37;8139:118;;:::o;8263:222::-;8356:4;8394:2;8383:9;8379:18;8371:26;;8407:71;8475:1;8464:9;8460:17;8451:6;8407:71;:::i;:::-;8263:222;;;;:::o;8491:474::-;8559:6;8567;8616:2;8604:9;8595:7;8591:23;8587:32;8584:119;;;8622:79;;:::i;:::-;8584:119;8742:1;8767:53;8812:7;8803:6;8792:9;8788:22;8767:53;:::i;:::-;8757:63;;8713:117;8869:2;8895:53;8940:7;8931:6;8920:9;8916:22;8895:53;:::i;:::-;8885:63;;8840:118;8491:474;;;;;:::o;8971:180::-;9019:77;9016:1;9009:88;9116:4;9113:1;9106:15;9140:4;9137:1;9130:15;9157:320;9201:6;9238:1;9232:4;9228:12;9218:22;;9285:1;9279:4;9275:12;9306:18;9296:81;;9362:4;9354:6;9350:17;9340:27;;9296:81;9424:2;9416:6;9413:14;9393:18;9390:38;9387:84;;9443:18;;:::i;:::-;9387:84;9208:269;9157:320;;;:::o;9483:141::-;9532:4;9555:3;9547:11;;9578:3;9575:1;9568:14;9612:4;9609:1;9599:18;9591:26;;9483:141;;;:::o;9630:93::-;9667:6;9714:2;9709;9702:5;9698:14;9694:23;9684:33;;9630:93;;;:::o;9729:107::-;9773:8;9823:5;9817:4;9813:16;9792:37;;9729:107;;;;:::o;9842:393::-;9911:6;9961:1;9949:10;9945:18;9984:97;10014:66;10003:9;9984:97;:::i;:::-;10102:39;10132:8;10121:9;10102:39;:::i;:::-;10090:51;;10174:4;10170:9;10163:5;10159:21;10150:30;;10223:4;10213:8;10209:19;10202:5;10199:30;10189:40;;9918:317;;9842:393;;;;;:::o;10241:60::-;10269:3;10290:5;10283:12;;10241:60;;;:::o;10307:142::-;10357:9;10390:53;10408:34;10417:24;10435:5;10417:24;:::i;:::-;10408:34;:::i;:::-;10390:53;:::i;:::-;10377:66;;10307:142;;;:::o;10455:75::-;10498:3;10519:5;10512:12;;10455:75;;;:::o;10536:269::-;10646:39;10677:7;10646:39;:::i;:::-;10707:91;10756:41;10780:16;10756:41;:::i;:::-;10748:6;10741:4;10735:11;10707:91;:::i;:::-;10701:4;10694:105;10612:193;10536:269;;;:::o;10811:73::-;10856:3;10811:73;:::o;10890:189::-;10967:32;;:::i;:::-;11008:65;11066:6;11058;11052:4;11008:65;:::i;:::-;10943:136;10890:189;;:::o;11085:186::-;11145:120;11162:3;11155:5;11152:14;11145:120;;;11216:39;11253:1;11246:5;11216:39;:::i;:::-;11189:1;11182:5;11178:13;11169:22;;11145:120;;;11085:186;;:::o;11277:543::-;11378:2;11373:3;11370:11;11367:446;;;11412:38;11444:5;11412:38;:::i;:::-;11496:29;11514:10;11496:29;:::i;:::-;11486:8;11482:44;11679:2;11667:10;11664:18;11661:49;;;11700:8;11685:23;;11661:49;11723:80;11779:22;11797:3;11779:22;:::i;:::-;11769:8;11765:37;11752:11;11723:80;:::i;:::-;11382:431;;11367:446;11277:543;;;:::o;11826:117::-;11880:8;11930:5;11924:4;11920:16;11899:37;;11826:117;;;;:::o;11949:169::-;11993:6;12026:51;12074:1;12070:6;12062:5;12059:1;12055:13;12026:51;:::i;:::-;12022:56;12107:4;12101;12097:15;12087:25;;12000:118;11949:169;;;;:::o;12123:295::-;12199:4;12345:29;12370:3;12364:4;12345:29;:::i;:::-;12337:37;;12407:3;12404:1;12400:11;12394:4;12391:21;12383:29;;12123:295;;;;:::o;12423:1395::-;12540:37;12573:3;12540:37;:::i;:::-;12642:18;12634:6;12631:30;12628:56;;;12664:18;;:::i;:::-;12628:56;12708:38;12740:4;12734:11;12708:38;:::i;:::-;12793:67;12853:6;12845;12839:4;12793:67;:::i;:::-;12887:1;12911:4;12898:17;;12943:2;12935:6;12932:14;12960:1;12955:618;;;;13617:1;13634:6;13631:77;;;13683:9;13678:3;13674:19;13668:26;13659:35;;13631:77;13734:67;13794:6;13787:5;13734:67;:::i;:::-;13728:4;13721:81;13590:222;12925:887;;12955:618;13007:4;13003:9;12995:6;12991:22;13041:37;13073:4;13041:37;:::i;:::-;13100:1;13114:208;13128:7;13125:1;13122:14;13114:208;;;13207:9;13202:3;13198:19;13192:26;13184:6;13177:42;13258:1;13250:6;13246:14;13236:24;;13305:2;13294:9;13290:18;13277:31;;13151:4;13148:1;13144:12;13139:17;;13114:208;;;13350:6;13341:7;13338:19;13335:179;;;13408:9;13403:3;13399:19;13393:26;13451:48;13493:4;13485:6;13481:17;13470:9;13451:48;:::i;:::-;13443:6;13436:64;13358:156;13335:179;13560:1;13556;13548:6;13544:14;13540:22;13534:4;13527:36;12962:611;;;12925:887;;12515:1303;;;12423:1395;;:::o;13824:514::-;13985:4;14023:2;14012:9;14008:18;14000:26;;14072:9;14066:4;14062:20;14058:1;14047:9;14043:17;14036:47;14100:78;14173:4;14164:6;14100:78;:::i;:::-;14092:86;;14225:9;14219:4;14215:20;14210:2;14199:9;14195:18;14188:48;14253:78;14326:4;14317:6;14253:78;:::i;:::-;14245:86;;13824:514;;;;;:::o;14344:180::-;14392:77;14389:1;14382:88;14489:4;14486:1;14479:15;14513:4;14510:1;14503:15;14530:102;14572:8;14619:5;14616:1;14612:13;14591:34;;14530:102;;;:::o;14638:848::-;14699:5;14706:4;14730:6;14721:15;;14754:5;14745:14;;14768:712;14789:1;14779:8;14776:15;14768:712;;;14884:4;14879:3;14875:14;14869:4;14866:24;14863:50;;;14893:18;;:::i;:::-;14863:50;14943:1;14933:8;14929:16;14926:451;;;15358:4;15351:5;15347:16;15338:25;;14926:451;15408:4;15402;15398:15;15390:23;;15438:32;15461:8;15438:32;:::i;:::-;15426:44;;14768:712;;;14638:848;;;;;;;:::o;15492:1073::-;15546:5;15737:8;15727:40;;15758:1;15749:10;;15760:5;;15727:40;15786:4;15776:36;;15803:1;15794:10;;15805:5;;15776:36;15872:4;15920:1;15915:27;;;;15956:1;15951:191;;;;15865:277;;15915:27;15933:1;15924:10;;15935:5;;;15951:191;15996:3;15986:8;15983:17;15980:43;;;16003:18;;:::i;:::-;15980:43;16052:8;16049:1;16045:16;16036:25;;16087:3;16080:5;16077:14;16074:40;;;16094:18;;:::i;:::-;16074:40;16127:5;;;15865:277;;16251:2;16241:8;16238:16;16232:3;16226:4;16223:13;16219:36;16201:2;16191:8;16188:16;16183:2;16177:4;16174:12;16170:35;16154:111;16151:246;;;16307:8;16301:4;16297:19;16288:28;;16342:3;16335:5;16332:14;16329:40;;;16349:18;;:::i;:::-;16329:40;16382:5;;16151:246;16422:42;16460:3;16450:8;16444:4;16441:1;16422:42;:::i;:::-;16407:57;;;;16496:4;16491:3;16487:14;16480:5;16477:25;16474:51;;;16505:18;;:::i;:::-;16474:51;16554:4;16547:5;16543:16;16534:25;;15492:1073;;;;;;:::o;16571:281::-;16629:5;16653:23;16671:4;16653:23;:::i;:::-;16645:31;;16697:25;16713:8;16697:25;:::i;:::-;16685:37;;16741:104;16778:66;16768:8;16762:4;16741:104;:::i;:::-;16732:113;;16571:281;;;;:::o;16858:410::-;16898:7;16921:20;16939:1;16921:20;:::i;:::-;16916:25;;16955:20;16973:1;16955:20;:::i;:::-;16950:25;;17010:1;17007;17003:9;17032:30;17050:11;17032:30;:::i;:::-;17021:41;;17211:1;17202:7;17198:15;17195:1;17192:22;17172:1;17165:9;17145:83;17122:139;;17241:18;;:::i;:::-;17122:139;16906:362;16858:410;;;;:::o;17274:285::-;17334:5;17358:23;17376:4;17358:23;:::i;:::-;17350:31;;17402:27;17420:8;17402:27;:::i;:::-;17390:39;;17448:104;17485:66;17475:8;17469:4;17448:104;:::i;:::-;17439:113;;17274:285;;;;:::o;17565:180::-;17613:77;17610:1;17603:88;17710:4;17707:1;17700:15;17734:4;17731:1;17724:15;17751:185;17791:1;17808:20;17826:1;17808:20;:::i;:::-;17803:25;;17842:20;17860:1;17842:20;:::i;:::-;17837:25;;17881:1;17871:35;;17886:18;;:::i;:::-;17871:35;17928:1;17925;17921:9;17916:14;;17751:185;;;;:::o;17942:182::-;18082:34;18078:1;18070:6;18066:14;18059:58;17942:182;:::o;18130:366::-;18272:3;18293:67;18357:2;18352:3;18293:67;:::i;:::-;18286:74;;18369:93;18458:3;18369:93;:::i;:::-;18487:2;18482:3;18478:12;18471:19;;18130:366;;;:::o;18502:419::-;18668:4;18706:2;18695:9;18691:18;18683:26;;18755:9;18749:4;18745:20;18741:1;18730:9;18726:17;18719:47;18783:131;18909:4;18783:131;:::i;:::-;18775:139;;18502:419;;;:::o;18927:105::-;18963:7;19003:22;18996:5;18992:34;18981:45;;18927:105;;;:::o;19038:120::-;19110:23;19127:5;19110:23;:::i;:::-;19103:5;19100:34;19090:62;;19148:1;19145;19138:12;19090:62;19038:120;:::o;19164:141::-;19220:5;19251:6;19245:13;19236:22;;19267:32;19293:5;19267:32;:::i;:::-;19164:141;;;;:::o;19311:76::-;19347:7;19376:5;19365:16;;19311:76;;;:::o;19393:120::-;19465:23;19482:5;19465:23;:::i;:::-;19458:5;19455:34;19445:62;;19503:1;19500;19493:12;19445:62;19393:120;:::o;19519:141::-;19575:5;19606:6;19600:13;19591:22;;19622:32;19648:5;19622:32;:::i;:::-;19519:141;;;;:::o;19666:143::-;19723:5;19754:6;19748:13;19739:22;;19770:33;19797:5;19770:33;:::i;:::-;19666:143;;;;:::o;19815:971::-;19918:6;19926;19934;19942;19950;19999:3;19987:9;19978:7;19974:23;19970:33;19967:120;;;20006:79;;:::i;:::-;19967:120;20126:1;20151:63;20206:7;20197:6;20186:9;20182:22;20151:63;:::i;:::-;20141:73;;20097:127;20263:2;20289:63;20344:7;20335:6;20324:9;20320:22;20289:63;:::i;:::-;20279:73;;20234:128;20401:2;20427:64;20483:7;20474:6;20463:9;20459:22;20427:64;:::i;:::-;20417:74;;20372:129;20540:2;20566:64;20622:7;20613:6;20602:9;20598:22;20566:64;:::i;:::-;20556:74;;20511:129;20679:3;20706:63;20761:7;20752:6;20741:9;20737:22;20706:63;:::i;:::-;20696:73;;20650:129;19815:971;;;;;;;;:::o;20792:173::-;20932:25;20928:1;20920:6;20916:14;20909:49;20792:173;:::o;20971:366::-;21113:3;21134:67;21198:2;21193:3;21134:67;:::i;:::-;21127:74;;21210:93;21299:3;21210:93;:::i;:::-;21328:2;21323:3;21319:12;21312:19;;20971:366;;;:::o;21343:419::-;21509:4;21547:2;21536:9;21532:18;21524:26;;21596:9;21590:4;21586:20;21582:1;21571:9;21567:17;21560:47;21624:131;21750:4;21624:131;:::i;:::-;21616:139;;21343:419;;;:::o;21768:143::-;21825:5;21856:6;21850:13;21841:22;;21872:33;21899:5;21872:33;:::i;:::-;21768:143;;;;:::o;21917:351::-;21987:6;22036:2;22024:9;22015:7;22011:23;22007:32;22004:119;;;22042:79;;:::i;:::-;22004:119;22162:1;22187:64;22243:7;22234:6;22223:9;22219:22;22187:64;:::i;:::-;22177:74;;22133:128;21917:351;;;;:::o;22274:332::-;22395:4;22433:2;22422:9;22418:18;22410:26;;22446:71;22514:1;22503:9;22499:17;22490:6;22446:71;:::i;:::-;22527:72;22595:2;22584:9;22580:18;22571:6;22527:72;:::i;:::-;22274:332;;;;;:::o;22612:85::-;22657:7;22686:5;22675:16;;22612:85;;;:::o;22703:158::-;22761:9;22794:61;22812:42;22821:32;22847:5;22821:32;:::i;:::-;22812:42;:::i;:::-;22794:61;:::i;:::-;22781:74;;22703:158;;;:::o;22867:147::-;22962:45;23001:5;22962:45;:::i;:::-;22957:3;22950:58;22867:147;;:::o;23020:807::-;23269:4;23307:3;23296:9;23292:19;23284:27;;23321:71;23389:1;23378:9;23374:17;23365:6;23321:71;:::i;:::-;23402:72;23470:2;23459:9;23455:18;23446:6;23402:72;:::i;:::-;23484:80;23560:2;23549:9;23545:18;23536:6;23484:80;:::i;:::-;23574;23650:2;23639:9;23635:18;23626:6;23574:80;:::i;:::-;23664:73;23732:3;23721:9;23717:19;23708:6;23664:73;:::i;:::-;23747;23815:3;23804:9;23800:19;23791:6;23747:73;:::i;:::-;23020:807;;;;;;;;;:::o;23833:663::-;23921:6;23929;23937;23986:2;23974:9;23965:7;23961:23;23957:32;23954:119;;;23992:79;;:::i;:::-;23954:119;24112:1;24137:64;24193:7;24184:6;24173:9;24169:22;24137:64;:::i;:::-;24127:74;;24083:128;24250:2;24276:64;24332:7;24323:6;24312:9;24308:22;24276:64;:::i;:::-;24266:74;;24221:129;24389:2;24415:64;24471:7;24462:6;24451:9;24447:22;24415:64;:::i;:::-;24405:74;;24360:129;23833:663;;;;;:::o;24502:332::-;24623:4;24661:2;24650:9;24646:18;24638:26;;24674:71;24742:1;24731:9;24727:17;24718:6;24674:71;:::i;:::-;24755:72;24823:2;24812:9;24808:18;24799:6;24755:72;:::i;:::-;24502:332;;;;;:::o;24840:116::-;24910:21;24925:5;24910:21;:::i;:::-;24903:5;24900:32;24890:60;;24946:1;24943;24936:12;24890:60;24840:116;:::o;24962:137::-;25016:5;25047:6;25041:13;25032:22;;25063:30;25087:5;25063:30;:::i;:::-;24962:137;;;;:::o;25105:345::-;25172:6;25221:2;25209:9;25200:7;25196:23;25192:32;25189:119;;;25227:79;;:::i;:::-;25189:119;25347:1;25372:61;25425:7;25416:6;25405:9;25401:22;25372:61;:::i;:::-;25362:71;;25318:125;25105:345;;;;:::o;25456:351::-;25526:6;25575:2;25563:9;25554:7;25550:23;25546:32;25543:119;;;25581:79;;:::i;:::-;25543:119;25701:1;25726:64;25782:7;25773:6;25762:9;25758:22;25726:64;:::i;:::-;25716:74;;25672:128;25456:351;;;;:::o;25813:171::-;25953:23;25949:1;25941:6;25937:14;25930:47;25813:171;:::o;25990:366::-;26132:3;26153:67;26217:2;26212:3;26153:67;:::i;:::-;26146:74;;26229:93;26318:3;26229:93;:::i;:::-;26347:2;26342:3;26338:12;26331:19;;25990:366;;;:::o;26362:419::-;26528:4;26566:2;26555:9;26551:18;26543:26;;26615:9;26609:4;26605:20;26601:1;26590:9;26586:17;26579:47;26643:131;26769:4;26643:131;:::i;:::-;26635:139;;26362:419;;;:::o;26787:148::-;26889:11;26926:3;26911:18;;26787:148;;;;:::o;26941:151::-;27081:3;27077:1;27069:6;27065:14;27058:27;26941:151;:::o;27098:400::-;27258:3;27279:84;27361:1;27356:3;27279:84;:::i;:::-;27272:91;;27372:93;27461:3;27372:93;:::i;:::-;27490:1;27485:3;27481:11;27474:18;;27098:400;;;:::o;27504:390::-;27610:3;27638:39;27671:5;27638:39;:::i;:::-;27693:89;27775:6;27770:3;27693:89;:::i;:::-;27686:96;;27791:65;27849:6;27844:3;27837:4;27830:5;27826:16;27791:65;:::i;:::-;27881:6;27876:3;27872:16;27865:23;;27614:280;27504:390;;;;:::o;27900:541::-;28133:3;28155:148;28299:3;28155:148;:::i;:::-;28148:155;;28320:95;28411:3;28402:6;28320:95;:::i;:::-;28313:102;;28432:3;28425:10;;27900:541;;;;:::o;28447:223::-;28587:34;28583:1;28575:6;28571:14;28564:58;28656:6;28651:2;28643:6;28639:15;28632:31;28447:223;:::o;28676:366::-;28818:3;28839:67;28903:2;28898:3;28839:67;:::i;:::-;28832:74;;28915:93;29004:3;28915:93;:::i;:::-;29033:2;29028:3;29024:12;29017:19;;28676:366;;;:::o;29048:419::-;29214:4;29252:2;29241:9;29237:18;29229:26;;29301:9;29295:4;29291:20;29287:1;29276:9;29272:17;29265:47;29329:131;29455:4;29329:131;:::i;:::-;29321:139;;29048:419;;;:::o;29473:221::-;29613:34;29609:1;29601:6;29597:14;29590:58;29682:4;29677:2;29669:6;29665:15;29658:29;29473:221;:::o;29700:366::-;29842:3;29863:67;29927:2;29922:3;29863:67;:::i;:::-;29856:74;;29939:93;30028:3;29939:93;:::i;:::-;30057:2;30052:3;30048:12;30041:19;;29700:366;;;:::o;30072:419::-;30238:4;30276:2;30265:9;30261:18;30253:26;;30325:9;30319:4;30315:20;30311:1;30300:9;30296:17;30289:47;30353:131;30479:4;30353:131;:::i;:::-;30345:139;;30072:419;;;:::o;30497:224::-;30637:34;30633:1;30625:6;30621:14;30614:58;30706:7;30701:2;30693:6;30689:15;30682:32;30497:224;:::o;30727:366::-;30869:3;30890:67;30954:2;30949:3;30890:67;:::i;:::-;30883:74;;30966:93;31055:3;30966:93;:::i;:::-;31084:2;31079:3;31075:12;31068:19;;30727:366;;;:::o;31099:419::-;31265:4;31303:2;31292:9;31288:18;31280:26;;31352:9;31346:4;31342:20;31338:1;31327:9;31323:17;31316:47;31380:131;31506:4;31380:131;:::i;:::-;31372:139;;31099:419;;;:::o;31524:222::-;31664:34;31660:1;31652:6;31648:14;31641:58;31733:5;31728:2;31720:6;31716:15;31709:30;31524:222;:::o;31752:366::-;31894:3;31915:67;31979:2;31974:3;31915:67;:::i;:::-;31908:74;;31991:93;32080:3;31991:93;:::i;:::-;32109:2;32104:3;32100:12;32093:19;;31752:366;;;:::o;32124:419::-;32290:4;32328:2;32317:9;32313:18;32305:26;;32377:9;32371:4;32367:20;32363:1;32352:9;32348:17;32341:47;32405:131;32531:4;32405:131;:::i;:::-;32397:139;;32124:419;;;:::o;32549:228::-;32689:34;32685:1;32677:6;32673:14;32666:58;32758:11;32753:2;32745:6;32741:15;32734:36;32549:228;:::o;32783:366::-;32925:3;32946:67;33010:2;33005:3;32946:67;:::i;:::-;32939:74;;33022:93;33111:3;33022:93;:::i;:::-;33140:2;33135:3;33131:12;33124:19;;32783:366;;;:::o;33155:419::-;33321:4;33359:2;33348:9;33344:18;33336:26;;33408:9;33402:4;33398:20;33394:1;33383:9;33379:17;33372:47;33436:131;33562:4;33436:131;:::i;:::-;33428:139;;33155:419;;;:::o;33580:223::-;33720:34;33716:1;33708:6;33704:14;33697:58;33789:6;33784:2;33776:6;33772:15;33765:31;33580:223;:::o;33809:366::-;33951:3;33972:67;34036:2;34031:3;33972:67;:::i;:::-;33965:74;;34048:93;34137:3;34048:93;:::i;:::-;34166:2;34161:3;34157:12;34150:19;;33809:366;;;:::o;34181:419::-;34347:4;34385:2;34374:9;34370:18;34362:26;;34434:9;34428:4;34424:20;34420:1;34409:9;34405:17;34398:47;34462:131;34588:4;34462:131;:::i;:::-;34454:139;;34181:419;;;:::o;34606:175::-;34746:27;34742:1;34734:6;34730:14;34723:51;34606:175;:::o;34787:366::-;34929:3;34950:67;35014:2;35009:3;34950:67;:::i;:::-;34943:74;;35026:93;35115:3;35026:93;:::i;:::-;35144:2;35139:3;35135:12;35128:19;;34787:366;;;:::o;35159:419::-;35325:4;35363:2;35352:9;35348:18;35340:26;;35412:9;35406:4;35402:20;35398:1;35387:9;35383:17;35376:47;35440:131;35566:4;35440:131;:::i;:::-;35432:139;;35159:419;;;:::o;35584:191::-;35624:3;35643:20;35661:1;35643:20;:::i;:::-;35638:25;;35677:20;35695:1;35677:20;:::i;:::-;35672:25;;35720:1;35717;35713:9;35706:16;;35741:3;35738:1;35735:10;35732:36;;;35748:18;;:::i;:::-;35732:36;35584:191;;;;:::o;35781:176::-;35921:28;35917:1;35909:6;35905:14;35898:52;35781:176;:::o;35963:366::-;36105:3;36126:67;36190:2;36185:3;36126:67;:::i;:::-;36119:74;;36202:93;36291:3;36202:93;:::i;:::-;36320:2;36315:3;36311:12;36304:19;;35963:366;;;:::o;36335:419::-;36501:4;36539:2;36528:9;36524:18;36516:26;;36588:9;36582:4;36578:20;36574:1;36563:9;36559:17;36552:47;36616:131;36742:4;36616:131;:::i;:::-;36608:139;;36335:419;;;:::o;36760:233::-;36799:3;36822:24;36840:5;36822:24;:::i;:::-;36813:33;;36868:66;36861:5;36858:77;36855:103;;36938:18;;:::i;:::-;36855:103;36985:1;36978:5;36974:13;36967:20;;36760:233;;;:::o;36999:194::-;37039:4;37059:20;37077:1;37059:20;:::i;:::-;37054:25;;37093:20;37111:1;37093:20;:::i;:::-;37088:25;;37137:1;37134;37130:9;37122:17;;37161:1;37155:4;37152:11;37149:37;;;37166:18;;:::i;:::-;37149:37;36999:194;;;;:::o;37199:180::-;37247:77;37244:1;37237:88;37344:4;37341:1;37334:15;37368:4;37365:1;37358:15;37385:114;37452:6;37486:5;37480:12;37470:22;;37385:114;;;:::o;37505:184::-;37604:11;37638:6;37633:3;37626:19;37678:4;37673:3;37669:14;37654:29;;37505:184;;;;:::o;37695:132::-;37762:4;37785:3;37777:11;;37815:4;37810:3;37806:14;37798:22;;37695:132;;;:::o;37833:108::-;37910:24;37928:5;37910:24;:::i;:::-;37905:3;37898:37;37833:108;;:::o;37947:179::-;38016:10;38037:46;38079:3;38071:6;38037:46;:::i;:::-;38115:4;38110:3;38106:14;38092:28;;37947:179;;;;:::o;38132:113::-;38202:4;38234;38229:3;38225:14;38217:22;;38132:113;;;:::o;38281:732::-;38400:3;38429:54;38477:5;38429:54;:::i;:::-;38499:86;38578:6;38573:3;38499:86;:::i;:::-;38492:93;;38609:56;38659:5;38609:56;:::i;:::-;38688:7;38719:1;38704:284;38729:6;38726:1;38723:13;38704:284;;;38805:6;38799:13;38832:63;38891:3;38876:13;38832:63;:::i;:::-;38825:70;;38918:60;38971:6;38918:60;:::i;:::-;38908:70;;38764:224;38751:1;38748;38744:9;38739:14;;38704:284;;;38708:14;39004:3;38997:10;;38405:608;;;38281:732;;;;:::o;39019:831::-;39282:4;39320:3;39309:9;39305:19;39297:27;;39334:71;39402:1;39391:9;39387:17;39378:6;39334:71;:::i;:::-;39415:80;39491:2;39480:9;39476:18;39467:6;39415:80;:::i;:::-;39542:9;39536:4;39532:20;39527:2;39516:9;39512:18;39505:48;39570:108;39673:4;39664:6;39570:108;:::i;:::-;39562:116;;39688:72;39756:2;39745:9;39741:18;39732:6;39688:72;:::i;:::-;39770:73;39838:3;39827:9;39823:19;39814:6;39770:73;:::i;:::-;39019:831;;;;;;;;:::o;39856:220::-;39996:34;39992:1;39984:6;39980:14;39973:58;40065:3;40060:2;40052:6;40048:15;40041:28;39856:220;:::o;40082:366::-;40224:3;40245:67;40309:2;40304:3;40245:67;:::i;:::-;40238:74;;40321:93;40410:3;40321:93;:::i;:::-;40439:2;40434:3;40430:12;40423:19;;40082:366;;;:::o;40454:419::-;40620:4;40658:2;40647:9;40643:18;40635:26;;40707:9;40701:4;40697:20;40693:1;40682:9;40678:17;40671:47;40735:131;40861:4;40735:131;:::i;:::-;40727:139;;40454:419;;;:::o;40879:176::-;40911:1;40928:20;40946:1;40928:20;:::i;:::-;40923:25;;40962:20;40980:1;40962:20;:::i;:::-;40957:25;;41001:1;40991:35;;41006:18;;:::i;:::-;40991:35;41047:1;41044;41040:9;41035:14;;40879:176;;;;:::o;41061:177::-;41201:29;41197:1;41189:6;41185:14;41178:53;41061:177;:::o;41244:366::-;41386:3;41407:67;41471:2;41466:3;41407:67;:::i;:::-;41400:74;;41483:93;41572:3;41483:93;:::i;:::-;41601:2;41596:3;41592:12;41585:19;;41244:366;;;:::o;41616:419::-;41782:4;41820:2;41809:9;41805:18;41797:26;;41869:9;41863:4;41859:20;41855:1;41844:9;41840:17;41833:47;41897:131;42023:4;41897:131;:::i;:::-;41889:139;;41616:419;;;:::o

Swarm Source

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