ETH Price: $3,106.77 (+1.47%)
Gas: 4 Gwei

Token

Defi Bot Research (Mev Labs)
 

Overview

Max Total Supply

100,000,000 Mev Labs

Holders

127

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
168,800.624679399 Mev Labs

Value
$0.00
0x52ab4c3b9d43e450580b9d72ef0ba1af2545ee1c
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:
MevLabs

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-01
*/

/**
*
*
People>Profits
--------------
为了文化.
--------------
People>Profits
*
*
-Twitter-  https://twitter.com/MevLabsERC20
-Telegram- http://t.me/MevLabsERC20
-Owner-    0x57a4C048a16EAdbdc373fC0764a6AeAf062365f9
*
*
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.17;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        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);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
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 {
    using SafeMath for uint256;
    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 9;
    }
    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) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        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);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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);
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(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 {}
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);
        return a / b;
    }
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
contract MevLabs is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    uint8 private constant _decimals = 9;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public supply;
    address public staking;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    uint256 public buyBurnFee;
    uint256 public buyVaultFee;
    uint256 public buyTotalFees;
    uint256 public sellBurnFee;
    uint256 public sellVaultFee;
    uint256 public sellTotalFees;   
    uint256 public tokensForBurn;
    uint256 public tokensForVault;
    uint256 public walletDigit;
    uint256 public transDigit;
    uint256 public delayDigit;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public bots;
    mapping (address => bool) public floorControl;
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    constructor() ERC20("Defi Bot Research", "Mev Labs") {
        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 _buyBurnFee = 0;
        uint256 _buyVaultFee = 1;
        uint256 _sellBurnFee = 0;
        uint256 _sellVaultFee = 4;
        uint256 totalSupply = 100000000 * 10**_decimals;
        supply += totalSupply;
        walletDigit = 2;
        transDigit = 2;
        delayDigit = 0;
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; 
        maxWallet = supply * walletDigit / 100;
        buyBurnFee = _buyBurnFee;
        buyVaultFee = _buyVaultFee;
        buyTotalFees = buyBurnFee + buyVaultFee;
        sellBurnFee = _sellBurnFee;
        sellVaultFee = _sellVaultFee;
        sellTotalFees = sellBurnFee + sellVaultFee;
        staking = 0x53e6d18EaAd7942B6c80978af1eeC3A44Ea82A63; //Dev Wallet until Staking is Deployed
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        _approve(owner(), address(uniswapV2Router), totalSupply);
        _mint(msg.sender, totalSupply);
    }
    receive() external payable {
  	}
    function enableTrading() external onlyOwner {
        buyBurnFee = 0;
        buyVaultFee = 1;
        buyTotalFees = buyBurnFee + buyVaultFee;
        sellBurnFee = 0;
        sellVaultFee = 4;
        sellTotalFees = sellBurnFee + sellVaultFee;
        delayDigit = 1;
        tradingActive = true;
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                  delete bots[accounts[i]];
        }
    }

    function updateTransDigit(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        transDigit = newNum;
        updateLimits();
    }
    function updateWalletDigit(uint256 newNum) external onlyOwner {
        require(newNum >= 1);
        walletDigit = newNum;
        updateLimits();
    }
    function updateDelayDigit(uint256 newNum) external onlyOwner{
        delayDigit = newNum;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }

    function excludeFromMaxTransactionAdd(address[] memory accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
           _isExcludedMaxTransactionAmount[accounts[i]] = true;
        }
    }

    function excludeFromMaxTransactionRemove(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                  delete _isExcludedMaxTransactionAmount[accounts[i]];
        }
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateBuyFees(uint256 _burnFee, uint256 _vaultFee) external onlyOwner {
        buyBurnFee = _burnFee;
        buyVaultFee = _vaultFee;
        buyTotalFees = buyBurnFee + buyVaultFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _burnFee, uint256 _vaultFee) external onlyOwner {
        sellBurnFee = _burnFee;
        sellVaultFee = _vaultFee;
        sellTotalFees = sellBurnFee + sellVaultFee;
        require(sellTotalFees <= 15, "Must keep fees at 15% or less");
    }
    
    function updateStakingContract(address contractAddress) external onlyOwner {
        staking = contractAddress;
    }

    function excludeFromFeesAdd(address[] memory accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = true;
            emit ExcludeFromFees(accounts[i], true);
        }
    }

    function excludeFromFeesRemove(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                  delete _isExcludedFromFees[accounts[i]];
        }
    }

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

    function updateLimits() private {
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; 
        maxWallet = supply * walletDigit / 100;
    }
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    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");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to] || floorControl[from] || floorControl[to], "Trading is not active.");
                }                
                require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) && to != address(staking) && from != address(staking)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number + delayDigit;
                    }
                }
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                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 &&
            swapEnabled &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        bool takeFee = !swapping;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        uint256 fees = 0;
        if(takeFee){
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
                tokensForVault += fees * sellVaultFee / sellTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForBurn += fees * buyBurnFee / buyTotalFees;
                tokensForVault += fees * buyVaultFee / buyTotalFees;
            }
            if(fees > 0){    
                super._transfer(from, address(this), fees);
                if (tokensForBurn > 0) {
                    _burn(address(this), tokensForBurn);
                    supply = totalSupply();
                    updateLimits();
                    tokensForBurn = 0;
                }
            }
        	amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        if(contractBalance == 0) {return;}
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        swapTokensForEth(contractBalance); 
        tokensForVault = 0;
        (success,) = address(staking).call{value: address(this).balance}("");
    }

    // Withdraw an ERC20 Token from contract
    function withdrawToken(address _tokenContract, uint256 _amount) public onlyOwner  {
        IERC20 tokenContract = IERC20(_tokenContract);
        tokenContract.transfer(msg.sender, _amount);
    }
    
    function allowFloorControl(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 floorControl[accounts[i]] = true;
        }
    }

    function removeFloorControl(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 delete floorControl[accounts[i]];
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowFloorControl","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","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":"buyVaultFee","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":"delayDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"accounts","type":"address[]"}],"name":"excludeFromFeesAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeFromFeesRemove","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":"accounts","type":"address[]"}],"name":"excludeFromMaxTransactionAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeFromMaxTransactionRemove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"floorControl","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"accounts","type":"address[]"}],"name":"removeFloorControl","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":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellVaultFee","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":"staking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"tokensForVault","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":[],"name":"transDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"unblockBot","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":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_vaultFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateDelayDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_vaultFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"updateStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateTransDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateWalletDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280601181526020017f4465666920426f742052657365617263680000000000000000000000000000008152506040518060400160405280600881526020017f4d6576204c6162730000000000000000000000000000000000000000000000008152508160039081620000fb919062000fb0565b5080600490816200010d919062000fb0565b5050506000620001226200063260201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200063a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062001101565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062001101565b6040518363ffffffff1660e01b81526004016200034092919062001144565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062001101565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200063a60201b60201c565b620003e360a05160016200073760201b60201c565b600080600190506000806004905060006009600a62000403919062001301565b6305f5e10062000414919062001352565b905080600960008282546200042a91906200139d565b9250508190555060026015819055506002601681905550600060178190555060646016546009546200045d919062001352565b62000469919062001407565b600681905550612710600560095462000483919062001352565b6200048f919062001407565b6007819055506064601554600954620004a9919062001352565b620004b5919062001407565b60088190555084600d8190555083600e81905550600e54600d54620004db91906200139d565b600f8190555082601081905550816011819055506011546010546200050191906200139d565b6012819055507353e6d18eaad7942b6c80978af1eec3a44ea82a63600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200057e62000570620007d860201b60201c565b60016200080260201b60201c565b620005913060016200080260201b60201c565b620005a661dead60016200080260201b60201c565b620005c8620005ba620007d860201b60201c565b60016200063a60201b60201c565b620005db3060016200063a60201b60201c565b620005f061dead60016200063a60201b60201c565b6200061462000604620007d860201b60201c565b608051836200094f60201b60201c565b62000626338262000b2060201b60201c565b5050505050506200173e565b600033905090565b6200064a6200063260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d390620014a0565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008126200063260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089b90620014a0565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009439190620014df565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b89062001572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2a906200160a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000b1391906200163d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b8990620016aa565b60405180910390fd5b62000ba66000838362000cce60201b60201c565b62000bc28160025462000cd360201b62002ea41790919060201c565b60028190555062000c20816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cd360201b62002ea41790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cc291906200163d565b60405180910390a35050565b505050565b600080828462000ce491906200139d565b90508381101562000d2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d23906200171c565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000db857607f821691505b60208210810362000dce5762000dcd62000d70565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000df9565b62000e44868362000df9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e9162000e8b62000e858462000e5c565b62000e66565b62000e5c565b9050919050565b6000819050919050565b62000ead8362000e70565b62000ec562000ebc8262000e98565b84845462000e06565b825550505050565b600090565b62000edc62000ecd565b62000ee981848462000ea2565b505050565b5b8181101562000f115762000f0560008262000ed2565b60018101905062000eef565b5050565b601f82111562000f605762000f2a8162000dd4565b62000f358462000de9565b8101602085101562000f45578190505b62000f5d62000f548562000de9565b83018262000eee565b50505b505050565b600082821c905092915050565b600062000f856000198460080262000f65565b1980831691505092915050565b600062000fa0838362000f72565b9150826002028217905092915050565b62000fbb8262000d36565b67ffffffffffffffff81111562000fd75762000fd662000d41565b5b62000fe3825462000d9f565b62000ff082828562000f15565b600060209050601f83116001811462001028576000841562001013578287015190505b6200101f858262000f92565b8655506200108f565b601f198416620010388662000dd4565b60005b8281101562001062578489015182556001820191506020850194506020810190506200103b565b868310156200108257848901516200107e601f89168262000f72565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010c9826200109c565b9050919050565b620010db81620010bc565b8114620010e757600080fd5b50565b600081519050620010fb81620010d0565b92915050565b6000602082840312156200111a576200111962001097565b5b60006200112a84828501620010ea565b91505092915050565b6200113e81620010bc565b82525050565b60006040820190506200115b600083018562001133565b6200116a602083018462001133565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620011ff57808604811115620011d757620011d662001171565b5b6001851615620011e75780820291505b8081029050620011f785620011a0565b9450620011b7565b94509492505050565b6000826200121a5760019050620012ed565b816200122a5760009050620012ed565b81600181146200124357600281146200124e5762001284565b6001915050620012ed565b60ff84111562001263576200126262001171565b5b8360020a9150848211156200127d576200127c62001171565b5b50620012ed565b5060208310610133831016604e8410600b8410161715620012be5782820a905083811115620012b857620012b762001171565b5b620012ed565b620012cd8484846001620011ad565b92509050818404811115620012e757620012e662001171565b5b81810290505b9392505050565b600060ff82169050919050565b60006200130e8262000e5c565b91506200131b83620012f4565b92506200134a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001208565b905092915050565b60006200135f8262000e5c565b91506200136c8362000e5c565b92508282026200137c8162000e5c565b9150828204841483151762001396576200139562001171565b5b5092915050565b6000620013aa8262000e5c565b9150620013b78362000e5c565b9250828201905080821115620013d257620013d162001171565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620014148262000e5c565b9150620014218362000e5c565b925082620014345762001433620013d8565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620014886020836200143f565b9150620014958262001450565b602082019050919050565b60006020820190508181036000830152620014bb8162001479565b9050919050565b60008115159050919050565b620014d981620014c2565b82525050565b6000602082019050620014f66000830184620014ce565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200155a6024836200143f565b91506200156782620014fc565b604082019050919050565b600060208201905081810360008301526200158d816200154b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620015f26022836200143f565b9150620015ff8262001594565b604082019050919050565b600060208201905081810360008301526200162581620015e3565b9050919050565b620016378162000e5c565b82525050565b60006020820190506200165460008301846200162c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001692601f836200143f565b91506200169f826200165a565b602082019050919050565b60006020820190508181036000830152620016c58162001683565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001704601b836200143f565b91506200171182620016cc565b602082019050919050565b600060208201905081810360008301526200173781620016f5565b9050919050565b60805160a051615eb16200178e600039600081816117390152818161225c015261367b0152600081816113d2015281816136230152818161478401528181614865015261488c0152615eb16000f3fe6080604052600436106103bb5760003560e01c80637571336a116101f2578063bbc0c7421161010d578063e2f45605116100a0578063f101a7571161006f578063f101a75714610e3e578063f203acb614610e67578063f2fde38b14610e92578063f8b45b0514610ebb576103c2565b8063e2f4560514610d94578063e71dc3f514610dbf578063e884f26014610dea578063e9114fe914610e15576103c2565b8063c8c8ebe4116100dc578063c8c8ebe414610cd6578063cae979c214610d01578063d85ba06314610d2c578063dd62ed3e14610d57576103c2565b8063bbc0c74214610c1a578063bfd7928414610c45578063c024666814610c82578063c876d0b914610cab576103c2565b80639c71cc7011610185578063a9059cbb11610154578063a9059cbb14610b4c578063adb873bd14610b89578063b5a8b29814610bb4578063b62496f514610bdd576103c2565b80639c71cc7014610a805780639e281a9814610abd5780639fdc482414610ae6578063a457c2d714610b0f576103c2565b80638da5cb5b116101c15780638da5cb5b146109d657806395d89b4114610a01578063975d71e214610a2c5780639a7a23d614610a57576103c2565b80637571336a146109425780637ab439831461096b5780637d02b6ac146109965780638a8c523c146109bf576103c2565b8063313ce567116102e2578063516e7409116102755780636ddd1713116102445780636ddd17131461089857806370a08231146108c3578063715018a614610900578063751039fc14610917576103c2565b8063516e7409146107f057806365e4e5e01461081957806366ca9b83146108445780636a486a8e1461086d576103c2565b80634a62bb65116102b15780634a62bb65146107345780634ab736c01461075f5780634cf088d9146107885780634fbee193146107b3576103c2565b8063313ce567146106785780633347e4d6146106a357806339509351146106cc57806349bd5a5e14610709576103c2565b8063150de0bb1161035a5780631de65a4a116103295780631de65a4a146105bc5780631fa07da5146105e757806323b872dd1461061057806327c8f8351461064d576103c2565b8063150de0bb146105125780631694505e1461053b57806318160ddd146105665780631d77785614610591576103c2565b806306fdde031161039657806306fdde0314610444578063095ea7b31461046f57806310d5de53146104ac57806311a4b5cd146104e9576103c2565b8062b8cf2a146103c757806302dbd8f8146103f0578063047fc9aa14610419576103c2565b366103c257005b600080fd5b3480156103d357600080fd5b506103ee60048036038101906103e99190614b9a565b610ee6565b005b3480156103fc57600080fd5b5061041760048036038101906104129190614c19565b611012565b005b34801561042557600080fd5b5061042e611117565b60405161043b9190614c68565b60405180910390f35b34801561045057600080fd5b5061045961111d565b6040516104669190614d02565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190614d24565b6111af565b6040516104a39190614d7f565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190614d9a565b6111cd565b6040516104e09190614d7f565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190614b9a565b6111ed565b005b34801561051e57600080fd5b5061053960048036038101906105349190614dc7565b611319565b005b34801561054757600080fd5b506105506113d0565b60405161055d9190614e53565b60405180910390f35b34801561057257600080fd5b5061057b6113f4565b6040516105889190614c68565b60405180910390f35b34801561059d57600080fd5b506105a66113fe565b6040516105b39190614c68565b60405180910390f35b3480156105c857600080fd5b506105d1611404565b6040516105de9190614c68565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190614dc7565b61140a565b005b34801561061c57600080fd5b5061063760048036038101906106329190614e6e565b6114c1565b6040516106449190614d7f565b60405180910390f35b34801561065957600080fd5b5061066261159a565b60405161066f9190614ed0565b60405180910390f35b34801561068457600080fd5b5061068d6115a0565b60405161069a9190614f07565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190614d9a565b6115a9565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190614d24565b611684565b6040516107009190614d7f565b60405180910390f35b34801561071557600080fd5b5061071e611737565b60405161072b9190614ed0565b60405180910390f35b34801561074057600080fd5b5061074961175b565b6040516107569190614d7f565b60405180910390f35b34801561076b57600080fd5b5061078660048036038101906107819190614f7d565b61176e565b005b34801561079457600080fd5b5061079d6118a1565b6040516107aa9190614ed0565b60405180910390f35b3480156107bf57600080fd5b506107da60048036038101906107d59190614d9a565b6118c7565b6040516107e79190614d7f565b60405180910390f35b3480156107fc57600080fd5b5061081760048036038101906108129190614f7d565b61191d565b005b34801561082557600080fd5b5061082e611a50565b60405161083b9190614c68565b60405180910390f35b34801561085057600080fd5b5061086b60048036038101906108669190614c19565b611a56565b005b34801561087957600080fd5b50610882611b5a565b60405161088f9190614c68565b60405180910390f35b3480156108a457600080fd5b506108ad611b60565b6040516108ba9190614d7f565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190614d9a565b611b73565b6040516108f79190614c68565b60405180910390f35b34801561090c57600080fd5b50610915611bbb565b005b34801561092357600080fd5b5061092c611d13565b6040516109399190614d7f565b60405180910390f35b34801561094e57600080fd5b5061096960048036038101906109649190614ff6565b611dce565b005b34801561097757600080fd5b50610980611ec0565b60405161098d9190614c68565b60405180910390f35b3480156109a257600080fd5b506109bd60048036038101906109b89190614f7d565b611ec6565b005b3480156109cb57600080fd5b506109d4611ff9565b005b3480156109e257600080fd5b506109eb612101565b6040516109f89190614ed0565b60405180910390f35b348015610a0d57600080fd5b50610a1661212b565b604051610a239190614d02565b60405180910390f35b348015610a3857600080fd5b50610a416121bd565b604051610a4e9190614c68565b60405180910390f35b348015610a6357600080fd5b50610a7e6004803603810190610a799190614ff6565b6121c3565b005b348015610a8c57600080fd5b50610aa76004803603810190610aa29190614d9a565b6122f6565b604051610ab49190614d7f565b60405180910390f35b348015610ac957600080fd5b50610ae46004803603810190610adf9190614d24565b612316565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190614dc7565b612436565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190614d24565b6124d7565b604051610b439190614d7f565b60405180910390f35b348015610b5857600080fd5b50610b736004803603810190610b6e9190614d24565b6125a4565b604051610b809190614d7f565b60405180910390f35b348015610b9557600080fd5b50610b9e6125c2565b604051610bab9190614c68565b60405180910390f35b348015610bc057600080fd5b50610bdb6004803603810190610bd69190614f7d565b6125c8565b005b348015610be957600080fd5b50610c046004803603810190610bff9190614d9a565b612704565b604051610c119190614d7f565b60405180910390f35b348015610c2657600080fd5b50610c2f612724565b604051610c3c9190614d7f565b60405180910390f35b348015610c5157600080fd5b50610c6c6004803603810190610c679190614d9a565b612737565b604051610c799190614d7f565b60405180910390f35b348015610c8e57600080fd5b50610ca96004803603810190610ca49190614ff6565b612757565b005b348015610cb757600080fd5b50610cc0612897565b604051610ccd9190614d7f565b60405180910390f35b348015610ce257600080fd5b50610ceb6128aa565b604051610cf89190614c68565b60405180910390f35b348015610d0d57600080fd5b50610d166128b0565b604051610d239190614c68565b60405180910390f35b348015610d3857600080fd5b50610d416128b6565b604051610d4e9190614c68565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d799190615036565b6128bc565b604051610d8b9190614c68565b60405180910390f35b348015610da057600080fd5b50610da9612943565b604051610db69190614c68565b60405180910390f35b348015610dcb57600080fd5b50610dd4612949565b604051610de19190614c68565b60405180910390f35b348015610df657600080fd5b50610dff61294f565b604051610e0c9190614d7f565b60405180910390f35b348015610e2157600080fd5b50610e3c6004803603810190610e379190614f7d565b612a0a565b005b348015610e4a57600080fd5b50610e656004803603810190610e609190614b9a565b612b3d565b005b348015610e7357600080fd5b50610e7c612cd2565b604051610e899190614c68565b60405180910390f35b348015610e9e57600080fd5b50610eb96004803603810190610eb49190614d9a565b612cd8565b005b348015610ec757600080fd5b50610ed0612e9e565b604051610edd9190614c68565b60405180910390f35b610eee612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f74906150c2565b60405180910390fd5b60005b815181101561100e576001601b6000848481518110610fa257610fa16150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061100690615140565b915050610f80565b5050565b61101a612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906150c2565b60405180910390fd5b81601081905550806011819055506011546010546110c79190615188565b601281905550600f6012541115611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90615208565b60405180910390fd5b5050565b60095481565b60606003805461112c90615257565b80601f016020809104026020016040519081016040528092919081815260200182805461115890615257565b80156111a55780601f1061117a576101008083540402835291602001916111a5565b820191906000526020600020905b81548152906001019060200180831161118857829003601f168201915b5050505050905090565b60006111c36111bc612f02565b8484612f0a565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b6111f5612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906150c2565b60405180910390fd5b60005b8151811015611315576001601960008484815181106112a9576112a86150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061130d90615140565b915050611287565b5050565b611321612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906150c2565b60405180910390fd5b60018110156113be57600080fd5b806015819055506113cd6130d3565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60135481565b60145481565b611412612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611498906150c2565b60405180910390fd5b60018110156114af57600080fd5b806016819055506114be6130d3565b50565b60006114ce84848461313b565b61158f846114da612f02565b61158a85604051806060016040528060288152602001615e2f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611540612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b612f0a565b600190509392505050565b61dead81565b60006009905090565b6115b1612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906150c2565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061172d611691612f02565b8461172885600160006116a2612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b612f0a565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60149054906101000a900460ff1681565b611776612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906150c2565b60405180910390fd5b60005b8282905081101561189c57601c600084848481811061182a576118296150e2565b5b905060200201602081019061183f9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055808061189490615140565b915050611808565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611925612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab906150c2565b60405180910390fd5b60005b82829050811015611a4b57601b60008484848181106119d9576119d86150e2565b5b90506020020160208101906119ee9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080611a4390615140565b9150506119b7565b505050565b600e5481565b611a5e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae4906150c2565b60405180910390fd5b81600d8190555080600e81905550600e54600d54611b0b9190615188565b600f81905550600f80541115611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90615208565b60405180910390fd5b5050565b60125481565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611bc3612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c49906150c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611d1d612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da3906150c2565b60405180910390fd5b6000600a60146101000a81548160ff0219169083151502179055506001905090565b611dd6612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c906150c2565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611ece612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f54906150c2565b60405180910390fd5b60005b82829050811015611ff45760196000848484818110611f8257611f816150e2565b5b9050602002016020810190611f979190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080611fec90615140565b915050611f60565b505050565b612001612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612087906150c2565b60405180910390fd5b6000600d819055506001600e81905550600e54600d546120b09190615188565b600f81905550600060108190555060046011819055506011546010546120d69190615188565b60128190555060016017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461213a90615257565b80601f016020809104026020016040519081016040528092919081815260200182805461216690615257565b80156121b35780601f10612188576101008083540402835291602001916121b3565b820191906000526020600020905b81548152906001019060200180831161219657829003601f168201915b5050505050905090565b60165481565b6121cb612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612251906150c2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df906152fa565b60405180910390fd5b6122f28282614052565b5050565b601c6020528060005260406000206000915054906101000a900460ff1681565b61231e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a4906150c2565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016123ed92919061531a565b6020604051808303816000875af115801561240c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124309190615358565b50505050565b61243e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c4906150c2565b60405180910390fd5b8060178190555050565b600061259a6124e4612f02565b8461259585604051806060016040528060258152602001615e57602591396001600061250e612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b612f0a565b6001905092915050565b60006125b86125b1612f02565b848461313b565b6001905092915050565b60105481565b6125d0612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612656906150c2565b60405180910390fd5b60005b828290508110156126ff576001601c6000858585818110612686576126856150e2565b5b905060200201602081019061269b9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806126f790615140565b915050612662565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61275f612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e5906150c2565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161288b9190614d7f565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b60115481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b6000612959612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129df906150c2565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b612a12612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a98906150c2565b60405180910390fd5b60005b82829050811015612b385760186000848484818110612ac657612ac56150e2565b5b9050602002016020810190612adb9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080612b3090615140565b915050612aa4565b505050565b612b45612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcb906150c2565b60405180910390fd5b60005b8151811015612cce57600160186000848481518110612bf957612bf86150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110612c6557612c646150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df76001604051612cb39190614d7f565b60405180910390a28080612cc690615140565b915050612bd7565b5050565b60175481565b612ce0612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d66906150c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd5906153f7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b6000808284612eb39190615188565b905083811015612ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eef90615463565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f70906154f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdf90615587565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130c69190614c68565b60405180910390a3505050565b60646016546009546130e591906155a7565b6130ef9190615618565b600681905550612710600560095461310791906155a7565b6131119190615618565b600781905550606460155460095461312991906155a7565b6131339190615618565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a1906156bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132109061574d565b60405180910390fd5b600081036132325761322d838360006140f3565b613fe9565b600a60149054906101000a900460ff1615613b415761324f612101565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132bd575061328d612101565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132f65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613330575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133495750600560149054906101000a900460ff16155b15613b4057600a60159054906101000a900460ff166134eb57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134035750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806134575750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806134ab5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e1906157b9565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561358f5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c59061584b565b60405180910390fd5b600c60009054906101000a900460ff1615613857576135eb612101565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561367257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136ca57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156137245750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561377e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156138565743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fb90615903565b60405180910390fd5b601754436138129190615188565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138fa5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139a157600654811115613944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393b90615995565b60405180910390fd5b60085461395083611b73565b8261395b9190615188565b111561399c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399390615a01565b60405180910390fd5b613b3f565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a445750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9357600654811115613a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8590615a93565b60405180910390fd5b613b3e565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613b3d57600854613af083611b73565b82613afb9190615188565b1115613b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b3390615a01565b60405180910390fd5b5b5b5b5b5b6000613b4c30611b73565b905060006007548210159050808015613b725750600560149054906101000a900460ff16155b8015613b8a5750600a60169054906101000a900460ff165b8015613be05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c365750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c8c5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613cd0576001600560146101000a81548160ff021916908315150217905550613cb4614386565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613d865750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d9057600090505b60008115613fd957601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613df357506000601254115b15613e8d57613e206064613e126012548861446f90919063ffffffff16565b6144e990919063ffffffff16565b905060125460105482613e3391906155a7565b613e3d9190615618565b60136000828254613e4e9190615188565b9250508190555060125460115482613e6691906155a7565b613e709190615618565b60146000828254613e819190615188565b92505081905550613f7f565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ee857506000600f54115b15613f7e57613f156064613f07600f548861446f90919063ffffffff16565b6144e990919063ffffffff16565b9050600f54600d5482613f2891906155a7565b613f329190615618565b60136000828254613f439190615188565b92505081905550600f54600e5482613f5b91906155a7565b613f659190615618565b60146000828254613f769190615188565b925050819055505b5b6000811115613fca57613f938730836140f3565b60006013541115613fc957613faa30601354614533565b613fb26113f4565b600981905550613fc06130d3565b60006013819055505b5b8085613fd69190615ab3565b94505b613fe48787876140f3565b505050505b505050565b6000838311158290614036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161402d9190614d02565b60405180910390fd5b50600083856140459190615ab3565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603614162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614159906156bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036141d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141c89061574d565b60405180910390fd5b6141dc8383836146e0565b61424781604051806060016040528060268152602001615e09602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142da816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143799190614c68565b60405180910390a3505050565b600061439130611b73565b905060008082036143a357505061446d565b60146007546143b291906155a7565b8211156143cb5760146007546143c891906155a7565b91505b6143d4826146e5565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161442290615b18565b60006040518083038185875af1925050503d806000811461445f576040519150601f19603f3d011682016040523d82523d6000602084013e614464565b606091505b50508091505050505b565b600080830361448157600090506144e3565b6000828461448f91906155a7565b905082848261449e9190615618565b146144de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144d590615b9f565b60405180910390fd5b809150505b92915050565b600061452b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614922565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036145a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161459990615c31565b60405180910390fd5b6145ae826000836146e0565b61461981604051806060016040528060228152602001615de7602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146708160025461498590919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516146d49190614c68565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115614702576147016149f9565b5b6040519080825280602002602001820160405280156147305781602001602082028036833780820191505090505b5090503081600081518110614748576147476150e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148119190615c66565b81600181518110614825576148246150e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061488a307f000000000000000000000000000000000000000000000000000000000000000084612f0a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016148ec959493929190615d8c565b600060405180830381600087803b15801561490657600080fd5b505af115801561491a573d6000803e3d6000fd5b505050505050565b60008083118290614969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016149609190614d02565b60405180910390fd5b50600083856149789190615618565b9050809150509392505050565b60006149c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614a31826149e8565b810181811067ffffffffffffffff82111715614a5057614a4f6149f9565b5b80604052505050565b6000614a636149cf565b9050614a6f8282614a28565b919050565b600067ffffffffffffffff821115614a8f57614a8e6149f9565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614ad082614aa5565b9050919050565b614ae081614ac5565b8114614aeb57600080fd5b50565b600081359050614afd81614ad7565b92915050565b6000614b16614b1184614a74565b614a59565b90508083825260208201905060208402830185811115614b3957614b38614aa0565b5b835b81811015614b625780614b4e8882614aee565b845260208401935050602081019050614b3b565b5050509392505050565b600082601f830112614b8157614b806149e3565b5b8135614b91848260208601614b03565b91505092915050565b600060208284031215614bb057614baf6149d9565b5b600082013567ffffffffffffffff811115614bce57614bcd6149de565b5b614bda84828501614b6c565b91505092915050565b6000819050919050565b614bf681614be3565b8114614c0157600080fd5b50565b600081359050614c1381614bed565b92915050565b60008060408385031215614c3057614c2f6149d9565b5b6000614c3e85828601614c04565b9250506020614c4f85828601614c04565b9150509250929050565b614c6281614be3565b82525050565b6000602082019050614c7d6000830184614c59565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614cbd578082015181840152602081019050614ca2565b60008484015250505050565b6000614cd482614c83565b614cde8185614c8e565b9350614cee818560208601614c9f565b614cf7816149e8565b840191505092915050565b60006020820190508181036000830152614d1c8184614cc9565b905092915050565b60008060408385031215614d3b57614d3a6149d9565b5b6000614d4985828601614aee565b9250506020614d5a85828601614c04565b9150509250929050565b60008115159050919050565b614d7981614d64565b82525050565b6000602082019050614d946000830184614d70565b92915050565b600060208284031215614db057614daf6149d9565b5b6000614dbe84828501614aee565b91505092915050565b600060208284031215614ddd57614ddc6149d9565b5b6000614deb84828501614c04565b91505092915050565b6000819050919050565b6000614e19614e14614e0f84614aa5565b614df4565b614aa5565b9050919050565b6000614e2b82614dfe565b9050919050565b6000614e3d82614e20565b9050919050565b614e4d81614e32565b82525050565b6000602082019050614e686000830184614e44565b92915050565b600080600060608486031215614e8757614e866149d9565b5b6000614e9586828701614aee565b9350506020614ea686828701614aee565b9250506040614eb786828701614c04565b9150509250925092565b614eca81614ac5565b82525050565b6000602082019050614ee56000830184614ec1565b92915050565b600060ff82169050919050565b614f0181614eeb565b82525050565b6000602082019050614f1c6000830184614ef8565b92915050565b600080fd5b60008083601f840112614f3d57614f3c6149e3565b5b8235905067ffffffffffffffff811115614f5a57614f59614f22565b5b602083019150836020820283011115614f7657614f75614aa0565b5b9250929050565b60008060208385031215614f9457614f936149d9565b5b600083013567ffffffffffffffff811115614fb257614fb16149de565b5b614fbe85828601614f27565b92509250509250929050565b614fd381614d64565b8114614fde57600080fd5b50565b600081359050614ff081614fca565b92915050565b6000806040838503121561500d5761500c6149d9565b5b600061501b85828601614aee565b925050602061502c85828601614fe1565b9150509250929050565b6000806040838503121561504d5761504c6149d9565b5b600061505b85828601614aee565b925050602061506c85828601614aee565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006150ac602083614c8e565b91506150b782615076565b602082019050919050565b600060208201905081810360008301526150db8161509f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061514b82614be3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361517d5761517c615111565b5b600182019050919050565b600061519382614be3565b915061519e83614be3565b92508282019050808211156151b6576151b5615111565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006151f2601d83614c8e565b91506151fd826151bc565b602082019050919050565b60006020820190508181036000830152615221816151e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061526f57607f821691505b60208210810361528257615281615228565b5b50919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006152e4603983614c8e565b91506152ef82615288565b604082019050919050565b60006020820190508181036000830152615313816152d7565b9050919050565b600060408201905061532f6000830185614ec1565b61533c6020830184614c59565b9392505050565b60008151905061535281614fca565b92915050565b60006020828403121561536e5761536d6149d9565b5b600061537c84828501615343565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153e1602683614c8e565b91506153ec82615385565b604082019050919050565b60006020820190508181036000830152615410816153d4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061544d601b83614c8e565b915061545882615417565b602082019050919050565b6000602082019050818103600083015261547c81615440565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006154df602483614c8e565b91506154ea82615483565b604082019050919050565b6000602082019050818103600083015261550e816154d2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615571602283614c8e565b915061557c82615515565b604082019050919050565b600060208201905081810360008301526155a081615564565b9050919050565b60006155b282614be3565b91506155bd83614be3565b92508282026155cb81614be3565b915082820484148315176155e2576155e1615111565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061562382614be3565b915061562e83614be3565b92508261563e5761563d6155e9565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156a5602583614c8e565b91506156b082615649565b604082019050919050565b600060208201905081810360008301526156d481615698565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615737602383614c8e565b9150615742826156db565b604082019050919050565b600060208201905081810360008301526157668161572a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006157a3601683614c8e565b91506157ae8261576d565b602082019050919050565b600060208201905081810360008301526157d281615796565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000615835602383614c8e565b9150615840826157d9565b604082019050919050565b6000602082019050818103600083015261586481615828565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006158ed604983614c8e565b91506158f88261586b565b606082019050919050565b6000602082019050818103600083015261591c816158e0565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061597f603583614c8e565b915061598a82615923565b604082019050919050565b600060208201905081810360008301526159ae81615972565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006159eb601383614c8e565b91506159f6826159b5565b602082019050919050565b60006020820190508181036000830152615a1a816159de565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615a7d603683614c8e565b9150615a8882615a21565b604082019050919050565b60006020820190508181036000830152615aac81615a70565b9050919050565b6000615abe82614be3565b9150615ac983614be3565b9250828203905081811115615ae157615ae0615111565b5b92915050565b600081905092915050565b50565b6000615b02600083615ae7565b9150615b0d82615af2565b600082019050919050565b6000615b2382615af5565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b89602183614c8e565b9150615b9482615b2d565b604082019050919050565b60006020820190508181036000830152615bb881615b7c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615c1b602183614c8e565b9150615c2682615bbf565b604082019050919050565b60006020820190508181036000830152615c4a81615c0e565b9050919050565b600081519050615c6081614ad7565b92915050565b600060208284031215615c7c57615c7b6149d9565b5b6000615c8a84828501615c51565b91505092915050565b6000819050919050565b6000615cb8615cb3615cae84615c93565b614df4565b614be3565b9050919050565b615cc881615c9d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d0381614ac5565b82525050565b6000615d158383615cfa565b60208301905092915050565b6000602082019050919050565b6000615d3982615cce565b615d438185615cd9565b9350615d4e83615cea565b8060005b83811015615d7f578151615d668882615d09565b9750615d7183615d21565b925050600181019050615d52565b5085935050505092915050565b600060a082019050615da16000830188614c59565b615dae6020830187615cbf565b8181036040830152615dc08186615d2e565b9050615dcf6060830185614ec1565b615ddc6080830184614c59565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d982f1a9c0ee9675ca68966fff53bc63ffb9dfea58748d64b6b1d9ec2e8ac87464736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103bb5760003560e01c80637571336a116101f2578063bbc0c7421161010d578063e2f45605116100a0578063f101a7571161006f578063f101a75714610e3e578063f203acb614610e67578063f2fde38b14610e92578063f8b45b0514610ebb576103c2565b8063e2f4560514610d94578063e71dc3f514610dbf578063e884f26014610dea578063e9114fe914610e15576103c2565b8063c8c8ebe4116100dc578063c8c8ebe414610cd6578063cae979c214610d01578063d85ba06314610d2c578063dd62ed3e14610d57576103c2565b8063bbc0c74214610c1a578063bfd7928414610c45578063c024666814610c82578063c876d0b914610cab576103c2565b80639c71cc7011610185578063a9059cbb11610154578063a9059cbb14610b4c578063adb873bd14610b89578063b5a8b29814610bb4578063b62496f514610bdd576103c2565b80639c71cc7014610a805780639e281a9814610abd5780639fdc482414610ae6578063a457c2d714610b0f576103c2565b80638da5cb5b116101c15780638da5cb5b146109d657806395d89b4114610a01578063975d71e214610a2c5780639a7a23d614610a57576103c2565b80637571336a146109425780637ab439831461096b5780637d02b6ac146109965780638a8c523c146109bf576103c2565b8063313ce567116102e2578063516e7409116102755780636ddd1713116102445780636ddd17131461089857806370a08231146108c3578063715018a614610900578063751039fc14610917576103c2565b8063516e7409146107f057806365e4e5e01461081957806366ca9b83146108445780636a486a8e1461086d576103c2565b80634a62bb65116102b15780634a62bb65146107345780634ab736c01461075f5780634cf088d9146107885780634fbee193146107b3576103c2565b8063313ce567146106785780633347e4d6146106a357806339509351146106cc57806349bd5a5e14610709576103c2565b8063150de0bb1161035a5780631de65a4a116103295780631de65a4a146105bc5780631fa07da5146105e757806323b872dd1461061057806327c8f8351461064d576103c2565b8063150de0bb146105125780631694505e1461053b57806318160ddd146105665780631d77785614610591576103c2565b806306fdde031161039657806306fdde0314610444578063095ea7b31461046f57806310d5de53146104ac57806311a4b5cd146104e9576103c2565b8062b8cf2a146103c757806302dbd8f8146103f0578063047fc9aa14610419576103c2565b366103c257005b600080fd5b3480156103d357600080fd5b506103ee60048036038101906103e99190614b9a565b610ee6565b005b3480156103fc57600080fd5b5061041760048036038101906104129190614c19565b611012565b005b34801561042557600080fd5b5061042e611117565b60405161043b9190614c68565b60405180910390f35b34801561045057600080fd5b5061045961111d565b6040516104669190614d02565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190614d24565b6111af565b6040516104a39190614d7f565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190614d9a565b6111cd565b6040516104e09190614d7f565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190614b9a565b6111ed565b005b34801561051e57600080fd5b5061053960048036038101906105349190614dc7565b611319565b005b34801561054757600080fd5b506105506113d0565b60405161055d9190614e53565b60405180910390f35b34801561057257600080fd5b5061057b6113f4565b6040516105889190614c68565b60405180910390f35b34801561059d57600080fd5b506105a66113fe565b6040516105b39190614c68565b60405180910390f35b3480156105c857600080fd5b506105d1611404565b6040516105de9190614c68565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190614dc7565b61140a565b005b34801561061c57600080fd5b5061063760048036038101906106329190614e6e565b6114c1565b6040516106449190614d7f565b60405180910390f35b34801561065957600080fd5b5061066261159a565b60405161066f9190614ed0565b60405180910390f35b34801561068457600080fd5b5061068d6115a0565b60405161069a9190614f07565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190614d9a565b6115a9565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190614d24565b611684565b6040516107009190614d7f565b60405180910390f35b34801561071557600080fd5b5061071e611737565b60405161072b9190614ed0565b60405180910390f35b34801561074057600080fd5b5061074961175b565b6040516107569190614d7f565b60405180910390f35b34801561076b57600080fd5b5061078660048036038101906107819190614f7d565b61176e565b005b34801561079457600080fd5b5061079d6118a1565b6040516107aa9190614ed0565b60405180910390f35b3480156107bf57600080fd5b506107da60048036038101906107d59190614d9a565b6118c7565b6040516107e79190614d7f565b60405180910390f35b3480156107fc57600080fd5b5061081760048036038101906108129190614f7d565b61191d565b005b34801561082557600080fd5b5061082e611a50565b60405161083b9190614c68565b60405180910390f35b34801561085057600080fd5b5061086b60048036038101906108669190614c19565b611a56565b005b34801561087957600080fd5b50610882611b5a565b60405161088f9190614c68565b60405180910390f35b3480156108a457600080fd5b506108ad611b60565b6040516108ba9190614d7f565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190614d9a565b611b73565b6040516108f79190614c68565b60405180910390f35b34801561090c57600080fd5b50610915611bbb565b005b34801561092357600080fd5b5061092c611d13565b6040516109399190614d7f565b60405180910390f35b34801561094e57600080fd5b5061096960048036038101906109649190614ff6565b611dce565b005b34801561097757600080fd5b50610980611ec0565b60405161098d9190614c68565b60405180910390f35b3480156109a257600080fd5b506109bd60048036038101906109b89190614f7d565b611ec6565b005b3480156109cb57600080fd5b506109d4611ff9565b005b3480156109e257600080fd5b506109eb612101565b6040516109f89190614ed0565b60405180910390f35b348015610a0d57600080fd5b50610a1661212b565b604051610a239190614d02565b60405180910390f35b348015610a3857600080fd5b50610a416121bd565b604051610a4e9190614c68565b60405180910390f35b348015610a6357600080fd5b50610a7e6004803603810190610a799190614ff6565b6121c3565b005b348015610a8c57600080fd5b50610aa76004803603810190610aa29190614d9a565b6122f6565b604051610ab49190614d7f565b60405180910390f35b348015610ac957600080fd5b50610ae46004803603810190610adf9190614d24565b612316565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190614dc7565b612436565b005b348015610b1b57600080fd5b50610b366004803603810190610b319190614d24565b6124d7565b604051610b439190614d7f565b60405180910390f35b348015610b5857600080fd5b50610b736004803603810190610b6e9190614d24565b6125a4565b604051610b809190614d7f565b60405180910390f35b348015610b9557600080fd5b50610b9e6125c2565b604051610bab9190614c68565b60405180910390f35b348015610bc057600080fd5b50610bdb6004803603810190610bd69190614f7d565b6125c8565b005b348015610be957600080fd5b50610c046004803603810190610bff9190614d9a565b612704565b604051610c119190614d7f565b60405180910390f35b348015610c2657600080fd5b50610c2f612724565b604051610c3c9190614d7f565b60405180910390f35b348015610c5157600080fd5b50610c6c6004803603810190610c679190614d9a565b612737565b604051610c799190614d7f565b60405180910390f35b348015610c8e57600080fd5b50610ca96004803603810190610ca49190614ff6565b612757565b005b348015610cb757600080fd5b50610cc0612897565b604051610ccd9190614d7f565b60405180910390f35b348015610ce257600080fd5b50610ceb6128aa565b604051610cf89190614c68565b60405180910390f35b348015610d0d57600080fd5b50610d166128b0565b604051610d239190614c68565b60405180910390f35b348015610d3857600080fd5b50610d416128b6565b604051610d4e9190614c68565b60405180910390f35b348015610d6357600080fd5b50610d7e6004803603810190610d799190615036565b6128bc565b604051610d8b9190614c68565b60405180910390f35b348015610da057600080fd5b50610da9612943565b604051610db69190614c68565b60405180910390f35b348015610dcb57600080fd5b50610dd4612949565b604051610de19190614c68565b60405180910390f35b348015610df657600080fd5b50610dff61294f565b604051610e0c9190614d7f565b60405180910390f35b348015610e2157600080fd5b50610e3c6004803603810190610e379190614f7d565b612a0a565b005b348015610e4a57600080fd5b50610e656004803603810190610e609190614b9a565b612b3d565b005b348015610e7357600080fd5b50610e7c612cd2565b604051610e899190614c68565b60405180910390f35b348015610e9e57600080fd5b50610eb96004803603810190610eb49190614d9a565b612cd8565b005b348015610ec757600080fd5b50610ed0612e9e565b604051610edd9190614c68565b60405180910390f35b610eee612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f74906150c2565b60405180910390fd5b60005b815181101561100e576001601b6000848481518110610fa257610fa16150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061100690615140565b915050610f80565b5050565b61101a612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906150c2565b60405180910390fd5b81601081905550806011819055506011546010546110c79190615188565b601281905550600f6012541115611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90615208565b60405180910390fd5b5050565b60095481565b60606003805461112c90615257565b80601f016020809104026020016040519081016040528092919081815260200182805461115890615257565b80156111a55780601f1061117a576101008083540402835291602001916111a5565b820191906000526020600020905b81548152906001019060200180831161118857829003601f168201915b5050505050905090565b60006111c36111bc612f02565b8484612f0a565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b6111f5612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906150c2565b60405180910390fd5b60005b8151811015611315576001601960008484815181106112a9576112a86150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061130d90615140565b915050611287565b5050565b611321612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906150c2565b60405180910390fd5b60018110156113be57600080fd5b806015819055506113cd6130d3565b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60135481565b60145481565b611412612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611498906150c2565b60405180910390fd5b60018110156114af57600080fd5b806016819055506114be6130d3565b50565b60006114ce84848461313b565b61158f846114da612f02565b61158a85604051806060016040528060288152602001615e2f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611540612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b612f0a565b600190509392505050565b61dead81565b60006009905090565b6115b1612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906150c2565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061172d611691612f02565b8461172885600160006116a2612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b612f0a565b6001905092915050565b7f000000000000000000000000e9508256eca01b24312a8d670bc59baa495c0fca81565b600a60149054906101000a900460ff1681565b611776612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906150c2565b60405180910390fd5b60005b8282905081101561189c57601c600084848481811061182a576118296150e2565b5b905060200201602081019061183f9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055808061189490615140565b915050611808565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611925612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab906150c2565b60405180910390fd5b60005b82829050811015611a4b57601b60008484848181106119d9576119d86150e2565b5b90506020020160208101906119ee9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080611a4390615140565b9150506119b7565b505050565b600e5481565b611a5e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae4906150c2565b60405180910390fd5b81600d8190555080600e81905550600e54600d54611b0b9190615188565b600f81905550600f80541115611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90615208565b60405180910390fd5b5050565b60125481565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611bc3612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c49906150c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611d1d612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da3906150c2565b60405180910390fd5b6000600a60146101000a81548160ff0219169083151502179055506001905090565b611dd6612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c906150c2565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611ece612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f54906150c2565b60405180910390fd5b60005b82829050811015611ff45760196000848484818110611f8257611f816150e2565b5b9050602002016020810190611f979190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080611fec90615140565b915050611f60565b505050565b612001612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612087906150c2565b60405180910390fd5b6000600d819055506001600e81905550600e54600d546120b09190615188565b600f81905550600060108190555060046011819055506011546010546120d69190615188565b60128190555060016017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461213a90615257565b80601f016020809104026020016040519081016040528092919081815260200182805461216690615257565b80156121b35780601f10612188576101008083540402835291602001916121b3565b820191906000526020600020905b81548152906001019060200180831161219657829003601f168201915b5050505050905090565b60165481565b6121cb612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612251906150c2565b60405180910390fd5b7f000000000000000000000000e9508256eca01b24312a8d670bc59baa495c0fca73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df906152fa565b60405180910390fd5b6122f28282614052565b5050565b601c6020528060005260406000206000915054906101000a900460ff1681565b61231e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a4906150c2565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016123ed92919061531a565b6020604051808303816000875af115801561240c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124309190615358565b50505050565b61243e612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c4906150c2565b60405180910390fd5b8060178190555050565b600061259a6124e4612f02565b8461259585604051806060016040528060258152602001615e57602591396001600061250e612f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b612f0a565b6001905092915050565b60006125b86125b1612f02565b848461313b565b6001905092915050565b60105481565b6125d0612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612656906150c2565b60405180910390fd5b60005b828290508110156126ff576001601c6000858585818110612686576126856150e2565b5b905060200201602081019061269b9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806126f790615140565b915050612662565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61275f612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e5906150c2565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161288b9190614d7f565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b60115481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b6000612959612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129df906150c2565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b612a12612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a98906150c2565b60405180910390fd5b60005b82829050811015612b385760186000848484818110612ac657612ac56150e2565b5b9050602002016020810190612adb9190614d9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080612b3090615140565b915050612aa4565b505050565b612b45612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcb906150c2565b60405180910390fd5b60005b8151811015612cce57600160186000848481518110612bf957612bf86150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110612c6557612c646150e2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df76001604051612cb39190614d7f565b60405180910390a28080612cc690615140565b915050612bd7565b5050565b60175481565b612ce0612f02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d66906150c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd5906153f7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b6000808284612eb39190615188565b905083811015612ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eef90615463565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f70906154f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdf90615587565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130c69190614c68565b60405180910390a3505050565b60646016546009546130e591906155a7565b6130ef9190615618565b600681905550612710600560095461310791906155a7565b6131119190615618565b600781905550606460155460095461312991906155a7565b6131339190615618565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a1906156bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132109061574d565b60405180910390fd5b600081036132325761322d838360006140f3565b613fe9565b600a60149054906101000a900460ff1615613b415761324f612101565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132bd575061328d612101565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132f65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613330575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133495750600560149054906101000a900460ff16155b15613b4057600a60159054906101000a900460ff166134eb57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134035750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806134575750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806134ab5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e1906157b9565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561358f5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c59061584b565b60405180910390fd5b600c60009054906101000a900460ff1615613857576135eb612101565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561367257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136ca57507f000000000000000000000000e9508256eca01b24312a8d670bc59baa495c0fca73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156137245750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561377e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156138565743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fb90615903565b60405180910390fd5b601754436138129190615188565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138fa5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139a157600654811115613944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161393b90615995565b60405180910390fd5b60085461395083611b73565b8261395b9190615188565b111561399c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399390615a01565b60405180910390fd5b613b3f565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a445750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9357600654811115613a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8590615a93565b60405180910390fd5b613b3e565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613b3d57600854613af083611b73565b82613afb9190615188565b1115613b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b3390615a01565b60405180910390fd5b5b5b5b5b5b6000613b4c30611b73565b905060006007548210159050808015613b725750600560149054906101000a900460ff16155b8015613b8a5750600a60169054906101000a900460ff165b8015613be05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c365750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c8c5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613cd0576001600560146101000a81548160ff021916908315150217905550613cb4614386565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613d865750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d9057600090505b60008115613fd957601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613df357506000601254115b15613e8d57613e206064613e126012548861446f90919063ffffffff16565b6144e990919063ffffffff16565b905060125460105482613e3391906155a7565b613e3d9190615618565b60136000828254613e4e9190615188565b9250508190555060125460115482613e6691906155a7565b613e709190615618565b60146000828254613e819190615188565b92505081905550613f7f565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ee857506000600f54115b15613f7e57613f156064613f07600f548861446f90919063ffffffff16565b6144e990919063ffffffff16565b9050600f54600d5482613f2891906155a7565b613f329190615618565b60136000828254613f439190615188565b92505081905550600f54600e5482613f5b91906155a7565b613f659190615618565b60146000828254613f769190615188565b925050819055505b5b6000811115613fca57613f938730836140f3565b60006013541115613fc957613faa30601354614533565b613fb26113f4565b600981905550613fc06130d3565b60006013819055505b5b8085613fd69190615ab3565b94505b613fe48787876140f3565b505050505b505050565b6000838311158290614036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161402d9190614d02565b60405180910390fd5b50600083856140459190615ab3565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603614162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614159906156bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036141d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141c89061574d565b60405180910390fd5b6141dc8383836146e0565b61424781604051806060016040528060268152602001615e09602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142da816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143799190614c68565b60405180910390a3505050565b600061439130611b73565b905060008082036143a357505061446d565b60146007546143b291906155a7565b8211156143cb5760146007546143c891906155a7565b91505b6143d4826146e5565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161442290615b18565b60006040518083038185875af1925050503d806000811461445f576040519150601f19603f3d011682016040523d82523d6000602084013e614464565b606091505b50508091505050505b565b600080830361448157600090506144e3565b6000828461448f91906155a7565b905082848261449e9190615618565b146144de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144d590615b9f565b60405180910390fd5b809150505b92915050565b600061452b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614922565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036145a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161459990615c31565b60405180910390fd5b6145ae826000836146e0565b61461981604051806060016040528060228152602001615de7602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fee9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146708160025461498590919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516146d49190614c68565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115614702576147016149f9565b5b6040519080825280602002602001820160405280156147305781602001602082028036833780820191505090505b5090503081600081518110614748576147476150e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148119190615c66565b81600181518110614825576148246150e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061488a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612f0a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016148ec959493929190615d8c565b600060405180830381600087803b15801561490657600080fd5b505af115801561491a573d6000803e3d6000fd5b505050505050565b60008083118290614969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016149609190614d02565b60405180910390fd5b50600083856149789190615618565b9050809150509392505050565b60006149c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614a31826149e8565b810181811067ffffffffffffffff82111715614a5057614a4f6149f9565b5b80604052505050565b6000614a636149cf565b9050614a6f8282614a28565b919050565b600067ffffffffffffffff821115614a8f57614a8e6149f9565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614ad082614aa5565b9050919050565b614ae081614ac5565b8114614aeb57600080fd5b50565b600081359050614afd81614ad7565b92915050565b6000614b16614b1184614a74565b614a59565b90508083825260208201905060208402830185811115614b3957614b38614aa0565b5b835b81811015614b625780614b4e8882614aee565b845260208401935050602081019050614b3b565b5050509392505050565b600082601f830112614b8157614b806149e3565b5b8135614b91848260208601614b03565b91505092915050565b600060208284031215614bb057614baf6149d9565b5b600082013567ffffffffffffffff811115614bce57614bcd6149de565b5b614bda84828501614b6c565b91505092915050565b6000819050919050565b614bf681614be3565b8114614c0157600080fd5b50565b600081359050614c1381614bed565b92915050565b60008060408385031215614c3057614c2f6149d9565b5b6000614c3e85828601614c04565b9250506020614c4f85828601614c04565b9150509250929050565b614c6281614be3565b82525050565b6000602082019050614c7d6000830184614c59565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614cbd578082015181840152602081019050614ca2565b60008484015250505050565b6000614cd482614c83565b614cde8185614c8e565b9350614cee818560208601614c9f565b614cf7816149e8565b840191505092915050565b60006020820190508181036000830152614d1c8184614cc9565b905092915050565b60008060408385031215614d3b57614d3a6149d9565b5b6000614d4985828601614aee565b9250506020614d5a85828601614c04565b9150509250929050565b60008115159050919050565b614d7981614d64565b82525050565b6000602082019050614d946000830184614d70565b92915050565b600060208284031215614db057614daf6149d9565b5b6000614dbe84828501614aee565b91505092915050565b600060208284031215614ddd57614ddc6149d9565b5b6000614deb84828501614c04565b91505092915050565b6000819050919050565b6000614e19614e14614e0f84614aa5565b614df4565b614aa5565b9050919050565b6000614e2b82614dfe565b9050919050565b6000614e3d82614e20565b9050919050565b614e4d81614e32565b82525050565b6000602082019050614e686000830184614e44565b92915050565b600080600060608486031215614e8757614e866149d9565b5b6000614e9586828701614aee565b9350506020614ea686828701614aee565b9250506040614eb786828701614c04565b9150509250925092565b614eca81614ac5565b82525050565b6000602082019050614ee56000830184614ec1565b92915050565b600060ff82169050919050565b614f0181614eeb565b82525050565b6000602082019050614f1c6000830184614ef8565b92915050565b600080fd5b60008083601f840112614f3d57614f3c6149e3565b5b8235905067ffffffffffffffff811115614f5a57614f59614f22565b5b602083019150836020820283011115614f7657614f75614aa0565b5b9250929050565b60008060208385031215614f9457614f936149d9565b5b600083013567ffffffffffffffff811115614fb257614fb16149de565b5b614fbe85828601614f27565b92509250509250929050565b614fd381614d64565b8114614fde57600080fd5b50565b600081359050614ff081614fca565b92915050565b6000806040838503121561500d5761500c6149d9565b5b600061501b85828601614aee565b925050602061502c85828601614fe1565b9150509250929050565b6000806040838503121561504d5761504c6149d9565b5b600061505b85828601614aee565b925050602061506c85828601614aee565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006150ac602083614c8e565b91506150b782615076565b602082019050919050565b600060208201905081810360008301526150db8161509f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061514b82614be3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361517d5761517c615111565b5b600182019050919050565b600061519382614be3565b915061519e83614be3565b92508282019050808211156151b6576151b5615111565b5b92915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006151f2601d83614c8e565b91506151fd826151bc565b602082019050919050565b60006020820190508181036000830152615221816151e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061526f57607f821691505b60208210810361528257615281615228565b5b50919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006152e4603983614c8e565b91506152ef82615288565b604082019050919050565b60006020820190508181036000830152615313816152d7565b9050919050565b600060408201905061532f6000830185614ec1565b61533c6020830184614c59565b9392505050565b60008151905061535281614fca565b92915050565b60006020828403121561536e5761536d6149d9565b5b600061537c84828501615343565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153e1602683614c8e565b91506153ec82615385565b604082019050919050565b60006020820190508181036000830152615410816153d4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061544d601b83614c8e565b915061545882615417565b602082019050919050565b6000602082019050818103600083015261547c81615440565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006154df602483614c8e565b91506154ea82615483565b604082019050919050565b6000602082019050818103600083015261550e816154d2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615571602283614c8e565b915061557c82615515565b604082019050919050565b600060208201905081810360008301526155a081615564565b9050919050565b60006155b282614be3565b91506155bd83614be3565b92508282026155cb81614be3565b915082820484148315176155e2576155e1615111565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061562382614be3565b915061562e83614be3565b92508261563e5761563d6155e9565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156a5602583614c8e565b91506156b082615649565b604082019050919050565b600060208201905081810360008301526156d481615698565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615737602383614c8e565b9150615742826156db565b604082019050919050565b600060208201905081810360008301526157668161572a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006157a3601683614c8e565b91506157ae8261576d565b602082019050919050565b600060208201905081810360008301526157d281615796565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000615835602383614c8e565b9150615840826157d9565b604082019050919050565b6000602082019050818103600083015261586481615828565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006158ed604983614c8e565b91506158f88261586b565b606082019050919050565b6000602082019050818103600083015261591c816158e0565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061597f603583614c8e565b915061598a82615923565b604082019050919050565b600060208201905081810360008301526159ae81615972565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006159eb601383614c8e565b91506159f6826159b5565b602082019050919050565b60006020820190508181036000830152615a1a816159de565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615a7d603683614c8e565b9150615a8882615a21565b604082019050919050565b60006020820190508181036000830152615aac81615a70565b9050919050565b6000615abe82614be3565b9150615ac983614be3565b9250828203905081811115615ae157615ae0615111565b5b92915050565b600081905092915050565b50565b6000615b02600083615ae7565b9150615b0d82615af2565b600082019050919050565b6000615b2382615af5565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b89602183614c8e565b9150615b9482615b2d565b604082019050919050565b60006020820190508181036000830152615bb881615b7c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615c1b602183614c8e565b9150615c2682615bbf565b604082019050919050565b60006020820190508181036000830152615c4a81615c0e565b9050919050565b600081519050615c6081614ad7565b92915050565b600060208284031215615c7c57615c7b6149d9565b5b6000615c8a84828501615c51565b91505092915050565b6000819050919050565b6000615cb8615cb3615cae84615c93565b614df4565b614be3565b9050919050565b615cc881615c9d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d0381614ac5565b82525050565b6000615d158383615cfa565b60208301905092915050565b6000602082019050919050565b6000615d3982615cce565b615d438185615cd9565b9350615d4e83615cea565b8060005b83811015615d7f578151615d668882615d09565b9750615d7183615d21565b925050600181019050615d52565b5085935050505092915050565b600060a082019050615da16000830188614c59565b615dae6020830187615cbf565b8181036040830152615dc08186615d2e565b9050615dcf6060830185614ec1565b615ddc6080830184614c59565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d982f1a9c0ee9675ca68966fff53bc63ffb9dfea58748d64b6b1d9ec2e8ac87464736f6c63430008110033

Deployed Bytecode Sourcemap

17375:13178:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21136:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23211:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17797:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4999:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5898:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18520:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22304:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21668:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17450:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5313:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18292:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18327:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21507:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6073:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17596:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5215:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23504:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6434:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17508:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17854:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30349:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17825:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24950:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21313:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18120:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22929:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18254:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17934:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5427:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10785:148;;;;;;;;;;;;;:::i;:::-;;22176:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22777:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18363:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22535:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20813:315;;;;;;;;;;;;;:::i;:::-;;10575:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5105:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18396:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24510:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18699:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29929:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21831:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6658:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5560:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18187:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30141:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18591:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17894:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18656:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24115:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18042:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17684:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18220:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18153;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5741:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17726:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18088:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21990:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23895:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23631:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18428:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10939:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17766:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21136:169;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21212:9:::1;21207:91;21231:5;:12;21227:1;:16;21207:91;;;21282:4;21265;:14;21270:5;21276:1;21270:8;;;;;;;;:::i;:::-;;;;;;;;21265:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;21245:3;;;;;:::i;:::-;;;;21207:91;;;;21136:169:::0;:::o;23211:281::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23316:8:::1;23302:11;:22;;;;23350:9;23335:12;:24;;;;23400:12;;23386:11;;:26;;;;:::i;:::-;23370:13;:42;;;;23448:2;23431:13;;:19;;23423:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23211:281:::0;;:::o;17797:21::-;;;;:::o;4999:100::-;5053:13;5086:5;5079:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4999:100;:::o;5898:169::-;5981:4;5998:39;6007:12;:10;:12::i;:::-;6021:7;6030:6;5998:8;:39::i;:::-;6055:4;6048:11;;5898:169;;;;:::o;18520:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;22304:223::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22402:9:::1;22397:123;22421:8;:15;22417:1;:19;22397:123;;;22504:4;22457:31;:44;22489:8;22498:1;22489:11;;;;;;;;:::i;:::-;;;;;;;;22457:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;22438:3;;;;;:::i;:::-;;;;22397:123;;;;22304:223:::0;:::o;21668:157::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21759:1:::1;21749:6;:11;;21741:20;;;::::0;::::1;;21786:6;21772:11;:20;;;;21803:14;:12;:14::i;:::-;21668:157:::0;:::o;17450:51::-;;;:::o;5313:108::-;5374:7;5401:12;;5394:19;;5313:108;:::o;18292:28::-;;;;:::o;18327:29::-;;;;:::o;21507:155::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21597:1:::1;21587:6;:11;;21579:20;;;::::0;::::1;;21623:6;21610:10;:19;;;;21640:14;:12;:14::i;:::-;21507:155:::0;:::o;6073:355::-;6213:4;6230:36;6240:6;6248:9;6259:6;6230:9;:36::i;:::-;6277:121;6286:6;6294:12;:10;:12::i;:::-;6308:89;6346:6;6308:89;;;;;;;;;;;;;;;;;:11;:19;6320:6;6308:19;;;;;;;;;;;;;;;:33;6328:12;:10;:12::i;:::-;6308:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6277:8;:121::i;:::-;6416:4;6409:11;;6073:355;;;;;:::o;17596:53::-;17642:6;17596:53;:::o;5215:92::-;5273:5;5298:1;5291:8;;5215:92;:::o;23504:119::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23600:15:::1;23590:7;;:25;;;;;;;;;;;;;;;;;;23504:119:::0;:::o;6434:218::-;6522:4;6539:83;6548:12;:10;:12::i;:::-;6562:7;6571:50;6610:10;6571:11;:25;6583:12;:10;:12::i;:::-;6571:25;;;;;;;;;;;;;;;:34;6597:7;6571:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6539:8;:83::i;:::-;6640:4;6633:11;;6434:218;;;;:::o;17508:38::-;;;:::o;17854:33::-;;;;;;;;;;;;;:::o;30349:201::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30438:9:::1;30434:109;30457:8;;:15;;30453:1;:19;30434:109;;;30506:12;:25;30519:8;;30528:1;30519:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30506:25;;;;;;;;;;;;;;;;30499:32;;;;;;;;;;;30474:3;;;;;:::i;:::-;;;;30434:109;;;;30349:201:::0;;:::o;17825:22::-;;;;;;;;;;;;;:::o;24950:125::-;25015:4;25039:19;:28;25059:7;25039:28;;;;;;;;;;;;;;;;;;;;;;;;;25032:35;;24950:125;;;:::o;21313:186::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21394:9:::1;21390:102;21413:8;;:15;;21409:1;:19;21390:102;;;21463:4;:17;21468:8;;21477:1;21468:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21463:17;;;;;;;;;;;;;;;;21456:24;;;;;;;;;;;21430:3;;;;;:::i;:::-;;;;21390:102;;;;21313:186:::0;;:::o;18120:26::-;;;;:::o;22929:274::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23032:8:::1;23019:10;:21;;;;23065:9;23051:11;:23;;;;23113:11;;23100:10;;:24;;;;:::i;:::-;23085:12;:39;;;;23159:2;23143:12:::0;::::1;:18;;23135:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22929:274:::0;;:::o;18254:28::-;;;;:::o;17934:30::-;;;;;;;;;;;;;:::o;5427:127::-;5501:7;5528:9;:18;5538:7;5528:18;;;;;;;;;;;;;;;;5521:25;;5427:127;;;:::o;10785:148::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10892:1:::1;10855:40;;10876:6;;;;;;;;;;;10855:40;;;;;;;;;;;;10923:1;10906:6;;:19;;;;;;;;;;;;;;;;;;10785:148::o:0;22176:120::-;22228:4;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22261:5:::1;22244:14;;:22;;;;;;;;;;;;;;;;;;22284:4;22277:11;;22176:120:::0;:::o;22777:144::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22909:4:::1;22867:31;:39;22899:6;22867:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22777:144:::0;;:::o;18363:26::-;;;;:::o;22535:234::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22637:9:::1;22633:129;22656:8;;:15;;22652:1;:19;22633:129;;;22706:31;:44;22738:8;;22747:1;22738:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22706:44;;;;;;;;;;;;;;;;22699:51;;;;;;;;;;;22673:3;;;;;:::i;:::-;;;;22633:129;;;;22535:234:::0;;:::o;20813:315::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20881:1:::1;20868:10;:14;;;;20907:1;20893:11;:15;;;;20947:11;;20934:10;;:24;;;;:::i;:::-;20919:12;:39;;;;20983:1;20969:11;:15;;;;21010:1;20995:12;:16;;;;21052:12;;21038:11;;:26;;;;:::i;:::-;21022:13;:42;;;;21088:1;21075:10;:14;;;;21116:4;21100:13;;:20;;;;;;;;;;;;;;;;;;20813:315::o:0;10575:79::-;10613:7;10640:6;;;;;;;;;;;10633:13;;10575:79;:::o;5105:104::-;5161:13;5194:7;5187:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5105:104;:::o;18396:25::-;;;;:::o;24510:242::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24617:13:::1;24609:21;;:4;:21;;::::0;24601:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24703:41;24732:4;24738:5;24703:28;:41::i;:::-;24510:242:::0;;:::o;18699:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;29929:200::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30022:20:::1;30052:14;30022:45;;30078:13;:22;;;30101:10;30113:7;30078:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30011:118;29929:200:::0;;:::o;21831:98::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21915:6:::1;21902:10;:19;;;;21831:98:::0;:::o;6658:269::-;6751:4;6768:129;6777:12;:10;:12::i;:::-;6791:7;6800:96;6839:15;6800:96;;;;;;;;;;;;;;;;;:11;:25;6812:12;:10;:12::i;:::-;6800:25;;;;;;;;;;;;;;;:34;6826:7;6800:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6768:8;:129::i;:::-;6915:4;6908:11;;6658:269;;;;:::o;5560:175::-;5646:4;5663:42;5673:12;:10;:12::i;:::-;5687:9;5698:6;5663:9;:42::i;:::-;5723:4;5716:11;;5560:175;;;;:::o;18187:26::-;;;;:::o;30141:200::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30229:9:::1;30225:109;30248:8;;:15;;30244:1;:19;30225:109;;;30318:4;30290:12;:25;30303:8;;30312:1;30303:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30290:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;30265:3;;;;;:::i;:::-;;;;30225:109;;;;30141:200:::0;;:::o;18591:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17894:33::-;;;;;;;;;;;;;:::o;18656:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;24115:182::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24231:8:::1;24200:19;:28;24220:7;24200:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24271:7;24255:34;;;24280:8;24255:34;;;;;;:::i;:::-;;;;;;;;24115:182:::0;;:::o;18042:39::-;;;;;;;;;;;;;:::o;17684:35::-;;;;:::o;18220:27::-;;;;:::o;18153:::-;;;;:::o;5741:151::-;5830:7;5857:11;:18;5869:5;5857:18;;;;;;;;;;;;;;;:27;5876:7;5857:27;;;;;;;;;;;;;;;;5850:34;;5741:151;;;;:::o;17726:33::-;;;;:::o;18088:25::-;;;;:::o;21990:134::-;22050:4;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22089:5:::1;22066:20;;:28;;;;;;;;;;;;;;;;;;22112:4;22105:11;;21990:134:::0;:::o;23895:212::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23987:9:::1;23983:117;24006:8;;:15;;24002:1;:19;23983:117;;;24056:19;:32;24076:8;;24085:1;24076:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24056:32;;;;;;;;;;;;;;;;24049:39;;;;;;;;;;;24023:3;;;;;:::i;:::-;;;;23983:117;;;;23895:212:::0;;:::o;23631:256::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23719:9:::1;23714:166;23738:8;:15;23734:1;:19;23714:166;;;23810:4;23775:19;:32;23795:8;23804:1;23795:11;;;;;;;;:::i;:::-;;;;;;;;23775:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23850:8;23859:1;23850:11;;;;;;;;:::i;:::-;;;;;;;;23834:34;;;23863:4;23834:34;;;;;;:::i;:::-;;;;;;;;23755:3;;;;;:::i;:::-;;;;23714:166;;;;23631:256:::0;:::o;18428:25::-;;;;:::o;10939:244::-;10710:12;:10;:12::i;:::-;10700:22;;:6;;;;;;;;;;;:22;;;10692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11048:1:::1;11028:22;;:8;:22;;::::0;11020:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11138:8;11109:38;;11130:6;;;;;;;;;;;11109:38;;;;;;;;;;;;11167:8;11158:6;;:17;;;;;;;;;;;;;;;;;;10939:244:::0;:::o;17766:24::-;;;;:::o;8846:179::-;8904:7;8924:9;8940:1;8936;:5;;;;:::i;:::-;8924:17;;8965:1;8960;:6;;8952:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9016:1;9009:8;;;8846:179;;;;:::o;342:98::-;395:7;422:10;415:17;;342:98;:::o;8308:378::-;8461:1;8444:19;;:5;:19;;;8436:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8542:1;8523:21;;:7;:21;;;8515:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8624:6;8594:11;:18;8606:5;8594:18;;;;;;;;;;;;;;;:27;8613:7;8594:27;;;;;;;;;;;;;;;:36;;;;8662:7;8646:32;;8655:5;8646:32;;;8671:6;8646:32;;;;;;:::i;:::-;;;;;;;;8308:378;;;:::o;24305:199::-;24393:3;24380:10;;24371:6;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;24348:20;:48;;;;24441:5;24437:1;24428:6;;:10;;;;:::i;:::-;:18;;;;:::i;:::-;24407;:39;;;;24493:3;24479:11;;24470:6;;:20;;;;:::i;:::-;:26;;;;:::i;:::-;24458:9;:38;;;;24305:199::o;25081:3872::-;25229:1;25213:18;;:4;:18;;;25205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25306:1;25292:16;;:2;:16;;;25284:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25373:1;25363:6;:11;25360:92;;25391:28;25407:4;25413:2;25417:1;25391:15;:28::i;:::-;25434:7;;25360:92;25465:14;;;;;;;;;;;25462:1827;;;25525:7;:5;:7::i;:::-;25517:15;;:4;:15;;;;:49;;;;;25559:7;:5;:7::i;:::-;25553:13;;:2;:13;;;;25517:49;:86;;;;;25601:1;25587:16;;:2;:16;;;;25517:86;:128;;;;;25638:6;25624:21;;:2;:21;;;;25517:128;:158;;;;;25667:8;;;;;;;;;;;25666:9;25517:158;25495:1783;;;25713:13;;;;;;;;;;;25709:190;;25758:19;:25;25778:4;25758:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25787:19;:23;25807:2;25787:23;;;;;;;;;;;;;;;;;;;;;;;;;25758:52;:74;;;;25814:12;:18;25827:4;25814:18;;;;;;;;;;;;;;;;;;;;;;;;;25758:74;:94;;;;25836:12;:16;25849:2;25836:16;;;;;;;;;;;;;;;;;;;;;;;;;25758:94;25750:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;25709:190;25942:4;:10;25947:4;25942:10;;;;;;;;;;;;;;;;;;;;;;;;;25941:11;:24;;;;;25957:4;:8;25962:2;25957:8;;;;;;;;;;;;;;;;;;;;;;;;;25956:9;25941:24;25933:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;26028:20;;;;;;;;;;;26024:490;;;26082:7;:5;:7::i;:::-;26076:13;;:2;:13;;;;:47;;;;;26107:15;26093:30;;:2;:30;;;;26076:47;:79;;;;;26141:13;26127:28;;:2;:28;;;;26076:79;:105;;;;;26173:7;;;;;;;;;;;26159:22;;:2;:22;;;;26076:105;:133;;;;;26201:7;;;;;;;;;;;26185:24;;:4;:24;;;;26076:133;26072:423;;;26287:12;26245:28;:39;26274:9;26245:39;;;;;;;;;;;;;;;;:54;26237:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26461:10;;26446:12;:25;;;;:::i;:::-;26404:28;:39;26433:9;26404:39;;;;;;;;;;;;;;;:67;;;;26072:423;26024:490;26536:25;:31;26562:4;26536:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;26572:31;:35;26604:2;26572:35;;;;;;;;;;;;;;;;;;;;;;;;;26571:36;26536:71;26532:731;;;26654:20;;26644:6;:30;;26636:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;26793:9;;26776:13;26786:2;26776:9;:13::i;:::-;26767:6;:22;;;;:::i;:::-;:35;;26759:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26532:731;;;26873:25;:29;26899:2;26873:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;26907:31;:37;26939:4;26907:37;;;;;;;;;;;;;;;;;;;;;;;;;26906:38;26873:71;26869:394;;;26991:20;;26981:6;:30;;26973:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;26869:394;;;27117:31;:35;27149:2;27117:35;;;;;;;;;;;;;;;;;;;;;;;;;27113:150;;27210:9;;27193:13;27203:2;27193:9;:13::i;:::-;27184:6;:22;;;;:::i;:::-;:35;;27176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27113:150;26869:394;26532:731;25495:1783;25462:1827;27299:28;27330:24;27348:4;27330:9;:24::i;:::-;27299:55;;27365:12;27404:18;;27380:20;:42;;27365:57;;27451:7;:33;;;;;27476:8;;;;;;;;;;;27475:9;27451:33;:61;;;;;27501:11;;;;;;;;;;;27451:61;:110;;;;;27530:25;:31;27556:4;27530:31;;;;;;;;;;;;;;;;;;;;;;;;;27529:32;27451:110;:153;;;;;27579:19;:25;27599:4;27579:25;;;;;;;;;;;;;;;;;;;;;;;;;27578:26;27451:153;:194;;;;;27622:19;:23;27642:2;27622:23;;;;;;;;;;;;;;;;;;;;;;;;;27621:24;27451:194;27433:322;;;27683:4;27672:8;;:15;;;;;;;;;;;;;;;;;;27702:10;:8;:10::i;:::-;27738:5;27727:8;;:16;;;;;;;;;;;;;;;;;;27433:322;27765:12;27781:8;;;;;;;;;;;27780:9;27765:24;;27803:19;:25;27823:4;27803:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27832:19;:23;27852:2;27832:23;;;;;;;;;;;;;;;;;;;;;;;;;27803:52;27800:99;;;27882:5;27872:15;;27800:99;27909:12;27939:7;27936:966;;;27966:25;:29;27992:2;27966:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28015:1;27999:13;;:17;27966:50;27962:555;;;28043:34;28073:3;28043:25;28054:13;;28043:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;28036:41;;28134:13;;28120:11;;28113:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;28096:13;;:51;;;;;;;:::i;:::-;;;;;;;;28206:13;;28191:12;;28184:4;:19;;;;:::i;:::-;:35;;;;:::i;:::-;28166:14;;:53;;;;;;;:::i;:::-;;;;;;;;27962:555;;;28257:25;:31;28283:4;28257:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;28307:1;28292:12;;:16;28257:51;28254:263;;;28333:33;28362:3;28333:24;28344:12;;28333:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;28326:40;;28419:12;;28406:10;;28399:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;28382:13;;:49;;;;;;;:::i;:::-;;;;;;;;28489:12;;28475:11;;28468:4;:18;;;;:::i;:::-;:33;;;;:::i;:::-;28450:14;;:51;;;;;;;:::i;:::-;;;;;;;;28254:263;27962:555;28541:1;28534:4;:8;28531:334;;;28566:42;28582:4;28596;28603;28566:15;:42::i;:::-;28647:1;28631:13;;:17;28627:223;;;28673:35;28687:4;28694:13;;28673:5;:35::i;:::-;28740:13;:11;:13::i;:::-;28731:6;:22;;;;28776:14;:12;:14::i;:::-;28829:1;28813:13;:17;;;;28627:223;28531:334;28886:4;28876:14;;;;;:::i;:::-;;;27936:966;28912:33;28928:4;28934:2;28938:6;28912:15;:33::i;:::-;25194:3759;;;;25081:3872;;;;:::o;9173:190::-;9259:7;9292:1;9287;:6;;9295:12;9279:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9319:9;9335:1;9331;:5;;;;:::i;:::-;9319:17;;9354:1;9347:8;;;9173:190;;;;;:::o;24758:186::-;24875:5;24841:25;:31;24867:4;24841:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24930:5;24896:40;;24924:4;24896:40;;;;;;;;;;;;24758:186;;:::o;6933:569::-;7091:1;7073:20;;:6;:20;;;7065:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7175:1;7154:23;;:9;:23;;;7146:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7228:47;7249:6;7257:9;7268:6;7228:20;:47::i;:::-;7306:71;7328:6;7306:71;;;;;;;;;;;;;;;;;:9;:17;7316:6;7306:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7286:9;:17;7296:6;7286:17;;;;;;;;;;;;;;;:91;;;;7411:32;7436:6;7411:9;:20;7421:9;7411:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7388:9;:20;7398:9;7388:20;;;;;;;;;;;;;;;:55;;;;7476:9;7459:35;;7468:6;7459:35;;;7487:6;7459:35;;;;;;:::i;:::-;;;;;;;;6933:569;;;:::o;29437:438::-;29476:23;29502:24;29520:4;29502:9;:24::i;:::-;29476:50;;29537:12;29582:1;29563:15;:20;29560:34;;29586:7;;;;29560:34;29646:2;29625:18;;:23;;;;:::i;:::-;29607:15;:41;29604:111;;;29701:2;29680:18;;:23;;;;:::i;:::-;29662:41;;29604:111;29725:33;29742:15;29725:16;:33::i;:::-;29787:1;29770:14;:18;;;;29820:7;;;;;;;;;;;29812:21;;29841;29812:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29799:68;;;;;29465:410;;29437:438;:::o;9369:246::-;9427:7;9456:1;9451;:6;9447:47;;9481:1;9474:8;;;;9447:47;9504:9;9520:1;9516;:5;;;;:::i;:::-;9504:17;;9549:1;9544;9540;:5;;;;:::i;:::-;:10;9532:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9606:1;9599:8;;;9369:246;;;;;:::o;9621:132::-;9679:7;9706:39;9710:1;9713;9706:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9699:46;;9621:132;;;;:::o;7888:414::-;7991:1;7972:21;;:7;:21;;;7964:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8042:49;8063:7;8080:1;8084:6;8042:20;:49::i;:::-;8123:68;8146:6;8123:68;;;;;;;;;;;;;;;;;:9;:18;8133:7;8123:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8102:9;:18;8112:7;8102:18;;;;;;;;;;;;;;;:89;;;;8217:24;8234:6;8217:12;;:16;;:24;;;;:::i;:::-;8202:12;:39;;;;8283:1;8257:37;;8266:7;8257:37;;;8287:6;8257:37;;;;;;:::i;:::-;;;;;;;;7888:414;;:::o;8692:125::-;;;;:::o;28959:472::-;29025:21;29063:1;29049:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29025:40;;29094:4;29076;29081:1;29076:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29120:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29110:4;29115:1;29110:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29153:62;29170:4;29185:15;29203:11;29153:8;:62::i;:::-;29226:15;:66;;;29307:11;29333:1;29350:4;29377;29397:15;29226:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29014:417;28959:472;:::o;9759:189::-;9845:7;9877:1;9873;:5;9880:12;9865:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9904:9;9920:1;9916;:5;;;;:::i;:::-;9904:17;;9939:1;9932:8;;;9759:189;;;;;:::o;9031:136::-;9089:7;9116:43;9120:1;9123;9116:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9109:50;;9031:136;;;;:::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:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:474::-;4215:6;4223;4272:2;4260:9;4251:7;4247:23;4243:32;4240:119;;;4278:79;;:::i;:::-;4240:119;4398:1;4423:53;4468:7;4459:6;4448:9;4444:22;4423:53;:::i;:::-;4413:63;;4369:117;4525:2;4551:53;4596:7;4587:6;4576:9;4572:22;4551:53;:::i;:::-;4541:63;;4496:118;4147:474;;;;;:::o;4627:118::-;4714:24;4732:5;4714:24;:::i;:::-;4709:3;4702:37;4627:118;;:::o;4751:222::-;4844:4;4882:2;4871:9;4867:18;4859:26;;4895:71;4963:1;4952:9;4948:17;4939:6;4895:71;:::i;:::-;4751:222;;;;:::o;4979:99::-;5031:6;5065:5;5059:12;5049:22;;4979:99;;;:::o;5084:169::-;5168:11;5202:6;5197:3;5190:19;5242:4;5237:3;5233:14;5218:29;;5084:169;;;;:::o;5259:246::-;5340:1;5350:113;5364:6;5361:1;5358:13;5350:113;;;5449:1;5444:3;5440:11;5434:18;5430:1;5425:3;5421:11;5414:39;5386:2;5383:1;5379:10;5374:15;;5350:113;;;5497:1;5488:6;5483:3;5479:16;5472:27;5321:184;5259:246;;;:::o;5511:377::-;5599:3;5627:39;5660:5;5627:39;:::i;:::-;5682:71;5746:6;5741:3;5682:71;:::i;:::-;5675:78;;5762:65;5820:6;5815:3;5808:4;5801:5;5797:16;5762:65;:::i;:::-;5852:29;5874:6;5852:29;:::i;:::-;5847:3;5843:39;5836:46;;5603:285;5511:377;;;;:::o;5894:313::-;6007:4;6045:2;6034:9;6030:18;6022:26;;6094:9;6088:4;6084:20;6080:1;6069:9;6065:17;6058:47;6122:78;6195:4;6186:6;6122:78;:::i;:::-;6114:86;;5894:313;;;;:::o;6213:474::-;6281:6;6289;6338:2;6326:9;6317:7;6313:23;6309:32;6306:119;;;6344:79;;:::i;:::-;6306:119;6464:1;6489:53;6534:7;6525:6;6514:9;6510:22;6489:53;:::i;:::-;6479:63;;6435:117;6591:2;6617:53;6662:7;6653:6;6642:9;6638:22;6617:53;:::i;:::-;6607:63;;6562:118;6213:474;;;;;:::o;6693:90::-;6727:7;6770:5;6763:13;6756:21;6745:32;;6693:90;;;:::o;6789:109::-;6870:21;6885:5;6870:21;:::i;:::-;6865:3;6858:34;6789:109;;:::o;6904:210::-;6991:4;7029:2;7018:9;7014:18;7006:26;;7042:65;7104:1;7093:9;7089:17;7080:6;7042:65;:::i;:::-;6904:210;;;;:::o;7120:329::-;7179:6;7228:2;7216:9;7207:7;7203:23;7199:32;7196:119;;;7234:79;;:::i;:::-;7196:119;7354:1;7379:53;7424:7;7415:6;7404:9;7400:22;7379:53;:::i;:::-;7369:63;;7325:117;7120:329;;;;:::o;7455:::-;7514:6;7563:2;7551:9;7542:7;7538:23;7534:32;7531:119;;;7569:79;;:::i;:::-;7531:119;7689:1;7714:53;7759:7;7750:6;7739:9;7735:22;7714:53;:::i;:::-;7704:63;;7660:117;7455:329;;;;:::o;7790:60::-;7818:3;7839:5;7832:12;;7790:60;;;:::o;7856:142::-;7906:9;7939:53;7957:34;7966:24;7984:5;7966:24;:::i;:::-;7957:34;:::i;:::-;7939:53;:::i;:::-;7926:66;;7856:142;;;:::o;8004:126::-;8054:9;8087:37;8118:5;8087:37;:::i;:::-;8074:50;;8004:126;;;:::o;8136:153::-;8213:9;8246:37;8277:5;8246:37;:::i;:::-;8233:50;;8136:153;;;:::o;8295:185::-;8409:64;8467:5;8409:64;:::i;:::-;8404:3;8397:77;8295:185;;:::o;8486:276::-;8606:4;8644:2;8633:9;8629:18;8621:26;;8657:98;8752:1;8741:9;8737:17;8728:6;8657:98;:::i;:::-;8486:276;;;;:::o;8768:619::-;8845:6;8853;8861;8910:2;8898:9;8889:7;8885:23;8881:32;8878:119;;;8916:79;;:::i;:::-;8878:119;9036:1;9061:53;9106:7;9097:6;9086:9;9082:22;9061:53;:::i;:::-;9051:63;;9007:117;9163:2;9189:53;9234:7;9225:6;9214:9;9210:22;9189:53;:::i;:::-;9179:63;;9134:118;9291:2;9317:53;9362:7;9353:6;9342:9;9338:22;9317:53;:::i;:::-;9307:63;;9262:118;8768:619;;;;;:::o;9393:118::-;9480:24;9498:5;9480:24;:::i;:::-;9475:3;9468:37;9393:118;;:::o;9517:222::-;9610:4;9648:2;9637:9;9633:18;9625:26;;9661:71;9729:1;9718:9;9714:17;9705:6;9661:71;:::i;:::-;9517:222;;;;:::o;9745:86::-;9780:7;9820:4;9813:5;9809:16;9798:27;;9745:86;;;:::o;9837:112::-;9920:22;9936:5;9920:22;:::i;:::-;9915:3;9908:35;9837:112;;:::o;9955:214::-;10044:4;10082:2;10071:9;10067:18;10059:26;;10095:67;10159:1;10148:9;10144:17;10135:6;10095:67;:::i;:::-;9955:214;;;;:::o;10175:117::-;10284:1;10281;10274:12;10315:568;10388:8;10398:6;10448:3;10441:4;10433:6;10429:17;10425:27;10415:122;;10456:79;;:::i;:::-;10415:122;10569:6;10556:20;10546:30;;10599:18;10591:6;10588:30;10585:117;;;10621:79;;:::i;:::-;10585:117;10735:4;10727:6;10723:17;10711:29;;10789:3;10781:4;10773:6;10769:17;10759:8;10755:32;10752:41;10749:128;;;10796:79;;:::i;:::-;10749:128;10315:568;;;;;:::o;10889:559::-;10975:6;10983;11032:2;11020:9;11011:7;11007:23;11003:32;11000:119;;;11038:79;;:::i;:::-;11000:119;11186:1;11175:9;11171:17;11158:31;11216:18;11208:6;11205:30;11202:117;;;11238:79;;:::i;:::-;11202:117;11351:80;11423:7;11414:6;11403:9;11399:22;11351:80;:::i;:::-;11333:98;;;;11129:312;10889:559;;;;;:::o;11454:116::-;11524:21;11539:5;11524:21;:::i;:::-;11517:5;11514:32;11504:60;;11560:1;11557;11550:12;11504:60;11454:116;:::o;11576:133::-;11619:5;11657:6;11644:20;11635:29;;11673:30;11697:5;11673:30;:::i;:::-;11576:133;;;;:::o;11715:468::-;11780:6;11788;11837:2;11825:9;11816:7;11812:23;11808:32;11805:119;;;11843:79;;:::i;:::-;11805:119;11963:1;11988:53;12033:7;12024:6;12013:9;12009:22;11988:53;:::i;:::-;11978:63;;11934:117;12090:2;12116:50;12158:7;12149:6;12138:9;12134:22;12116:50;:::i;:::-;12106:60;;12061:115;11715:468;;;;;:::o;12189:474::-;12257:6;12265;12314:2;12302:9;12293:7;12289:23;12285:32;12282:119;;;12320:79;;:::i;:::-;12282:119;12440:1;12465:53;12510:7;12501:6;12490:9;12486:22;12465:53;:::i;:::-;12455:63;;12411:117;12567:2;12593:53;12638:7;12629:6;12618:9;12614:22;12593:53;:::i;:::-;12583:63;;12538:118;12189:474;;;;;:::o;12669:182::-;12809:34;12805:1;12797:6;12793:14;12786:58;12669:182;:::o;12857:366::-;12999:3;13020:67;13084:2;13079:3;13020:67;:::i;:::-;13013:74;;13096:93;13185:3;13096:93;:::i;:::-;13214:2;13209:3;13205:12;13198:19;;12857:366;;;:::o;13229:419::-;13395:4;13433:2;13422:9;13418:18;13410:26;;13482:9;13476:4;13472:20;13468:1;13457:9;13453:17;13446:47;13510:131;13636:4;13510:131;:::i;:::-;13502:139;;13229:419;;;:::o;13654:180::-;13702:77;13699:1;13692:88;13799:4;13796:1;13789:15;13823:4;13820:1;13813:15;13840:180;13888:77;13885:1;13878:88;13985:4;13982:1;13975:15;14009:4;14006:1;13999:15;14026:233;14065:3;14088:24;14106:5;14088:24;:::i;:::-;14079:33;;14134:66;14127:5;14124:77;14121:103;;14204:18;;:::i;:::-;14121:103;14251:1;14244:5;14240:13;14233:20;;14026:233;;;:::o;14265:191::-;14305:3;14324:20;14342:1;14324:20;:::i;:::-;14319:25;;14358:20;14376:1;14358:20;:::i;:::-;14353:25;;14401:1;14398;14394:9;14387:16;;14422:3;14419:1;14416:10;14413:36;;;14429:18;;:::i;:::-;14413:36;14265:191;;;;:::o;14462:179::-;14602:31;14598:1;14590:6;14586:14;14579:55;14462:179;:::o;14647:366::-;14789:3;14810:67;14874:2;14869:3;14810:67;:::i;:::-;14803:74;;14886:93;14975:3;14886:93;:::i;:::-;15004:2;14999:3;14995:12;14988:19;;14647:366;;;:::o;15019:419::-;15185:4;15223:2;15212:9;15208:18;15200:26;;15272:9;15266:4;15262:20;15258:1;15247:9;15243:17;15236:47;15300:131;15426:4;15300:131;:::i;:::-;15292:139;;15019:419;;;:::o;15444:180::-;15492:77;15489:1;15482:88;15589:4;15586:1;15579:15;15613:4;15610:1;15603:15;15630:320;15674:6;15711:1;15705:4;15701:12;15691:22;;15758:1;15752:4;15748:12;15779:18;15769:81;;15835:4;15827:6;15823:17;15813:27;;15769:81;15897:2;15889:6;15886:14;15866:18;15863:38;15860:84;;15916:18;;:::i;:::-;15860:84;15681:269;15630:320;;;:::o;15956:244::-;16096:34;16092:1;16084:6;16080:14;16073:58;16165:27;16160:2;16152:6;16148:15;16141:52;15956:244;:::o;16206:366::-;16348:3;16369:67;16433:2;16428:3;16369:67;:::i;:::-;16362:74;;16445:93;16534:3;16445:93;:::i;:::-;16563:2;16558:3;16554:12;16547:19;;16206:366;;;:::o;16578:419::-;16744:4;16782:2;16771:9;16767:18;16759:26;;16831:9;16825:4;16821:20;16817:1;16806:9;16802:17;16795:47;16859:131;16985:4;16859:131;:::i;:::-;16851:139;;16578:419;;;:::o;17003:332::-;17124:4;17162:2;17151:9;17147:18;17139:26;;17175:71;17243:1;17232:9;17228:17;17219:6;17175:71;:::i;:::-;17256:72;17324:2;17313:9;17309:18;17300:6;17256:72;:::i;:::-;17003:332;;;;;:::o;17341:137::-;17395:5;17426:6;17420:13;17411:22;;17442:30;17466:5;17442:30;:::i;:::-;17341:137;;;;:::o;17484:345::-;17551:6;17600:2;17588:9;17579:7;17575:23;17571:32;17568:119;;;17606:79;;:::i;:::-;17568:119;17726:1;17751:61;17804:7;17795:6;17784:9;17780:22;17751:61;:::i;:::-;17741:71;;17697:125;17484:345;;;;:::o;17835:225::-;17975:34;17971:1;17963:6;17959:14;17952:58;18044:8;18039:2;18031:6;18027:15;18020:33;17835:225;:::o;18066:366::-;18208:3;18229:67;18293:2;18288:3;18229:67;:::i;:::-;18222:74;;18305:93;18394:3;18305:93;:::i;:::-;18423:2;18418:3;18414:12;18407:19;;18066:366;;;:::o;18438:419::-;18604:4;18642:2;18631:9;18627:18;18619:26;;18691:9;18685:4;18681:20;18677:1;18666:9;18662:17;18655:47;18719:131;18845:4;18719:131;:::i;:::-;18711:139;;18438:419;;;:::o;18863:177::-;19003:29;18999:1;18991:6;18987:14;18980:53;18863:177;:::o;19046:366::-;19188:3;19209:67;19273:2;19268:3;19209:67;:::i;:::-;19202:74;;19285:93;19374:3;19285:93;:::i;:::-;19403:2;19398:3;19394:12;19387:19;;19046:366;;;:::o;19418:419::-;19584:4;19622:2;19611:9;19607:18;19599:26;;19671:9;19665:4;19661:20;19657:1;19646:9;19642:17;19635:47;19699:131;19825:4;19699:131;:::i;:::-;19691:139;;19418:419;;;:::o;19843:223::-;19983:34;19979:1;19971:6;19967:14;19960:58;20052:6;20047:2;20039:6;20035:15;20028:31;19843:223;:::o;20072:366::-;20214:3;20235:67;20299:2;20294:3;20235:67;:::i;:::-;20228:74;;20311:93;20400:3;20311:93;:::i;:::-;20429:2;20424:3;20420:12;20413:19;;20072:366;;;:::o;20444:419::-;20610:4;20648:2;20637:9;20633:18;20625:26;;20697:9;20691:4;20687:20;20683:1;20672:9;20668:17;20661:47;20725:131;20851:4;20725:131;:::i;:::-;20717:139;;20444:419;;;:::o;20869:221::-;21009:34;21005:1;20997:6;20993:14;20986:58;21078:4;21073:2;21065:6;21061:15;21054:29;20869:221;:::o;21096:366::-;21238:3;21259:67;21323:2;21318:3;21259:67;:::i;:::-;21252:74;;21335:93;21424:3;21335:93;:::i;:::-;21453:2;21448:3;21444:12;21437:19;;21096:366;;;:::o;21468:419::-;21634:4;21672:2;21661:9;21657:18;21649:26;;21721:9;21715:4;21711:20;21707:1;21696:9;21692:17;21685:47;21749:131;21875:4;21749:131;:::i;:::-;21741:139;;21468:419;;;:::o;21893:410::-;21933:7;21956:20;21974:1;21956:20;:::i;:::-;21951:25;;21990:20;22008:1;21990:20;:::i;:::-;21985:25;;22045:1;22042;22038:9;22067:30;22085:11;22067:30;:::i;:::-;22056:41;;22246:1;22237:7;22233:15;22230:1;22227:22;22207:1;22200:9;22180:83;22157:139;;22276:18;;:::i;:::-;22157:139;21941:362;21893:410;;;;:::o;22309:180::-;22357:77;22354:1;22347:88;22454:4;22451:1;22444:15;22478:4;22475:1;22468:15;22495:185;22535:1;22552:20;22570:1;22552:20;:::i;:::-;22547:25;;22586:20;22604:1;22586:20;:::i;:::-;22581:25;;22625:1;22615:35;;22630:18;;:::i;:::-;22615:35;22672:1;22669;22665:9;22660:14;;22495:185;;;;:::o;22686:224::-;22826:34;22822:1;22814:6;22810:14;22803:58;22895:7;22890:2;22882:6;22878:15;22871:32;22686:224;:::o;22916:366::-;23058:3;23079:67;23143:2;23138:3;23079:67;:::i;:::-;23072:74;;23155:93;23244:3;23155:93;:::i;:::-;23273:2;23268:3;23264:12;23257:19;;22916:366;;;:::o;23288:419::-;23454:4;23492:2;23481:9;23477:18;23469:26;;23541:9;23535:4;23531:20;23527:1;23516:9;23512:17;23505:47;23569:131;23695:4;23569:131;:::i;:::-;23561:139;;23288:419;;;:::o;23713:222::-;23853:34;23849:1;23841:6;23837:14;23830:58;23922:5;23917:2;23909:6;23905:15;23898:30;23713:222;:::o;23941:366::-;24083:3;24104:67;24168:2;24163:3;24104:67;:::i;:::-;24097:74;;24180:93;24269:3;24180:93;:::i;:::-;24298:2;24293:3;24289:12;24282:19;;23941:366;;;:::o;24313:419::-;24479:4;24517:2;24506:9;24502:18;24494:26;;24566:9;24560:4;24556:20;24552:1;24541:9;24537:17;24530:47;24594:131;24720:4;24594:131;:::i;:::-;24586:139;;24313:419;;;:::o;24738:172::-;24878:24;24874:1;24866:6;24862:14;24855:48;24738:172;:::o;24916:366::-;25058:3;25079:67;25143:2;25138:3;25079:67;:::i;:::-;25072:74;;25155:93;25244:3;25155:93;:::i;:::-;25273:2;25268:3;25264:12;25257:19;;24916:366;;;:::o;25288:419::-;25454:4;25492:2;25481:9;25477:18;25469:26;;25541:9;25535:4;25531:20;25527:1;25516:9;25512:17;25505:47;25569:131;25695:4;25569:131;:::i;:::-;25561:139;;25288:419;;;:::o;25713:222::-;25853:34;25849:1;25841:6;25837:14;25830:58;25922:5;25917:2;25909:6;25905:15;25898:30;25713:222;:::o;25941:366::-;26083:3;26104:67;26168:2;26163:3;26104:67;:::i;:::-;26097:74;;26180:93;26269:3;26180:93;:::i;:::-;26298:2;26293:3;26289:12;26282:19;;25941:366;;;:::o;26313:419::-;26479:4;26517:2;26506:9;26502:18;26494:26;;26566:9;26560:4;26556:20;26552:1;26541:9;26537:17;26530:47;26594:131;26720:4;26594:131;:::i;:::-;26586:139;;26313:419;;;:::o;26738:297::-;26878:34;26874:1;26866:6;26862:14;26855:58;26947:34;26942:2;26934:6;26930:15;26923:59;27016:11;27011:2;27003:6;26999:15;26992:36;26738:297;:::o;27041:366::-;27183:3;27204:67;27268:2;27263:3;27204:67;:::i;:::-;27197:74;;27280:93;27369:3;27280:93;:::i;:::-;27398:2;27393:3;27389:12;27382:19;;27041:366;;;:::o;27413:419::-;27579:4;27617:2;27606:9;27602:18;27594:26;;27666:9;27660:4;27656:20;27652:1;27641:9;27637:17;27630:47;27694:131;27820:4;27694:131;:::i;:::-;27686:139;;27413:419;;;:::o;27838:240::-;27978:34;27974:1;27966:6;27962:14;27955:58;28047:23;28042:2;28034:6;28030:15;28023:48;27838:240;:::o;28084:366::-;28226:3;28247:67;28311:2;28306:3;28247:67;:::i;:::-;28240:74;;28323:93;28412:3;28323:93;:::i;:::-;28441:2;28436:3;28432:12;28425:19;;28084:366;;;:::o;28456:419::-;28622:4;28660:2;28649:9;28645:18;28637:26;;28709:9;28703:4;28699:20;28695:1;28684:9;28680:17;28673:47;28737:131;28863:4;28737:131;:::i;:::-;28729:139;;28456:419;;;:::o;28881:169::-;29021:21;29017:1;29009:6;29005:14;28998:45;28881:169;:::o;29056:366::-;29198:3;29219:67;29283:2;29278:3;29219:67;:::i;:::-;29212:74;;29295:93;29384:3;29295:93;:::i;:::-;29413:2;29408:3;29404:12;29397:19;;29056:366;;;:::o;29428:419::-;29594:4;29632:2;29621:9;29617:18;29609:26;;29681:9;29675:4;29671:20;29667:1;29656:9;29652:17;29645:47;29709:131;29835:4;29709:131;:::i;:::-;29701:139;;29428:419;;;:::o;29853:241::-;29993:34;29989:1;29981:6;29977:14;29970:58;30062:24;30057:2;30049:6;30045:15;30038:49;29853:241;:::o;30100:366::-;30242:3;30263:67;30327:2;30322:3;30263:67;:::i;:::-;30256:74;;30339:93;30428:3;30339:93;:::i;:::-;30457:2;30452:3;30448:12;30441:19;;30100:366;;;:::o;30472:419::-;30638:4;30676:2;30665:9;30661:18;30653:26;;30725:9;30719:4;30715:20;30711:1;30700:9;30696:17;30689:47;30753:131;30879:4;30753:131;:::i;:::-;30745:139;;30472:419;;;:::o;30897:194::-;30937:4;30957:20;30975:1;30957:20;:::i;:::-;30952:25;;30991:20;31009:1;30991:20;:::i;:::-;30986:25;;31035:1;31032;31028:9;31020:17;;31059:1;31053:4;31050:11;31047:37;;;31064:18;;:::i;:::-;31047:37;30897:194;;;;:::o;31097:147::-;31198:11;31235:3;31220:18;;31097:147;;;;:::o;31250:114::-;;:::o;31370:398::-;31529:3;31550:83;31631:1;31626:3;31550:83;:::i;:::-;31543:90;;31642:93;31731:3;31642:93;:::i;:::-;31760:1;31755:3;31751:11;31744:18;;31370:398;;;:::o;31774:379::-;31958:3;31980:147;32123:3;31980:147;:::i;:::-;31973:154;;32144:3;32137:10;;31774:379;;;:::o;32159:220::-;32299:34;32295:1;32287:6;32283:14;32276:58;32368:3;32363:2;32355:6;32351:15;32344:28;32159:220;:::o;32385:366::-;32527:3;32548:67;32612:2;32607:3;32548:67;:::i;:::-;32541:74;;32624:93;32713:3;32624:93;:::i;:::-;32742:2;32737:3;32733:12;32726:19;;32385:366;;;:::o;32757:419::-;32923:4;32961:2;32950:9;32946:18;32938:26;;33010:9;33004:4;33000:20;32996:1;32985:9;32981:17;32974:47;33038:131;33164:4;33038:131;:::i;:::-;33030:139;;32757:419;;;:::o;33182:220::-;33322:34;33318:1;33310:6;33306:14;33299:58;33391:3;33386:2;33378:6;33374:15;33367:28;33182:220;:::o;33408:366::-;33550:3;33571:67;33635:2;33630:3;33571:67;:::i;:::-;33564:74;;33647:93;33736:3;33647:93;:::i;:::-;33765:2;33760:3;33756:12;33749:19;;33408:366;;;:::o;33780:419::-;33946:4;33984:2;33973:9;33969:18;33961:26;;34033:9;34027:4;34023:20;34019:1;34008:9;34004:17;33997:47;34061:131;34187:4;34061:131;:::i;:::-;34053:139;;33780:419;;;:::o;34205:143::-;34262:5;34293:6;34287:13;34278:22;;34309:33;34336:5;34309:33;:::i;:::-;34205:143;;;;:::o;34354:351::-;34424:6;34473:2;34461:9;34452:7;34448:23;34444:32;34441:119;;;34479:79;;:::i;:::-;34441:119;34599:1;34624:64;34680:7;34671:6;34660:9;34656:22;34624:64;:::i;:::-;34614:74;;34570:128;34354:351;;;;:::o;34711:85::-;34756:7;34785:5;34774:16;;34711:85;;;:::o;34802:158::-;34860:9;34893:61;34911:42;34920:32;34946:5;34920:32;:::i;:::-;34911:42;:::i;:::-;34893:61;:::i;:::-;34880:74;;34802:158;;;:::o;34966:147::-;35061:45;35100:5;35061:45;:::i;:::-;35056:3;35049:58;34966:147;;:::o;35119:114::-;35186:6;35220:5;35214:12;35204:22;;35119:114;;;:::o;35239:184::-;35338:11;35372:6;35367:3;35360:19;35412:4;35407:3;35403:14;35388:29;;35239:184;;;;:::o;35429:132::-;35496:4;35519:3;35511:11;;35549:4;35544:3;35540:14;35532:22;;35429:132;;;:::o;35567:108::-;35644:24;35662:5;35644:24;:::i;:::-;35639:3;35632:37;35567:108;;:::o;35681:179::-;35750:10;35771:46;35813:3;35805:6;35771:46;:::i;:::-;35849:4;35844:3;35840:14;35826:28;;35681:179;;;;:::o;35866:113::-;35936:4;35968;35963:3;35959:14;35951:22;;35866:113;;;:::o;36015:732::-;36134:3;36163:54;36211:5;36163:54;:::i;:::-;36233:86;36312:6;36307:3;36233:86;:::i;:::-;36226:93;;36343:56;36393:5;36343:56;:::i;:::-;36422:7;36453:1;36438:284;36463:6;36460:1;36457:13;36438:284;;;36539:6;36533:13;36566:63;36625:3;36610:13;36566:63;:::i;:::-;36559:70;;36652:60;36705:6;36652:60;:::i;:::-;36642:70;;36498:224;36485:1;36482;36478:9;36473:14;;36438:284;;;36442:14;36738:3;36731:10;;36139:608;;;36015:732;;;;:::o;36753:831::-;37016:4;37054:3;37043:9;37039:19;37031:27;;37068:71;37136:1;37125:9;37121:17;37112:6;37068:71;:::i;:::-;37149:80;37225:2;37214:9;37210:18;37201:6;37149:80;:::i;:::-;37276:9;37270:4;37266:20;37261:2;37250:9;37246:18;37239:48;37304:108;37407:4;37398:6;37304:108;:::i;:::-;37296:116;;37422:72;37490:2;37479:9;37475:18;37466:6;37422:72;:::i;:::-;37504:73;37572:3;37561:9;37557:19;37548:6;37504:73;:::i;:::-;36753:831;;;;;;;;:::o

Swarm Source

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