ETH Price: $2,741.38 (+13.17%)
 

Overview

Max Total Supply

420,690,000,000 ETHCAT

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 ETHCAT

Value
$0.00
0xc0e44e65e33327be2c2fba3d4158b2275ad29e41
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:
ETHCAT

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-23
*/

// SPDX-License-Identifier: MIT

/*

Telegram: https://t.me/ethcatentry
Twitter : https://x.com/theethereumcat
*/

pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

contract ETHCAT is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExile;
    mapping (address => bool) public marketPair;
    mapping (uint256 => uint256) private perBuyCount;
    address payable private _taxWallet;
    uint256 private firstBlock = 0;

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint256 private _reduceBuyTaxAt=23;

    uint256 private _reduceSellTaxAt=23;
    uint256 private _preventSwapBefore=23;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"ethereumcat";
    string private constant _symbol = unicode"ETHCAT";
    uint256 public _maxTxAmount =   10517250000 * 10**_decimals;
    uint256 public _maxWalletSize = 10517250000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public casellAllowed = 3;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caCatalyst = true;

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

    constructor () {

        _taxWallet = payable(0xAbFDC73A57Fe9D23d89EC9c054CEb5EcEDf406B8);
        _balances[_msgSender()] = _tTotal;
        isExile[owner()] = true;
        isExile[address(this)] = true;
        isExile[address(uniswapV2Pair)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

    function setMarketPair(address addr) public onlyOwner {
        marketPair[addr] = true;
    }

    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()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(100);

            if(block.number == firstBlock){
               require(perBuyCount[block.number] < 70, "Exceeds buys on the first block.");
               perBuyCount[block.number]++;
            }

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

            if (!marketPair[to] && ! isExile[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

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

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caCatalyst && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < casellAllowed, "CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && 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));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


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

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

    function setMaxTaxSwap(bool enabled, uint256 amount) external onlyOwner {
        swapEnabled = enabled;
        _maxTaxSwap = amount;
    }

    function setcasellAllowed(uint256 amount) external onlyOwner {
        casellAllowed = amount;
    }

    function setcaCatalyst(bool _status) external onlyOwner {
        caCatalyst = _status;
    }

    function reclaimETH() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function reclaimERC20tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

    function setFeeWallet(address newTaxWallet) external onlyOwner {
        _taxWallet = payable(newTaxWallet);
    }

    function isNotRestricted() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    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());
        marketPair[address(uniswapV2Pair)] = true;
        isExile[address(uniswapV2Pair)] = true;
        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;
        firstBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caCatalyst","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"casellAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNotRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"reclaimERC20tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reclaimETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setcaCatalyst","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcasellAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600755601460085560146009555f600a555f600b556017600c556017600d556017600e555f600f555f6010555f6011556009600a62000045919062000623565b640272e07fd062000057919062000673565b6012556009600a6200006a919062000623565b640272e07fd06200007c919062000673565b6013556009600a6200008f919062000623565b60016200009d919062000673565b6014556009600a620000b0919062000623565b63fac03320620000c1919062000673565b60155560036018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff02191690831515021790555034801562000123575f80fd5b505f620001356200046360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073abfdc73a57fe9d23d89ec9c054ceb5ecedf406b860065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000235919062000623565b6461f313f88062000247919062000673565b60015f6200025a6200046360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002ac6200046a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003d66200046360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000434919062000623565b6461f313f88062000446919062000673565b604051620004559190620006ce565b60405180910390a3620006e9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200051b57808604811115620004f357620004f262000491565b5b6001851615620005035780820291505b80810290506200051385620004be565b9450620004d3565b94509492505050565b5f8262000535576001905062000607565b8162000544575f905062000607565b81600181146200055d576002811462000568576200059e565b600191505062000607565b60ff8411156200057d576200057c62000491565b5b8360020a91508482111562000597576200059662000491565b5b5062000607565b5060208310610133831016604e8410600b8410161715620005d85782820a905083811115620005d257620005d162000491565b5b62000607565b620005e78484846001620004ca565b9250905081840481111562000601576200060062000491565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200062f826200060e565b91506200063c8362000617565b92506200066b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000524565b905092915050565b5f6200067f826200060e565b91506200068c836200060e565b92508282026200069c816200060e565b91508282048414831517620006b657620006b562000491565b5b5092915050565b620006c8816200060e565b82525050565b5f602082019050620006e35f830184620006bd565b92915050565b613de180620006f75f395ff3fe6080604052600436106101c5575f3560e01c80637d1db4a5116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e146105d8578063e68d0b0514610614578063f2fde38b1461063c578063f5b3c3bf14610664576101cc565b8063a9059cbb14610520578063bf474bed1461055c578063c4e2b61914610586578063d45cce65146105ae576101cc565b80638f9a55c0116100d05780638f9a55c01461047c57806390b60549146104a657806390d49b9d146104ce57806395d89b41146104f6576101cc565b80637d1db4a5146104125780638a8c523c1461043c5780638da5cb5b14610452576101cc565b806323b872dd1161016357806353bc13dc1161013d57806353bc13dc146103705780636e4636671461039857806370a08231146103c0578063715018a6146103fc576101cc565b806323b872dd146102e0578063313ce5671461031c57806349bd5a5e14610346576101cc565b80630f144a481161019f5780630f144a481461024c5780630faee56f1461026257806310c435aa1461028c57806318160ddd146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107d2565b6040516102079190612d08565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612db9565b61080f565b6040516102439190612e11565b60405180910390f35b348015610257575f80fd5b5061026061082c565b005b34801561026d575f80fd5b50610276610927565b6040516102839190612e39565b60405180910390f35b348015610297575f80fd5b506102a061092d565b6040516102ad9190612e39565b60405180910390f35b3480156102c1575f80fd5b506102ca610933565b6040516102d79190612e39565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190612e52565b610957565b6040516103139190612e11565b60405180910390f35b348015610327575f80fd5b50610330610a2b565b60405161033d9190612ebd565b60405180910390f35b348015610351575f80fd5b5061035a610a33565b6040516103679190612ee5565b60405180910390f35b34801561037b575f80fd5b5061039660048036038101906103919190612efe565b610a58565b005b3480156103a3575f80fd5b506103be60048036038101906103b99190612f29565b610b44565b005b3480156103cb575f80fd5b506103e660048036038101906103e19190612efe565b610be2565b6040516103f39190612e39565b60405180910390f35b348015610407575f80fd5b50610410610c28565b005b34801561041d575f80fd5b50610426610d76565b6040516104339190612e39565b60405180910390f35b348015610447575f80fd5b50610450610d7c565b005b34801561045d575f80fd5b50610466611392565b6040516104739190612ee5565b60405180910390f35b348015610487575f80fd5b506104906113b9565b60405161049d9190612e39565b60405180910390f35b3480156104b1575f80fd5b506104cc60048036038101906104c79190612f7e565b6113bf565b005b3480156104d9575f80fd5b506104f460048036038101906104ef9190612efe565b611470565b005b348015610501575f80fd5b5061050a611547565b6040516105179190612d08565b60405180910390f35b34801561052b575f80fd5b5061054660048036038101906105419190612db9565b611584565b6040516105539190612e11565b60405180910390f35b348015610567575f80fd5b506105706115a1565b60405161057d9190612e39565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a79190612db9565b6115a7565b005b3480156105b9575f80fd5b506105c26116dc565b6040516105cf9190612e11565b60405180910390f35b3480156105e3575f80fd5b506105fe60048036038101906105f99190612fa9565b6116ef565b60405161060b9190612e39565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190612fe7565b611771565b005b348015610647575f80fd5b50610662600480360381019061065d9190612efe565b61182a565b005b34801561066f575f80fd5b5061068a60048036038101906106859190612efe565b6119e7565b6040516106979190612e11565b60405180910390f35b6106a8611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b9061306f565b60405180910390fd5b6009600a61074291906131e9565b6461f313f8806107529190613233565b6012819055506009600a61076691906131e9565b6461f313f8806107769190613233565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107ab91906131e9565b6461f313f8806107bb9190613233565b6040516107c89190612e39565b60405180910390a1565b60606040518060400160405280600b81526020017f657468657265756d636174000000000000000000000000000000000000000000815250905090565b5f61082261081b611a04565b8484611a0b565b6001905092915050565b610834611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b79061306f565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610924573d5f803e3d5ffd5b50565b60155481565b60185481565b5f6009600a61094291906131e9565b6461f313f8806109529190613233565b905090565b5f610963848484611bce565b610a208461096f611a04565b610a1b85604051806060016040528060288152602001613d846028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109d2611a04565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276c9092919063ffffffff16565b611a0b565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a60611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae39061306f565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b4c611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf9061306f565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c30611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb39061306f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b610d84611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e079061306f565b60405180910390fd5b601760149054906101000a900460ff1615610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e57906132be565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610efd3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ee891906131e9565b6461f313f880610ef89190613233565b611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8b91906132f0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103591906132f0565b6040518363ffffffff1660e01b815260040161105292919061331b565b6020604051808303815f875af115801561106e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109291906132f0565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120530610be2565b5f8061120f611392565b426040518863ffffffff1660e01b815260040161123196959493929190613384565b60606040518083038185885af115801561124d573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061127291906133f7565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611312929190613447565b6020604051808303815f875af115801561132e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113529190613482565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6113c7611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a9061306f565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b611478611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb9061306f565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600681526020017f4554484341540000000000000000000000000000000000000000000000000000815250905090565b5f611597611590611a04565b8484611bce565b6001905092915050565b60145481565b6115af611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116329061306f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016116979291906134ff565b6020604051808303815f875af11580156116b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d79190613482565b505050565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611779611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc9061306f565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b611832611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b59061306f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613596565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613624565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade906136b2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e39565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3390613740565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906137ce565b60405180910390fd5b5f8111611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce39061385c565b60405180910390fd5b5f611cf5611392565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d635750611d33611392565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124bc57611da46064611d96600c54600f5411611d8357600854611d87565b600a545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90506007544303611e2a57604660055f4381526020019081526020015f205410611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa906138c4565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e24906138e2565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ecd575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f20575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fda57601254821115611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6190613973565b60405180910390fd5b60135482611f7785610be2565b611f819190613991565b1115611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb990613a0e565b60405180910390fd5b600f5f815480929190611fd4906138e2565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612078575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d6576013548261208a85610be2565b6120949190613991565b11156120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90613a0e565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561215857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561219c57612199606461218b600d54600f54116121785760095461217c565b600b545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561223a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561227257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227b575f90505b5f61228530610be2565b9050601960029054906101000a900460ff1680156122af575060195f9054906101000a900460ff16155b8015612301575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123195750601960019054906101000a900460ff165b8015612326575060145481115b80156123355750600e54600f54115b156123e95760115443111561234c575f6010819055505b60185460105410612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990613a76565b60405180910390fd5b6123af6123aa846123a58460155461288e565b61288e565b6128a6565b5f4790505f8111156123c5576123c447612b0f565b5b60105f8154809291906123d7906138e2565b919050555043601181905550506124ba565b60195f9054906101000a900460ff1615801561244b575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124635750601960019054906101000a900460ff165b8015612470575060145481115b801561247f5750600e54600f54115b156124b9576124a161249c846124978460155461288e565b61288e565b6128a6565b5f4790505f8111156124b7576124b647612b0f565b5b505b5b505b5f8111156125bb576125148160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125b29190612e39565b60405180910390a35b61260b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126ae6126628284612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127518486612bd490919063ffffffff16565b60405161275e9190612e39565b60405180910390a350505050565b5f8383111582906127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa9190612d08565b60405180910390fd5b505f83856127c19190613a94565b9050809150509392505050565b5f8083036127de575f905061283f565b5f82846127eb9190613233565b90508284826127fa9190613af4565b1461283a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283190613b94565b60405180910390fd5b809150505b92915050565b5f61288683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c1d565b905092915050565b5f81831161289c578261289e565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156128dc576128db613bb2565b5b60405190808252806020026020018201604052801561290a5781602001602082028036833780820191505090505b50905030815f8151811061292157612920613bdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e991906132f0565b816001815181106129fd576129fc613bdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a633060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ac5959493929190613cc3565b5f604051808303815f87803b158015612adc575f80fd5b505af1158015612aee573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b73573d5f803e3d5ffd5b5050565b5f808284612b859190613991565b905083811015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc190613d65565b60405180910390fd5b8091505092915050565b5f612c1583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061276c565b905092915050565b5f8083118290612c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5a9190612d08565b60405180910390fd5b505f8385612c719190613af4565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612cb5578082015181840152602081019050612c9a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612cda82612c7e565b612ce48185612c88565b9350612cf4818560208601612c98565b612cfd81612cc0565b840191505092915050565b5f6020820190508181035f830152612d208184612cd0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d5582612d2c565b9050919050565b612d6581612d4b565b8114612d6f575f80fd5b50565b5f81359050612d8081612d5c565b92915050565b5f819050919050565b612d9881612d86565b8114612da2575f80fd5b50565b5f81359050612db381612d8f565b92915050565b5f8060408385031215612dcf57612dce612d28565b5b5f612ddc85828601612d72565b9250506020612ded85828601612da5565b9150509250929050565b5f8115159050919050565b612e0b81612df7565b82525050565b5f602082019050612e245f830184612e02565b92915050565b612e3381612d86565b82525050565b5f602082019050612e4c5f830184612e2a565b92915050565b5f805f60608486031215612e6957612e68612d28565b5b5f612e7686828701612d72565b9350506020612e8786828701612d72565b9250506040612e9886828701612da5565b9150509250925092565b5f60ff82169050919050565b612eb781612ea2565b82525050565b5f602082019050612ed05f830184612eae565b92915050565b612edf81612d4b565b82525050565b5f602082019050612ef85f830184612ed6565b92915050565b5f60208284031215612f1357612f12612d28565b5b5f612f2084828501612d72565b91505092915050565b5f60208284031215612f3e57612f3d612d28565b5b5f612f4b84828501612da5565b91505092915050565b612f5d81612df7565b8114612f67575f80fd5b50565b5f81359050612f7881612f54565b92915050565b5f60208284031215612f9357612f92612d28565b5b5f612fa084828501612f6a565b91505092915050565b5f8060408385031215612fbf57612fbe612d28565b5b5f612fcc85828601612d72565b9250506020612fdd85828601612d72565b9150509250929050565b5f8060408385031215612ffd57612ffc612d28565b5b5f61300a85828601612f6a565b925050602061301b85828601612da5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613059602083612c88565b915061306482613025565b602082019050919050565b5f6020820190508181035f8301526130868161304d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561310f578086048111156130eb576130ea61308d565b5b60018516156130fa5780820291505b8081029050613108856130ba565b94506130cf565b94509492505050565b5f8261312757600190506131e2565b81613134575f90506131e2565b816001811461314a576002811461315457613183565b60019150506131e2565b60ff8411156131665761316561308d565b5b8360020a91508482111561317d5761317c61308d565b5b506131e2565b5060208310610133831016604e8410600b84101617156131b85782820a9050838111156131b3576131b261308d565b5b6131e2565b6131c584848460016130c6565b925090508184048111156131dc576131db61308d565b5b81810290505b9392505050565b5f6131f382612d86565b91506131fe83612ea2565b925061322b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613118565b905092915050565b5f61323d82612d86565b915061324883612d86565b925082820261325681612d86565b9150828204841483151761326d5761326c61308d565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132a8601783612c88565b91506132b382613274565b602082019050919050565b5f6020820190508181035f8301526132d58161329c565b9050919050565b5f815190506132ea81612d5c565b92915050565b5f6020828403121561330557613304612d28565b5b5f613312848285016132dc565b91505092915050565b5f60408201905061332e5f830185612ed6565b61333b6020830184612ed6565b9392505050565b5f819050919050565b5f819050919050565b5f61336e61336961336484613342565b61334b565b612d86565b9050919050565b61337e81613354565b82525050565b5f60c0820190506133975f830189612ed6565b6133a46020830188612e2a565b6133b16040830187613375565b6133be6060830186613375565b6133cb6080830185612ed6565b6133d860a0830184612e2a565b979650505050505050565b5f815190506133f181612d8f565b92915050565b5f805f6060848603121561340e5761340d612d28565b5b5f61341b868287016133e3565b935050602061342c868287016133e3565b925050604061343d868287016133e3565b9150509250925092565b5f60408201905061345a5f830185612ed6565b6134676020830184612e2a565b9392505050565b5f8151905061347c81612f54565b92915050565b5f6020828403121561349757613496612d28565b5b5f6134a48482850161346e565b91505092915050565b5f6134c76134c26134bd84612d2c565b61334b565b612d2c565b9050919050565b5f6134d8826134ad565b9050919050565b5f6134e9826134ce565b9050919050565b6134f9816134df565b82525050565b5f6040820190506135125f8301856134f0565b61351f6020830184612e2a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613580602683612c88565b915061358b82613526565b604082019050919050565b5f6020820190508181035f8301526135ad81613574565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61360e602483612c88565b9150613619826135b4565b604082019050919050565b5f6020820190508181035f83015261363b81613602565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61369c602283612c88565b91506136a782613642565b604082019050919050565b5f6020820190508181035f8301526136c981613690565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61372a602583612c88565b9150613735826136d0565b604082019050919050565b5f6020820190508181035f8301526137578161371e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6137b8602383612c88565b91506137c38261375e565b604082019050919050565b5f6020820190508181035f8301526137e5816137ac565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613846602983612c88565b9150613851826137ec565b604082019050919050565b5f6020820190508181035f8301526138738161383a565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f6138ae602083612c88565b91506138b98261387a565b602082019050919050565b5f6020820190508181035f8301526138db816138a2565b9050919050565b5f6138ec82612d86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361391e5761391d61308d565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61395d601983612c88565b915061396882613929565b602082019050919050565b5f6020820190508181035f83015261398a81613951565b9050919050565b5f61399b82612d86565b91506139a683612d86565b92508282019050808211156139be576139bd61308d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6139f8601a83612c88565b9150613a03826139c4565b602082019050919050565b5f6020820190508181035f830152613a25816139ec565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613a60600f83612c88565b9150613a6b82613a2c565b602082019050919050565b5f6020820190508181035f830152613a8d81613a54565b9050919050565b5f613a9e82612d86565b9150613aa983612d86565b9250828203905081811115613ac157613ac061308d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613afe82612d86565b9150613b0983612d86565b925082613b1957613b18613ac7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b7e602183612c88565b9150613b8982613b24565b604082019050919050565b5f6020820190508181035f830152613bab81613b72565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c3e81612d4b565b82525050565b5f613c4f8383613c35565b60208301905092915050565b5f602082019050919050565b5f613c7182613c0c565b613c7b8185613c16565b9350613c8683613c26565b805f5b83811015613cb6578151613c9d8882613c44565b9750613ca883613c5b565b925050600181019050613c89565b5085935050505092915050565b5f60a082019050613cd65f830188612e2a565b613ce36020830187613375565b8181036040830152613cf58186613c67565b9050613d046060830185612ed6565b613d116080830184612e2a565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d4f601b83612c88565b9150613d5a82613d1b565b602082019050919050565b5f6020820190508181035f830152613d7c81613d43565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122054c701bb8ea3db002d46cd314fb323fa08fbafe3542ce84c382ad7e7f21d6ccc64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c80637d1db4a5116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e146105d8578063e68d0b0514610614578063f2fde38b1461063c578063f5b3c3bf14610664576101cc565b8063a9059cbb14610520578063bf474bed1461055c578063c4e2b61914610586578063d45cce65146105ae576101cc565b80638f9a55c0116100d05780638f9a55c01461047c57806390b60549146104a657806390d49b9d146104ce57806395d89b41146104f6576101cc565b80637d1db4a5146104125780638a8c523c1461043c5780638da5cb5b14610452576101cc565b806323b872dd1161016357806353bc13dc1161013d57806353bc13dc146103705780636e4636671461039857806370a08231146103c0578063715018a6146103fc576101cc565b806323b872dd146102e0578063313ce5671461031c57806349bd5a5e14610346576101cc565b80630f144a481161019f5780630f144a481461024c5780630faee56f1461026257806310c435aa1461028c57806318160ddd146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107d2565b6040516102079190612d08565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612db9565b61080f565b6040516102439190612e11565b60405180910390f35b348015610257575f80fd5b5061026061082c565b005b34801561026d575f80fd5b50610276610927565b6040516102839190612e39565b60405180910390f35b348015610297575f80fd5b506102a061092d565b6040516102ad9190612e39565b60405180910390f35b3480156102c1575f80fd5b506102ca610933565b6040516102d79190612e39565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190612e52565b610957565b6040516103139190612e11565b60405180910390f35b348015610327575f80fd5b50610330610a2b565b60405161033d9190612ebd565b60405180910390f35b348015610351575f80fd5b5061035a610a33565b6040516103679190612ee5565b60405180910390f35b34801561037b575f80fd5b5061039660048036038101906103919190612efe565b610a58565b005b3480156103a3575f80fd5b506103be60048036038101906103b99190612f29565b610b44565b005b3480156103cb575f80fd5b506103e660048036038101906103e19190612efe565b610be2565b6040516103f39190612e39565b60405180910390f35b348015610407575f80fd5b50610410610c28565b005b34801561041d575f80fd5b50610426610d76565b6040516104339190612e39565b60405180910390f35b348015610447575f80fd5b50610450610d7c565b005b34801561045d575f80fd5b50610466611392565b6040516104739190612ee5565b60405180910390f35b348015610487575f80fd5b506104906113b9565b60405161049d9190612e39565b60405180910390f35b3480156104b1575f80fd5b506104cc60048036038101906104c79190612f7e565b6113bf565b005b3480156104d9575f80fd5b506104f460048036038101906104ef9190612efe565b611470565b005b348015610501575f80fd5b5061050a611547565b6040516105179190612d08565b60405180910390f35b34801561052b575f80fd5b5061054660048036038101906105419190612db9565b611584565b6040516105539190612e11565b60405180910390f35b348015610567575f80fd5b506105706115a1565b60405161057d9190612e39565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a79190612db9565b6115a7565b005b3480156105b9575f80fd5b506105c26116dc565b6040516105cf9190612e11565b60405180910390f35b3480156105e3575f80fd5b506105fe60048036038101906105f99190612fa9565b6116ef565b60405161060b9190612e39565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190612fe7565b611771565b005b348015610647575f80fd5b50610662600480360381019061065d9190612efe565b61182a565b005b34801561066f575f80fd5b5061068a60048036038101906106859190612efe565b6119e7565b6040516106979190612e11565b60405180910390f35b6106a8611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b9061306f565b60405180910390fd5b6009600a61074291906131e9565b6461f313f8806107529190613233565b6012819055506009600a61076691906131e9565b6461f313f8806107769190613233565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107ab91906131e9565b6461f313f8806107bb9190613233565b6040516107c89190612e39565b60405180910390a1565b60606040518060400160405280600b81526020017f657468657265756d636174000000000000000000000000000000000000000000815250905090565b5f61082261081b611a04565b8484611a0b565b6001905092915050565b610834611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b79061306f565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610924573d5f803e3d5ffd5b50565b60155481565b60185481565b5f6009600a61094291906131e9565b6461f313f8806109529190613233565b905090565b5f610963848484611bce565b610a208461096f611a04565b610a1b85604051806060016040528060288152602001613d846028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109d2611a04565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276c9092919063ffffffff16565b611a0b565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a60611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae39061306f565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b4c611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf9061306f565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c30611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb39061306f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b610d84611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e079061306f565b60405180910390fd5b601760149054906101000a900460ff1615610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e57906132be565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610efd3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ee891906131e9565b6461f313f880610ef89190613233565b611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8b91906132f0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103591906132f0565b6040518363ffffffff1660e01b815260040161105292919061331b565b6020604051808303815f875af115801561106e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109291906132f0565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120530610be2565b5f8061120f611392565b426040518863ffffffff1660e01b815260040161123196959493929190613384565b60606040518083038185885af115801561124d573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061127291906133f7565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611312929190613447565b6020604051808303815f875af115801561132e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113529190613482565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6113c7611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a9061306f565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b611478611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb9061306f565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600681526020017f4554484341540000000000000000000000000000000000000000000000000000815250905090565b5f611597611590611a04565b8484611bce565b6001905092915050565b60145481565b6115af611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116329061306f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016116979291906134ff565b6020604051808303815f875af11580156116b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d79190613482565b505050565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611779611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc9061306f565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b611832611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b59061306f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613596565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613624565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade906136b2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e39565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3390613740565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906137ce565b60405180910390fd5b5f8111611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce39061385c565b60405180910390fd5b5f611cf5611392565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d635750611d33611392565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124bc57611da46064611d96600c54600f5411611d8357600854611d87565b600a545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90506007544303611e2a57604660055f4381526020019081526020015f205410611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa906138c4565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e24906138e2565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ecd575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f20575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fda57601254821115611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6190613973565b60405180910390fd5b60135482611f7785610be2565b611f819190613991565b1115611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb990613a0e565b60405180910390fd5b600f5f815480929190611fd4906138e2565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612078575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d6576013548261208a85610be2565b6120949190613991565b11156120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90613a0e565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561215857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561219c57612199606461218b600d54600f54116121785760095461217c565b600b545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561223a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561227257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227b575f90505b5f61228530610be2565b9050601960029054906101000a900460ff1680156122af575060195f9054906101000a900460ff16155b8015612301575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123195750601960019054906101000a900460ff165b8015612326575060145481115b80156123355750600e54600f54115b156123e95760115443111561234c575f6010819055505b60185460105410612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990613a76565b60405180910390fd5b6123af6123aa846123a58460155461288e565b61288e565b6128a6565b5f4790505f8111156123c5576123c447612b0f565b5b60105f8154809291906123d7906138e2565b919050555043601181905550506124ba565b60195f9054906101000a900460ff1615801561244b575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124635750601960019054906101000a900460ff165b8015612470575060145481115b801561247f5750600e54600f54115b156124b9576124a161249c846124978460155461288e565b61288e565b6128a6565b5f4790505f8111156124b7576124b647612b0f565b5b505b5b505b5f8111156125bb576125148160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125b29190612e39565b60405180910390a35b61260b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126ae6126628284612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127518486612bd490919063ffffffff16565b60405161275e9190612e39565b60405180910390a350505050565b5f8383111582906127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa9190612d08565b60405180910390fd5b505f83856127c19190613a94565b9050809150509392505050565b5f8083036127de575f905061283f565b5f82846127eb9190613233565b90508284826127fa9190613af4565b1461283a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283190613b94565b60405180910390fd5b809150505b92915050565b5f61288683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c1d565b905092915050565b5f81831161289c578261289e565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156128dc576128db613bb2565b5b60405190808252806020026020018201604052801561290a5781602001602082028036833780820191505090505b50905030815f8151811061292157612920613bdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e991906132f0565b816001815181106129fd576129fc613bdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a633060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ac5959493929190613cc3565b5f604051808303815f87803b158015612adc575f80fd5b505af1158015612aee573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b73573d5f803e3d5ffd5b5050565b5f808284612b859190613991565b905083811015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc190613d65565b60405180910390fd5b8091505092915050565b5f612c1583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061276c565b905092915050565b5f8083118290612c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5a9190612d08565b60405180910390fd5b505f8385612c719190613af4565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612cb5578082015181840152602081019050612c9a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612cda82612c7e565b612ce48185612c88565b9350612cf4818560208601612c98565b612cfd81612cc0565b840191505092915050565b5f6020820190508181035f830152612d208184612cd0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d5582612d2c565b9050919050565b612d6581612d4b565b8114612d6f575f80fd5b50565b5f81359050612d8081612d5c565b92915050565b5f819050919050565b612d9881612d86565b8114612da2575f80fd5b50565b5f81359050612db381612d8f565b92915050565b5f8060408385031215612dcf57612dce612d28565b5b5f612ddc85828601612d72565b9250506020612ded85828601612da5565b9150509250929050565b5f8115159050919050565b612e0b81612df7565b82525050565b5f602082019050612e245f830184612e02565b92915050565b612e3381612d86565b82525050565b5f602082019050612e4c5f830184612e2a565b92915050565b5f805f60608486031215612e6957612e68612d28565b5b5f612e7686828701612d72565b9350506020612e8786828701612d72565b9250506040612e9886828701612da5565b9150509250925092565b5f60ff82169050919050565b612eb781612ea2565b82525050565b5f602082019050612ed05f830184612eae565b92915050565b612edf81612d4b565b82525050565b5f602082019050612ef85f830184612ed6565b92915050565b5f60208284031215612f1357612f12612d28565b5b5f612f2084828501612d72565b91505092915050565b5f60208284031215612f3e57612f3d612d28565b5b5f612f4b84828501612da5565b91505092915050565b612f5d81612df7565b8114612f67575f80fd5b50565b5f81359050612f7881612f54565b92915050565b5f60208284031215612f9357612f92612d28565b5b5f612fa084828501612f6a565b91505092915050565b5f8060408385031215612fbf57612fbe612d28565b5b5f612fcc85828601612d72565b9250506020612fdd85828601612d72565b9150509250929050565b5f8060408385031215612ffd57612ffc612d28565b5b5f61300a85828601612f6a565b925050602061301b85828601612da5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613059602083612c88565b915061306482613025565b602082019050919050565b5f6020820190508181035f8301526130868161304d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561310f578086048111156130eb576130ea61308d565b5b60018516156130fa5780820291505b8081029050613108856130ba565b94506130cf565b94509492505050565b5f8261312757600190506131e2565b81613134575f90506131e2565b816001811461314a576002811461315457613183565b60019150506131e2565b60ff8411156131665761316561308d565b5b8360020a91508482111561317d5761317c61308d565b5b506131e2565b5060208310610133831016604e8410600b84101617156131b85782820a9050838111156131b3576131b261308d565b5b6131e2565b6131c584848460016130c6565b925090508184048111156131dc576131db61308d565b5b81810290505b9392505050565b5f6131f382612d86565b91506131fe83612ea2565b925061322b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613118565b905092915050565b5f61323d82612d86565b915061324883612d86565b925082820261325681612d86565b9150828204841483151761326d5761326c61308d565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132a8601783612c88565b91506132b382613274565b602082019050919050565b5f6020820190508181035f8301526132d58161329c565b9050919050565b5f815190506132ea81612d5c565b92915050565b5f6020828403121561330557613304612d28565b5b5f613312848285016132dc565b91505092915050565b5f60408201905061332e5f830185612ed6565b61333b6020830184612ed6565b9392505050565b5f819050919050565b5f819050919050565b5f61336e61336961336484613342565b61334b565b612d86565b9050919050565b61337e81613354565b82525050565b5f60c0820190506133975f830189612ed6565b6133a46020830188612e2a565b6133b16040830187613375565b6133be6060830186613375565b6133cb6080830185612ed6565b6133d860a0830184612e2a565b979650505050505050565b5f815190506133f181612d8f565b92915050565b5f805f6060848603121561340e5761340d612d28565b5b5f61341b868287016133e3565b935050602061342c868287016133e3565b925050604061343d868287016133e3565b9150509250925092565b5f60408201905061345a5f830185612ed6565b6134676020830184612e2a565b9392505050565b5f8151905061347c81612f54565b92915050565b5f6020828403121561349757613496612d28565b5b5f6134a48482850161346e565b91505092915050565b5f6134c76134c26134bd84612d2c565b61334b565b612d2c565b9050919050565b5f6134d8826134ad565b9050919050565b5f6134e9826134ce565b9050919050565b6134f9816134df565b82525050565b5f6040820190506135125f8301856134f0565b61351f6020830184612e2a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613580602683612c88565b915061358b82613526565b604082019050919050565b5f6020820190508181035f8301526135ad81613574565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61360e602483612c88565b9150613619826135b4565b604082019050919050565b5f6020820190508181035f83015261363b81613602565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61369c602283612c88565b91506136a782613642565b604082019050919050565b5f6020820190508181035f8301526136c981613690565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61372a602583612c88565b9150613735826136d0565b604082019050919050565b5f6020820190508181035f8301526137578161371e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6137b8602383612c88565b91506137c38261375e565b604082019050919050565b5f6020820190508181035f8301526137e5816137ac565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613846602983612c88565b9150613851826137ec565b604082019050919050565b5f6020820190508181035f8301526138738161383a565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f6138ae602083612c88565b91506138b98261387a565b602082019050919050565b5f6020820190508181035f8301526138db816138a2565b9050919050565b5f6138ec82612d86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361391e5761391d61308d565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61395d601983612c88565b915061396882613929565b602082019050919050565b5f6020820190508181035f83015261398a81613951565b9050919050565b5f61399b82612d86565b91506139a683612d86565b92508282019050808211156139be576139bd61308d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6139f8601a83612c88565b9150613a03826139c4565b602082019050919050565b5f6020820190508181035f830152613a25816139ec565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613a60600f83612c88565b9150613a6b82613a2c565b602082019050919050565b5f6020820190508181035f830152613a8d81613a54565b9050919050565b5f613a9e82612d86565b9150613aa983612d86565b9250828203905081811115613ac157613ac061308d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613afe82612d86565b9150613b0983612d86565b925082613b1957613b18613ac7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b7e602183612c88565b9150613b8982613b24565b604082019050919050565b5f6020820190508181035f830152613bab81613b72565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c3e81612d4b565b82525050565b5f613c4f8383613c35565b60208301905092915050565b5f602082019050919050565b5f613c7182613c0c565b613c7b8185613c16565b9350613c8683613c26565b805f5b83811015613cb6578151613c9d8882613c44565b9750613ca883613c5b565b925050600181019050613c89565b5085935050505092915050565b5f60a082019050613cd65f830188612e2a565b613ce36020830187613375565b8181036040830152613cf58186613c67565b9050613d046060830185612ed6565b613d116080830184612e2a565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d4f601b83612c88565b9150613d5a82613d1b565b602082019050919050565b5f6020820190508181035f830152613d7c81613d43565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122054c701bb8ea3db002d46cd314fb323fa08fbafe3542ce84c382ad7e7f21d6ccc64736f6c63430008170033

Deployed Bytecode Sourcemap

3811:9394:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12085:162;;;;;;;;;;;;;:::i;:::-;;5894:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6727:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11686:111;;;;;;;;;;;;;:::i;:::-;;5074:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5252:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6171:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6896:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6080:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5186:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7560:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11473:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6274:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2642:148;;;;;;;;;;;;;:::i;:::-;;4884:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12355:810;;;;;;;;;;;;;:::i;:::-;;2428:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4950:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11583:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11961:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5985:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6401:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5016:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11805:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5364:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6576:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2798:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4072:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12085:162;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4691:1:::1;4749:2;:13;;;;:::i;:::-;4734:12;:28;;;;:::i;:::-;12141:12;:22;;;;4691:1;4749:2;:13;;;;:::i;:::-;4734:12;:28;;;;:::i;:::-;12174:14;:22;;;;12212:27;4691:1;4749:2;:13;;;;:::i;:::-;4734:12;:28;;;;:::i;:::-;12212:27;;;;;;:::i;:::-;;;;;;;;12085:162::o:0;5894:83::-;5931:13;5964:5;;;;;;;;;;;;;;;;;5957:12;;5894:83;:::o;6727:161::-;6802:4;6819:39;6828:12;:10;:12::i;:::-;6842:7;6851:6;6819:8;:39::i;:::-;6876:4;6869:11;;6727:161;;;;:::o;11686:111::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11746:10:::1;;;;;;;;;;;11738:28;;:51;11767:21;11738:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11686:111::o:0;5074:54::-;;;;:::o;5252:32::-;;;;:::o;6171:95::-;6224:7;4691:1;4749:2;:13;;;;:::i;:::-;4734:12;:28;;;;:::i;:::-;6244:14;;6171:95;:::o;6896:313::-;6994:4;7011:36;7021:6;7029:9;7040:6;7011:9;:36::i;:::-;7058:121;7067:6;7075:12;:10;:12::i;:::-;7089:89;7127:6;7089:89;;;;;;;;;;;;;;;;;:11;:19;7101:6;7089:19;;;;;;;;;;;;;;;:33;7109:12;:10;:12::i;:::-;7089:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7058:8;:121::i;:::-;7197:4;7190:11;;6896:313;;;;;:::o;6080:83::-;6121:5;4691:1;6139:16;;6080:83;:::o;5186:28::-;;;;;;;;;;;;;:::o;7560:96::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7644:4:::1;7625:10;:16;7636:4;7625:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;7560:96:::0;:::o;11473:102::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11561:6:::1;11545:13;:22;;;;11473:102:::0;:::o;6274:119::-;6340:7;6367:9;:18;6377:7;6367:18;;;;;;;;;;;;;;;;6360:25;;6274:119;;;:::o;2642:148::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2749:1:::1;2712:40;;2733:6;::::0;::::1;;;;;;;;2712:40;;;;;;;;;;;;2780:1;2763:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2642:148::o:0;4884:59::-;;;;:::o;12355:810::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12421:11:::1;;;;;;;;;;;12420:12;12412:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12507:42;12470:15;;:80;;;;;;;;;;;;;;;;;;12561:58;12578:4;12593:15;;;;;;;;;;;4691:1;4749:2;:13;;;;:::i;:::-;4734:12;:28;;;;:::i;:::-;12561:8;:58::i;:::-;12664:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12646:55;;;12710:4;12717:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12646:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12630:13;;:110;;;;;;;;;;;;;;;;;;12788:4;12751:10;:34;12770:13;;;;;;;;;;;12751:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12837:4;12803:7;:31;12819:13;;;;;;;;;;;12803:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12852:15;;;;;;;;;;;:31;;;12891:21;12922:4;12928:24;12946:4;12928:9;:24::i;:::-;12953:1;12955::::0;12957:7:::1;:5;:7::i;:::-;12965:15;12852:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12999:13;;;;;;;;;;;12992:29;;;13030:15;;;;;;;;;;;13048:14;12992:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13088:4;13074:11;;:18;;;;;;;;;;;;;;;;;;13117:4;13103:11;;:18;;;;;;;;;;;;;;;;;;13145:12;13132:10;:25;;;;12355:810::o:0;2428:79::-;2466:7;2493:6;;;;;;;;;;;2486:13;;2428:79;:::o;4950:59::-;;;;:::o;11583:95::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11663:7:::1;11650:10;;:20;;;;;;;;;;;;;;;;;;11583:95:::0;:::o;11961:116::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12056:12:::1;12035:10;;:34;;;;;;;;;;;;;;;;;;11961:116:::0;:::o;5985:87::-;6024:13;6057:7;;;;;;;;;;;;;;;;;6050:14;;5985:87;:::o;6401:167::-;6479:4;6496:42;6506:12;:10;:12::i;:::-;6520:9;6531:6;6496:9;:42::i;:::-;6556:4;6549:11;;6401:167;;;;:::o;5016:51::-;;;;:::o;11805:148::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11904:10:::1;11897:27;;;11925:10;;;;;;;;;;;11937:7;11897:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11805:148:::0;;:::o;5364:29::-;;;;;;;;;;;;;:::o;6576:143::-;6657:7;6684:11;:18;6696:5;6684:18;;;;;;;;;;;;;;;:27;6703:7;6684:27;;;;;;;;;;;;;;;;6677:34;;6576:143;;;;:::o;11322:::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11419:7:::1;11405:11;;:21;;;;;;;;;;;;;;;;;;11451:6;11437:11;:20;;;;11322:143:::0;;:::o;2798:244::-;2565:12;:10;:12::i;:::-;2555:22;;:6;;;;;;;;;;:22;;;2547:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2907:1:::1;2887:22;;:8;:22;;::::0;2879:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2997:8;2968:38;;2989:6;::::0;::::1;;;;;;;;2968:38;;;;;;;;;;;;3026:8;3017:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2798:244:::0;:::o;4072:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;183:98::-;236:7;263:10;256:17;;183:98;:::o;7217:335::-;7327:1;7310:19;;:5;:19;;;7302:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7408:1;7389:21;;:7;:21;;;7381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7490:6;7460:11;:18;7472:5;7460:18;;;;;;;;;;;;;;;:27;7479:7;7460:27;;;;;;;;;;;;;;;:36;;;;7528:7;7512:32;;7521:5;7512:32;;;7537:6;7512:32;;;;;;:::i;:::-;;;;;;;;7217:335;;;:::o;7664:3051::-;7768:1;7752:18;;:4;:18;;;7744:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7845:1;7831:16;;:2;:16;;;7823:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7915:1;7906:6;:10;7898:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7973:17;8017:7;:5;:7::i;:::-;8009:15;;:4;:15;;;;:32;;;;;8034:7;:5;:7::i;:::-;8028:13;;:2;:13;;;;8009:32;8005:2354;;;8070:79;8145:3;8070:70;8093:15;;8082:9;;:26;8081:58;;8125:14;;8081:58;;;8111:12;;8081:58;8070:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8058:91;;8185:10;;8169:12;:26;8166:184;;8250:2;8222:11;:25;8234:12;8222:25;;;;;;;;;;;;:30;8214:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;8307:11;:25;8319:12;8307:25;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;8166:184;8370:10;:16;8381:4;8370:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8404:15;;;;;;;;;;;8390:30;;:2;:30;;;;8370:50;:67;;;;;8426:7;:11;8434:2;8426:11;;;;;;;;;;;;;;;;;;;;;;;;;8424:13;8370:67;8366:297;;;8477:12;;8467:6;:22;;8459:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8572:14;;8562:6;8546:13;8556:2;8546:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8538:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8636:9;;:11;;;;;;;;;:::i;:::-;;;;;;8366:297;8684:10;:14;8695:2;8684:14;;;;;;;;;;;;;;;;;;;;;;;;;8683:15;:32;;;;;8704:7;:11;8712:2;8704:11;;;;;;;;;;;;;;;;;;;;;;;;;8702:13;8683:32;8679:152;;;8770:14;;8760:6;8744:13;8754:2;8744:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8736:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8679:152;8850:10;:14;8861:2;8850:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;8883:4;8868:20;;:4;:20;;;;8850:38;8847:172;;;8921:82;8999:3;8921:73;8944:16;;8933:9;;:27;8932:61;;8978:15;;8932:61;;;8963:13;;8932:61;8921:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8909:94;;8847:172;9033:10;:16;9044:4;9033:16;;;;;;;;;;;;;;;;;;;;;;;;;9032:17;:36;;;;;9054:10;:14;9065:2;9054:14;;;;;;;;;;;;;;;;;;;;;;;;;9053:15;9032:36;:60;;;;;9087:4;9072:20;;:4;:20;;;;9032:60;9028:115;;;9126:1;9114:13;;9028:115;9159:28;9190:24;9208:4;9190:9;:24::i;:::-;9159:55;;9233:10;;;;;;;;;;;:21;;;;;9248:6;;;;;;;;;;;9247:7;9233:21;:39;;;;;9258:10;:14;9269:2;9258:14;;;;;;;;;;;;;;;;;;;;;;;;;9233:39;:54;;;;;9276:11;;;;;;;;;;;9233:54;:96;;;;;9312:17;;9291:20;:38;9233:96;:128;;;;;9343:18;;9333:9;;:28;9233:128;9229:1119;;;9401:13;;9386:12;:28;9382:90;;;9451:1;9439:9;:13;;;;9382:90;9510:13;;9498:9;;:25;9490:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9562:67;9579:49;9583:6;9590:37;9594:20;9615:11;;9590:3;:37::i;:::-;9579:3;:49::i;:::-;9562:16;:67::i;:::-;9648:26;9677:21;9648:50;;9741:1;9720:18;:22;9717:105;;;9767:35;9780:21;9767:12;:35::i;:::-;9717:105;9840:9;;:11;;;;;;;;;:::i;:::-;;;;;;9886:12;9870:13;:28;;;;9363:551;9229:1119;;;9939:6;;;;;;;;;;;9938:7;:25;;;;;9949:10;:14;9960:2;9949:14;;;;;;;;;;;;;;;;;;;;;;;;;9938:25;:40;;;;;9967:11;;;;;;;;;;;9938:40;:82;;;;;10003:17;;9982:20;:38;9938:82;:114;;;;;10034:18;;10024:9;;:28;9938:114;9935:413;;;10073:67;10090:49;10094:6;10101:37;10105:20;10126:11;;10101:3;:37::i;:::-;10090:3;:49::i;:::-;10073:16;:67::i;:::-;10159:26;10188:21;10159:50;;10252:1;10231:18;:22;10228:105;;;10278:35;10291:21;10278:12;:35::i;:::-;10228:105;10054:294;9935:413;9229:1119;8043:2316;8005:2354;10384:1;10374:9;:11;10371:161;;;10424:39;10453:9;10424;:24;10442:4;10424:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10399:9;:24;10417:4;10399:24;;;;;;;;;;;;;;;:64;;;;10504:4;10481:39;;10490:4;10481:39;;;10510:9;10481:39;;;;;;:::i;:::-;;;;;;;;10371:161;10558:27;10578:6;10558:9;:15;10568:4;10558:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10542:9;:15;10552:4;10542:15;;;;;;;;;;;;;;;:43;;;;10610:40;10628:21;10639:9;10628:6;:10;;:21;;;;:::i;:::-;10610:9;:13;10620:2;10610:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10596:9;:13;10606:2;10596:13;;;;;;;;;;;;;;;:54;;;;10681:2;10666:41;;10675:4;10666:41;;;10685:21;10696:9;10685:6;:10;;:21;;;;:::i;:::-;10666:41;;;;;;:::i;:::-;;;;;;;;7733:2982;7664:3051;;;:::o;1320:190::-;1406:7;1439:1;1434;:6;;1442:12;1426:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1466:9;1482:1;1478;:5;;;;:::i;:::-;1466:17;;1501:1;1494:8;;;1320:190;;;;;:::o;1518:246::-;1576:7;1605:1;1600;:6;1596:47;;1630:1;1623:8;;;;1596:47;1653:9;1669:1;1665;:5;;;;:::i;:::-;1653:17;;1698:1;1693;1689;:5;;;;:::i;:::-;:10;1681:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1755:1;1748:8;;;1518:246;;;;;:::o;1772:132::-;1830:7;1857:39;1861:1;1864;1857:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1850:46;;1772:132;;;;:::o;10725:98::-;10782:7;10809:1;10807;:3;10806:9;;10814:1;10806:9;;;10812:1;10806:9;10799:16;;10725:98;;;;:::o;10831:483::-;5493:4;5484:6;;:13;;;;;;;;;;;;;;;;;;10909:21:::1;10947:1;10933:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10909:40;;10978:4;10960;10965:1;10960:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11004:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10994:4;10999:1;10994:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11037:62;11054:4;11069:15;;;;;;;;;;;11087:11;11037:8;:62::i;:::-;11110:15;;;;;;;;;;;:66;;;11191:11;11217:1;11233:4;11260;11280:15;11110:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10898:416;5529:5:::0;5520:6;;:14;;;;;;;;;;;;;;;;;;10831:483;:::o;12255:92::-;12312:10;;;;;;;;;;;:19;;:27;12332:6;12312:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12255:92;:::o;989:179::-;1047:7;1067:9;1083:1;1079;:5;;;;:::i;:::-;1067:17;;1108:1;1103;:6;;1095:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1159:1;1152:8;;;989:179;;;;:::o;1176:136::-;1234:7;1261:43;1265:1;1268;1261:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1254:50;;1176:136;;;;:::o;1912:189::-;1998:7;2030:1;2026;:5;2033:12;2018:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2057:9;2073:1;2069;:5;;;;:::i;:::-;2057:17;;2092:1;2085:8;;;1912:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:323::-;6192:6;6241:2;6229:9;6220:7;6216:23;6212:32;6209:119;;;6247:79;;:::i;:::-;6209:119;6367:1;6392:50;6434:7;6425:6;6414:9;6410:22;6392:50;:::i;:::-;6382:60;;6338:114;6136:323;;;;:::o;6465:474::-;6533:6;6541;6590:2;6578:9;6569:7;6565:23;6561:32;6558:119;;;6596:79;;:::i;:::-;6558:119;6716:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;:::i;:::-;6731:63;;6687:117;6843:2;6869:53;6914:7;6905:6;6894:9;6890:22;6869:53;:::i;:::-;6859:63;;6814:118;6465:474;;;;;:::o;6945:468::-;7010:6;7018;7067:2;7055:9;7046:7;7042:23;7038:32;7035:119;;;7073:79;;:::i;:::-;7035:119;7193:1;7218:50;7260:7;7251:6;7240:9;7236:22;7218:50;:::i;:::-;7208:60;;7164:114;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6945:468;;;;;:::o;7419:182::-;7559:34;7555:1;7547:6;7543:14;7536:58;7419:182;:::o;7607:366::-;7749:3;7770:67;7834:2;7829:3;7770:67;:::i;:::-;7763:74;;7846:93;7935:3;7846:93;:::i;:::-;7964:2;7959:3;7955:12;7948:19;;7607:366;;;:::o;7979:419::-;8145:4;8183:2;8172:9;8168:18;8160:26;;8232:9;8226:4;8222:20;8218:1;8207:9;8203:17;8196:47;8260:131;8386:4;8260:131;:::i;:::-;8252:139;;7979:419;;;:::o;8404:180::-;8452:77;8449:1;8442:88;8549:4;8546:1;8539:15;8573:4;8570:1;8563:15;8590:102;8632:8;8679:5;8676:1;8672:13;8651:34;;8590:102;;;:::o;8698:848::-;8759:5;8766:4;8790:6;8781:15;;8814:5;8805:14;;8828:712;8849:1;8839:8;8836:15;8828:712;;;8944:4;8939:3;8935:14;8929:4;8926:24;8923:50;;;8953:18;;:::i;:::-;8923:50;9003:1;8993:8;8989:16;8986:451;;;9418:4;9411:5;9407:16;9398:25;;8986:451;9468:4;9462;9458:15;9450:23;;9498:32;9521:8;9498:32;:::i;:::-;9486:44;;8828:712;;;8698:848;;;;;;;:::o;9552:1073::-;9606:5;9797:8;9787:40;;9818:1;9809:10;;9820:5;;9787:40;9846:4;9836:36;;9863:1;9854:10;;9865:5;;9836:36;9932:4;9980:1;9975:27;;;;10016:1;10011:191;;;;9925:277;;9975:27;9993:1;9984:10;;9995:5;;;10011:191;10056:3;10046:8;10043:17;10040:43;;;10063:18;;:::i;:::-;10040:43;10112:8;10109:1;10105:16;10096:25;;10147:3;10140:5;10137:14;10134:40;;;10154:18;;:::i;:::-;10134:40;10187:5;;;9925:277;;10311:2;10301:8;10298:16;10292:3;10286:4;10283:13;10279:36;10261:2;10251:8;10248:16;10243:2;10237:4;10234:12;10230:35;10214:111;10211:246;;;10367:8;10361:4;10357:19;10348:28;;10402:3;10395:5;10392:14;10389:40;;;10409:18;;:::i;:::-;10389:40;10442:5;;10211:246;10482:42;10520:3;10510:8;10504:4;10501:1;10482:42;:::i;:::-;10467:57;;;;10556:4;10551:3;10547:14;10540:5;10537:25;10534:51;;;10565:18;;:::i;:::-;10534:51;10614:4;10607:5;10603:16;10594:25;;9552:1073;;;;;;:::o;10631:281::-;10689:5;10713:23;10731:4;10713:23;:::i;:::-;10705:31;;10757:25;10773:8;10757:25;:::i;:::-;10745:37;;10801:104;10838:66;10828:8;10822:4;10801:104;:::i;:::-;10792:113;;10631:281;;;;:::o;10918:410::-;10958:7;10981:20;10999:1;10981:20;:::i;:::-;10976:25;;11015:20;11033:1;11015:20;:::i;:::-;11010:25;;11070:1;11067;11063:9;11092:30;11110:11;11092:30;:::i;:::-;11081:41;;11271:1;11262:7;11258:15;11255:1;11252:22;11232:1;11225:9;11205:83;11182:139;;11301:18;;:::i;:::-;11182:139;10966:362;10918:410;;;;:::o;11334:173::-;11474:25;11470:1;11462:6;11458:14;11451:49;11334:173;:::o;11513:366::-;11655:3;11676:67;11740:2;11735:3;11676:67;:::i;:::-;11669:74;;11752:93;11841:3;11752:93;:::i;:::-;11870:2;11865:3;11861:12;11854:19;;11513:366;;;:::o;11885:419::-;12051:4;12089:2;12078:9;12074:18;12066:26;;12138:9;12132:4;12128:20;12124:1;12113:9;12109:17;12102:47;12166:131;12292:4;12166:131;:::i;:::-;12158:139;;11885:419;;;:::o;12310:143::-;12367:5;12398:6;12392:13;12383:22;;12414:33;12441:5;12414:33;:::i;:::-;12310:143;;;;:::o;12459:351::-;12529:6;12578:2;12566:9;12557:7;12553:23;12549:32;12546:119;;;12584:79;;:::i;:::-;12546:119;12704:1;12729:64;12785:7;12776:6;12765:9;12761:22;12729:64;:::i;:::-;12719:74;;12675:128;12459:351;;;;:::o;12816:332::-;12937:4;12975:2;12964:9;12960:18;12952:26;;12988:71;13056:1;13045:9;13041:17;13032:6;12988:71;:::i;:::-;13069:72;13137:2;13126:9;13122:18;13113:6;13069:72;:::i;:::-;12816:332;;;;;:::o;13154:85::-;13199:7;13228:5;13217:16;;13154:85;;;:::o;13245:60::-;13273:3;13294:5;13287:12;;13245:60;;;:::o;13311:158::-;13369:9;13402:61;13420:42;13429:32;13455:5;13429:32;:::i;:::-;13420:42;:::i;:::-;13402:61;:::i;:::-;13389:74;;13311:158;;;:::o;13475:147::-;13570:45;13609:5;13570:45;:::i;:::-;13565:3;13558:58;13475:147;;:::o;13628:807::-;13877:4;13915:3;13904:9;13900:19;13892:27;;13929:71;13997:1;13986:9;13982:17;13973:6;13929:71;:::i;:::-;14010:72;14078:2;14067:9;14063:18;14054:6;14010:72;:::i;:::-;14092:80;14168:2;14157:9;14153:18;14144:6;14092:80;:::i;:::-;14182;14258:2;14247:9;14243:18;14234:6;14182:80;:::i;:::-;14272:73;14340:3;14329:9;14325:19;14316:6;14272:73;:::i;:::-;14355;14423:3;14412:9;14408:19;14399:6;14355:73;:::i;:::-;13628:807;;;;;;;;;:::o;14441:143::-;14498:5;14529:6;14523:13;14514:22;;14545:33;14572:5;14545:33;:::i;:::-;14441:143;;;;:::o;14590:663::-;14678:6;14686;14694;14743:2;14731:9;14722:7;14718:23;14714:32;14711:119;;;14749:79;;:::i;:::-;14711:119;14869:1;14894:64;14950:7;14941:6;14930:9;14926:22;14894:64;:::i;:::-;14884:74;;14840:128;15007:2;15033:64;15089:7;15080:6;15069:9;15065:22;15033:64;:::i;:::-;15023:74;;14978:129;15146:2;15172:64;15228:7;15219:6;15208:9;15204:22;15172:64;:::i;:::-;15162:74;;15117:129;14590:663;;;;;:::o;15259:332::-;15380:4;15418:2;15407:9;15403:18;15395:26;;15431:71;15499:1;15488:9;15484:17;15475:6;15431:71;:::i;:::-;15512:72;15580:2;15569:9;15565:18;15556:6;15512:72;:::i;:::-;15259:332;;;;;:::o;15597:137::-;15651:5;15682:6;15676:13;15667:22;;15698:30;15722:5;15698:30;:::i;:::-;15597:137;;;;:::o;15740:345::-;15807:6;15856:2;15844:9;15835:7;15831:23;15827:32;15824:119;;;15862:79;;:::i;:::-;15824:119;15982:1;16007:61;16060:7;16051:6;16040:9;16036:22;16007:61;:::i;:::-;15997:71;;15953:125;15740:345;;;;:::o;16091:142::-;16141:9;16174:53;16192:34;16201:24;16219:5;16201:24;:::i;:::-;16192:34;:::i;:::-;16174:53;:::i;:::-;16161:66;;16091:142;;;:::o;16239:126::-;16289:9;16322:37;16353:5;16322:37;:::i;:::-;16309:50;;16239:126;;;:::o;16371:134::-;16429:9;16462:37;16493:5;16462:37;:::i;:::-;16449:50;;16371:134;;;:::o;16511:147::-;16606:45;16645:5;16606:45;:::i;:::-;16601:3;16594:58;16511:147;;:::o;16664:348::-;16793:4;16831:2;16820:9;16816:18;16808:26;;16844:79;16920:1;16909:9;16905:17;16896:6;16844:79;:::i;:::-;16933:72;17001:2;16990:9;16986:18;16977:6;16933:72;:::i;:::-;16664:348;;;;;:::o;17018:225::-;17158:34;17154:1;17146:6;17142:14;17135:58;17227:8;17222:2;17214:6;17210:15;17203:33;17018:225;:::o;17249:366::-;17391:3;17412:67;17476:2;17471:3;17412:67;:::i;:::-;17405:74;;17488:93;17577:3;17488:93;:::i;:::-;17606:2;17601:3;17597:12;17590:19;;17249:366;;;:::o;17621:419::-;17787:4;17825:2;17814:9;17810:18;17802:26;;17874:9;17868:4;17864:20;17860:1;17849:9;17845:17;17838:47;17902:131;18028:4;17902:131;:::i;:::-;17894:139;;17621:419;;;:::o;18046:223::-;18186:34;18182:1;18174:6;18170:14;18163:58;18255:6;18250:2;18242:6;18238:15;18231:31;18046:223;:::o;18275:366::-;18417:3;18438:67;18502:2;18497:3;18438:67;:::i;:::-;18431:74;;18514:93;18603:3;18514:93;:::i;:::-;18632:2;18627:3;18623:12;18616:19;;18275:366;;;:::o;18647:419::-;18813:4;18851:2;18840:9;18836:18;18828:26;;18900:9;18894:4;18890:20;18886:1;18875:9;18871:17;18864:47;18928:131;19054:4;18928:131;:::i;:::-;18920:139;;18647:419;;;:::o;19072:221::-;19212:34;19208:1;19200:6;19196:14;19189:58;19281:4;19276:2;19268:6;19264:15;19257:29;19072:221;:::o;19299:366::-;19441:3;19462:67;19526:2;19521:3;19462:67;:::i;:::-;19455:74;;19538:93;19627:3;19538:93;:::i;:::-;19656:2;19651:3;19647:12;19640:19;;19299:366;;;:::o;19671:419::-;19837:4;19875:2;19864:9;19860:18;19852:26;;19924:9;19918:4;19914:20;19910:1;19899:9;19895:17;19888:47;19952:131;20078:4;19952:131;:::i;:::-;19944:139;;19671:419;;;:::o;20096:224::-;20236:34;20232:1;20224:6;20220:14;20213:58;20305:7;20300:2;20292:6;20288:15;20281:32;20096:224;:::o;20326:366::-;20468:3;20489:67;20553:2;20548:3;20489:67;:::i;:::-;20482:74;;20565:93;20654:3;20565:93;:::i;:::-;20683:2;20678:3;20674:12;20667:19;;20326:366;;;:::o;20698:419::-;20864:4;20902:2;20891:9;20887:18;20879:26;;20951:9;20945:4;20941:20;20937:1;20926:9;20922:17;20915:47;20979:131;21105:4;20979:131;:::i;:::-;20971:139;;20698:419;;;:::o;21123:222::-;21263:34;21259:1;21251:6;21247:14;21240:58;21332:5;21327:2;21319:6;21315:15;21308:30;21123:222;:::o;21351:366::-;21493:3;21514:67;21578:2;21573:3;21514:67;:::i;:::-;21507:74;;21590:93;21679:3;21590:93;:::i;:::-;21708:2;21703:3;21699:12;21692:19;;21351:366;;;:::o;21723:419::-;21889:4;21927:2;21916:9;21912:18;21904:26;;21976:9;21970:4;21966:20;21962:1;21951:9;21947:17;21940:47;22004:131;22130:4;22004:131;:::i;:::-;21996:139;;21723:419;;;:::o;22148:228::-;22288:34;22284:1;22276:6;22272:14;22265:58;22357:11;22352:2;22344:6;22340:15;22333:36;22148:228;:::o;22382:366::-;22524:3;22545:67;22609:2;22604:3;22545:67;:::i;:::-;22538:74;;22621:93;22710:3;22621:93;:::i;:::-;22739:2;22734:3;22730:12;22723:19;;22382:366;;;:::o;22754:419::-;22920:4;22958:2;22947:9;22943:18;22935:26;;23007:9;23001:4;22997:20;22993:1;22982:9;22978:17;22971:47;23035:131;23161:4;23035:131;:::i;:::-;23027:139;;22754:419;;;:::o;23179:182::-;23319:34;23315:1;23307:6;23303:14;23296:58;23179:182;:::o;23367:366::-;23509:3;23530:67;23594:2;23589:3;23530:67;:::i;:::-;23523:74;;23606:93;23695:3;23606:93;:::i;:::-;23724:2;23719:3;23715:12;23708:19;;23367:366;;;:::o;23739:419::-;23905:4;23943:2;23932:9;23928:18;23920:26;;23992:9;23986:4;23982:20;23978:1;23967:9;23963:17;23956:47;24020:131;24146:4;24020:131;:::i;:::-;24012:139;;23739:419;;;:::o;24164:233::-;24203:3;24226:24;24244:5;24226:24;:::i;:::-;24217:33;;24272:66;24265:5;24262:77;24259:103;;24342:18;;:::i;:::-;24259:103;24389:1;24382:5;24378:13;24371:20;;24164:233;;;:::o;24403:175::-;24543:27;24539:1;24531:6;24527:14;24520:51;24403:175;:::o;24584:366::-;24726:3;24747:67;24811:2;24806:3;24747:67;:::i;:::-;24740:74;;24823:93;24912:3;24823:93;:::i;:::-;24941:2;24936:3;24932:12;24925:19;;24584:366;;;:::o;24956:419::-;25122:4;25160:2;25149:9;25145:18;25137:26;;25209:9;25203:4;25199:20;25195:1;25184:9;25180:17;25173:47;25237:131;25363:4;25237:131;:::i;:::-;25229:139;;24956:419;;;:::o;25381:191::-;25421:3;25440:20;25458:1;25440:20;:::i;:::-;25435:25;;25474:20;25492:1;25474:20;:::i;:::-;25469:25;;25517:1;25514;25510:9;25503:16;;25538:3;25535:1;25532:10;25529:36;;;25545:18;;:::i;:::-;25529:36;25381:191;;;;:::o;25578:176::-;25718:28;25714:1;25706:6;25702:14;25695:52;25578:176;:::o;25760:366::-;25902:3;25923:67;25987:2;25982:3;25923:67;:::i;:::-;25916:74;;25999:93;26088:3;25999:93;:::i;:::-;26117:2;26112:3;26108:12;26101:19;;25760:366;;;:::o;26132:419::-;26298:4;26336:2;26325:9;26321:18;26313:26;;26385:9;26379:4;26375:20;26371:1;26360:9;26356:17;26349:47;26413:131;26539:4;26413:131;:::i;:::-;26405:139;;26132:419;;;:::o;26557:165::-;26697:17;26693:1;26685:6;26681:14;26674:41;26557:165;:::o;26728:366::-;26870:3;26891:67;26955:2;26950:3;26891:67;:::i;:::-;26884:74;;26967:93;27056:3;26967:93;:::i;:::-;27085:2;27080:3;27076:12;27069:19;;26728:366;;;:::o;27100:419::-;27266:4;27304:2;27293:9;27289:18;27281:26;;27353:9;27347:4;27343:20;27339:1;27328:9;27324:17;27317:47;27381:131;27507:4;27381:131;:::i;:::-;27373:139;;27100:419;;;:::o;27525:194::-;27565:4;27585:20;27603:1;27585:20;:::i;:::-;27580:25;;27619:20;27637:1;27619:20;:::i;:::-;27614:25;;27663:1;27660;27656:9;27648:17;;27687:1;27681:4;27678:11;27675:37;;;27692:18;;:::i;:::-;27675:37;27525:194;;;;:::o;27725:180::-;27773:77;27770:1;27763:88;27870:4;27867:1;27860:15;27894:4;27891:1;27884:15;27911:185;27951:1;27968:20;27986:1;27968:20;:::i;:::-;27963:25;;28002:20;28020:1;28002:20;:::i;:::-;27997:25;;28041:1;28031:35;;28046:18;;:::i;:::-;28031:35;28088:1;28085;28081:9;28076:14;;27911:185;;;;:::o;28102:220::-;28242:34;28238:1;28230:6;28226:14;28219:58;28311:3;28306:2;28298:6;28294:15;28287:28;28102:220;:::o;28328:366::-;28470:3;28491:67;28555:2;28550:3;28491:67;:::i;:::-;28484:74;;28567:93;28656:3;28567:93;:::i;:::-;28685:2;28680:3;28676:12;28669:19;;28328:366;;;:::o;28700:419::-;28866:4;28904:2;28893:9;28889:18;28881:26;;28953:9;28947:4;28943:20;28939:1;28928:9;28924:17;28917:47;28981:131;29107:4;28981:131;:::i;:::-;28973:139;;28700:419;;;:::o;29125:180::-;29173:77;29170:1;29163:88;29270:4;29267:1;29260:15;29294:4;29291:1;29284:15;29311:180;29359:77;29356:1;29349:88;29456:4;29453:1;29446:15;29480:4;29477:1;29470:15;29497:114;29564:6;29598:5;29592:12;29582:22;;29497:114;;;:::o;29617:184::-;29716:11;29750:6;29745:3;29738:19;29790:4;29785:3;29781:14;29766:29;;29617:184;;;;:::o;29807:132::-;29874:4;29897:3;29889:11;;29927:4;29922:3;29918:14;29910:22;;29807:132;;;:::o;29945:108::-;30022:24;30040:5;30022:24;:::i;:::-;30017:3;30010:37;29945:108;;:::o;30059:179::-;30128:10;30149:46;30191:3;30183:6;30149:46;:::i;:::-;30227:4;30222:3;30218:14;30204:28;;30059:179;;;;:::o;30244:113::-;30314:4;30346;30341:3;30337:14;30329:22;;30244:113;;;:::o;30393:732::-;30512:3;30541:54;30589:5;30541:54;:::i;:::-;30611:86;30690:6;30685:3;30611:86;:::i;:::-;30604:93;;30721:56;30771:5;30721:56;:::i;:::-;30800:7;30831:1;30816:284;30841:6;30838:1;30835:13;30816:284;;;30917:6;30911:13;30944:63;31003:3;30988:13;30944:63;:::i;:::-;30937:70;;31030:60;31083:6;31030:60;:::i;:::-;31020:70;;30876:224;30863:1;30860;30856:9;30851:14;;30816:284;;;30820:14;31116:3;31109:10;;30517:608;;;30393:732;;;;:::o;31131:831::-;31394:4;31432:3;31421:9;31417:19;31409:27;;31446:71;31514:1;31503:9;31499:17;31490:6;31446:71;:::i;:::-;31527:80;31603:2;31592:9;31588:18;31579:6;31527:80;:::i;:::-;31654:9;31648:4;31644:20;31639:2;31628:9;31624:18;31617:48;31682:108;31785:4;31776:6;31682:108;:::i;:::-;31674:116;;31800:72;31868:2;31857:9;31853:18;31844:6;31800:72;:::i;:::-;31882:73;31950:3;31939:9;31935:19;31926:6;31882:73;:::i;:::-;31131:831;;;;;;;;:::o;31968:177::-;32108:29;32104:1;32096:6;32092:14;32085:53;31968:177;:::o;32151:366::-;32293:3;32314:67;32378:2;32373:3;32314:67;:::i;:::-;32307:74;;32390:93;32479:3;32390:93;:::i;:::-;32508:2;32503:3;32499:12;32492:19;;32151:366;;;:::o;32523:419::-;32689:4;32727:2;32716:9;32712:18;32704:26;;32776:9;32770:4;32766:20;32762:1;32751:9;32747:17;32740:47;32804:131;32930:4;32804:131;:::i;:::-;32796:139;;32523:419;;;:::o

Swarm Source

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