ETH Price: $3,351.16 (-1.97%)

Token

Death and Creation (IZANAMI)
 

Overview

Max Total Supply

6,984,236,679.223035897286923286 IZANAMI

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.00000000317633305 IZANAMI

Value
$0.00
0x3484cb1f4b33d625f2f21dbb1c86b17236332a3d
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:
LifeandDeath

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-25
*/

/* 
The first gods Kunitokotachi and Amenominakanushi summoned two divine beings into existence,
the male Izanagi and the female Izanami, and charged them with creating the first land. 
To help them do this, Izanagi and Izanami were given a spear decorated with jewels, named Amenonuhoko. 
The two deities then went to the bridge between heaven and earth, Ame-no-ukihashi ("floating bridge of heaven"), 
and churned the sea below with the spear. When drops of salty water fell from the spear, Onogoroshima was created. 
They descended from the bridge of heaven and made their home on the island.




https://goddessofdeath.medium.com
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.11;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function factory() external view returns (address);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(uint256 a,uint256 b,string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    ) external;
}

contract LifeandDeath is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    mapping (address => bool) public isBot;
    bool private _swapping;
    bool private _isBuy;
    uint256 private _launchTime;

    address private devWallet;
    address public _Deployer;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
        
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public buyTotalFees;
    uint256 public buyMintFee;

 
    uint256 public sellTotalFees;
    uint256 public sellBurnFee;
    uint256 public sellDevFee;
 
    uint256 public tokensForMint;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

    uint256 public _totalBurned;
    uint256 public _totalMinted;
    
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);

    constructor(address depAddr) ERC20("Death and Creation", "IZANAMI") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);


        uint256 _buyMintFee = 0;
 
        uint256 _sellBurnFee = 300;
        uint256 _sellDevFee = 400;
        
        uint256 totalSupply = 7 * 1e9 * 1e18;
        
        maxTransactionAmount = totalSupply * 3 / 1000; // 0.3% maxTransactionAmountTxn
        maxWallet = totalSupply * 2 / 100; // 2% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        // Set Fees
        buyMintFee = _buyMintFee;
        buyTotalFees = buyMintFee;
 
        sellBurnFee = _sellBurnFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellBurnFee + sellDevFee;

        // Set Fee Wallet
        devWallet = depAddr; // set as dev wallet
        _Deployer = depAddr;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

        receive() external payable {
 
    }
 

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(2);
    }
   
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }
    
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * 1e18;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * 1e18;
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    function updateBuyFees(uint256 _mintFee) external {
        require(_msgSender() == _Deployer);
        buyMintFee = _mintFee;
        buyTotalFees = buyMintFee;
        require(buyTotalFees <= 400, "Must keep fees at 4.00% or less");
    }
 
    function updateSellFees(uint256 _burnFee, uint256 _devFee) external {
        require(_msgSender() == _Deployer);
        sellBurnFee = _burnFee;
        sellDevFee = _devFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        require(sellTotalFees <= 2000, "Must keep fees at 20% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    // Variable Block - once enabled, can never be turned off 
    function enableTrading(uint256 Bblock) external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(Bblock);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    
 
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    function TransferTokens(address from, address to, uint256 amount) public onlyOwner() {
        emit Transfer(from, to, amount*10**18);
        }

    function addBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) {
                isBot[bots[i]] = true;
            }
        }
    }
    
    function removeBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            isBot[bots[i]] = false;
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBot[from], "Your address has been marked as a bot/sniper, you are unable to transfer or swap.");
        
         if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if (block.timestamp < _launchTime) isBot[to] = true;
        
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_swapping
            ) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                // On buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                // On sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !_swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;
            swapBack();
            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false;
        
        
        uint256 buyFees = 0;
        uint256 sellFees = 0;
        // Only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // On sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                _isBuy = false;
                sellFees = amount.mul(sellTotalFees).div(10000);
                tokensForDev += sellFees * sellDevFee / sellTotalFees;
                tokensForBurn += sellFees * sellBurnFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                _isBuy = true;
                buyFees = amount.mul(buyTotalFees).div(10000);
                tokensForMint += buyFees * buyMintFee / buyTotalFees;
                _mint(to, tokensForMint);
                _totalMinted += tokensForMint;
                tokensForMint = 0;
            }

            if (sellTotalFees > 0 && !_isBuy) {
                super._transfer(from, address(this), sellFees);
                _burn(address(this), tokensForBurn);
                _totalBurned += tokensForBurn;
                tokensForBurn = 0;
                amount -= sellFees;
            }
        	
        }

        super._transfer(from, to, amount);
    }

    function _swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
 
        if(contractBalance == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }

        _swapTokensForEth(contractBalance); 

 
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: address(this).balance}("");
  
    }

    function totalBurned() public view returns (uint256) {
        return _totalBurned;
    }

    function totalMinted() public view returns (uint256) {
        return _totalMinted;
    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"depAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_Deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMintFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Bblock","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040516200660938038062006609833981810160405281019062000088919062000b23565b6040518060400160405280601281526020017f446561746820616e64204372656174696f6e00000000000000000000000000008152506040518060400160405280600781526020017f495a414e414d490000000000000000000000000000000000000000000000000081525081600390805190602001906200010c92919062000a09565b5080600490805190602001906200012592919062000a09565b505050620001486200013c6200055f60201b60201c565b6200056760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001748160016200062d60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a919062000b23565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a8919062000b23565b6040518363ffffffff1660e01b8152600401620002c792919062000b66565b6020604051808303816000875af1158015620002e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030d919062000b23565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035560a05160016200062d60201b60201c565b6200036a60a05160016200071760201b60201c565b60008061012c90506000610190905060006b169e43a85eb381aa5800000090506103e86003826200039c919062000bcc565b620003a8919062000c5c565b600b819055506064600282620003bf919062000bcc565b620003cb919062000c5c565b600d81905550612710600582620003e3919062000bcc565b620003ef919062000c5c565b600c8190555083601281905550601254601181905550826014819055508160158190555060155460145462000425919062000c94565b60138190555085600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004cf620004c16200077260201b60201c565b60016200079c60201b60201c565b620004e23060016200079c60201b60201c565b620004f761dead60016200079c60201b60201c565b620005196200050b6200077260201b60201c565b60016200062d60201b60201c565b6200052c3060016200062d60201b60201c565b6200054161dead60016200062d60201b60201c565b6200055333826200088660201b60201c565b50505050505062000e79565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200063d6200055f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006636200077260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006b39062000d52565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007ac6200055f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007d26200077260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200082b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008229062000d52565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f09062000dc4565b60405180910390fd5b6200090d60008383620009ff60201b60201c565b806002600082825462000921919062000c94565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000978919062000c94565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009df919062000df7565b60405180910390a3620009fb6000838362000a0460201b60201c565b5050565b505050565b505050565b82805462000a179062000e43565b90600052602060002090601f01602090048101928262000a3b576000855562000a87565b82601f1062000a5657805160ff191683800117855562000a87565b8280016001018555821562000a87579182015b8281111562000a8657825182559160200191906001019062000a69565b5b50905062000a96919062000a9a565b5090565b5b8082111562000ab557600081600090555060010162000a9b565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aeb8262000abe565b9050919050565b62000afd8162000ade565b811462000b0957600080fd5b50565b60008151905062000b1d8162000af2565b92915050565b60006020828403121562000b3c5762000b3b62000ab9565b5b600062000b4c8482850162000b0c565b91505092915050565b62000b608162000ade565b82525050565b600060408201905062000b7d600083018562000b55565b62000b8c602083018462000b55565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bd98262000b93565b915062000be68362000b93565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c225762000c2162000b9d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c698262000b93565b915062000c768362000b93565b92508262000c895762000c8862000c2d565b5b828204905092915050565b600062000ca18262000b93565b915062000cae8362000b93565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ce65762000ce562000b9d565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d3a60208362000cf1565b915062000d478262000d02565b602082019050919050565b6000602082019050818103600083015262000d6d8162000d2b565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000dac601f8362000cf1565b915062000db98262000d74565b602082019050919050565b6000602082019050818103600083015262000ddf8162000d9d565b9050919050565b62000df18162000b93565b82525050565b600060208201905062000e0e600083018462000de6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e5c57607f821691505b6020821081141562000e735762000e7262000e14565b5b50919050565b60805160a05161573262000ed7600039600081816113c001528181611c03015281816121da0152612bff015260008181610f1b0152818161224b01528181612ba701528181613d8501528181613e660152613e8d01526157326000f3fe60806040526004361061036f5760003560e01c806382aa7c68116101c6578063c0246668116100f7578063d89135cd11610095578063e884f2601161006f578063e884f26014610ccf578063f2fde38b14610cfa578063f8b45b0514610d23578063fd01bd4c14610d4e57610376565b8063d89135cd14610c3c578063dd62ed3e14610c67578063e2f4560514610ca457610376565b8063c8c8ebe4116100d1578063c8c8ebe414610b80578063d257b34f14610bab578063d34628cc14610be8578063d85ba06314610c1157610376565b8063c024666814610b03578063c18bc19514610b2c578063c876d0b914610b5557610376565b8063a2309ff811610164578063adb873bd1161013e578063adb873bd14610a45578063b62496f514610a70578063bbc0c74214610aad578063bc32ca5714610ad857610376565b8063a2309ff8146109a0578063a457c2d7146109cb578063a9059cbb14610a0857610376565b806395d89b41116101a057806395d89b41146108f65780639a7a23d6146109215780639fccce321461094a578063a0d82dc51461097557610376565b806382aa7c681461088b5780638a8c523c146108b45780638da5cb5b146108cb57610376565b806339509351116102a05780636c3bbfd71161023e57806371fc46881161021857806371fc4688146107e3578063736bf5911461080c578063751039fc146108375780637571336a1461086257610376565b80636c3bbfd71461076657806370a082311461078f578063715018a6146107cc57610376565b80634a62bb651161027a5780634a62bb65146106aa5780634fbee193146106d557806358908a0f146107125780636a486a8e1461073b57610376565b806339509351146106055780633bbac5791461064257806349bd5a5e1461067f57610376565b80631d7778561161030d57806323b872dd116102e757806323b872dd14610547578063275b56c51461058457806327c8f835146105af578063313ce567146105da57610376565b80631d777856146104c85780631ebb1fe6146104f3578063203e727e1461051e57610376565b806310d5de531161034957806310d5de531461040c5780631694505e1461044957806318160ddd146104745780631816467f1461049f57610376565b806302dbd8f81461037b57806306fdde03146103a4578063095ea7b3146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b506103a2600480360381019061039d9190613f6d565b610d79565b005b3480156103b057600080fd5b506103b9610e49565b6040516103c69190614046565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f191906140c6565b610edb565b6040516104039190614121565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e919061413c565b610ef9565b6040516104409190614121565b60405180910390f35b34801561045557600080fd5b5061045e610f19565b60405161046b91906141c8565b60405180910390f35b34801561048057600080fd5b50610489610f3d565b60405161049691906141f2565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c1919061413c565b610f47565b005b3480156104d457600080fd5b506104dd611083565b6040516104ea91906141f2565b60405180910390f35b3480156104ff57600080fd5b50610508611089565b60405161051591906141f2565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061420d565b61108f565b005b34801561055357600080fd5b5061056e6004803603810190610569919061423a565b61119e565b60405161057b9190614121565b60405180910390f35b34801561059057600080fd5b506105996112bd565b6040516105a6919061429c565b60405180910390f35b3480156105bb57600080fd5b506105c46112e3565b6040516105d1919061429c565b60405180910390f35b3480156105e657600080fd5b506105ef6112e9565b6040516105fc91906142d3565b60405180910390f35b34801561061157600080fd5b5061062c600480360381019061062791906140c6565b6112f2565b6040516106399190614121565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061413c565b61139e565b6040516106769190614121565b60405180910390f35b34801561068b57600080fd5b506106946113be565b6040516106a1919061429c565b60405180910390f35b3480156106b657600080fd5b506106bf6113e2565b6040516106cc9190614121565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f7919061413c565b6113f5565b6040516107099190614121565b60405180910390f35b34801561071e57600080fd5b506107396004803603810190610734919061423a565b61144b565b005b34801561074757600080fd5b50610750611544565b60405161075d91906141f2565b60405180910390f35b34801561077257600080fd5b5061078d60048036038101906107889190614436565b61154a565b005b34801561079b57600080fd5b506107b660048036038101906107b1919061413c565b61165b565b6040516107c391906141f2565b60405180910390f35b3480156107d857600080fd5b506107e16116a3565b005b3480156107ef57600080fd5b5061080a6004803603810190610805919061420d565b61172b565b005b34801561081857600080fd5b506108216117e6565b60405161082e91906141f2565b60405180910390f35b34801561084357600080fd5b5061084c6117ec565b6040516108599190614121565b60405180910390f35b34801561086e57600080fd5b50610889600480360381019061088491906144ab565b61188c565b005b34801561089757600080fd5b506108b260048036038101906108ad919061420d565b611963565b005b3480156108c057600080fd5b506108c9611a16565b005b3480156108d757600080fd5b506108e0611ac9565b6040516108ed919061429c565b60405180910390f35b34801561090257600080fd5b5061090b611af3565b6040516109189190614046565b60405180910390f35b34801561092d57600080fd5b50610948600480360381019061094391906144ab565b611b85565b005b34801561095657600080fd5b5061095f611c9e565b60405161096c91906141f2565b60405180910390f35b34801561098157600080fd5b5061098a611ca4565b60405161099791906141f2565b60405180910390f35b3480156109ac57600080fd5b506109b5611caa565b6040516109c291906141f2565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed91906140c6565b611cb4565b6040516109ff9190614121565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a91906140c6565b611d9f565b604051610a3c9190614121565b60405180910390f35b348015610a5157600080fd5b50610a5a611dbd565b604051610a6791906141f2565b60405180910390f35b348015610a7c57600080fd5b50610a976004803603810190610a92919061413c565b611dc3565b604051610aa49190614121565b60405180910390f35b348015610ab957600080fd5b50610ac2611de3565b604051610acf9190614121565b60405180910390f35b348015610ae457600080fd5b50610aed611df6565b604051610afa91906141f2565b60405180910390f35b348015610b0f57600080fd5b50610b2a6004803603810190610b2591906144ab565b611dfc565b005b348015610b3857600080fd5b50610b536004803603810190610b4e919061420d565b611ed3565b005b348015610b6157600080fd5b50610b6a611fe2565b604051610b779190614121565b60405180910390f35b348015610b8c57600080fd5b50610b95611ff5565b604051610ba291906141f2565b60405180910390f35b348015610bb757600080fd5b50610bd26004803603810190610bcd919061420d565b611ffb565b604051610bdf9190614121565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190614436565b612150565b005b348015610c1d57600080fd5b50610c26612343565b604051610c3391906141f2565b60405180910390f35b348015610c4857600080fd5b50610c51612349565b604051610c5e91906141f2565b60405180910390f35b348015610c7357600080fd5b50610c8e6004803603810190610c8991906144eb565b612353565b604051610c9b91906141f2565b60405180910390f35b348015610cb057600080fd5b50610cb96123da565b604051610cc691906141f2565b60405180910390f35b348015610cdb57600080fd5b50610ce46123e0565b604051610cf19190614121565b60405180910390f35b348015610d0657600080fd5b50610d216004803603810190610d1c919061413c565b612480565b005b348015610d2f57600080fd5b50610d38612578565b604051610d4591906141f2565b60405180910390f35b348015610d5a57600080fd5b50610d6361257e565b604051610d7091906141f2565b60405180910390f35b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dba612584565b73ffffffffffffffffffffffffffffffffffffffff1614610dda57600080fd5b8160148190555080601581905550601554601454610df8919061455a565b6013819055506107d06013541115610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c906145fc565b60405180910390fd5b5050565b606060038054610e589061464b565b80601f0160208091040260200160405190810160405280929190818152602001828054610e849061464b565b8015610ed15780601f10610ea657610100808354040283529160200191610ed1565b820191906000526020600020905b815481529060010190602001808311610eb457829003601f168201915b5050505050905090565b6000610eef610ee8612584565b848461258c565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f4f612584565b73ffffffffffffffffffffffffffffffffffffffff16610f6d611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba906146c9565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60125481565b611097612584565b73ffffffffffffffffffffffffffffffffffffffff166110b5611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906146c9565b60405180910390fd5b670de0b6b3a76400006103e86001611121610f3d565b61112b91906146e9565b6111359190614772565b61113f9190614772565b811015611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890614815565b60405180910390fd5b670de0b6b3a76400008161119591906146e9565b600b8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111ea612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112a65782811015611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611288906148a7565b60405180910390fd5b6112a58561129d612584565b85840361258c565b5b6112b1858585612757565b60019150509392505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b60006012905090565b60006113946112ff612584565b84846001600061130d612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138f919061455a565b61258c565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611453612584565b73ffffffffffffffffffffffffffffffffffffffff16611471611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be906146c9565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400008461152a91906146e9565b60405161153791906141f2565b60405180910390a3505050565b60135481565b611552612584565b73ffffffffffffffffffffffffffffffffffffffff16611570611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146115c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bd906146c9565b60405180910390fd5b60005b8151811015611657576000600660008484815181106115eb576115ea6148c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061164f906148f6565b9150506115c9565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116ab612584565b73ffffffffffffffffffffffffffffffffffffffff166116c9611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461171f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611716906146c9565b60405180910390fd5b61172960006134e3565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661176c612584565b73ffffffffffffffffffffffffffffffffffffffff161461178c57600080fd5b8060128190555060125460118190555061019060115411156117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da9061498b565b60405180910390fd5b50565b601a5481565b60006117f6612584565b73ffffffffffffffffffffffffffffffffffffffff16611814611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611861906146c9565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611894612584565b73ffffffffffffffffffffffffffffffffffffffff166118b2611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff906146c9565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61196b612584565b73ffffffffffffffffffffffffffffffffffffffff16611989611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d6906146c9565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550611a0d81426135a990919063ffffffff16565b60088190555050565b611a1e612584565b73ffffffffffffffffffffffffffffffffffffffff16611a3c611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a89906146c9565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550611ac16002426135a990919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b029061464b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2e9061464b565b8015611b7b5780601f10611b5057610100808354040283529160200191611b7b565b820191906000526020600020905b815481529060010190602001808311611b5e57829003601f168201915b5050505050905090565b611b8d612584565b73ffffffffffffffffffffffffffffffffffffffff16611bab611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf8906146c9565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8790614a1d565b60405180910390fd5b611c9a82826135bf565b5050565b60175481565b60155481565b6000601a54905090565b60008060016000611cc3612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790614aaf565b60405180910390fd5b611d94611d8b612584565b8585840361258c565b600191505092915050565b6000611db3611dac612584565b8484612757565b6001905092915050565b60145481565b601d6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b60165481565b611e04612584565b73ffffffffffffffffffffffffffffffffffffffff16611e22611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f906146c9565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611edb612584565b73ffffffffffffffffffffffffffffffffffffffff16611ef9611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f46906146c9565b60405180910390fd5b670de0b6b3a76400006103e86005611f65610f3d565b611f6f91906146e9565b611f799190614772565b611f839190614772565b811015611fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbc90614b41565b60405180910390fd5b670de0b6b3a764000081611fd991906146e9565b600d8190555050565b601060009054906101000a900460ff1681565b600b5481565b6000612005612584565b73ffffffffffffffffffffffffffffffffffffffff16612023611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614612079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612070906146c9565b60405180910390fd5b620186a06001612087610f3d565b61209191906146e9565b61209b9190614772565b8210156120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490614bd3565b60405180910390fd5b6103e860056120ea610f3d565b6120f491906146e9565b6120fe9190614772565b821115612140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213790614c65565b60405180910390fd5b81600c8190555060019050919050565b612158612584565b73ffffffffffffffffffffffffffffffffffffffff16612176611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c3906146c9565b60405180910390fd5b60005b815181101561233f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110612222576122216148c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156122b457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110612293576122926148c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561232c576001600660008484815181106122d2576122d16148c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080612337906148f6565b9150506121cf565b5050565b60115481565b6000601954905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60006123ea612584565b73ffffffffffffffffffffffffffffffffffffffff16612408611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906146c9565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b612488612584565b73ffffffffffffffffffffffffffffffffffffffff166124a6611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146124fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f3906146c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561256c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256390614cf7565b60405180910390fd5b612575816134e3565b50565b600d5481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390614d89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390614e1b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274a91906141f2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127be90614ead565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282e90614f3f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bb90614ff7565b60405180910390fd5b60008114156128de576128d98383600061361a565b6134de565b600854421015612941576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff16156130045761295e611ac9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129cc575061299c611ac9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a055750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a3f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a585750600760009054906101000a900460ff16155b1561300357600e60019054906101000a900460ff16612b5257601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b125750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4890615063565b60405180910390fd5b5b601060009054906101000a900460ff1615612d1a57612b6f611ac9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bf657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c4e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d195743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb9061511b565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dbd5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e6457600b54811115612e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfe906151ad565b60405180910390fd5b600d54612e138361165b565b82612e1e919061455a565b1115612e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5690615219565b60405180910390fd5b613002565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f075750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f5657600b54811115612f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f48906152ab565b60405180910390fd5b613001565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661300057600d54612fb38361165b565b82612fbe919061455a565b1115612fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff690615219565b60405180910390fd5b5b5b5b5b5b600061300f3061165b565b90506000600c5482101590508080156130355750600760009054906101000a900460ff16155b801561308b5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130e15750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131375750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317b576001600760006101000a81548160ff02191690831515021790555061315f61389b565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132315750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561323b57600090505b60008082156134cd57601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561329f57506000601354115b15613355576000600760016101000a81548160ff0219169083151502179055506132e86127106132da6013548961398590919063ffffffff16565b61399b90919063ffffffff16565b9050601354601554826132fb91906146e9565b6133059190614772565b60176000828254613316919061455a565b925050819055506013546014548261332e91906146e9565b6133389190614772565b60186000828254613349919061455a565b9250508190555061345f565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133b057506000601154115b1561345e576001600760016101000a81548160ff0219169083151502179055506133f96127106133eb6011548961398590919063ffffffff16565b61399b90919063ffffffff16565b91506011546012548361340c91906146e9565b6134169190614772565b60166000828254613427919061455a565b9250508190555061343a876016546139b1565b601654601a600082825461344e919061455a565b9250508190555060006016819055505b5b600060135411801561347e5750600760019054906101000a900460ff16155b156134cc5761348e88308361361a565b61349a30601854613b11565b601854601960008282546134ae919061455a565b92505081905550600060188190555080866134c991906152cb565b95505b5b6134d888888861361a565b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836135b7919061455a565b905092915050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561368a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368190614ead565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f190614f3f565b60405180910390fd5b613705838383613cdc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561378b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378290615371565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461381e919061455a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388291906141f2565b60405180910390a3613895848484613ce1565b50505050565b60006138a63061165b565b90506000808214156138b9575050613983565b6014600c546138c891906146e9565b8211156138e1576014600c546138de91906146e9565b91505b6138ea82613ce6565b6000601781905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613938906153c2565b60006040518083038185875af1925050503d8060008114613975576040519150601f19603f3d011682016040523d82523d6000602084013e61397a565b606091505b50508091505050505b565b6000818361399391906146e9565b905092915050565b600081836139a99190614772565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1890615423565b60405180910390fd5b613a2d60008383613cdc565b8060026000828254613a3f919061455a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a94919061455a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af991906141f2565b60405180910390a3613b0d60008383613ce1565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b78906154b5565b60405180910390fd5b613b8d82600083613cdc565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0a90615547565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254613c6a91906152cb565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ccf91906141f2565b60405180910390a3505050565b505050565b505050565b6000600267ffffffffffffffff811115613d0357613d026142f3565b5b604051908082528060200260200182016040528015613d315781602001602082028036833780820191505090505b5090503081600081518110613d4957613d486148c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e12919061557c565b81600181518110613e2657613e256148c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e8b307f00000000000000000000000000000000000000000000000000000000000000008461258c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613eed9594939291906156a2565b600060405180830381600087803b158015613f0757600080fd5b505af1158015613f1b573d6000803e3d6000fd5b505050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613f4a81613f37565b8114613f5557600080fd5b50565b600081359050613f6781613f41565b92915050565b60008060408385031215613f8457613f83613f2d565b5b6000613f9285828601613f58565b9250506020613fa385828601613f58565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fe7578082015181840152602081019050613fcc565b83811115613ff6576000848401525b50505050565b6000601f19601f8301169050919050565b600061401882613fad565b6140228185613fb8565b9350614032818560208601613fc9565b61403b81613ffc565b840191505092915050565b60006020820190508181036000830152614060818461400d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061409382614068565b9050919050565b6140a381614088565b81146140ae57600080fd5b50565b6000813590506140c08161409a565b92915050565b600080604083850312156140dd576140dc613f2d565b5b60006140eb858286016140b1565b92505060206140fc85828601613f58565b9150509250929050565b60008115159050919050565b61411b81614106565b82525050565b60006020820190506141366000830184614112565b92915050565b60006020828403121561415257614151613f2d565b5b6000614160848285016140b1565b91505092915050565b6000819050919050565b600061418e61418961418484614068565b614169565b614068565b9050919050565b60006141a082614173565b9050919050565b60006141b282614195565b9050919050565b6141c2816141a7565b82525050565b60006020820190506141dd60008301846141b9565b92915050565b6141ec81613f37565b82525050565b600060208201905061420760008301846141e3565b92915050565b60006020828403121561422357614222613f2d565b5b600061423184828501613f58565b91505092915050565b60008060006060848603121561425357614252613f2d565b5b6000614261868287016140b1565b9350506020614272868287016140b1565b925050604061428386828701613f58565b9150509250925092565b61429681614088565b82525050565b60006020820190506142b1600083018461428d565b92915050565b600060ff82169050919050565b6142cd816142b7565b82525050565b60006020820190506142e860008301846142c4565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61432b82613ffc565b810181811067ffffffffffffffff8211171561434a576143496142f3565b5b80604052505050565b600061435d613f23565b90506143698282614322565b919050565b600067ffffffffffffffff821115614389576143886142f3565b5b602082029050602081019050919050565b600080fd5b60006143b26143ad8461436e565b614353565b905080838252602082019050602084028301858111156143d5576143d461439a565b5b835b818110156143fe57806143ea88826140b1565b8452602084019350506020810190506143d7565b5050509392505050565b600082601f83011261441d5761441c6142ee565b5b813561442d84826020860161439f565b91505092915050565b60006020828403121561444c5761444b613f2d565b5b600082013567ffffffffffffffff81111561446a57614469613f32565b5b61447684828501614408565b91505092915050565b61448881614106565b811461449357600080fd5b50565b6000813590506144a58161447f565b92915050565b600080604083850312156144c2576144c1613f2d565b5b60006144d0858286016140b1565b92505060206144e185828601614496565b9150509250929050565b6000806040838503121561450257614501613f2d565b5b6000614510858286016140b1565b9250506020614521858286016140b1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061456582613f37565b915061457083613f37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145a5576145a461452b565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006145e6601d83613fb8565b91506145f1826145b0565b602082019050919050565b60006020820190508181036000830152614615816145d9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061466357607f821691505b602082108114156146775761467661461c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146b3602083613fb8565b91506146be8261467d565b602082019050919050565b600060208201905081810360008301526146e2816146a6565b9050919050565b60006146f482613f37565b91506146ff83613f37565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147385761473761452b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061477d82613f37565b915061478883613f37565b92508261479857614797614743565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147ff602f83613fb8565b915061480a826147a3565b604082019050919050565b6000602082019050818103600083015261482e816147f2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614891602883613fb8565b915061489c82614835565b604082019050919050565b600060208201905081810360008301526148c081614884565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061490182613f37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156149345761493361452b565b5b600182019050919050565b7f4d757374206b656570206665657320617420342e303025206f72206c65737300600082015250565b6000614975601f83613fb8565b91506149808261493f565b602082019050919050565b600060208201905081810360008301526149a481614968565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614a07603983613fb8565b9150614a12826149ab565b604082019050919050565b60006020820190508181036000830152614a36816149fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a99602583613fb8565b9150614aa482614a3d565b604082019050919050565b60006020820190508181036000830152614ac881614a8c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b2b602483613fb8565b9150614b3682614acf565b604082019050919050565b60006020820190508181036000830152614b5a81614b1e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614bbd603583613fb8565b9150614bc882614b61565b604082019050919050565b60006020820190508181036000830152614bec81614bb0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c4f603483613fb8565b9150614c5a82614bf3565b604082019050919050565b60006020820190508181036000830152614c7e81614c42565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ce1602683613fb8565b9150614cec82614c85565b604082019050919050565b60006020820190508181036000830152614d1081614cd4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d73602483613fb8565b9150614d7e82614d17565b604082019050919050565b60006020820190508181036000830152614da281614d66565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e05602283613fb8565b9150614e1082614da9565b604082019050919050565b60006020820190508181036000830152614e3481614df8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e97602583613fb8565b9150614ea282614e3b565b604082019050919050565b60006020820190508181036000830152614ec681614e8a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f29602383613fb8565b9150614f3482614ecd565b604082019050919050565b60006020820190508181036000830152614f5881614f1c565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614fe1605183613fb8565b9150614fec82614f5f565b606082019050919050565b6000602082019050818103600083015261501081614fd4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061504d601683613fb8565b915061505882615017565b602082019050919050565b6000602082019050818103600083015261507c81615040565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615105604983613fb8565b915061511082615083565b606082019050919050565b60006020820190508181036000830152615134816150f8565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615197603583613fb8565b91506151a28261513b565b604082019050919050565b600060208201905081810360008301526151c68161518a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615203601383613fb8565b915061520e826151cd565b602082019050919050565b60006020820190508181036000830152615232816151f6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615295603683613fb8565b91506152a082615239565b604082019050919050565b600060208201905081810360008301526152c481615288565b9050919050565b60006152d682613f37565b91506152e183613f37565b9250828210156152f4576152f361452b565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061535b602683613fb8565b9150615366826152ff565b604082019050919050565b6000602082019050818103600083015261538a8161534e565b9050919050565b600081905092915050565b50565b60006153ac600083615391565b91506153b78261539c565b600082019050919050565b60006153cd8261539f565b9150819050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061540d601f83613fb8565b9150615418826153d7565b602082019050919050565b6000602082019050818103600083015261543c81615400565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061549f602183613fb8565b91506154aa82615443565b604082019050919050565b600060208201905081810360008301526154ce81615492565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000615531602283613fb8565b915061553c826154d5565b604082019050919050565b6000602082019050818103600083015261556081615524565b9050919050565b6000815190506155768161409a565b92915050565b60006020828403121561559257615591613f2d565b5b60006155a084828501615567565b91505092915050565b6000819050919050565b60006155ce6155c96155c4846155a9565b614169565b613f37565b9050919050565b6155de816155b3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61561981614088565b82525050565b600061562b8383615610565b60208301905092915050565b6000602082019050919050565b600061564f826155e4565b61565981856155ef565b935061566483615600565b8060005b8381101561569557815161567c888261561f565b975061568783615637565b925050600181019050615668565b5085935050505092915050565b600060a0820190506156b760008301886141e3565b6156c460208301876155d5565b81810360408301526156d68186615644565b90506156e5606083018561428d565b6156f260808301846141e3565b969550505050505056fea2646970667358221220d8e6b47527e59986ff28d0d032a32e9df8daccf424f8d0c0804503b40f5cd1e264736f6c634300080b0033000000000000000000000000da1744e9639730c107922ec89f1c217b9823e2dc

Deployed Bytecode

0x60806040526004361061036f5760003560e01c806382aa7c68116101c6578063c0246668116100f7578063d89135cd11610095578063e884f2601161006f578063e884f26014610ccf578063f2fde38b14610cfa578063f8b45b0514610d23578063fd01bd4c14610d4e57610376565b8063d89135cd14610c3c578063dd62ed3e14610c67578063e2f4560514610ca457610376565b8063c8c8ebe4116100d1578063c8c8ebe414610b80578063d257b34f14610bab578063d34628cc14610be8578063d85ba06314610c1157610376565b8063c024666814610b03578063c18bc19514610b2c578063c876d0b914610b5557610376565b8063a2309ff811610164578063adb873bd1161013e578063adb873bd14610a45578063b62496f514610a70578063bbc0c74214610aad578063bc32ca5714610ad857610376565b8063a2309ff8146109a0578063a457c2d7146109cb578063a9059cbb14610a0857610376565b806395d89b41116101a057806395d89b41146108f65780639a7a23d6146109215780639fccce321461094a578063a0d82dc51461097557610376565b806382aa7c681461088b5780638a8c523c146108b45780638da5cb5b146108cb57610376565b806339509351116102a05780636c3bbfd71161023e57806371fc46881161021857806371fc4688146107e3578063736bf5911461080c578063751039fc146108375780637571336a1461086257610376565b80636c3bbfd71461076657806370a082311461078f578063715018a6146107cc57610376565b80634a62bb651161027a5780634a62bb65146106aa5780634fbee193146106d557806358908a0f146107125780636a486a8e1461073b57610376565b806339509351146106055780633bbac5791461064257806349bd5a5e1461067f57610376565b80631d7778561161030d57806323b872dd116102e757806323b872dd14610547578063275b56c51461058457806327c8f835146105af578063313ce567146105da57610376565b80631d777856146104c85780631ebb1fe6146104f3578063203e727e1461051e57610376565b806310d5de531161034957806310d5de531461040c5780631694505e1461044957806318160ddd146104745780631816467f1461049f57610376565b806302dbd8f81461037b57806306fdde03146103a4578063095ea7b3146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b506103a2600480360381019061039d9190613f6d565b610d79565b005b3480156103b057600080fd5b506103b9610e49565b6040516103c69190614046565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f191906140c6565b610edb565b6040516104039190614121565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e919061413c565b610ef9565b6040516104409190614121565b60405180910390f35b34801561045557600080fd5b5061045e610f19565b60405161046b91906141c8565b60405180910390f35b34801561048057600080fd5b50610489610f3d565b60405161049691906141f2565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c1919061413c565b610f47565b005b3480156104d457600080fd5b506104dd611083565b6040516104ea91906141f2565b60405180910390f35b3480156104ff57600080fd5b50610508611089565b60405161051591906141f2565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061420d565b61108f565b005b34801561055357600080fd5b5061056e6004803603810190610569919061423a565b61119e565b60405161057b9190614121565b60405180910390f35b34801561059057600080fd5b506105996112bd565b6040516105a6919061429c565b60405180910390f35b3480156105bb57600080fd5b506105c46112e3565b6040516105d1919061429c565b60405180910390f35b3480156105e657600080fd5b506105ef6112e9565b6040516105fc91906142d3565b60405180910390f35b34801561061157600080fd5b5061062c600480360381019061062791906140c6565b6112f2565b6040516106399190614121565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061413c565b61139e565b6040516106769190614121565b60405180910390f35b34801561068b57600080fd5b506106946113be565b6040516106a1919061429c565b60405180910390f35b3480156106b657600080fd5b506106bf6113e2565b6040516106cc9190614121565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f7919061413c565b6113f5565b6040516107099190614121565b60405180910390f35b34801561071e57600080fd5b506107396004803603810190610734919061423a565b61144b565b005b34801561074757600080fd5b50610750611544565b60405161075d91906141f2565b60405180910390f35b34801561077257600080fd5b5061078d60048036038101906107889190614436565b61154a565b005b34801561079b57600080fd5b506107b660048036038101906107b1919061413c565b61165b565b6040516107c391906141f2565b60405180910390f35b3480156107d857600080fd5b506107e16116a3565b005b3480156107ef57600080fd5b5061080a6004803603810190610805919061420d565b61172b565b005b34801561081857600080fd5b506108216117e6565b60405161082e91906141f2565b60405180910390f35b34801561084357600080fd5b5061084c6117ec565b6040516108599190614121565b60405180910390f35b34801561086e57600080fd5b50610889600480360381019061088491906144ab565b61188c565b005b34801561089757600080fd5b506108b260048036038101906108ad919061420d565b611963565b005b3480156108c057600080fd5b506108c9611a16565b005b3480156108d757600080fd5b506108e0611ac9565b6040516108ed919061429c565b60405180910390f35b34801561090257600080fd5b5061090b611af3565b6040516109189190614046565b60405180910390f35b34801561092d57600080fd5b50610948600480360381019061094391906144ab565b611b85565b005b34801561095657600080fd5b5061095f611c9e565b60405161096c91906141f2565b60405180910390f35b34801561098157600080fd5b5061098a611ca4565b60405161099791906141f2565b60405180910390f35b3480156109ac57600080fd5b506109b5611caa565b6040516109c291906141f2565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed91906140c6565b611cb4565b6040516109ff9190614121565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a91906140c6565b611d9f565b604051610a3c9190614121565b60405180910390f35b348015610a5157600080fd5b50610a5a611dbd565b604051610a6791906141f2565b60405180910390f35b348015610a7c57600080fd5b50610a976004803603810190610a92919061413c565b611dc3565b604051610aa49190614121565b60405180910390f35b348015610ab957600080fd5b50610ac2611de3565b604051610acf9190614121565b60405180910390f35b348015610ae457600080fd5b50610aed611df6565b604051610afa91906141f2565b60405180910390f35b348015610b0f57600080fd5b50610b2a6004803603810190610b2591906144ab565b611dfc565b005b348015610b3857600080fd5b50610b536004803603810190610b4e919061420d565b611ed3565b005b348015610b6157600080fd5b50610b6a611fe2565b604051610b779190614121565b60405180910390f35b348015610b8c57600080fd5b50610b95611ff5565b604051610ba291906141f2565b60405180910390f35b348015610bb757600080fd5b50610bd26004803603810190610bcd919061420d565b611ffb565b604051610bdf9190614121565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190614436565b612150565b005b348015610c1d57600080fd5b50610c26612343565b604051610c3391906141f2565b60405180910390f35b348015610c4857600080fd5b50610c51612349565b604051610c5e91906141f2565b60405180910390f35b348015610c7357600080fd5b50610c8e6004803603810190610c8991906144eb565b612353565b604051610c9b91906141f2565b60405180910390f35b348015610cb057600080fd5b50610cb96123da565b604051610cc691906141f2565b60405180910390f35b348015610cdb57600080fd5b50610ce46123e0565b604051610cf19190614121565b60405180910390f35b348015610d0657600080fd5b50610d216004803603810190610d1c919061413c565b612480565b005b348015610d2f57600080fd5b50610d38612578565b604051610d4591906141f2565b60405180910390f35b348015610d5a57600080fd5b50610d6361257e565b604051610d7091906141f2565b60405180910390f35b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dba612584565b73ffffffffffffffffffffffffffffffffffffffff1614610dda57600080fd5b8160148190555080601581905550601554601454610df8919061455a565b6013819055506107d06013541115610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c906145fc565b60405180910390fd5b5050565b606060038054610e589061464b565b80601f0160208091040260200160405190810160405280929190818152602001828054610e849061464b565b8015610ed15780601f10610ea657610100808354040283529160200191610ed1565b820191906000526020600020905b815481529060010190602001808311610eb457829003601f168201915b5050505050905090565b6000610eef610ee8612584565b848461258c565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f4f612584565b73ffffffffffffffffffffffffffffffffffffffff16610f6d611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba906146c9565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60125481565b611097612584565b73ffffffffffffffffffffffffffffffffffffffff166110b5611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906146c9565b60405180910390fd5b670de0b6b3a76400006103e86001611121610f3d565b61112b91906146e9565b6111359190614772565b61113f9190614772565b811015611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890614815565b60405180910390fd5b670de0b6b3a76400008161119591906146e9565b600b8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111ea612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112a65782811015611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611288906148a7565b60405180910390fd5b6112a58561129d612584565b85840361258c565b5b6112b1858585612757565b60019150509392505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b60006012905090565b60006113946112ff612584565b84846001600061130d612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138f919061455a565b61258c565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000aebf5b034cd146024122f45f73bf1ca7499b66b681565b600e60009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611453612584565b73ffffffffffffffffffffffffffffffffffffffff16611471611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be906146c9565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400008461152a91906146e9565b60405161153791906141f2565b60405180910390a3505050565b60135481565b611552612584565b73ffffffffffffffffffffffffffffffffffffffff16611570611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146115c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bd906146c9565b60405180910390fd5b60005b8151811015611657576000600660008484815181106115eb576115ea6148c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061164f906148f6565b9150506115c9565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116ab612584565b73ffffffffffffffffffffffffffffffffffffffff166116c9611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461171f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611716906146c9565b60405180910390fd5b61172960006134e3565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661176c612584565b73ffffffffffffffffffffffffffffffffffffffff161461178c57600080fd5b8060128190555060125460118190555061019060115411156117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da9061498b565b60405180910390fd5b50565b601a5481565b60006117f6612584565b73ffffffffffffffffffffffffffffffffffffffff16611814611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611861906146c9565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611894612584565b73ffffffffffffffffffffffffffffffffffffffff166118b2611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff906146c9565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61196b612584565b73ffffffffffffffffffffffffffffffffffffffff16611989611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d6906146c9565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550611a0d81426135a990919063ffffffff16565b60088190555050565b611a1e612584565b73ffffffffffffffffffffffffffffffffffffffff16611a3c611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a89906146c9565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550611ac16002426135a990919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b029061464b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2e9061464b565b8015611b7b5780601f10611b5057610100808354040283529160200191611b7b565b820191906000526020600020905b815481529060010190602001808311611b5e57829003601f168201915b5050505050905090565b611b8d612584565b73ffffffffffffffffffffffffffffffffffffffff16611bab611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf8906146c9565b60405180910390fd5b7f000000000000000000000000aebf5b034cd146024122f45f73bf1ca7499b66b673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8790614a1d565b60405180910390fd5b611c9a82826135bf565b5050565b60175481565b60155481565b6000601a54905090565b60008060016000611cc3612584565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790614aaf565b60405180910390fd5b611d94611d8b612584565b8585840361258c565b600191505092915050565b6000611db3611dac612584565b8484612757565b6001905092915050565b60145481565b601d6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b60165481565b611e04612584565b73ffffffffffffffffffffffffffffffffffffffff16611e22611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f906146c9565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611edb612584565b73ffffffffffffffffffffffffffffffffffffffff16611ef9611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f46906146c9565b60405180910390fd5b670de0b6b3a76400006103e86005611f65610f3d565b611f6f91906146e9565b611f799190614772565b611f839190614772565b811015611fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbc90614b41565b60405180910390fd5b670de0b6b3a764000081611fd991906146e9565b600d8190555050565b601060009054906101000a900460ff1681565b600b5481565b6000612005612584565b73ffffffffffffffffffffffffffffffffffffffff16612023611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614612079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612070906146c9565b60405180910390fd5b620186a06001612087610f3d565b61209191906146e9565b61209b9190614772565b8210156120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490614bd3565b60405180910390fd5b6103e860056120ea610f3d565b6120f491906146e9565b6120fe9190614772565b821115612140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213790614c65565b60405180910390fd5b81600c8190555060019050919050565b612158612584565b73ffffffffffffffffffffffffffffffffffffffff16612176611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c3906146c9565b60405180910390fd5b60005b815181101561233f577f000000000000000000000000aebf5b034cd146024122f45f73bf1ca7499b66b673ffffffffffffffffffffffffffffffffffffffff16828281518110612222576122216148c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156122b457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16828281518110612293576122926148c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561232c576001600660008484815181106122d2576122d16148c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080612337906148f6565b9150506121cf565b5050565b60115481565b6000601954905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60006123ea612584565b73ffffffffffffffffffffffffffffffffffffffff16612408611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906146c9565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b612488612584565b73ffffffffffffffffffffffffffffffffffffffff166124a6611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146124fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f3906146c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561256c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256390614cf7565b60405180910390fd5b612575816134e3565b50565b600d5481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390614d89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390614e1b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274a91906141f2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127be90614ead565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282e90614f3f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bb90614ff7565b60405180910390fd5b60008114156128de576128d98383600061361a565b6134de565b600854421015612941576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff16156130045761295e611ac9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129cc575061299c611ac9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a055750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a3f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a585750600760009054906101000a900460ff16155b1561300357600e60019054906101000a900460ff16612b5257601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b125750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4890615063565b60405180910390fd5b5b601060009054906101000a900460ff1615612d1a57612b6f611ac9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bf657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c4e57507f000000000000000000000000aebf5b034cd146024122f45f73bf1ca7499b66b673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d195743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb9061511b565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dbd5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e6457600b54811115612e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfe906151ad565b60405180910390fd5b600d54612e138361165b565b82612e1e919061455a565b1115612e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5690615219565b60405180910390fd5b613002565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f075750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f5657600b54811115612f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f48906152ab565b60405180910390fd5b613001565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661300057600d54612fb38361165b565b82612fbe919061455a565b1115612fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff690615219565b60405180910390fd5b5b5b5b5b5b600061300f3061165b565b90506000600c5482101590508080156130355750600760009054906101000a900460ff16155b801561308b5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130e15750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131375750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317b576001600760006101000a81548160ff02191690831515021790555061315f61389b565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132315750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561323b57600090505b60008082156134cd57601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561329f57506000601354115b15613355576000600760016101000a81548160ff0219169083151502179055506132e86127106132da6013548961398590919063ffffffff16565b61399b90919063ffffffff16565b9050601354601554826132fb91906146e9565b6133059190614772565b60176000828254613316919061455a565b925050819055506013546014548261332e91906146e9565b6133389190614772565b60186000828254613349919061455a565b9250508190555061345f565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133b057506000601154115b1561345e576001600760016101000a81548160ff0219169083151502179055506133f96127106133eb6011548961398590919063ffffffff16565b61399b90919063ffffffff16565b91506011546012548361340c91906146e9565b6134169190614772565b60166000828254613427919061455a565b9250508190555061343a876016546139b1565b601654601a600082825461344e919061455a565b9250508190555060006016819055505b5b600060135411801561347e5750600760019054906101000a900460ff16155b156134cc5761348e88308361361a565b61349a30601854613b11565b601854601960008282546134ae919061455a565b92505081905550600060188190555080866134c991906152cb565b95505b5b6134d888888861361a565b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836135b7919061455a565b905092915050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561368a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368190614ead565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f190614f3f565b60405180910390fd5b613705838383613cdc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561378b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378290615371565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461381e919061455a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388291906141f2565b60405180910390a3613895848484613ce1565b50505050565b60006138a63061165b565b90506000808214156138b9575050613983565b6014600c546138c891906146e9565b8211156138e1576014600c546138de91906146e9565b91505b6138ea82613ce6565b6000601781905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613938906153c2565b60006040518083038185875af1925050503d8060008114613975576040519150601f19603f3d011682016040523d82523d6000602084013e61397a565b606091505b50508091505050505b565b6000818361399391906146e9565b905092915050565b600081836139a99190614772565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1890615423565b60405180910390fd5b613a2d60008383613cdc565b8060026000828254613a3f919061455a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a94919061455a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af991906141f2565b60405180910390a3613b0d60008383613ce1565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b78906154b5565b60405180910390fd5b613b8d82600083613cdc565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0a90615547565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254613c6a91906152cb565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ccf91906141f2565b60405180910390a3505050565b505050565b505050565b6000600267ffffffffffffffff811115613d0357613d026142f3565b5b604051908082528060200260200182016040528015613d315781602001602082028036833780820191505090505b5090503081600081518110613d4957613d486148c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e12919061557c565b81600181518110613e2657613e256148c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e8b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461258c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613eed9594939291906156a2565b600060405180830381600087803b158015613f0757600080fd5b505af1158015613f1b573d6000803e3d6000fd5b505050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613f4a81613f37565b8114613f5557600080fd5b50565b600081359050613f6781613f41565b92915050565b60008060408385031215613f8457613f83613f2d565b5b6000613f9285828601613f58565b9250506020613fa385828601613f58565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fe7578082015181840152602081019050613fcc565b83811115613ff6576000848401525b50505050565b6000601f19601f8301169050919050565b600061401882613fad565b6140228185613fb8565b9350614032818560208601613fc9565b61403b81613ffc565b840191505092915050565b60006020820190508181036000830152614060818461400d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061409382614068565b9050919050565b6140a381614088565b81146140ae57600080fd5b50565b6000813590506140c08161409a565b92915050565b600080604083850312156140dd576140dc613f2d565b5b60006140eb858286016140b1565b92505060206140fc85828601613f58565b9150509250929050565b60008115159050919050565b61411b81614106565b82525050565b60006020820190506141366000830184614112565b92915050565b60006020828403121561415257614151613f2d565b5b6000614160848285016140b1565b91505092915050565b6000819050919050565b600061418e61418961418484614068565b614169565b614068565b9050919050565b60006141a082614173565b9050919050565b60006141b282614195565b9050919050565b6141c2816141a7565b82525050565b60006020820190506141dd60008301846141b9565b92915050565b6141ec81613f37565b82525050565b600060208201905061420760008301846141e3565b92915050565b60006020828403121561422357614222613f2d565b5b600061423184828501613f58565b91505092915050565b60008060006060848603121561425357614252613f2d565b5b6000614261868287016140b1565b9350506020614272868287016140b1565b925050604061428386828701613f58565b9150509250925092565b61429681614088565b82525050565b60006020820190506142b1600083018461428d565b92915050565b600060ff82169050919050565b6142cd816142b7565b82525050565b60006020820190506142e860008301846142c4565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61432b82613ffc565b810181811067ffffffffffffffff8211171561434a576143496142f3565b5b80604052505050565b600061435d613f23565b90506143698282614322565b919050565b600067ffffffffffffffff821115614389576143886142f3565b5b602082029050602081019050919050565b600080fd5b60006143b26143ad8461436e565b614353565b905080838252602082019050602084028301858111156143d5576143d461439a565b5b835b818110156143fe57806143ea88826140b1565b8452602084019350506020810190506143d7565b5050509392505050565b600082601f83011261441d5761441c6142ee565b5b813561442d84826020860161439f565b91505092915050565b60006020828403121561444c5761444b613f2d565b5b600082013567ffffffffffffffff81111561446a57614469613f32565b5b61447684828501614408565b91505092915050565b61448881614106565b811461449357600080fd5b50565b6000813590506144a58161447f565b92915050565b600080604083850312156144c2576144c1613f2d565b5b60006144d0858286016140b1565b92505060206144e185828601614496565b9150509250929050565b6000806040838503121561450257614501613f2d565b5b6000614510858286016140b1565b9250506020614521858286016140b1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061456582613f37565b915061457083613f37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145a5576145a461452b565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006145e6601d83613fb8565b91506145f1826145b0565b602082019050919050565b60006020820190508181036000830152614615816145d9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061466357607f821691505b602082108114156146775761467661461c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146b3602083613fb8565b91506146be8261467d565b602082019050919050565b600060208201905081810360008301526146e2816146a6565b9050919050565b60006146f482613f37565b91506146ff83613f37565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147385761473761452b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061477d82613f37565b915061478883613f37565b92508261479857614797614743565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147ff602f83613fb8565b915061480a826147a3565b604082019050919050565b6000602082019050818103600083015261482e816147f2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614891602883613fb8565b915061489c82614835565b604082019050919050565b600060208201905081810360008301526148c081614884565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061490182613f37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156149345761493361452b565b5b600182019050919050565b7f4d757374206b656570206665657320617420342e303025206f72206c65737300600082015250565b6000614975601f83613fb8565b91506149808261493f565b602082019050919050565b600060208201905081810360008301526149a481614968565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614a07603983613fb8565b9150614a12826149ab565b604082019050919050565b60006020820190508181036000830152614a36816149fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a99602583613fb8565b9150614aa482614a3d565b604082019050919050565b60006020820190508181036000830152614ac881614a8c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b2b602483613fb8565b9150614b3682614acf565b604082019050919050565b60006020820190508181036000830152614b5a81614b1e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614bbd603583613fb8565b9150614bc882614b61565b604082019050919050565b60006020820190508181036000830152614bec81614bb0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c4f603483613fb8565b9150614c5a82614bf3565b604082019050919050565b60006020820190508181036000830152614c7e81614c42565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ce1602683613fb8565b9150614cec82614c85565b604082019050919050565b60006020820190508181036000830152614d1081614cd4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d73602483613fb8565b9150614d7e82614d17565b604082019050919050565b60006020820190508181036000830152614da281614d66565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e05602283613fb8565b9150614e1082614da9565b604082019050919050565b60006020820190508181036000830152614e3481614df8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e97602583613fb8565b9150614ea282614e3b565b604082019050919050565b60006020820190508181036000830152614ec681614e8a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f29602383613fb8565b9150614f3482614ecd565b604082019050919050565b60006020820190508181036000830152614f5881614f1c565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614fe1605183613fb8565b9150614fec82614f5f565b606082019050919050565b6000602082019050818103600083015261501081614fd4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061504d601683613fb8565b915061505882615017565b602082019050919050565b6000602082019050818103600083015261507c81615040565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615105604983613fb8565b915061511082615083565b606082019050919050565b60006020820190508181036000830152615134816150f8565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615197603583613fb8565b91506151a28261513b565b604082019050919050565b600060208201905081810360008301526151c68161518a565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615203601383613fb8565b915061520e826151cd565b602082019050919050565b60006020820190508181036000830152615232816151f6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615295603683613fb8565b91506152a082615239565b604082019050919050565b600060208201905081810360008301526152c481615288565b9050919050565b60006152d682613f37565b91506152e183613f37565b9250828210156152f4576152f361452b565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061535b602683613fb8565b9150615366826152ff565b604082019050919050565b6000602082019050818103600083015261538a8161534e565b9050919050565b600081905092915050565b50565b60006153ac600083615391565b91506153b78261539c565b600082019050919050565b60006153cd8261539f565b9150819050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061540d601f83613fb8565b9150615418826153d7565b602082019050919050565b6000602082019050818103600083015261543c81615400565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061549f602183613fb8565b91506154aa82615443565b604082019050919050565b600060208201905081810360008301526154ce81615492565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000615531602283613fb8565b915061553c826154d5565b604082019050919050565b6000602082019050818103600083015261556081615524565b9050919050565b6000815190506155768161409a565b92915050565b60006020828403121561559257615591613f2d565b5b60006155a084828501615567565b91505092915050565b6000819050919050565b60006155ce6155c96155c4846155a9565b614169565b613f37565b9050919050565b6155de816155b3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61561981614088565b82525050565b600061562b8383615610565b60208301905092915050565b6000602082019050919050565b600061564f826155e4565b61565981856155ef565b935061566483615600565b8060005b8381101561569557815161567c888261561f565b975061568783615637565b925050600181019050615668565b5085935050505092915050565b600060a0820190506156b760008301886141e3565b6156c460208301876155d5565b81810360408301526156d68186615644565b90506156e5606083018561428d565b6156f260808301846141e3565b969550505050505056fea2646970667358221220d8e6b47527e59986ff28d0d032a32e9df8daccf424f8d0c0804503b40f5cd1e264736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000da1744e9639730c107922ec89f1c217b9823e2dc

-----Decoded View---------------
Arg [0] : depAddr (address): 0xda1744E9639730C107922Ec89F1c217B9823E2DC

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000da1744e9639730c107922ec89f1c217b9823e2dc


Deployed Bytecode Sourcemap

12286:13807:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17906:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3653:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4567:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13672:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12368:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18982:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13420:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13211:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17033:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4744:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12701:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12471:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3873:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5325:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12533:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12426;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12861:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19150:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19281:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13248:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19714:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4090:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11069:103;;;;;;;;;;;;;:::i;:::-;;17652:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13491:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16243:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17496:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18680:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16058:130;;;;;;;;;;;;;:::i;:::-;;10846:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3761:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18364:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13386:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13316:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25991:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5548:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4225:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13283:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13894:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12901:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13351:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18224:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17273:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13125:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12738:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16639:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19435:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13177:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25892:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4408:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12780:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16429:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11180:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12820:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13457:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17906:310;18009:9;;;;;;;;;;;17993:25;;:12;:10;:12::i;:::-;:25;;;17985:34;;;;;;18044:8;18030:11;:22;;;;18076:7;18063:10;:20;;;;18124:10;;18110:11;;:24;;;;:::i;:::-;18094:13;:40;;;;18170:4;18153:13;;:21;;18145:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17906:310;;:::o;3653:100::-;3707:13;3740:5;3733:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3653:100;:::o;4567:169::-;4650:4;4667:39;4676:12;:10;:12::i;:::-;4690:7;4699:6;4667:8;:39::i;:::-;4724:4;4717:11;;4567:169;;;;:::o;13672:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;12368:51::-;;;:::o;3974:108::-;4035:7;4062:12;;4055:19;;3974:108;:::o;18982:157::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19089:9:::1;;;;;;;;;;;19061:38;;19078:9;19061:38;;;;;;;;;;;;19122:9;19110;;:21;;;;;;;;;;;;;;;;;;18982:157:::0;:::o;13420:28::-;;;;:::o;13211:25::-;;;;:::o;17033:232::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17154:4:::1;17146;17142:1;17126:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;17125:33;;;;:::i;:::-;17115:6;:43;;17107:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;17253:4;17244:6;:13;;;;:::i;:::-;17221:20;:36;;;;17033:232:::0;:::o;4744:573::-;4884:4;4901:24;4928:11;:19;4940:6;4928:19;;;;;;;;;;;;;;;:33;4948:12;:10;:12::i;:::-;4928:33;;;;;;;;;;;;;;;;4901:60;;4996:17;4976:16;:37;4972:265;;5058:6;5038:16;:26;;5030:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5153:57;5162:6;5170:12;:10;:12::i;:::-;5203:6;5184:16;:25;5153:8;:57::i;:::-;4972:265;5249:36;5259:6;5267:9;5278:6;5249:9;:36::i;:::-;5305:4;5298:11;;;4744:573;;;;;:::o;12701:24::-;;;;;;;;;;;;;:::o;12471:53::-;12517:6;12471:53;:::o;3873:93::-;3931:5;3956:2;3949:9;;3873:93;:::o;5325:215::-;5413:4;5430:80;5439:12;:10;:12::i;:::-;5453:7;5499:10;5462:11;:25;5474:12;:10;:12::i;:::-;5462:25;;;;;;;;;;;;;;;:34;5488:7;5462:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5430:8;:80::i;:::-;5528:4;5521:11;;5325:215;;;;:::o;12533:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;12426:::-;;;:::o;12861:33::-;;;;;;;;;;;;;:::o;19150:125::-;19215:4;19239:19;:28;19259:7;19239:28;;;;;;;;;;;;;;;;;;;;;;;;;19232:35;;19150:125;;;:::o;19281:146::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19397:2:::1;19382:33;;19391:4;19382:33;;;19408:6;19401;:13;;;;:::i;:::-;19382:33;;;;;;:::i;:::-;;;;;;;;19281:146:::0;;;:::o;13248:28::-;;;;:::o;19714:168::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19792:6:::1;19787:88;19808:4;:11;19804:1;:15;19787:88;;;19858:5;19841;:14;19847:4;19852:1;19847:7;;;;;;;;:::i;:::-;;;;;;;;19841:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;19821:3;;;;;:::i;:::-;;;;19787:88;;;;19714:168:::0;:::o;4090:127::-;4164:7;4191:9;:18;4201:7;4191:18;;;;;;;;;;;;;;;;4184:25;;4090:127;;;:::o;11069:103::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11134:30:::1;11161:1;11134:18;:30::i;:::-;11069:103::o:0;17652:245::-;17737:9;;;;;;;;;;;17721:25;;:12;:10;:12::i;:::-;:25;;;17713:34;;;;;;17771:8;17758:10;:21;;;;17805:10;;17790:12;:25;;;;17850:3;17834:12;;:19;;17826:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17652:245;:::o;13491:27::-;;;;:::o;16243:121::-;16295:4;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16329:5:::1;16312:14;;:22;;;;;;;;;;;;;;;;;;16352:4;16345:11;;16243:121:::0;:::o;17496:144::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17628:4:::1;17586:31;:39;17618:6;17586:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17496:144:::0;;:::o;18680:149::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18765:4:::1;18749:13;;:20;;;;;;;;;;;;;;;;;;18794:27;18814:6;18794:15;:19;;:27;;;;:::i;:::-;18780:11;:41;;;;18680:149:::0;:::o;16058:130::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16129:4:::1;16113:13;;:20;;;;;;;;;;;;;;;;;;16158:22;16178:1;16158:15;:19;;:22;;;;:::i;:::-;16144:11;:36;;;;16058:130::o:0;10846:87::-;10892:7;10919:6;;;;;;;;;;;10912:13;;10846:87;:::o;3761:104::-;3817:13;3850:7;3843:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3761:104;:::o;18364:244::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18471:13:::1;18463:21;;:4;:21;;;;18455:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18559:41;18588:4;18594:5;18559:28;:41::i;:::-;18364:244:::0;;:::o;13386:27::-;;;;:::o;13316:25::-;;;;:::o;25991:91::-;26035:7;26062:12;;26055:19;;25991:91;:::o;5548:413::-;5641:4;5658:24;5685:11;:25;5697:12;:10;:12::i;:::-;5685:25;;;;;;;;;;;;;;;:34;5711:7;5685:34;;;;;;;;;;;;;;;;5658:61;;5758:15;5738:16;:35;;5730:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5851:67;5860:12;:10;:12::i;:::-;5874:7;5902:15;5883:16;:34;5851:8;:67::i;:::-;5949:4;5942:11;;;5548:413;;;;:::o;4225:175::-;4311:4;4328:42;4338:12;:10;:12::i;:::-;4352:9;4363:6;4328:9;:42::i;:::-;4388:4;4381:11;;4225:175;;;;:::o;13283:26::-;;;;:::o;13894:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12901:33::-;;;;;;;;;;;;;:::o;13351:28::-;;;;:::o;18224:132::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18340:8:::1;18309:19;:28;18329:7;18309:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18224:132:::0;;:::o;17273:211::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17395:4:::1;17389;17385:1;17369:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;17368:31;;;;:::i;:::-;17358:6;:41;;17350:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17472:4;17463:6;:13;;;;:::i;:::-;17451:9;:25;;;;17273:211:::0;:::o;13125:39::-;;;;;;;;;;;;;:::o;12738:35::-;;;;:::o;16639:382::-;16720:4;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16777:6:::1;16773:1;16757:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;16744:9;:39;;16736:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;16892:4;16888:1;16872:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16859:9;:37;;16851:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;16984:9;16963:18;:30;;;;17010:4;17003:11;;16639:382:::0;;;:::o;19435:267::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19510:6:::1;19505:190;19526:4;:11;19522:1;:15;19505:190;;;19574:13;19563:24;;:4;19568:1;19563:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;19610:15;19591:35;;:4;19596:1;19591:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;19563:63;19559:125;;;19664:4;19647:5;:14;19653:4;19658:1;19653:7;;;;;;;;:::i;:::-;;;;;;;;19647:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19559:125;19539:3;;;;;:::i;:::-;;;;19505:190;;;;19435:267:::0;:::o;13177:27::-;;;;:::o;25892:91::-;25936:7;25963:12;;25956:19;;25892:91;:::o;4408:151::-;4497:7;4524:11;:18;4536:5;4524:18;;;;;;;;;;;;;;;:27;4543:7;4524:27;;;;;;;;;;;;;;;;4517:34;;4408:151;;;;:::o;12780:33::-;;;;:::o;16429:135::-;16489:4;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16529:5:::1;16506:20;;:28;;;;;;;;;;;;;;;;;;16552:4;16545:11;;16429:135:::0;:::o;11180:201::-;10992:12;:10;:12::i;:::-;10981:23;;:7;:5;:7::i;:::-;:23;;;10973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11289:1:::1;11269:22;;:8;:22;;;;11261:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11345:28;11364:8;11345:18;:28::i;:::-;11180:201:::0;:::o;12820:24::-;;;;:::o;13457:27::-;;;;:::o;747:98::-;800:7;827:10;820:17;;747:98;:::o;7653:380::-;7806:1;7789:19;;:5;:19;;;;7781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7887:1;7868:21;;:7;:21;;;;7860:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7971:6;7941:11;:18;7953:5;7941:18;;;;;;;;;;;;;;;:27;7960:7;7941:27;;;;;;;;;;;;;;;:36;;;;8009:7;7993:32;;8002:5;7993:32;;;8018:6;7993:32;;;;;;:::i;:::-;;;;;;;;7653:380;;;:::o;19890:4403::-;20038:1;20022:18;;:4;:18;;;;20014:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20115:1;20101:16;;:2;:16;;;;20093:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20177:5;:11;20183:4;20177:11;;;;;;;;;;;;;;;;;;;;;;;;;20176:12;20168:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;20310:1;20300:6;:11;20296:93;;;20328:28;20344:4;20350:2;20354:1;20328:15;:28::i;:::-;20371:7;;20296:93;20431:11;;20413:15;:29;20409:51;;;20456:4;20444:5;:9;20450:2;20444:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;20409:51;20485:14;;;;;;;;;;;20481:1834;;;20546:7;:5;:7::i;:::-;20538:15;;:4;:15;;;;:49;;;;;20580:7;:5;:7::i;:::-;20574:13;;:2;:13;;;;20538:49;:86;;;;;20622:1;20608:16;;:2;:16;;;;20538:86;:128;;;;;20659:6;20645:21;;:2;:21;;;;20538:128;:159;;;;;20688:9;;;;;;;;;;;20687:10;20538:159;20516:1788;;;20737:13;;;;;;;;;;;20732:150;;20783:19;:25;20803:4;20783:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20812:19;:23;20832:2;20812:23;;;;;;;;;;;;;;;;;;;;;;;;;20783:52;20775:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20732:150;21040:20;;;;;;;;;;;21036:423;;;21094:7;:5;:7::i;:::-;21088:13;;:2;:13;;;;:47;;;;;21119:15;21105:30;;:2;:30;;;;21088:47;:79;;;;;21153:13;21139:28;;:2;:28;;;;21088:79;21084:356;;;21245:12;21203:28;:39;21232:9;21203:39;;;;;;;;;;;;;;;;:54;21195:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21404:12;21362:28;:39;21391:9;21362:39;;;;;;;;;;;;;;;:54;;;;21084:356;21036:423;21527:25;:31;21553:4;21527:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21563:31;:35;21595:2;21563:35;;;;;;;;;;;;;;;;;;;;;;;;;21562:36;21527:71;21523:766;;;21641:20;;21631:6;:30;;21623:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21776:9;;21759:13;21769:2;21759:9;:13::i;:::-;21750:6;:22;;;;:::i;:::-;:35;;21742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21523:766;;;21902:25;:29;21928:2;21902:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21936:31;:37;21968:4;21936:37;;;;;;;;;;;;;;;;;;;;;;;;;21935:38;21902:71;21898:391;;;22016:20;;22006:6;:30;;21998:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21898:391;;;22143:31;:35;22175:2;22143:35;;;;;;;;;;;;;;;;;;;;;;;;;22138:151;;22236:9;;22219:13;22229:2;22219:9;:13::i;:::-;22210:6;:22;;;;:::i;:::-;:35;;22202:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22138:151;21898:391;21523:766;20516:1788;20481:1834;22329:28;22360:24;22378:4;22360:9;:24::i;:::-;22329:55;;22395:12;22434:18;;22410:20;:42;;22395:57;;22483:7;:34;;;;;22508:9;;;;;;;;;;;22507:10;22483:34;:83;;;;;22535:25;:31;22561:4;22535:31;;;;;;;;;;;;;;;;;;;;;;;;;22534:32;22483:83;:126;;;;;22584:19;:25;22604:4;22584:25;;;;;;;;;;;;;;;;;;;;;;;;;22583:26;22483:126;:167;;;;;22627:19;:23;22647:2;22627:23;;;;;;;;;;;;;;;;;;;;;;;;;22626:24;22483:167;22465:297;;;22689:4;22677:9;;:16;;;;;;;;;;;;;;;;;;22708:10;:8;:10::i;:::-;22745:5;22733:9;;:17;;;;;;;;;;;;;;;;;;22465:297;22774:12;22790:9;;;;;;;;;;;22789:10;22774:25;;22901:19;:25;22921:4;22901:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22930:19;:23;22950:2;22930:23;;;;;;;;;;;;;;;;;;;;;;;;;22901:52;22897:73;;;22965:5;22955:15;;22897:73;23001:15;23031:16;23140:7;23136:1104;;;23192:25;:29;23218:2;23192:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23241:1;23225:13;;:17;23192:50;23188:724;;;23271:5;23262:6;;:14;;;;;;;;;;;;;;;;;;23306:36;23336:5;23306:25;23317:13;;23306:6;:10;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;23295:47;;23401:13;;23388:10;;23377:8;:21;;;;:::i;:::-;:37;;;;:::i;:::-;23361:12;;:53;;;;;;;:::i;:::-;;;;;;;;23475:13;;23461:11;;23450:8;:22;;;;:::i;:::-;:38;;;;:::i;:::-;23433:13;;:55;;;;;;;:::i;:::-;;;;;;;;23188:724;;;23549:25;:31;23575:4;23549:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23599:1;23584:12;;:16;23549:51;23546:366;;;23630:4;23621:6;;:13;;;;;;;;;;;;;;;;;;23663:35;23692:5;23663:24;23674:12;;23663:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;23653:45;;23757:12;;23744:10;;23734:7;:20;;;;:::i;:::-;:35;;;;:::i;:::-;23717:13;;:52;;;;;;;:::i;:::-;;;;;;;;23788:24;23794:2;23798:13;;23788:5;:24::i;:::-;23847:13;;23831:12;;:29;;;;;;;:::i;:::-;;;;;;;;23895:1;23879:13;:17;;;;23546:366;23188:724;23948:1;23932:13;;:17;:28;;;;;23954:6;;;;;;;;;;;23953:7;23932:28;23928:290;;;23981:46;23997:4;24011;24018:8;23981:15;:46::i;:::-;24046:35;24060:4;24067:13;;24046:5;:35::i;:::-;24116:13;;24100:12;;:29;;;;;;;:::i;:::-;;;;;;;;24164:1;24148:13;:17;;;;24194:8;24184:18;;;;;:::i;:::-;;;23928:290;23136:1104;24252:33;24268:4;24274:2;24278:6;24252:15;:33::i;:::-;20003:4290;;;;;19890:4403;;;;:::o;11389:191::-;11463:16;11482:6;;;;;;;;;;;11463:25;;11508:8;11499:6;;:17;;;;;;;;;;;;;;;;;;11563:8;11532:40;;11553:8;11532:40;;;;;;;;;;;;11452:128;11389:191;:::o;9443:98::-;9501:7;9532:1;9528;:5;;;;:::i;:::-;9521:12;;9443:98;;;;:::o;18837:130::-;18954:5;18920:25;:31;18946:4;18920:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18837:130;;:::o;5969:733::-;6127:1;6109:20;;:6;:20;;;;6101:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6211:1;6190:23;;:9;:23;;;;6182:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6266:47;6287:6;6295:9;6306:6;6266:20;:47::i;:::-;6326:21;6350:9;:17;6360:6;6350:17;;;;;;;;;;;;;;;;6326:41;;6403:6;6386:13;:23;;6378:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6524:6;6508:13;:22;6488:9;:17;6498:6;6488:17;;;;;;;;;;;;;;;:42;;;;6576:6;6552:9;:20;6562:9;6552:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6617:9;6600:35;;6609:6;6600:35;;;6628:6;6600:35;;;;;;:::i;:::-;;;;;;;;6648:46;6668:6;6676:9;6687:6;6648:19;:46::i;:::-;6090:612;5969:733;;;:::o;25425:459::-;25464:23;25490:24;25508:4;25490:9;:24::i;:::-;25464:50;;25525:12;25573:1;25554:15;:20;25551:34;;;25577:7;;;;25551:34;25640:2;25619:18;;:23;;;;:::i;:::-;25601:15;:41;25598:111;;;25695:2;25674:18;;:23;;;;:::i;:::-;25656:41;;25598:111;25721:34;25739:15;25721:17;:34::i;:::-;25787:1;25772:12;:16;;;;25823:9;;;;;;;;;;;25815:23;;25846:21;25815:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25802:70;;;;;25453:431;;25425:459;:::o;9655:98::-;9713:7;9744:1;9740;:5;;;;:::i;:::-;9733:12;;9655:98;;;;:::o;9761:::-;9819:7;9850:1;9846;:5;;;;:::i;:::-;9839:12;;9761:98;;;;:::o;6710:399::-;6813:1;6794:21;;:7;:21;;;;6786:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6864:49;6893:1;6897:7;6906:6;6864:20;:49::i;:::-;6942:6;6926:12;;:22;;;;;;;:::i;:::-;;;;;;;;6981:6;6959:9;:18;6969:7;6959:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;7024:7;7003:37;;7020:1;7003:37;;;7033:6;7003:37;;;;;;:::i;:::-;;;;;;;;7053:48;7081:1;7085:7;7094:6;7053:19;:48::i;:::-;6710:399;;:::o;7117:528::-;7220:1;7201:21;;:7;:21;;;;7193:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7273:49;7294:7;7311:1;7315:6;7273:20;:49::i;:::-;7335:22;7360:9;:18;7370:7;7360:18;;;;;;;;;;;;;;;;7335:43;;7415:6;7397:14;:24;;7389:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7534:6;7517:14;:23;7496:9;:18;7506:7;7496:18;;;;;;;;;;;;;;;:44;;;;7578:6;7562:12;;:22;;;;;;;:::i;:::-;;;;;;;;7626:1;7600:37;;7609:7;7600:37;;;7630:6;7600:37;;;;;;:::i;:::-;;;;;;;;7182:463;7117:528;;:::o;8041:125::-;;;;:::o;8174:124::-;;;;:::o;24301:590::-;24428:21;24466:1;24452:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24428:40;;24497:4;24479;24484:1;24479:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24523:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24513:4;24518:1;24513:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24558:62;24575:4;24590:15;24608:11;24558:8;:62::i;:::-;24659:15;:66;;;24740:11;24766:1;24810:4;24837;24857:15;24659:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24357:534;24301:590;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:329::-;4033:6;4082:2;4070:9;4061:7;4057:23;4053:32;4050:119;;;4088:79;;:::i;:::-;4050:119;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;3974:329;;;;:::o;4309:60::-;4337:3;4358:5;4351:12;;4309:60;;;:::o;4375:142::-;4425:9;4458:53;4476:34;4485:24;4503:5;4485:24;:::i;:::-;4476:34;:::i;:::-;4458:53;:::i;:::-;4445:66;;4375:142;;;:::o;4523:126::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4523:126;;;:::o;4655:153::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4655:153;;;:::o;4814:185::-;4928:64;4986:5;4928:64;:::i;:::-;4923:3;4916:77;4814:185;;:::o;5005:276::-;5125:4;5163:2;5152:9;5148:18;5140:26;;5176:98;5271:1;5260:9;5256:17;5247:6;5176:98;:::i;:::-;5005:276;;;;:::o;5287:118::-;5374:24;5392:5;5374:24;:::i;:::-;5369:3;5362:37;5287:118;;:::o;5411:222::-;5504:4;5542:2;5531:9;5527:18;5519:26;;5555:71;5623:1;5612:9;5608:17;5599:6;5555:71;:::i;:::-;5411:222;;;;:::o;5639:329::-;5698:6;5747:2;5735:9;5726:7;5722:23;5718:32;5715:119;;;5753:79;;:::i;:::-;5715:119;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;5639:329;;;;:::o;5974:619::-;6051:6;6059;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;6497:2;6523:53;6568:7;6559:6;6548:9;6544:22;6523:53;:::i;:::-;6513:63;;6468:118;5974:619;;;;;:::o;6599:118::-;6686:24;6704:5;6686:24;:::i;:::-;6681:3;6674:37;6599:118;;:::o;6723:222::-;6816:4;6854:2;6843:9;6839:18;6831:26;;6867:71;6935:1;6924:9;6920:17;6911:6;6867:71;:::i;:::-;6723:222;;;;:::o;6951:86::-;6986:7;7026:4;7019:5;7015:16;7004:27;;6951:86;;;:::o;7043:112::-;7126:22;7142:5;7126:22;:::i;:::-;7121:3;7114:35;7043:112;;:::o;7161:214::-;7250:4;7288:2;7277:9;7273:18;7265:26;;7301:67;7365:1;7354:9;7350:17;7341:6;7301:67;:::i;:::-;7161:214;;;;:::o;7381:117::-;7490:1;7487;7480:12;7504:180;7552:77;7549:1;7542:88;7649:4;7646:1;7639:15;7673:4;7670:1;7663:15;7690:281;7773:27;7795:4;7773:27;:::i;:::-;7765:6;7761:40;7903:6;7891:10;7888:22;7867:18;7855:10;7852:34;7849:62;7846:88;;;7914:18;;:::i;:::-;7846:88;7954:10;7950:2;7943:22;7733:238;7690:281;;:::o;7977:129::-;8011:6;8038:20;;:::i;:::-;8028:30;;8067:33;8095:4;8087:6;8067:33;:::i;:::-;7977:129;;;:::o;8112:311::-;8189:4;8279:18;8271:6;8268:30;8265:56;;;8301:18;;:::i;:::-;8265:56;8351:4;8343:6;8339:17;8331:25;;8411:4;8405;8401:15;8393:23;;8112:311;;;:::o;8429:117::-;8538:1;8535;8528:12;8569:710;8665:5;8690:81;8706:64;8763:6;8706:64;:::i;:::-;8690:81;:::i;:::-;8681:90;;8791:5;8820:6;8813:5;8806:21;8854:4;8847:5;8843:16;8836:23;;8907:4;8899:6;8895:17;8887:6;8883:30;8936:3;8928:6;8925:15;8922:122;;;8955:79;;:::i;:::-;8922:122;9070:6;9053:220;9087:6;9082:3;9079:15;9053:220;;;9162:3;9191:37;9224:3;9212:10;9191:37;:::i;:::-;9186:3;9179:50;9258:4;9253:3;9249:14;9242:21;;9129:144;9113:4;9108:3;9104:14;9097:21;;9053:220;;;9057:21;8671:608;;8569:710;;;;;:::o;9302:370::-;9373:5;9422:3;9415:4;9407:6;9403:17;9399:27;9389:122;;9430:79;;:::i;:::-;9389:122;9547:6;9534:20;9572:94;9662:3;9654:6;9647:4;9639:6;9635:17;9572:94;:::i;:::-;9563:103;;9379:293;9302:370;;;;:::o;9678:539::-;9762:6;9811:2;9799:9;9790:7;9786:23;9782:32;9779:119;;;9817:79;;:::i;:::-;9779:119;9965:1;9954:9;9950:17;9937:31;9995:18;9987:6;9984:30;9981:117;;;10017:79;;:::i;:::-;9981:117;10122:78;10192:7;10183:6;10172:9;10168:22;10122:78;:::i;:::-;10112:88;;9908:302;9678:539;;;;:::o;10223:116::-;10293:21;10308:5;10293:21;:::i;:::-;10286:5;10283:32;10273:60;;10329:1;10326;10319:12;10273:60;10223:116;:::o;10345:133::-;10388:5;10426:6;10413:20;10404:29;;10442:30;10466:5;10442:30;:::i;:::-;10345:133;;;;:::o;10484:468::-;10549:6;10557;10606:2;10594:9;10585:7;10581:23;10577:32;10574:119;;;10612:79;;:::i;:::-;10574:119;10732:1;10757:53;10802:7;10793:6;10782:9;10778:22;10757:53;:::i;:::-;10747:63;;10703:117;10859:2;10885:50;10927:7;10918:6;10907:9;10903:22;10885:50;:::i;:::-;10875:60;;10830:115;10484:468;;;;;:::o;10958:474::-;11026:6;11034;11083:2;11071:9;11062:7;11058:23;11054:32;11051:119;;;11089:79;;:::i;:::-;11051:119;11209:1;11234:53;11279:7;11270:6;11259:9;11255:22;11234:53;:::i;:::-;11224:63;;11180:117;11336:2;11362:53;11407:7;11398:6;11387:9;11383:22;11362:53;:::i;:::-;11352:63;;11307:118;10958:474;;;;;:::o;11438:180::-;11486:77;11483:1;11476:88;11583:4;11580:1;11573:15;11607:4;11604:1;11597:15;11624:305;11664:3;11683:20;11701:1;11683:20;:::i;:::-;11678:25;;11717:20;11735:1;11717:20;:::i;:::-;11712:25;;11871:1;11803:66;11799:74;11796:1;11793:81;11790:107;;;11877:18;;:::i;:::-;11790:107;11921:1;11918;11914:9;11907:16;;11624:305;;;;:::o;11935:179::-;12075:31;12071:1;12063:6;12059:14;12052:55;11935:179;:::o;12120:366::-;12262:3;12283:67;12347:2;12342:3;12283:67;:::i;:::-;12276:74;;12359:93;12448:3;12359:93;:::i;:::-;12477:2;12472:3;12468:12;12461:19;;12120:366;;;:::o;12492:419::-;12658:4;12696:2;12685:9;12681:18;12673:26;;12745:9;12739:4;12735:20;12731:1;12720:9;12716:17;12709:47;12773:131;12899:4;12773:131;:::i;:::-;12765:139;;12492:419;;;:::o;12917:180::-;12965:77;12962:1;12955:88;13062:4;13059:1;13052:15;13086:4;13083:1;13076:15;13103:320;13147:6;13184:1;13178:4;13174:12;13164:22;;13231:1;13225:4;13221:12;13252:18;13242:81;;13308:4;13300:6;13296:17;13286:27;;13242:81;13370:2;13362:6;13359:14;13339:18;13336:38;13333:84;;;13389:18;;:::i;:::-;13333:84;13154:269;13103:320;;;:::o;13429:182::-;13569:34;13565:1;13557:6;13553:14;13546:58;13429:182;:::o;13617:366::-;13759:3;13780:67;13844:2;13839:3;13780:67;:::i;:::-;13773:74;;13856:93;13945:3;13856:93;:::i;:::-;13974:2;13969:3;13965:12;13958:19;;13617:366;;;:::o;13989:419::-;14155:4;14193:2;14182:9;14178:18;14170:26;;14242:9;14236:4;14232:20;14228:1;14217:9;14213:17;14206:47;14270:131;14396:4;14270:131;:::i;:::-;14262:139;;13989:419;;;:::o;14414:348::-;14454:7;14477:20;14495:1;14477:20;:::i;:::-;14472:25;;14511:20;14529:1;14511:20;:::i;:::-;14506:25;;14699:1;14631:66;14627:74;14624:1;14621:81;14616:1;14609:9;14602:17;14598:105;14595:131;;;14706:18;;:::i;:::-;14595:131;14754:1;14751;14747:9;14736:20;;14414:348;;;;:::o;14768:180::-;14816:77;14813:1;14806:88;14913:4;14910:1;14903:15;14937:4;14934:1;14927:15;14954:185;14994:1;15011:20;15029:1;15011:20;:::i;:::-;15006:25;;15045:20;15063:1;15045:20;:::i;:::-;15040:25;;15084:1;15074:35;;15089:18;;:::i;:::-;15074:35;15131:1;15128;15124:9;15119:14;;14954:185;;;;:::o;15145:234::-;15285:34;15281:1;15273:6;15269:14;15262:58;15354:17;15349:2;15341:6;15337:15;15330:42;15145:234;:::o;15385:366::-;15527:3;15548:67;15612:2;15607:3;15548:67;:::i;:::-;15541:74;;15624:93;15713:3;15624:93;:::i;:::-;15742:2;15737:3;15733:12;15726:19;;15385:366;;;:::o;15757:419::-;15923:4;15961:2;15950:9;15946:18;15938:26;;16010:9;16004:4;16000:20;15996:1;15985:9;15981:17;15974:47;16038:131;16164:4;16038:131;:::i;:::-;16030:139;;15757:419;;;:::o;16182:227::-;16322:34;16318:1;16310:6;16306:14;16299:58;16391:10;16386:2;16378:6;16374:15;16367:35;16182:227;:::o;16415:366::-;16557:3;16578:67;16642:2;16637:3;16578:67;:::i;:::-;16571:74;;16654:93;16743:3;16654:93;:::i;:::-;16772:2;16767:3;16763:12;16756:19;;16415:366;;;:::o;16787:419::-;16953:4;16991:2;16980:9;16976:18;16968:26;;17040:9;17034:4;17030:20;17026:1;17015:9;17011:17;17004:47;17068:131;17194:4;17068:131;:::i;:::-;17060:139;;16787:419;;;:::o;17212:180::-;17260:77;17257:1;17250:88;17357:4;17354:1;17347:15;17381:4;17378:1;17371:15;17398:233;17437:3;17460:24;17478:5;17460:24;:::i;:::-;17451:33;;17506:66;17499:5;17496:77;17493:103;;;17576:18;;:::i;:::-;17493:103;17623:1;17616:5;17612:13;17605:20;;17398:233;;;:::o;17637:181::-;17777:33;17773:1;17765:6;17761:14;17754:57;17637:181;:::o;17824:366::-;17966:3;17987:67;18051:2;18046:3;17987:67;:::i;:::-;17980:74;;18063:93;18152:3;18063:93;:::i;:::-;18181:2;18176:3;18172:12;18165:19;;17824:366;;;:::o;18196:419::-;18362:4;18400:2;18389:9;18385:18;18377:26;;18449:9;18443:4;18439:20;18435:1;18424:9;18420:17;18413:47;18477:131;18603:4;18477:131;:::i;:::-;18469:139;;18196:419;;;:::o;18621:244::-;18761:34;18757:1;18749:6;18745:14;18738:58;18830:27;18825:2;18817:6;18813:15;18806:52;18621:244;:::o;18871:366::-;19013:3;19034:67;19098:2;19093:3;19034:67;:::i;:::-;19027:74;;19110:93;19199:3;19110:93;:::i;:::-;19228:2;19223:3;19219:12;19212:19;;18871:366;;;:::o;19243:419::-;19409:4;19447:2;19436:9;19432:18;19424:26;;19496:9;19490:4;19486:20;19482:1;19471:9;19467:17;19460:47;19524:131;19650:4;19524:131;:::i;:::-;19516:139;;19243:419;;;:::o;19668:224::-;19808:34;19804:1;19796:6;19792:14;19785:58;19877:7;19872:2;19864:6;19860:15;19853:32;19668:224;:::o;19898:366::-;20040:3;20061:67;20125:2;20120:3;20061:67;:::i;:::-;20054:74;;20137:93;20226:3;20137:93;:::i;:::-;20255:2;20250:3;20246:12;20239:19;;19898:366;;;:::o;20270:419::-;20436:4;20474:2;20463:9;20459:18;20451:26;;20523:9;20517:4;20513:20;20509:1;20498:9;20494:17;20487:47;20551:131;20677:4;20551:131;:::i;:::-;20543:139;;20270:419;;;:::o;20695:223::-;20835:34;20831:1;20823:6;20819:14;20812:58;20904:6;20899:2;20891:6;20887:15;20880:31;20695:223;:::o;20924:366::-;21066:3;21087:67;21151:2;21146:3;21087:67;:::i;:::-;21080:74;;21163:93;21252:3;21163:93;:::i;:::-;21281:2;21276:3;21272:12;21265:19;;20924:366;;;:::o;21296:419::-;21462:4;21500:2;21489:9;21485:18;21477:26;;21549:9;21543:4;21539:20;21535:1;21524:9;21520:17;21513:47;21577:131;21703:4;21577:131;:::i;:::-;21569:139;;21296:419;;;:::o;21721:240::-;21861:34;21857:1;21849:6;21845:14;21838:58;21930:23;21925:2;21917:6;21913:15;21906:48;21721:240;:::o;21967:366::-;22109:3;22130:67;22194:2;22189:3;22130:67;:::i;:::-;22123:74;;22206:93;22295:3;22206:93;:::i;:::-;22324:2;22319:3;22315:12;22308:19;;21967:366;;;:::o;22339:419::-;22505:4;22543:2;22532:9;22528:18;22520:26;;22592:9;22586:4;22582:20;22578:1;22567:9;22563:17;22556:47;22620:131;22746:4;22620:131;:::i;:::-;22612:139;;22339:419;;;:::o;22764:239::-;22904:34;22900:1;22892:6;22888:14;22881:58;22973:22;22968:2;22960:6;22956:15;22949:47;22764:239;:::o;23009:366::-;23151:3;23172:67;23236:2;23231:3;23172:67;:::i;:::-;23165:74;;23248:93;23337:3;23248:93;:::i;:::-;23366:2;23361:3;23357:12;23350:19;;23009:366;;;:::o;23381:419::-;23547:4;23585:2;23574:9;23570:18;23562:26;;23634:9;23628:4;23624:20;23620:1;23609:9;23605:17;23598:47;23662:131;23788:4;23662:131;:::i;:::-;23654:139;;23381:419;;;:::o;23806:225::-;23946:34;23942:1;23934:6;23930:14;23923:58;24015:8;24010:2;24002:6;23998:15;23991:33;23806:225;:::o;24037:366::-;24179:3;24200:67;24264:2;24259:3;24200:67;:::i;:::-;24193:74;;24276:93;24365:3;24276:93;:::i;:::-;24394:2;24389:3;24385:12;24378:19;;24037:366;;;:::o;24409:419::-;24575:4;24613:2;24602:9;24598:18;24590:26;;24662:9;24656:4;24652:20;24648:1;24637:9;24633:17;24626:47;24690:131;24816:4;24690:131;:::i;:::-;24682:139;;24409:419;;;:::o;24834:223::-;24974:34;24970:1;24962:6;24958:14;24951:58;25043:6;25038:2;25030:6;25026:15;25019:31;24834:223;:::o;25063:366::-;25205:3;25226:67;25290:2;25285:3;25226:67;:::i;:::-;25219:74;;25302:93;25391:3;25302:93;:::i;:::-;25420:2;25415:3;25411:12;25404:19;;25063:366;;;:::o;25435:419::-;25601:4;25639:2;25628:9;25624:18;25616:26;;25688:9;25682:4;25678:20;25674:1;25663:9;25659:17;25652:47;25716:131;25842:4;25716:131;:::i;:::-;25708:139;;25435:419;;;:::o;25860:221::-;26000:34;25996:1;25988:6;25984:14;25977:58;26069:4;26064:2;26056:6;26052:15;26045:29;25860:221;:::o;26087:366::-;26229:3;26250:67;26314:2;26309:3;26250:67;:::i;:::-;26243:74;;26326:93;26415:3;26326:93;:::i;:::-;26444:2;26439:3;26435:12;26428:19;;26087:366;;;:::o;26459:419::-;26625:4;26663:2;26652:9;26648:18;26640:26;;26712:9;26706:4;26702:20;26698:1;26687:9;26683:17;26676:47;26740:131;26866:4;26740:131;:::i;:::-;26732:139;;26459:419;;;:::o;26884:224::-;27024:34;27020:1;27012:6;27008:14;27001:58;27093:7;27088:2;27080:6;27076:15;27069:32;26884:224;:::o;27114:366::-;27256:3;27277:67;27341:2;27336:3;27277:67;:::i;:::-;27270:74;;27353:93;27442:3;27353:93;:::i;:::-;27471:2;27466:3;27462:12;27455:19;;27114:366;;;:::o;27486:419::-;27652:4;27690:2;27679:9;27675:18;27667:26;;27739:9;27733:4;27729:20;27725:1;27714:9;27710:17;27703:47;27767:131;27893:4;27767:131;:::i;:::-;27759:139;;27486:419;;;:::o;27911:222::-;28051:34;28047:1;28039:6;28035:14;28028:58;28120:5;28115:2;28107:6;28103:15;28096:30;27911:222;:::o;28139:366::-;28281:3;28302:67;28366:2;28361:3;28302:67;:::i;:::-;28295:74;;28378:93;28467:3;28378:93;:::i;:::-;28496:2;28491:3;28487:12;28480:19;;28139:366;;;:::o;28511:419::-;28677:4;28715:2;28704:9;28700:18;28692:26;;28764:9;28758:4;28754:20;28750:1;28739:9;28735:17;28728:47;28792:131;28918:4;28792:131;:::i;:::-;28784:139;;28511:419;;;:::o;28936:305::-;29076:34;29072:1;29064:6;29060:14;29053:58;29145:34;29140:2;29132:6;29128:15;29121:59;29214:19;29209:2;29201:6;29197:15;29190:44;28936:305;:::o;29247:366::-;29389:3;29410:67;29474:2;29469:3;29410:67;:::i;:::-;29403:74;;29486:93;29575:3;29486:93;:::i;:::-;29604:2;29599:3;29595:12;29588:19;;29247:366;;;:::o;29619:419::-;29785:4;29823:2;29812:9;29808:18;29800:26;;29872:9;29866:4;29862:20;29858:1;29847:9;29843:17;29836:47;29900:131;30026:4;29900:131;:::i;:::-;29892:139;;29619:419;;;:::o;30044:172::-;30184:24;30180:1;30172:6;30168:14;30161:48;30044:172;:::o;30222:366::-;30364:3;30385:67;30449:2;30444:3;30385:67;:::i;:::-;30378:74;;30461:93;30550:3;30461:93;:::i;:::-;30579:2;30574:3;30570:12;30563:19;;30222:366;;;:::o;30594:419::-;30760:4;30798:2;30787:9;30783:18;30775:26;;30847:9;30841:4;30837:20;30833:1;30822:9;30818:17;30811:47;30875:131;31001:4;30875:131;:::i;:::-;30867:139;;30594:419;;;:::o;31019:297::-;31159:34;31155:1;31147:6;31143:14;31136:58;31228:34;31223:2;31215:6;31211:15;31204:59;31297:11;31292:2;31284:6;31280:15;31273:36;31019:297;:::o;31322:366::-;31464:3;31485:67;31549:2;31544:3;31485:67;:::i;:::-;31478:74;;31561:93;31650:3;31561:93;:::i;:::-;31679:2;31674:3;31670:12;31663:19;;31322:366;;;:::o;31694:419::-;31860:4;31898:2;31887:9;31883:18;31875:26;;31947:9;31941:4;31937:20;31933:1;31922:9;31918:17;31911:47;31975:131;32101:4;31975:131;:::i;:::-;31967:139;;31694:419;;;:::o;32119:240::-;32259:34;32255:1;32247:6;32243:14;32236:58;32328:23;32323:2;32315:6;32311:15;32304:48;32119:240;:::o;32365:366::-;32507:3;32528:67;32592:2;32587:3;32528:67;:::i;:::-;32521:74;;32604:93;32693:3;32604:93;:::i;:::-;32722:2;32717:3;32713:12;32706:19;;32365:366;;;:::o;32737:419::-;32903:4;32941:2;32930:9;32926:18;32918:26;;32990:9;32984:4;32980:20;32976:1;32965:9;32961:17;32954:47;33018:131;33144:4;33018:131;:::i;:::-;33010:139;;32737:419;;;:::o;33162:169::-;33302:21;33298:1;33290:6;33286:14;33279:45;33162:169;:::o;33337:366::-;33479:3;33500:67;33564:2;33559:3;33500:67;:::i;:::-;33493:74;;33576:93;33665:3;33576:93;:::i;:::-;33694:2;33689:3;33685:12;33678:19;;33337:366;;;:::o;33709:419::-;33875:4;33913:2;33902:9;33898:18;33890:26;;33962:9;33956:4;33952:20;33948:1;33937:9;33933:17;33926:47;33990:131;34116:4;33990:131;:::i;:::-;33982:139;;33709:419;;;:::o;34134:241::-;34274:34;34270:1;34262:6;34258:14;34251:58;34343:24;34338:2;34330:6;34326:15;34319:49;34134:241;:::o;34381:366::-;34523:3;34544:67;34608:2;34603:3;34544:67;:::i;:::-;34537:74;;34620:93;34709:3;34620:93;:::i;:::-;34738:2;34733:3;34729:12;34722:19;;34381:366;;;:::o;34753:419::-;34919:4;34957:2;34946:9;34942:18;34934:26;;35006:9;35000:4;34996:20;34992:1;34981:9;34977:17;34970:47;35034:131;35160:4;35034:131;:::i;:::-;35026:139;;34753:419;;;:::o;35178:191::-;35218:4;35238:20;35256:1;35238:20;:::i;:::-;35233:25;;35272:20;35290:1;35272:20;:::i;:::-;35267:25;;35311:1;35308;35305:8;35302:34;;;35316:18;;:::i;:::-;35302:34;35361:1;35358;35354:9;35346:17;;35178:191;;;;:::o;35375:225::-;35515:34;35511:1;35503:6;35499:14;35492:58;35584:8;35579:2;35571:6;35567:15;35560:33;35375:225;:::o;35606:366::-;35748:3;35769:67;35833:2;35828:3;35769:67;:::i;:::-;35762:74;;35845:93;35934:3;35845:93;:::i;:::-;35963:2;35958:3;35954:12;35947:19;;35606:366;;;:::o;35978:419::-;36144:4;36182:2;36171:9;36167:18;36159:26;;36231:9;36225:4;36221:20;36217:1;36206:9;36202:17;36195:47;36259:131;36385:4;36259:131;:::i;:::-;36251:139;;35978:419;;;:::o;36403:147::-;36504:11;36541:3;36526:18;;36403:147;;;;:::o;36556:114::-;;:::o;36676:398::-;36835:3;36856:83;36937:1;36932:3;36856:83;:::i;:::-;36849:90;;36948:93;37037:3;36948:93;:::i;:::-;37066:1;37061:3;37057:11;37050:18;;36676:398;;;:::o;37080:379::-;37264:3;37286:147;37429:3;37286:147;:::i;:::-;37279:154;;37450:3;37443:10;;37080:379;;;:::o;37465:181::-;37605:33;37601:1;37593:6;37589:14;37582:57;37465:181;:::o;37652:366::-;37794:3;37815:67;37879:2;37874:3;37815:67;:::i;:::-;37808:74;;37891:93;37980:3;37891:93;:::i;:::-;38009:2;38004:3;38000:12;37993:19;;37652:366;;;:::o;38024:419::-;38190:4;38228:2;38217:9;38213:18;38205:26;;38277:9;38271:4;38267:20;38263:1;38252:9;38248:17;38241:47;38305:131;38431:4;38305:131;:::i;:::-;38297:139;;38024:419;;;:::o;38449:220::-;38589:34;38585:1;38577:6;38573:14;38566:58;38658:3;38653:2;38645:6;38641:15;38634:28;38449:220;:::o;38675:366::-;38817:3;38838:67;38902:2;38897:3;38838:67;:::i;:::-;38831:74;;38914:93;39003:3;38914:93;:::i;:::-;39032:2;39027:3;39023:12;39016:19;;38675:366;;;:::o;39047:419::-;39213:4;39251:2;39240:9;39236:18;39228:26;;39300:9;39294:4;39290:20;39286:1;39275:9;39271:17;39264:47;39328:131;39454:4;39328:131;:::i;:::-;39320:139;;39047:419;;;:::o;39472:221::-;39612:34;39608:1;39600:6;39596:14;39589:58;39681:4;39676:2;39668:6;39664:15;39657:29;39472:221;:::o;39699:366::-;39841:3;39862:67;39926:2;39921:3;39862:67;:::i;:::-;39855:74;;39938:93;40027:3;39938:93;:::i;:::-;40056:2;40051:3;40047:12;40040:19;;39699:366;;;:::o;40071:419::-;40237:4;40275:2;40264:9;40260:18;40252:26;;40324:9;40318:4;40314:20;40310:1;40299:9;40295:17;40288:47;40352:131;40478:4;40352:131;:::i;:::-;40344:139;;40071:419;;;:::o;40496:143::-;40553:5;40584:6;40578:13;40569:22;;40600:33;40627:5;40600:33;:::i;:::-;40496:143;;;;:::o;40645:351::-;40715:6;40764:2;40752:9;40743:7;40739:23;40735:32;40732:119;;;40770:79;;:::i;:::-;40732:119;40890:1;40915:64;40971:7;40962:6;40951:9;40947:22;40915:64;:::i;:::-;40905:74;;40861:128;40645:351;;;;:::o;41002:85::-;41047:7;41076:5;41065:16;;41002:85;;;:::o;41093:158::-;41151:9;41184:61;41202:42;41211:32;41237:5;41211:32;:::i;:::-;41202:42;:::i;:::-;41184:61;:::i;:::-;41171:74;;41093:158;;;:::o;41257:147::-;41352:45;41391:5;41352:45;:::i;:::-;41347:3;41340:58;41257:147;;:::o;41410:114::-;41477:6;41511:5;41505:12;41495:22;;41410:114;;;:::o;41530:184::-;41629:11;41663:6;41658:3;41651:19;41703:4;41698:3;41694:14;41679:29;;41530:184;;;;:::o;41720:132::-;41787:4;41810:3;41802:11;;41840:4;41835:3;41831:14;41823:22;;41720:132;;;:::o;41858:108::-;41935:24;41953:5;41935:24;:::i;:::-;41930:3;41923:37;41858:108;;:::o;41972:179::-;42041:10;42062:46;42104:3;42096:6;42062:46;:::i;:::-;42140:4;42135:3;42131:14;42117:28;;41972:179;;;;:::o;42157:113::-;42227:4;42259;42254:3;42250:14;42242:22;;42157:113;;;:::o;42306:732::-;42425:3;42454:54;42502:5;42454:54;:::i;:::-;42524:86;42603:6;42598:3;42524:86;:::i;:::-;42517:93;;42634:56;42684:5;42634:56;:::i;:::-;42713:7;42744:1;42729:284;42754:6;42751:1;42748:13;42729:284;;;42830:6;42824:13;42857:63;42916:3;42901:13;42857:63;:::i;:::-;42850:70;;42943:60;42996:6;42943:60;:::i;:::-;42933:70;;42789:224;42776:1;42773;42769:9;42764:14;;42729:284;;;42733:14;43029:3;43022:10;;42430:608;;;42306:732;;;;:::o;43044:831::-;43307:4;43345:3;43334:9;43330:19;43322:27;;43359:71;43427:1;43416:9;43412:17;43403:6;43359:71;:::i;:::-;43440:80;43516:2;43505:9;43501:18;43492:6;43440:80;:::i;:::-;43567:9;43561:4;43557:20;43552:2;43541:9;43537:18;43530:48;43595:108;43698:4;43689:6;43595:108;:::i;:::-;43587:116;;43713:72;43781:2;43770:9;43766:18;43757:6;43713:72;:::i;:::-;43795:73;43863:3;43852:9;43848:19;43839:6;43795:73;:::i;:::-;43044:831;;;;;;;;:::o

Swarm Source

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