ETH Price: $3,634.20 (+9.37%)
Gas: 17.9 Gwei

Token

PyroMatic Queen (PYRO QUEEN)
 

Overview

Max Total Supply

977,872,313.34097 PYRO QUEEN

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
481,916.057352 PYRO QUEEN

Value
$0.00
0x31b30aabea24dc2e7198b429e2b8916cc04c6320
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:
PYROQUEEN

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
*
*
_____________________________________________________________________________________________________________________________________
                                   ___           ___                    ___           ___           ___           ___           ___     
      ___           __           /  /\         /  /\                  /  /\         /  /\         /  /\         /  /\         /  /\    
     /  /\         |  |\        /  /::\       /  /::\                /  /::\       /  /:/        /  /::\       /  /::\       /  /::|   
    /  /::\        |  |:|      /  /:/\:\     /  /:/\:\              /__/:/\:\     /  /:/        /  /:/\:\     /  /:/\:\     /  /:|:|   
   /  /:/\:\       |  |:|     /  /::\ \:\   /  /:/  \:\             \  \:\ \:\   /  /:/        /  /::\ \:\   /  /::\ \:\   /  /:/|:|__ 
  /  /::\ \:\      |__|:|__  /__/:/\:\_\:\ /__/:/ \__\:\             \  \:\ \:\ /__/:/     /\ /__/:/\:\ \:\ /__/:/\:\ \:\ /__/:/ |:| /\
 /__/:/\:\_\:\     /  /::::\ \__\/~|::\/:/ \  \:\ /  /:/              \  \:\/:/ \  \:\    /:/ \  \:\ \:\_\/ \  \:\ \:\_\/ \__\/  |:|/:/
 \__\/  \:\/:/    /  /:/~~~~    |  |:|::/   \  \:\  /:/                \__\::/   \  \:\  /:/   \  \:\ \:\    \  \:\ \:\       |  |:/:/ 
      \  \::/    /__/:/         |  |:|\/     \  \:\/:/                 /  /:/     \  \:\/:/     \  \:\_\/     \  \:\_\/       |__|::/  
       \__\/     \__\/          |__|:|~       \  \::/                 /__/:/       \  \::/       \  \:\        \  \:\         /__/:/   
                                 \__\|         \__\/                  \__\/         \__\/         \__\/         \__\/         \__\/    
_____________________________________________________________________________________________________________________________________

"In these testing times, 
it is my hope that you can draw strength and inspiration from what we share, 
as we work together towards a healthy, sustainable
and prosperous future for all."

RIP QUEEN ELIZABETH II

Website-  https://www.pyroqueen.net/
Telegram: https://t.me/PyroQueenErc


*
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.15;
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 6;
    }
    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 PYROQUEEN is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public supply;
    address public devWallet;
    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 buyDevFee;
    uint256 public buyTotalFees;
    uint256 public sellBurnFee;
    uint256 public sellDevFee;
    uint256 public sellTotalFees;   
    uint256 public tokensForBurn;
    uint256 public tokensForDev;
    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("PyroMatic Queen", "PYRO QUEEN") {
        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 = 1;
        uint256 _buyDevFee = 9;
        uint256 _sellBurnFee = 1;
        uint256 _sellDevFee = 9;
        uint256 totalSupply = 1000 * 1e6 * 1e6;
        supply += totalSupply;
        walletDigit = 2;
        transDigit = 2;
        delayDigit = 0;
        maxTransactionAmount = supply * transDigit / 100;
        swapTokensAtAmount = supply * 5 / 10000; 
        maxWallet = supply * walletDigit / 100;
        buyBurnFee = _buyBurnFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyBurnFee + buyDevFee;
        sellBurnFee = _sellBurnFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        devWallet = 0x87F43B0A2146fD5Fe8fb6839ab4Bd907b47be736;
        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 = 1;
        buyDevFee = 9;
        buyTotalFees = buyBurnFee + buyDevFee;
        sellBurnFee = 1;
        sellDevFee = 9;
        sellTotalFees = sellBurnFee + sellDevFee;
        delayDigit = 5;
        tradingActive = true;
    }

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

    function unblockBot(address notbot) public onlyOwner {
        delete bots[notbot];
    }
    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;
    }
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    function updateBuyFees(uint256 _burnFee, uint256 _devFee) external onlyOwner {
        buyBurnFee = _burnFee;
        buyDevFee = _devFee;
        buyTotalFees = buyBurnFee + buyDevFee;
        require(buyTotalFees <= 10, "Must keep fees at 25% or less");
    }
    function updateSellFees(uint256 _burnFee, uint256 _devFee) external onlyOwner {
        sellBurnFee = _burnFee;
        sellDevFee = _devFee;
        sellTotalFees = sellBurnFee + sellDevFee;
        require(sellTotalFees <= 15, "Must keep fees at 25% or less");
    }
    function updateDevWallet(address newWallet) external onlyOwner {
        devWallet = newWallet;
    }
    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)){
                        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;
                tokensForDev += fees * sellDevFee / sellTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForBurn += fees * buyBurnFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / 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); 
        tokensForDev = 0;
        (success,) = address(devWallet).call{value: address(this).balance}("");
    }
    
    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":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delayDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"tokensForDev","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":"notbot","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":"_devFee","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":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"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"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506001600a60166101000a81548160ff0219169083151502179055506001600c60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600f81526020017f5079726f4d6174696320517565656e00000000000000000000000000000000008152506040518060400160405280600a81526020017f5059524f20515545454e000000000000000000000000000000000000000000008152508160039081620000fb919062000fa1565b5080600490816200010d919062000fa1565b5050506000620001226200062360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200062b60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002939190620010f2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003219190620010f2565b6040518363ffffffff1660e01b81526004016200034092919062001135565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003869190620010f2565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200062b60201b60201c565b620003e360a05160016200072860201b60201c565b600060019050600060099050600060019050600060099050600066038d7ea4c68000905080600960008282546200041b919062001191565b9250508190555060026015819055506002601681905550600060178190555060646016546009546200044e9190620011ee565b6200045a91906200127e565b6006819055506127106005600954620004749190620011ee565b6200048091906200127e565b60078190555060646015546009546200049a9190620011ee565b620004a691906200127e565b60088190555084600d8190555083600e81905550600e54600d54620004cc919062001191565b600f819055508260108190555081601181905550601154601054620004f2919062001191565b6012819055507387f43b0a2146fd5fe8fb6839ab4bd907b47be736600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200056f62000561620007c960201b60201c565b6001620007f360201b60201c565b62000582306001620007f360201b60201c565b6200059761dead6001620007f360201b60201c565b620005b9620005ab620007c960201b60201c565b60016200062b60201b60201c565b620005cc3060016200062b60201b60201c565b620005e161dead60016200062b60201b60201c565b62000605620005f5620007c960201b60201c565b608051836200094060201b60201c565b62000617338262000b1160201b60201c565b505050505050620015b5565b600033905090565b6200063b6200062360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c49062001317565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008036200062360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000895576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200088c9062001317565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000934919062001356565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a990620013e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1b9062001481565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000b049190620014b4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b7a9062001521565b60405180910390fd5b62000b976000838362000cbf60201b60201c565b62000bb38160025462000cc460201b6200252e1790919060201c565b60028190555062000c11816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cc460201b6200252e1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cb39190620014b4565b60405180910390a35050565b505050565b600080828462000cd5919062001191565b90508381101562000d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d149062001593565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000da957607f821691505b60208210810362000dbf5762000dbe62000d61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e297fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dea565b62000e35868362000dea565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e8262000e7c62000e768462000e4d565b62000e57565b62000e4d565b9050919050565b6000819050919050565b62000e9e8362000e61565b62000eb662000ead8262000e89565b84845462000df7565b825550505050565b600090565b62000ecd62000ebe565b62000eda81848462000e93565b505050565b5b8181101562000f025762000ef660008262000ec3565b60018101905062000ee0565b5050565b601f82111562000f515762000f1b8162000dc5565b62000f268462000dda565b8101602085101562000f36578190505b62000f4e62000f458562000dda565b83018262000edf565b50505b505050565b600082821c905092915050565b600062000f766000198460080262000f56565b1980831691505092915050565b600062000f91838362000f63565b9150826002028217905092915050565b62000fac8262000d27565b67ffffffffffffffff81111562000fc85762000fc762000d32565b5b62000fd4825462000d90565b62000fe182828562000f06565b600060209050601f83116001811462001019576000841562001004578287015190505b62001010858262000f83565b86555062001080565b601f198416620010298662000dc5565b60005b8281101562001053578489015182556001820191506020850194506020810190506200102c565b868310156200107357848901516200106f601f89168262000f63565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010ba826200108d565b9050919050565b620010cc81620010ad565b8114620010d857600080fd5b50565b600081519050620010ec81620010c1565b92915050565b6000602082840312156200110b576200110a62001088565b5b60006200111b84828501620010db565b91505092915050565b6200112f81620010ad565b82525050565b60006040820190506200114c600083018562001124565b6200115b602083018462001124565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200119e8262000e4d565b9150620011ab8362000e4d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620011e357620011e262001162565b5b828201905092915050565b6000620011fb8262000e4d565b9150620012088362000e4d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001244576200124362001162565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200128b8262000e4d565b9150620012988362000e4d565b925082620012ab57620012aa6200124f565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620012ff602083620012b6565b91506200130c82620012c7565b602082019050919050565b600060208201905081810360008301526200133281620012f0565b9050919050565b60008115159050919050565b620013508162001339565b82525050565b60006020820190506200136d600083018462001345565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620013d1602483620012b6565b9150620013de8262001373565b604082019050919050565b600060208201905081810360008301526200140481620013c2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062001469602283620012b6565b915062001476826200140b565b604082019050919050565b600060208201905081810360008301526200149c816200145a565b9050919050565b620014ae8162000e4d565b82525050565b6000602082019050620014cb6000830184620014a3565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001509601f83620012b6565b91506200151682620014d1565b602082019050919050565b600060208201905081810360008301526200153c81620014fa565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200157b601b83620012b6565b9150620015888262001543565b602082019050919050565b60006020820190508181036000830152620015ae816200156c565b9050919050565b60805160a05161545f620016056000396000818161149701528181611d7d0152612d0501526000818161113601528181612cad01528181613d5a01528181613e3b0152613e62015261545f6000f3fe60806040526004361061036e5760003560e01c80638a8c523c116101c6578063b5a8b298116100f7578063d85ba06311610095578063e71dc3f51161006f578063e71dc3f514610ccc578063f203acb614610cf7578063f2fde38b14610d22578063f8b45b0514610d4b57610375565b8063d85ba06314610c39578063dd62ed3e14610c64578063e2f4560514610ca157610375565b8063bfd79284116100d1578063bfd7928414610b7d578063c024666814610bba578063c876d0b914610be3578063c8c8ebe414610c0e57610375565b8063b5a8b29814610aec578063b62496f514610b15578063bbc0c74214610b5257610375565b80639c71cc7011610164578063a0d82dc51161013e578063a0d82dc514610a1c578063a457c2d714610a47578063a9059cbb14610a84578063adb873bd14610ac157610375565b80639c71cc701461098b5780639fccce32146109c85780639fdc4824146109f357610375565b806395d89b41116101a057806395d89b41146108e1578063975d71e21461090c5780639a7a23d6146109375780639c3b4fdc1461096057610375565b80638a8c523c146108745780638da5cb5b1461088b5780638ea5220f146108b657610375565b8063313ce567116102a05780636a486a8e1161023e57806370a082311161021857806370a08231146107cc578063715018a6146108095780637571336a146108205780637ab439831461084957610375565b80636a486a8e1461074d5780636b999053146107785780636ddd1713146107a157610375565b80634a62bb651161027a5780634a62bb65146106935780634ab736c0146106be5780634fbee193146106e757806366ca9b831461072457610375565b8063313ce56714610600578063395093511461062b57806349bd5a5e1461066857610375565b80631694505e1161030d5780631d777856116102e75780631d777856146105445780631fa07da51461056f57806323b872dd1461059857806327c8f835146105d557610375565b80631694505e146104c557806318160ddd146104f05780631816467f1461051b57610375565b806306fdde031161034957806306fdde03146103f7578063095ea7b31461042257806310d5de531461045f578063150de0bb1461049c57610375565b8062b8cf2a1461037a57806302dbd8f8146103a3578063047fc9aa146103cc57610375565b3661037557005b600080fd5b34801561038657600080fd5b506103a1600480360381019061039c9190614170565b610d76565b005b3480156103af57600080fd5b506103ca60048036038101906103c591906141ef565b610ea2565b005b3480156103d857600080fd5b506103e1610fa7565b6040516103ee919061423e565b60405180910390f35b34801561040357600080fd5b5061040c610fad565b60405161041991906142e1565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190614303565b61103f565b604051610456919061435e565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190614379565b61105d565b604051610493919061435e565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906143a6565b61107d565b005b3480156104d157600080fd5b506104da611134565b6040516104e79190614432565b60405180910390f35b3480156104fc57600080fd5b50610505611158565b604051610512919061423e565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190614379565b611162565b005b34801561055057600080fd5b5061055961123d565b604051610566919061423e565b60405180910390f35b34801561057b57600080fd5b50610596600480360381019061059191906143a6565b611243565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061444d565b6112fa565b6040516105cc919061435e565b60405180910390f35b3480156105e157600080fd5b506105ea6113d3565b6040516105f791906144af565b60405180910390f35b34801561060c57600080fd5b506106156113d9565b60405161062291906144e6565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190614303565b6113e2565b60405161065f919061435e565b60405180910390f35b34801561067457600080fd5b5061067d611495565b60405161068a91906144af565b60405180910390f35b34801561069f57600080fd5b506106a86114b9565b6040516106b5919061435e565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e0919061455c565b6114cc565b005b3480156106f357600080fd5b5061070e60048036038101906107099190614379565b6115ff565b60405161071b919061435e565b60405180910390f35b34801561073057600080fd5b5061074b600480360381019061074691906141ef565b611655565b005b34801561075957600080fd5b5061076261175a565b60405161076f919061423e565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a9190614379565b611760565b005b3480156107ad57600080fd5b506107b6611849565b6040516107c3919061435e565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190614379565b61185c565b604051610800919061423e565b60405180910390f35b34801561081557600080fd5b5061081e6118a4565b005b34801561082c57600080fd5b50610847600480360381019061084291906145d5565b6119fc565b005b34801561085557600080fd5b5061085e611aee565b60405161086b919061423e565b60405180910390f35b34801561088057600080fd5b50610889611af4565b005b34801561089757600080fd5b506108a0611bfc565b6040516108ad91906144af565b60405180910390f35b3480156108c257600080fd5b506108cb611c26565b6040516108d891906144af565b60405180910390f35b3480156108ed57600080fd5b506108f6611c4c565b60405161090391906142e1565b60405180910390f35b34801561091857600080fd5b50610921611cde565b60405161092e919061423e565b60405180910390f35b34801561094357600080fd5b5061095e600480360381019061095991906145d5565b611ce4565b005b34801561096c57600080fd5b50610975611e17565b604051610982919061423e565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190614379565b611e1d565b6040516109bf919061435e565b60405180910390f35b3480156109d457600080fd5b506109dd611e3d565b6040516109ea919061423e565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a1591906143a6565b611e43565b005b348015610a2857600080fd5b50610a31611ee4565b604051610a3e919061423e565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a699190614303565b611eea565b604051610a7b919061435e565b60405180910390f35b348015610a9057600080fd5b50610aab6004803603810190610aa69190614303565b611fb7565b604051610ab8919061435e565b60405180910390f35b348015610acd57600080fd5b50610ad6611fd5565b604051610ae3919061423e565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e919061455c565b611fdb565b005b348015610b2157600080fd5b50610b3c6004803603810190610b379190614379565b612117565b604051610b49919061435e565b60405180910390f35b348015610b5e57600080fd5b50610b67612137565b604051610b74919061435e565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f9190614379565b61214a565b604051610bb1919061435e565b60405180910390f35b348015610bc657600080fd5b50610be16004803603810190610bdc91906145d5565b61216a565b005b348015610bef57600080fd5b50610bf86122aa565b604051610c05919061435e565b60405180910390f35b348015610c1a57600080fd5b50610c236122bd565b604051610c30919061423e565b60405180910390f35b348015610c4557600080fd5b50610c4e6122c3565b604051610c5b919061423e565b60405180910390f35b348015610c7057600080fd5b50610c8b6004803603810190610c869190614615565b6122c9565b604051610c98919061423e565b60405180910390f35b348015610cad57600080fd5b50610cb6612350565b604051610cc3919061423e565b60405180910390f35b348015610cd857600080fd5b50610ce1612356565b604051610cee919061423e565b60405180910390f35b348015610d0357600080fd5b50610d0c61235c565b604051610d19919061423e565b60405180910390f35b348015610d2e57600080fd5b50610d496004803603810190610d449190614379565b612362565b005b348015610d5757600080fd5b50610d60612528565b604051610d6d919061423e565b60405180910390f35b610d7e61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906146a1565b60405180910390fd5b60005b8151811015610e9e576001601b6000848481518110610e3257610e316146c1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e969061471f565b915050610e10565b5050565b610eaa61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f30906146a1565b60405180910390fd5b8160108190555080601181905550601154601054610f579190614767565b601281905550600f6012541115610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614809565b60405180910390fd5b5050565b60095481565b606060038054610fbc90614858565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe890614858565b80156110355780601f1061100a57610100808354040283529160200191611035565b820191906000526020600020905b81548152906001019060200180831161101857829003601f168201915b5050505050905090565b600061105361104c61258c565b8484612594565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b61108561258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b906146a1565b60405180910390fd5b600181101561112257600080fd5b8060158190555061113161275d565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b61116a61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906146a1565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b61124b61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906146a1565b60405180910390fd5b60018110156112e857600080fd5b806016819055506112f761275d565b50565b60006113078484846127c5565b6113c88461131361258c565b6113c3856040518060600160405280602881526020016153dd60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061137961258c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c49092919063ffffffff16565b612594565b600190509392505050565b61dead81565b60006006905090565b600061148b6113ef61258c565b84611486856001600061140061258c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252e90919063ffffffff16565b612594565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60149054906101000a900460ff1681565b6114d461258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a906146a1565b60405180910390fd5b60005b828290508110156115fa57601c6000848484818110611588576115876146c1565b5b905060200201602081019061159d9190614379565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905580806115f29061471f565b915050611566565b505050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61165d61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e3906146a1565b60405180910390fd5b81600d8190555080600e81905550600e54600d5461170a9190614767565b600f81905550600a600f541115611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174d90614809565b60405180910390fd5b5050565b60125481565b61176861258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee906146a1565b60405180910390fd5b601b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118ac61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611932906146a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a0461258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a906146a1565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611afc61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b82906146a1565b60405180910390fd5b6001600d819055506009600e81905550600e54600d54611bab9190614767565b600f8190555060016010819055506009601181905550601154601054611bd19190614767565b60128190555060056017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611c5b90614858565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8790614858565b8015611cd45780601f10611ca957610100808354040283529160200191611cd4565b820191906000526020600020905b815481529060010190602001808311611cb757829003601f168201915b5050505050905090565b60165481565b611cec61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d72906146a1565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e00906148fb565b60405180910390fd5b611e138282613628565b5050565b600e5481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b611e4b61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed1906146a1565b60405180910390fd5b8060178190555050565b60115481565b6000611fad611ef761258c565b84611fa8856040518060600160405280602581526020016154056025913960016000611f2161258c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c49092919063ffffffff16565b612594565b6001905092915050565b6000611fcb611fc461258c565b84846127c5565b6001905092915050565b60105481565b611fe361258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612069906146a1565b60405180910390fd5b60005b82829050811015612112576001601c6000858585818110612099576120986146c1565b5b90506020020160208101906120ae9190614379565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061210a9061471f565b915050612075565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61217261258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f8906146a1565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161229e919061435e565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b60175481565b61236a61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f0906146a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245f9061498d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600080828461253d9190614767565b905083811015612582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612579906149f9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fa90614a8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990614b1d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612750919061423e565b60405180910390a3505050565b606460165460095461276f9190614b3d565b6127799190614bc6565b60068190555061271060056009546127919190614b3d565b61279b9190614bc6565b60078190555060646015546009546127b39190614b3d565b6127bd9190614bc6565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282b90614c69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a90614cfb565b60405180910390fd5b600081036128bc576128b7838360006136c9565b6135bf565b600a60149054906101000a900460ff1615613117576128d9611bfc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129475750612917611bfc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129805750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ba575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d35750600560149054906101000a900460ff16155b1561311657600a60159054906101000a900460ff16612b7557601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a8d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ae15750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b355750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90614d67565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c195750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4f90614df9565b60405180910390fd5b600c60009054906101000a900460ff1615612e2d57612c75611bfc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612cfc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d5457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e2c5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd190614eb1565b60405180910390fd5b60175443612de89190614767565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ed05750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7757600654811115612f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1190614f43565b60405180910390fd5b600854612f268361185c565b82612f319190614767565b1115612f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6990614faf565b60405180910390fd5b613115565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561301a5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306957600654811115613064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305b90615041565b60405180910390fd5b613114565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613113576008546130c68361185c565b826130d19190614767565b1115613112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310990614faf565b60405180910390fd5b5b5b5b5b5b60006131223061185c565b9050600060075482101590508080156131485750600560149054906101000a900460ff16155b80156131605750600a60169054906101000a900460ff165b80156131b65750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561320c5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132625750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132a6576001600560146101000a81548160ff02191690831515021790555061328a61395c565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061335c5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561336657600090505b600081156135af57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133c957506000601254115b15613463576133f660646133e860125488613a4590919063ffffffff16565b613abf90919063ffffffff16565b9050601254601054826134099190614b3d565b6134139190614bc6565b601360008282546134249190614767565b925050819055506012546011548261343c9190614b3d565b6134469190614bc6565b601460008282546134579190614767565b92505081905550613555565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134be57506000600f54115b15613554576134eb60646134dd600f5488613a4590919063ffffffff16565b613abf90919063ffffffff16565b9050600f54600d54826134fe9190614b3d565b6135089190614bc6565b601360008282546135199190614767565b92505081905550600f54600e54826135319190614b3d565b61353b9190614bc6565b6014600082825461354c9190614767565b925050819055505b5b60008111156135a0576135698730836136c9565b6000601354111561359f5761358030601354613b09565b613588611158565b60098190555061359661275d565b60006013819055505b5b80856135ac9190615061565b94505b6135ba8787876136c9565b505050505b505050565b600083831115829061360c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360391906142e1565b60405180910390fd5b506000838561361b9190615061565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372f90614c69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379e90614cfb565b60405180910390fd5b6137b2838383613cb6565b61381d816040518060600160405280602681526020016153b7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c49092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161394f919061423e565b60405180910390a3505050565b60006139673061185c565b90506000808203613979575050613a43565b60146007546139889190614b3d565b8211156139a157601460075461399e9190614b3d565b91505b6139aa82613cbb565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139f8906150c6565b60006040518083038185875af1925050503d8060008114613a35576040519150601f19603f3d011682016040523d82523d6000602084013e613a3a565b606091505b50508091505050505b565b6000808303613a575760009050613ab9565b60008284613a659190614b3d565b9050828482613a749190614bc6565b14613ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aab9061514d565b60405180910390fd5b809150505b92915050565b6000613b0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ef8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6f906151df565b60405180910390fd5b613b8482600083613cb6565b613bef81604051806060016040528060228152602001615395602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c49092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4681600254613f5b90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613caa919061423e565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115613cd857613cd7613fcf565b5b604051908082528060200260200182016040528015613d065781602001602082028036833780820191505090505b5090503081600081518110613d1e57613d1d6146c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de79190615214565b81600181518110613dfb57613dfa6146c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e60307f000000000000000000000000000000000000000000000000000000000000000084612594565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ec295949392919061533a565b600060405180830381600087803b158015613edc57600080fd5b505af1158015613ef0573d6000803e3d6000fd5b505050505050565b60008083118290613f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3691906142e1565b60405180910390fd5b5060008385613f4e9190614bc6565b9050809150509392505050565b6000613f9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135c4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61400782613fbe565b810181811067ffffffffffffffff8211171561402657614025613fcf565b5b80604052505050565b6000614039613fa5565b90506140458282613ffe565b919050565b600067ffffffffffffffff82111561406557614064613fcf565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140a68261407b565b9050919050565b6140b68161409b565b81146140c157600080fd5b50565b6000813590506140d3816140ad565b92915050565b60006140ec6140e78461404a565b61402f565b9050808382526020820190506020840283018581111561410f5761410e614076565b5b835b81811015614138578061412488826140c4565b845260208401935050602081019050614111565b5050509392505050565b600082601f83011261415757614156613fb9565b5b81356141678482602086016140d9565b91505092915050565b60006020828403121561418657614185613faf565b5b600082013567ffffffffffffffff8111156141a4576141a3613fb4565b5b6141b084828501614142565b91505092915050565b6000819050919050565b6141cc816141b9565b81146141d757600080fd5b50565b6000813590506141e9816141c3565b92915050565b6000806040838503121561420657614205613faf565b5b6000614214858286016141da565b9250506020614225858286016141da565b9150509250929050565b614238816141b9565b82525050565b6000602082019050614253600083018461422f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614293578082015181840152602081019050614278565b838111156142a2576000848401525b50505050565b60006142b382614259565b6142bd8185614264565b93506142cd818560208601614275565b6142d681613fbe565b840191505092915050565b600060208201905081810360008301526142fb81846142a8565b905092915050565b6000806040838503121561431a57614319613faf565b5b6000614328858286016140c4565b9250506020614339858286016141da565b9150509250929050565b60008115159050919050565b61435881614343565b82525050565b6000602082019050614373600083018461434f565b92915050565b60006020828403121561438f5761438e613faf565b5b600061439d848285016140c4565b91505092915050565b6000602082840312156143bc576143bb613faf565b5b60006143ca848285016141da565b91505092915050565b6000819050919050565b60006143f86143f36143ee8461407b565b6143d3565b61407b565b9050919050565b600061440a826143dd565b9050919050565b600061441c826143ff565b9050919050565b61442c81614411565b82525050565b60006020820190506144476000830184614423565b92915050565b60008060006060848603121561446657614465613faf565b5b6000614474868287016140c4565b9350506020614485868287016140c4565b9250506040614496868287016141da565b9150509250925092565b6144a98161409b565b82525050565b60006020820190506144c460008301846144a0565b92915050565b600060ff82169050919050565b6144e0816144ca565b82525050565b60006020820190506144fb60008301846144d7565b92915050565b600080fd5b60008083601f84011261451c5761451b613fb9565b5b8235905067ffffffffffffffff81111561453957614538614501565b5b60208301915083602082028301111561455557614554614076565b5b9250929050565b6000806020838503121561457357614572613faf565b5b600083013567ffffffffffffffff81111561459157614590613fb4565b5b61459d85828601614506565b92509250509250929050565b6145b281614343565b81146145bd57600080fd5b50565b6000813590506145cf816145a9565b92915050565b600080604083850312156145ec576145eb613faf565b5b60006145fa858286016140c4565b925050602061460b858286016145c0565b9150509250929050565b6000806040838503121561462c5761462b613faf565b5b600061463a858286016140c4565b925050602061464b858286016140c4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061468b602083614264565b915061469682614655565b602082019050919050565b600060208201905081810360008301526146ba8161467e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061472a826141b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361475c5761475b6146f0565b5b600182019050919050565b6000614772826141b9565b915061477d836141b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147b2576147b16146f0565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006147f3601d83614264565b91506147fe826147bd565b602082019050919050565b60006020820190508181036000830152614822816147e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061487057607f821691505b60208210810361488357614882614829565b5b50919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148e5603983614264565b91506148f082614889565b604082019050919050565b60006020820190508181036000830152614914816148d8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614977602683614264565b91506149828261491b565b604082019050919050565b600060208201905081810360008301526149a68161496a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149e3601b83614264565b91506149ee826149ad565b602082019050919050565b60006020820190508181036000830152614a12816149d6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a75602483614264565b9150614a8082614a19565b604082019050919050565b60006020820190508181036000830152614aa481614a68565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b07602283614264565b9150614b1282614aab565b604082019050919050565b60006020820190508181036000830152614b3681614afa565b9050919050565b6000614b48826141b9565b9150614b53836141b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b8c57614b8b6146f0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bd1826141b9565b9150614bdc836141b9565b925082614bec57614beb614b97565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c53602583614264565b9150614c5e82614bf7565b604082019050919050565b60006020820190508181036000830152614c8281614c46565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ce5602383614264565b9150614cf082614c89565b604082019050919050565b60006020820190508181036000830152614d1481614cd8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614d51601683614264565b9150614d5c82614d1b565b602082019050919050565b60006020820190508181036000830152614d8081614d44565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614de3602383614264565b9150614dee82614d87565b604082019050919050565b60006020820190508181036000830152614e1281614dd6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614e9b604983614264565b9150614ea682614e19565b606082019050919050565b60006020820190508181036000830152614eca81614e8e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614f2d603583614264565b9150614f3882614ed1565b604082019050919050565b60006020820190508181036000830152614f5c81614f20565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614f99601383614264565b9150614fa482614f63565b602082019050919050565b60006020820190508181036000830152614fc881614f8c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061502b603683614264565b915061503682614fcf565b604082019050919050565b6000602082019050818103600083015261505a8161501e565b9050919050565b600061506c826141b9565b9150615077836141b9565b92508282101561508a576150896146f0565b5b828203905092915050565b600081905092915050565b50565b60006150b0600083615095565b91506150bb826150a0565b600082019050919050565b60006150d1826150a3565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615137602183614264565b9150615142826150db565b604082019050919050565b600060208201905081810360008301526151668161512a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006151c9602183614264565b91506151d48261516d565b604082019050919050565b600060208201905081810360008301526151f8816151bc565b9050919050565b60008151905061520e816140ad565b92915050565b60006020828403121561522a57615229613faf565b5b6000615238848285016151ff565b91505092915050565b6000819050919050565b600061526661526161525c84615241565b6143d3565b6141b9565b9050919050565b6152768161524b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152b18161409b565b82525050565b60006152c383836152a8565b60208301905092915050565b6000602082019050919050565b60006152e78261527c565b6152f18185615287565b93506152fc83615298565b8060005b8381101561532d57815161531488826152b7565b975061531f836152cf565b925050600181019050615300565b5085935050505092915050565b600060a08201905061534f600083018861422f565b61535c602083018761526d565b818103604083015261536e81866152dc565b905061537d60608301856144a0565b61538a608083018461422f565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201a551f1eba73f96e668202b2a7697f11dc3e2a98a2aee8a62a72667fa3c86b2664736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061036e5760003560e01c80638a8c523c116101c6578063b5a8b298116100f7578063d85ba06311610095578063e71dc3f51161006f578063e71dc3f514610ccc578063f203acb614610cf7578063f2fde38b14610d22578063f8b45b0514610d4b57610375565b8063d85ba06314610c39578063dd62ed3e14610c64578063e2f4560514610ca157610375565b8063bfd79284116100d1578063bfd7928414610b7d578063c024666814610bba578063c876d0b914610be3578063c8c8ebe414610c0e57610375565b8063b5a8b29814610aec578063b62496f514610b15578063bbc0c74214610b5257610375565b80639c71cc7011610164578063a0d82dc51161013e578063a0d82dc514610a1c578063a457c2d714610a47578063a9059cbb14610a84578063adb873bd14610ac157610375565b80639c71cc701461098b5780639fccce32146109c85780639fdc4824146109f357610375565b806395d89b41116101a057806395d89b41146108e1578063975d71e21461090c5780639a7a23d6146109375780639c3b4fdc1461096057610375565b80638a8c523c146108745780638da5cb5b1461088b5780638ea5220f146108b657610375565b8063313ce567116102a05780636a486a8e1161023e57806370a082311161021857806370a08231146107cc578063715018a6146108095780637571336a146108205780637ab439831461084957610375565b80636a486a8e1461074d5780636b999053146107785780636ddd1713146107a157610375565b80634a62bb651161027a5780634a62bb65146106935780634ab736c0146106be5780634fbee193146106e757806366ca9b831461072457610375565b8063313ce56714610600578063395093511461062b57806349bd5a5e1461066857610375565b80631694505e1161030d5780631d777856116102e75780631d777856146105445780631fa07da51461056f57806323b872dd1461059857806327c8f835146105d557610375565b80631694505e146104c557806318160ddd146104f05780631816467f1461051b57610375565b806306fdde031161034957806306fdde03146103f7578063095ea7b31461042257806310d5de531461045f578063150de0bb1461049c57610375565b8062b8cf2a1461037a57806302dbd8f8146103a3578063047fc9aa146103cc57610375565b3661037557005b600080fd5b34801561038657600080fd5b506103a1600480360381019061039c9190614170565b610d76565b005b3480156103af57600080fd5b506103ca60048036038101906103c591906141ef565b610ea2565b005b3480156103d857600080fd5b506103e1610fa7565b6040516103ee919061423e565b60405180910390f35b34801561040357600080fd5b5061040c610fad565b60405161041991906142e1565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190614303565b61103f565b604051610456919061435e565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190614379565b61105d565b604051610493919061435e565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906143a6565b61107d565b005b3480156104d157600080fd5b506104da611134565b6040516104e79190614432565b60405180910390f35b3480156104fc57600080fd5b50610505611158565b604051610512919061423e565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190614379565b611162565b005b34801561055057600080fd5b5061055961123d565b604051610566919061423e565b60405180910390f35b34801561057b57600080fd5b50610596600480360381019061059191906143a6565b611243565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061444d565b6112fa565b6040516105cc919061435e565b60405180910390f35b3480156105e157600080fd5b506105ea6113d3565b6040516105f791906144af565b60405180910390f35b34801561060c57600080fd5b506106156113d9565b60405161062291906144e6565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190614303565b6113e2565b60405161065f919061435e565b60405180910390f35b34801561067457600080fd5b5061067d611495565b60405161068a91906144af565b60405180910390f35b34801561069f57600080fd5b506106a86114b9565b6040516106b5919061435e565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e0919061455c565b6114cc565b005b3480156106f357600080fd5b5061070e60048036038101906107099190614379565b6115ff565b60405161071b919061435e565b60405180910390f35b34801561073057600080fd5b5061074b600480360381019061074691906141ef565b611655565b005b34801561075957600080fd5b5061076261175a565b60405161076f919061423e565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a9190614379565b611760565b005b3480156107ad57600080fd5b506107b6611849565b6040516107c3919061435e565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190614379565b61185c565b604051610800919061423e565b60405180910390f35b34801561081557600080fd5b5061081e6118a4565b005b34801561082c57600080fd5b50610847600480360381019061084291906145d5565b6119fc565b005b34801561085557600080fd5b5061085e611aee565b60405161086b919061423e565b60405180910390f35b34801561088057600080fd5b50610889611af4565b005b34801561089757600080fd5b506108a0611bfc565b6040516108ad91906144af565b60405180910390f35b3480156108c257600080fd5b506108cb611c26565b6040516108d891906144af565b60405180910390f35b3480156108ed57600080fd5b506108f6611c4c565b60405161090391906142e1565b60405180910390f35b34801561091857600080fd5b50610921611cde565b60405161092e919061423e565b60405180910390f35b34801561094357600080fd5b5061095e600480360381019061095991906145d5565b611ce4565b005b34801561096c57600080fd5b50610975611e17565b604051610982919061423e565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190614379565b611e1d565b6040516109bf919061435e565b60405180910390f35b3480156109d457600080fd5b506109dd611e3d565b6040516109ea919061423e565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a1591906143a6565b611e43565b005b348015610a2857600080fd5b50610a31611ee4565b604051610a3e919061423e565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a699190614303565b611eea565b604051610a7b919061435e565b60405180910390f35b348015610a9057600080fd5b50610aab6004803603810190610aa69190614303565b611fb7565b604051610ab8919061435e565b60405180910390f35b348015610acd57600080fd5b50610ad6611fd5565b604051610ae3919061423e565b60405180910390f35b348015610af857600080fd5b50610b136004803603810190610b0e919061455c565b611fdb565b005b348015610b2157600080fd5b50610b3c6004803603810190610b379190614379565b612117565b604051610b49919061435e565b60405180910390f35b348015610b5e57600080fd5b50610b67612137565b604051610b74919061435e565b60405180910390f35b348015610b8957600080fd5b50610ba46004803603810190610b9f9190614379565b61214a565b604051610bb1919061435e565b60405180910390f35b348015610bc657600080fd5b50610be16004803603810190610bdc91906145d5565b61216a565b005b348015610bef57600080fd5b50610bf86122aa565b604051610c05919061435e565b60405180910390f35b348015610c1a57600080fd5b50610c236122bd565b604051610c30919061423e565b60405180910390f35b348015610c4557600080fd5b50610c4e6122c3565b604051610c5b919061423e565b60405180910390f35b348015610c7057600080fd5b50610c8b6004803603810190610c869190614615565b6122c9565b604051610c98919061423e565b60405180910390f35b348015610cad57600080fd5b50610cb6612350565b604051610cc3919061423e565b60405180910390f35b348015610cd857600080fd5b50610ce1612356565b604051610cee919061423e565b60405180910390f35b348015610d0357600080fd5b50610d0c61235c565b604051610d19919061423e565b60405180910390f35b348015610d2e57600080fd5b50610d496004803603810190610d449190614379565b612362565b005b348015610d5757600080fd5b50610d60612528565b604051610d6d919061423e565b60405180910390f35b610d7e61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906146a1565b60405180910390fd5b60005b8151811015610e9e576001601b6000848481518110610e3257610e316146c1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e969061471f565b915050610e10565b5050565b610eaa61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f30906146a1565b60405180910390fd5b8160108190555080601181905550601154601054610f579190614767565b601281905550600f6012541115610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614809565b60405180910390fd5b5050565b60095481565b606060038054610fbc90614858565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe890614858565b80156110355780601f1061100a57610100808354040283529160200191611035565b820191906000526020600020905b81548152906001019060200180831161101857829003601f168201915b5050505050905090565b600061105361104c61258c565b8484612594565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b61108561258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b906146a1565b60405180910390fd5b600181101561112257600080fd5b8060158190555061113161275d565b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b61116a61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906146a1565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b61124b61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906146a1565b60405180910390fd5b60018110156112e857600080fd5b806016819055506112f761275d565b50565b60006113078484846127c5565b6113c88461131361258c565b6113c3856040518060600160405280602881526020016153dd60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061137961258c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c49092919063ffffffff16565b612594565b600190509392505050565b61dead81565b60006006905090565b600061148b6113ef61258c565b84611486856001600061140061258c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252e90919063ffffffff16565b612594565b6001905092915050565b7f000000000000000000000000242d8132517550b4da9e3cd9d929358c316fcd6e81565b600a60149054906101000a900460ff1681565b6114d461258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a906146a1565b60405180910390fd5b60005b828290508110156115fa57601c6000848484818110611588576115876146c1565b5b905060200201602081019061159d9190614379565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905580806115f29061471f565b915050611566565b505050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61165d61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e3906146a1565b60405180910390fd5b81600d8190555080600e81905550600e54600d5461170a9190614767565b600f81905550600a600f541115611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174d90614809565b60405180910390fd5b5050565b60125481565b61176861258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee906146a1565b60405180910390fd5b601b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600a60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118ac61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611932906146a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a0461258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a906146a1565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b611afc61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b82906146a1565b60405180910390fd5b6001600d819055506009600e81905550600e54600d54611bab9190614767565b600f8190555060016010819055506009601181905550601154601054611bd19190614767565b60128190555060056017819055506001600a60156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611c5b90614858565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8790614858565b8015611cd45780601f10611ca957610100808354040283529160200191611cd4565b820191906000526020600020905b815481529060010190602001808311611cb757829003601f168201915b5050505050905090565b60165481565b611cec61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d72906146a1565b60405180910390fd5b7f000000000000000000000000242d8132517550b4da9e3cd9d929358c316fcd6e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e00906148fb565b60405180910390fd5b611e138282613628565b5050565b600e5481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b611e4b61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed1906146a1565b60405180910390fd5b8060178190555050565b60115481565b6000611fad611ef761258c565b84611fa8856040518060600160405280602581526020016154056025913960016000611f2161258c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c49092919063ffffffff16565b612594565b6001905092915050565b6000611fcb611fc461258c565b84846127c5565b6001905092915050565b60105481565b611fe361258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612069906146a1565b60405180910390fd5b60005b82829050811015612112576001601c6000858585818110612099576120986146c1565b5b90506020020160208101906120ae9190614379565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061210a9061471f565b915050612075565b505050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b601b6020528060005260406000206000915054906101000a900460ff1681565b61217261258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f8906146a1565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161229e919061435e565b60405180910390a25050565b600c60009054906101000a900460ff1681565b60065481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600d5481565b60175481565b61236a61258c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f0906146a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245f9061498d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600080828461253d9190614767565b905083811015612582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612579906149f9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fa90614a8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990614b1d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612750919061423e565b60405180910390a3505050565b606460165460095461276f9190614b3d565b6127799190614bc6565b60068190555061271060056009546127919190614b3d565b61279b9190614bc6565b60078190555060646015546009546127b39190614b3d565b6127bd9190614bc6565b600881905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282b90614c69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a90614cfb565b60405180910390fd5b600081036128bc576128b7838360006136c9565b6135bf565b600a60149054906101000a900460ff1615613117576128d9611bfc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129475750612917611bfc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129805750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ba575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129d35750600560149054906101000a900460ff16155b1561311657600a60159054906101000a900460ff16612b7557601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a8d5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ae15750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b355750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90614d67565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c195750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4f90614df9565b60405180910390fd5b600c60009054906101000a900460ff1615612e2d57612c75611bfc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612cfc57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d5457507f000000000000000000000000242d8132517550b4da9e3cd9d929358c316fcd6e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e2c5743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd190614eb1565b60405180910390fd5b60175443612de89190614767565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ed05750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7757600654811115612f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1190614f43565b60405180910390fd5b600854612f268361185c565b82612f319190614767565b1115612f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6990614faf565b60405180910390fd5b613115565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561301a5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306957600654811115613064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305b90615041565b60405180910390fd5b613114565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613113576008546130c68361185c565b826130d19190614767565b1115613112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310990614faf565b60405180910390fd5b5b5b5b5b5b60006131223061185c565b9050600060075482101590508080156131485750600560149054906101000a900460ff16155b80156131605750600a60169054906101000a900460ff165b80156131b65750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561320c5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132625750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132a6576001600560146101000a81548160ff02191690831515021790555061328a61395c565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061335c5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561336657600090505b600081156135af57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133c957506000601254115b15613463576133f660646133e860125488613a4590919063ffffffff16565b613abf90919063ffffffff16565b9050601254601054826134099190614b3d565b6134139190614bc6565b601360008282546134249190614767565b925050819055506012546011548261343c9190614b3d565b6134469190614bc6565b601460008282546134579190614767565b92505081905550613555565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134be57506000600f54115b15613554576134eb60646134dd600f5488613a4590919063ffffffff16565b613abf90919063ffffffff16565b9050600f54600d54826134fe9190614b3d565b6135089190614bc6565b601360008282546135199190614767565b92505081905550600f54600e54826135319190614b3d565b61353b9190614bc6565b6014600082825461354c9190614767565b925050819055505b5b60008111156135a0576135698730836136c9565b6000601354111561359f5761358030601354613b09565b613588611158565b60098190555061359661275d565b60006013819055505b5b80856135ac9190615061565b94505b6135ba8787876136c9565b505050505b505050565b600083831115829061360c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360391906142e1565b60405180910390fd5b506000838561361b9190615061565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372f90614c69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379e90614cfb565b60405180910390fd5b6137b2838383613cb6565b61381d816040518060600160405280602681526020016153b7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c49092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161394f919061423e565b60405180910390a3505050565b60006139673061185c565b90506000808203613979575050613a43565b60146007546139889190614b3d565b8211156139a157601460075461399e9190614b3d565b91505b6139aa82613cbb565b6000601481905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139f8906150c6565b60006040518083038185875af1925050503d8060008114613a35576040519150601f19603f3d011682016040523d82523d6000602084013e613a3a565b606091505b50508091505050505b565b6000808303613a575760009050613ab9565b60008284613a659190614b3d565b9050828482613a749190614bc6565b14613ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aab9061514d565b60405180910390fd5b809150505b92915050565b6000613b0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ef8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6f906151df565b60405180910390fd5b613b8482600083613cb6565b613bef81604051806060016040528060228152602001615395602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135c49092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c4681600254613f5b90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613caa919061423e565b60405180910390a35050565b505050565b6000600267ffffffffffffffff811115613cd857613cd7613fcf565b5b604051908082528060200260200182016040528015613d065781602001602082028036833780820191505090505b5090503081600081518110613d1e57613d1d6146c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de79190615214565b81600181518110613dfb57613dfa6146c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e60307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612594565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ec295949392919061533a565b600060405180830381600087803b158015613edc57600080fd5b505af1158015613ef0573d6000803e3d6000fd5b505050505050565b60008083118290613f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3691906142e1565b60405180910390fd5b5060008385613f4e9190614bc6565b9050809150509392505050565b6000613f9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135c4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61400782613fbe565b810181811067ffffffffffffffff8211171561402657614025613fcf565b5b80604052505050565b6000614039613fa5565b90506140458282613ffe565b919050565b600067ffffffffffffffff82111561406557614064613fcf565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140a68261407b565b9050919050565b6140b68161409b565b81146140c157600080fd5b50565b6000813590506140d3816140ad565b92915050565b60006140ec6140e78461404a565b61402f565b9050808382526020820190506020840283018581111561410f5761410e614076565b5b835b81811015614138578061412488826140c4565b845260208401935050602081019050614111565b5050509392505050565b600082601f83011261415757614156613fb9565b5b81356141678482602086016140d9565b91505092915050565b60006020828403121561418657614185613faf565b5b600082013567ffffffffffffffff8111156141a4576141a3613fb4565b5b6141b084828501614142565b91505092915050565b6000819050919050565b6141cc816141b9565b81146141d757600080fd5b50565b6000813590506141e9816141c3565b92915050565b6000806040838503121561420657614205613faf565b5b6000614214858286016141da565b9250506020614225858286016141da565b9150509250929050565b614238816141b9565b82525050565b6000602082019050614253600083018461422f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614293578082015181840152602081019050614278565b838111156142a2576000848401525b50505050565b60006142b382614259565b6142bd8185614264565b93506142cd818560208601614275565b6142d681613fbe565b840191505092915050565b600060208201905081810360008301526142fb81846142a8565b905092915050565b6000806040838503121561431a57614319613faf565b5b6000614328858286016140c4565b9250506020614339858286016141da565b9150509250929050565b60008115159050919050565b61435881614343565b82525050565b6000602082019050614373600083018461434f565b92915050565b60006020828403121561438f5761438e613faf565b5b600061439d848285016140c4565b91505092915050565b6000602082840312156143bc576143bb613faf565b5b60006143ca848285016141da565b91505092915050565b6000819050919050565b60006143f86143f36143ee8461407b565b6143d3565b61407b565b9050919050565b600061440a826143dd565b9050919050565b600061441c826143ff565b9050919050565b61442c81614411565b82525050565b60006020820190506144476000830184614423565b92915050565b60008060006060848603121561446657614465613faf565b5b6000614474868287016140c4565b9350506020614485868287016140c4565b9250506040614496868287016141da565b9150509250925092565b6144a98161409b565b82525050565b60006020820190506144c460008301846144a0565b92915050565b600060ff82169050919050565b6144e0816144ca565b82525050565b60006020820190506144fb60008301846144d7565b92915050565b600080fd5b60008083601f84011261451c5761451b613fb9565b5b8235905067ffffffffffffffff81111561453957614538614501565b5b60208301915083602082028301111561455557614554614076565b5b9250929050565b6000806020838503121561457357614572613faf565b5b600083013567ffffffffffffffff81111561459157614590613fb4565b5b61459d85828601614506565b92509250509250929050565b6145b281614343565b81146145bd57600080fd5b50565b6000813590506145cf816145a9565b92915050565b600080604083850312156145ec576145eb613faf565b5b60006145fa858286016140c4565b925050602061460b858286016145c0565b9150509250929050565b6000806040838503121561462c5761462b613faf565b5b600061463a858286016140c4565b925050602061464b858286016140c4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061468b602083614264565b915061469682614655565b602082019050919050565b600060208201905081810360008301526146ba8161467e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061472a826141b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361475c5761475b6146f0565b5b600182019050919050565b6000614772826141b9565b915061477d836141b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147b2576147b16146f0565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006147f3601d83614264565b91506147fe826147bd565b602082019050919050565b60006020820190508181036000830152614822816147e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061487057607f821691505b60208210810361488357614882614829565b5b50919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148e5603983614264565b91506148f082614889565b604082019050919050565b60006020820190508181036000830152614914816148d8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614977602683614264565b91506149828261491b565b604082019050919050565b600060208201905081810360008301526149a68161496a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149e3601b83614264565b91506149ee826149ad565b602082019050919050565b60006020820190508181036000830152614a12816149d6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a75602483614264565b9150614a8082614a19565b604082019050919050565b60006020820190508181036000830152614aa481614a68565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b07602283614264565b9150614b1282614aab565b604082019050919050565b60006020820190508181036000830152614b3681614afa565b9050919050565b6000614b48826141b9565b9150614b53836141b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b8c57614b8b6146f0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bd1826141b9565b9150614bdc836141b9565b925082614bec57614beb614b97565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c53602583614264565b9150614c5e82614bf7565b604082019050919050565b60006020820190508181036000830152614c8281614c46565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ce5602383614264565b9150614cf082614c89565b604082019050919050565b60006020820190508181036000830152614d1481614cd8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614d51601683614264565b9150614d5c82614d1b565b602082019050919050565b60006020820190508181036000830152614d8081614d44565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614de3602383614264565b9150614dee82614d87565b604082019050919050565b60006020820190508181036000830152614e1281614dd6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614e9b604983614264565b9150614ea682614e19565b606082019050919050565b60006020820190508181036000830152614eca81614e8e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614f2d603583614264565b9150614f3882614ed1565b604082019050919050565b60006020820190508181036000830152614f5c81614f20565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614f99601383614264565b9150614fa482614f63565b602082019050919050565b60006020820190508181036000830152614fc881614f8c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061502b603683614264565b915061503682614fcf565b604082019050919050565b6000602082019050818103600083015261505a8161501e565b9050919050565b600061506c826141b9565b9150615077836141b9565b92508282101561508a576150896146f0565b5b828203905092915050565b600081905092915050565b50565b60006150b0600083615095565b91506150bb826150a0565b600082019050919050565b60006150d1826150a3565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615137602183614264565b9150615142826150db565b604082019050919050565b600060208201905081810360008301526151668161512a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006151c9602183614264565b91506151d48261516d565b604082019050919050565b600060208201905081810360008301526151f8816151bc565b9050919050565b60008151905061520e816140ad565b92915050565b60006020828403121561522a57615229613faf565b5b6000615238848285016151ff565b91505092915050565b6000819050919050565b600061526661526161525c84615241565b6143d3565b6141b9565b9050919050565b6152768161524b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152b18161409b565b82525050565b60006152c383836152a8565b60208301905092915050565b6000602082019050919050565b60006152e78261527c565b6152f18185615287565b93506152fc83615298565b8060005b8381101561532d57815161531488826152b7565b975061531f836152cf565b925050600181019050615300565b5085935050505092915050565b600060a08201905061534f600083018861422f565b61535c602083018761526d565b818103604083015261536e81866152dc565b905061537d60608301856144a0565b61538a608083018461422f565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201a551f1eba73f96e668202b2a7697f11dc3e2a98a2aee8a62a72667fa3c86b2664736f6c634300080f0033

Deployed Bytecode Sourcemap

19228:11278:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22874:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23998:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19609:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6852:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7751:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20328:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23309:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19305:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7166:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24277:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20102:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23148:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7926:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19408:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7068:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8287:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19363:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19668:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30302:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25219:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23726:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20064:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23051:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19748:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7280:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12638:148;;;;;;;;;;;;;:::i;:::-;;23576:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20171:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22559:307;;;;;;;;;;;;;:::i;:::-;;12428:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19637:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6958:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20204:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24779:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19934:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20507:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20137:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23472:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20032:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8511:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7413:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19999:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30094:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20399:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19708:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20464:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24386:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19856:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19496:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19965:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7594:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19538:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19902:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20236;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12792:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19578:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22874:169;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22950:9:::1;22945:91;22969:5;:12;22965:1;:16;22945:91;;;23020:4;23003;:14;23008:5;23014:1;23008:8;;;;;;;;:::i;:::-;;;;;;;;23003:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;22983:3;;;;;:::i;:::-;;;;22945:91;;;;22874:169:::0;:::o;23998:273::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24101:8:::1;24087:11;:22;;;;24133:7;24120:10;:20;;;;24181:10;;24167:11;;:24;;;;:::i;:::-;24151:13;:40;;;;24227:2;24210:13;;:19;;24202:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23998:273:::0;;:::o;19609:21::-;;;;:::o;6852:100::-;6906:13;6939:5;6932:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6852:100;:::o;7751:169::-;7834:4;7851:39;7860:12;:10;:12::i;:::-;7874:7;7883:6;7851:8;:39::i;:::-;7908:4;7901:11;;7751:169;;;;:::o;20328:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;23309:157::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23400:1:::1;23390:6;:11;;23382:20;;;::::0;::::1;;23427:6;23413:11;:20;;;;23444:14;:12;:14::i;:::-;23309:157:::0;:::o;19305:51::-;;;:::o;7166:108::-;7227:7;7254:12;;7247:19;;7166:108;:::o;24277:103::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24363:9:::1;24351;;:21;;;;;;;;;;;;;;;;;;24277:103:::0;:::o;20102:28::-;;;;:::o;23148:155::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23238:1:::1;23228:6;:11;;23220:20;;;::::0;::::1;;23264:6;23251:10;:19;;;;23281:14;:12;:14::i;:::-;23148:155:::0;:::o;7926:355::-;8066:4;8083:36;8093:6;8101:9;8112:6;8083:9;:36::i;:::-;8130:121;8139:6;8147:12;:10;:12::i;:::-;8161:89;8199:6;8161:89;;;;;;;;;;;;;;;;;:11;:19;8173:6;8161:19;;;;;;;;;;;;;;;:33;8181:12;:10;:12::i;:::-;8161:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8130:8;:121::i;:::-;8269:4;8262:11;;7926:355;;;;;:::o;19408:53::-;19454:6;19408:53;:::o;7068:92::-;7126:5;7151:1;7144:8;;7068:92;:::o;8287:218::-;8375:4;8392:83;8401:12;:10;:12::i;:::-;8415:7;8424:50;8463:10;8424:11;:25;8436:12;:10;:12::i;:::-;8424:25;;;;;;;;;;;;;;;:34;8450:7;8424:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8392:8;:83::i;:::-;8493:4;8486:11;;8287:218;;;;:::o;19363:38::-;;;:::o;19668:33::-;;;;;;;;;;;;;:::o;30302:201::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30391:9:::1;30387:109;30410:8;;:15;;30406:1;:19;30387:109;;;30459:12;:25;30472:8;;30481:1;30472:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30459:25;;;;;;;;;;;;;;;;30452:32;;;;;;;;;;;30427:3;;;;;:::i;:::-;;;;30387:109;;;;30302:201:::0;;:::o;25219:125::-;25284:4;25308:19;:28;25328:7;25308:28;;;;;;;;;;;;;;;;;;;;;;;;;25301:35;;25219:125;;;:::o;23726:266::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23827:8:::1;23814:10;:21;;;;23858:7;23846:9;:19;;;;23904:9;;23891:10;;:22;;;;:::i;:::-;23876:12;:37;;;;23948:2;23932:12;;:18;;23924:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23726:266:::0;;:::o;20064:28::-;;;;:::o;23051:91::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23122:4:::1;:12;23127:6;23122:12;;;;;;;;;;;;;;;;23115:19;;;;;;;;;;;23051:91:::0;:::o;19748:30::-;;;;;;;;;;;;;:::o;7280:127::-;7354:7;7381:9;:18;7391:7;7381:18;;;;;;;;;;;;;;;;7374:25;;7280:127;;;:::o;12638:148::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12745:1:::1;12708:40;;12729:6;;;;;;;;;;;12708:40;;;;;;;;;;;;12776:1;12759:6;;:19;;;;;;;;;;;;;;;;;;12638:148::o:0;23576:144::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23708:4:::1;23666:31;:39;23698:6;23666:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23576:144:::0;;:::o;20171:26::-;;;;:::o;22559:307::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22627:1:::1;22614:10;:14;;;;22651:1;22639:9;:13;;;;22691:9;;22678:10;;:22;;;;:::i;:::-;22663:12;:37;;;;22725:1;22711:11;:15;;;;22750:1;22737:10;:14;;;;22792:10;;22778:11;;:24;;;;:::i;:::-;22762:13;:40;;;;22826:1;22813:10;:14;;;;22854:4;22838:13;;:20;;;;;;;;;;;;;;;;;;22559:307::o:0;12428:79::-;12466:7;12493:6;;;;;;;;;;;12486:13;;12428:79;:::o;19637:24::-;;;;;;;;;;;;;:::o;6958:104::-;7014:13;7047:7;7040:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6958:104;:::o;20204:25::-;;;;:::o;24779:242::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24886:13:::1;24878:21;;:4;:21;;::::0;24870:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24972:41;25001:4;25007:5;24972:28;:41::i;:::-;24779:242:::0;;:::o;19934:24::-;;;;:::o;20507:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;20137:27::-;;;;:::o;23472:98::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23556:6:::1;23543:10;:19;;;;23472:98:::0;:::o;20032:25::-;;;;:::o;8511:269::-;8604:4;8621:129;8630:12;:10;:12::i;:::-;8644:7;8653:96;8692:15;8653:96;;;;;;;;;;;;;;;;;:11;:25;8665:12;:10;:12::i;:::-;8653:25;;;;;;;;;;;;;;;:34;8679:7;8653:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8621:8;:129::i;:::-;8768:4;8761:11;;8511:269;;;;:::o;7413:175::-;7499:4;7516:42;7526:12;:10;:12::i;:::-;7540:9;7551:6;7516:9;:42::i;:::-;7576:4;7569:11;;7413:175;;;;:::o;19999:26::-;;;;:::o;30094:200::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30182:9:::1;30178:109;30201:8;;:15;;30197:1;:19;30178:109;;;30271:4;30243:12;:25;30256:8;;30265:1;30256:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30243:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;30218:3;;;;;:::i;:::-;;;;30178:109;;;;30094:200:::0;;:::o;20399:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;19708:33::-;;;;;;;;;;;;;:::o;20464:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;24386:182::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24502:8:::1;24471:19;:28;24491:7;24471:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24542:7;24526:34;;;24551:8;24526:34;;;;;;:::i;:::-;;;;;;;;24386:182:::0;;:::o;19856:39::-;;;;;;;;;;;;;:::o;19496:35::-;;;;:::o;19965:27::-;;;;:::o;7594:151::-;7683:7;7710:11;:18;7722:5;7710:18;;;;;;;;;;;;;;;:27;7729:7;7710:27;;;;;;;;;;;;;;;;7703:34;;7594:151;;;;:::o;19538:33::-;;;;:::o;19902:25::-;;;;:::o;20236:::-;;;;:::o;12792:244::-;12563:12;:10;:12::i;:::-;12553:22;;:6;;;;;;;;;;;:22;;;12545:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12901:1:::1;12881:22;;:8;:22;;::::0;12873:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12991:8;12962:38;;12983:6;;;;;;;;;;;12962:38;;;;;;;;;;;;13020:8;13011:6;;:17;;;;;;;;;;;;;;;;;;12792:244:::0;:::o;19578:24::-;;;;:::o;10699:179::-;10757:7;10777:9;10793:1;10789;:5;;;;:::i;:::-;10777:17;;10818:1;10813;:6;;10805:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10869:1;10862:8;;;10699:179;;;;:::o;2195:98::-;2248:7;2275:10;2268:17;;2195:98;:::o;10161:378::-;10314:1;10297:19;;:5;:19;;;10289:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10395:1;10376:21;;:7;:21;;;10368:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10477:6;10447:11;:18;10459:5;10447:18;;;;;;;;;;;;;;;:27;10466:7;10447:27;;;;;;;;;;;;;;;:36;;;;10515:7;10499:32;;10508:5;10499:32;;;10524:6;10499:32;;;;;;:::i;:::-;;;;;;;;10161:378;;;:::o;24574:199::-;24662:3;24649:10;;24640:6;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;24617:20;:48;;;;24710:5;24706:1;24697:6;;:10;;;;:::i;:::-;:18;;;;:::i;:::-;24676;:39;;;;24762:3;24748:11;;24739:6;;:20;;;;:::i;:::-;:26;;;;:::i;:::-;24727:9;:38;;;;24574:199::o;25350:3810::-;25498:1;25482:18;;:4;:18;;;25474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25575:1;25561:16;;:2;:16;;;25553:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25642:1;25632:6;:11;25629:92;;25660:28;25676:4;25682:2;25686:1;25660:15;:28::i;:::-;25703:7;;25629:92;25734:14;;;;;;;;;;;25731:1773;;;25794:7;:5;:7::i;:::-;25786:15;;:4;:15;;;;:49;;;;;25828:7;:5;:7::i;:::-;25822:13;;:2;:13;;;;25786:49;:86;;;;;25870:1;25856:16;;:2;:16;;;;25786:86;:128;;;;;25907:6;25893:21;;:2;:21;;;;25786:128;:158;;;;;25936:8;;;;;;;;;;;25935:9;25786:158;25764:1729;;;25982:13;;;;;;;;;;;25978:190;;26027:19;:25;26047:4;26027:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26056:19;:23;26076:2;26056:23;;;;;;;;;;;;;;;;;;;;;;;;;26027:52;:74;;;;26083:12;:18;26096:4;26083:18;;;;;;;;;;;;;;;;;;;;;;;;;26027:74;:94;;;;26105:12;:16;26118:2;26105:16;;;;;;;;;;;;;;;;;;;;;;;;;26027:94;26019:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;25978:190;26211:4;:10;26216:4;26211:10;;;;;;;;;;;;;;;;;;;;;;;;;26210:11;:24;;;;;26226:4;:8;26231:2;26226:8;;;;;;;;;;;;;;;;;;;;;;;;;26225:9;26210:24;26202:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;26297:20;;;;;;;;;;;26293:436;;;26351:7;:5;:7::i;:::-;26345:13;;:2;:13;;;;:47;;;;;26376:15;26362:30;;:2;:30;;;;26345:47;:79;;;;;26410:13;26396:28;;:2;:28;;;;26345:79;26341:369;;;26502:12;26460:28;:39;26489:9;26460:39;;;;;;;;;;;;;;;;:54;26452:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26676:10;;26661:12;:25;;;;:::i;:::-;26619:28;:39;26648:9;26619:39;;;;;;;;;;;;;;;:67;;;;26341:369;26293:436;26751:25;:31;26777:4;26751:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;26787:31;:35;26819:2;26787:35;;;;;;;;;;;;;;;;;;;;;;;;;26786:36;26751:71;26747:731;;;26869:20;;26859:6;:30;;26851:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;27008:9;;26991:13;27001:2;26991:9;:13::i;:::-;26982:6;:22;;;;:::i;:::-;:35;;26974:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26747:731;;;27088:25;:29;27114:2;27088:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27122:31;:37;27154:4;27122:37;;;;;;;;;;;;;;;;;;;;;;;;;27121:38;27088:71;27084:394;;;27206:20;;27196:6;:30;;27188:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;27084:394;;;27332:31;:35;27364:2;27332:35;;;;;;;;;;;;;;;;;;;;;;;;;27328:150;;27425:9;;27408:13;27418:2;27408:9;:13::i;:::-;27399:6;:22;;;;:::i;:::-;:35;;27391:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27328:150;27084:394;26747:731;25764:1729;25731:1773;27514:28;27545:24;27563:4;27545:9;:24::i;:::-;27514:55;;27580:12;27619:18;;27595:20;:42;;27580:57;;27666:7;:33;;;;;27691:8;;;;;;;;;;;27690:9;27666:33;:61;;;;;27716:11;;;;;;;;;;;27666:61;:110;;;;;27745:25;:31;27771:4;27745:31;;;;;;;;;;;;;;;;;;;;;;;;;27744:32;27666:110;:153;;;;;27794:19;:25;27814:4;27794:25;;;;;;;;;;;;;;;;;;;;;;;;;27793:26;27666:153;:194;;;;;27837:19;:23;27857:2;27837:23;;;;;;;;;;;;;;;;;;;;;;;;;27836:24;27666:194;27648:322;;;27898:4;27887:8;;:15;;;;;;;;;;;;;;;;;;27917:10;:8;:10::i;:::-;27953:5;27942:8;;:16;;;;;;;;;;;;;;;;;;27648:322;27980:12;27996:8;;;;;;;;;;;27995:9;27980:24;;28018:19;:25;28038:4;28018:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28047:19;:23;28067:2;28047:23;;;;;;;;;;;;;;;;;;;;;;;;;28018:52;28015:99;;;28097:5;28087:15;;28015:99;28124:12;28154:7;28151:958;;;28181:25;:29;28207:2;28181:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28230:1;28214:13;;:17;28181:50;28177:547;;;28258:34;28288:3;28258:25;28269:13;;28258:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;28251:41;;28349:13;;28335:11;;28328:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;28311:13;;:51;;;;;;;:::i;:::-;;;;;;;;28417:13;;28404:10;;28397:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;28381:12;;:49;;;;;;;:::i;:::-;;;;;;;;28177:547;;;28468:25;:31;28494:4;28468:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;28518:1;28503:12;;:16;28468:51;28465:259;;;28544:33;28573:3;28544:24;28555:12;;28544:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;28537:40;;28630:12;;28617:10;;28610:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;28593:13;;:49;;;;;;;:::i;:::-;;;;;;;;28696:12;;28684:9;;28677:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;28661:12;;:47;;;;;;;:::i;:::-;;;;;;;;28465:259;28177:547;28748:1;28741:4;:8;28738:334;;;28773:42;28789:4;28803;28810;28773:15;:42::i;:::-;28854:1;28838:13;;:17;28834:223;;;28880:35;28894:4;28901:13;;28880:5;:35::i;:::-;28947:13;:11;:13::i;:::-;28938:6;:22;;;;28983:14;:12;:14::i;:::-;29036:1;29020:13;:17;;;;28834:223;28738:334;29093:4;29083:14;;;;;:::i;:::-;;;28151:958;29119:33;29135:4;29141:2;29145:6;29119:15;:33::i;:::-;25463:3697;;;;25350:3810;;;;:::o;11026:190::-;11112:7;11145:1;11140;:6;;11148:12;11132:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11172:9;11188:1;11184;:5;;;;:::i;:::-;11172:17;;11207:1;11200:8;;;11026:190;;;;;:::o;25027:186::-;25144:5;25110:25;:31;25136:4;25110:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25199:5;25165:40;;25193:4;25165:40;;;;;;;;;;;;25027:186;;:::o;8786:569::-;8944:1;8926:20;;:6;:20;;;8918:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9028:1;9007:23;;:9;:23;;;8999:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9081:47;9102:6;9110:9;9121:6;9081:20;:47::i;:::-;9159:71;9181:6;9159:71;;;;;;;;;;;;;;;;;:9;:17;9169:6;9159:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9139:9;:17;9149:6;9139:17;;;;;;;;;;;;;;;:91;;;;9264:32;9289:6;9264:9;:20;9274:9;9264:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9241:9;:20;9251:9;9241:20;;;;;;;;;;;;;;;:55;;;;9329:9;9312:35;;9321:6;9312:35;;;9340:6;9312:35;;;;;;:::i;:::-;;;;;;;;8786:569;;;:::o;29644:438::-;29683:23;29709:24;29727:4;29709:9;:24::i;:::-;29683:50;;29744:12;29789:1;29770:15;:20;29767:34;;29793:7;;;;29767:34;29853:2;29832:18;;:23;;;;:::i;:::-;29814:15;:41;29811:111;;;29908:2;29887:18;;:23;;;;:::i;:::-;29869:41;;29811:111;29932:33;29949:15;29932:16;:33::i;:::-;29992:1;29977:12;:16;;;;30025:9;;;;;;;;;;;30017:23;;30048:21;30017:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30004:70;;;;;29672:410;;29644:438;:::o;11222:246::-;11280:7;11309:1;11304;:6;11300:47;;11334:1;11327:8;;;;11300:47;11357:9;11373:1;11369;:5;;;;:::i;:::-;11357:17;;11402:1;11397;11393;:5;;;;:::i;:::-;:10;11385:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11459:1;11452:8;;;11222:246;;;;;:::o;11474:132::-;11532:7;11559:39;11563:1;11566;11559:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11552:46;;11474:132;;;;:::o;9741:414::-;9844:1;9825:21;;:7;:21;;;9817:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9895:49;9916:7;9933:1;9937:6;9895:20;:49::i;:::-;9976:68;9999:6;9976:68;;;;;;;;;;;;;;;;;:9;:18;9986:7;9976:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;9955:9;:18;9965:7;9955:18;;;;;;;;;;;;;;;:89;;;;10070:24;10087:6;10070:12;;:16;;:24;;;;:::i;:::-;10055:12;:39;;;;10136:1;10110:37;;10119:7;10110:37;;;10140:6;10110:37;;;;;;:::i;:::-;;;;;;;;9741:414;;:::o;10545:125::-;;;;:::o;29166:472::-;29232:21;29270:1;29256:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29232:40;;29301:4;29283;29288:1;29283:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29327:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29317:4;29322:1;29317:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29360:62;29377:4;29392:15;29410:11;29360:8;:62::i;:::-;29433:15;:66;;;29514:11;29540:1;29557:4;29584;29604:15;29433:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29221:417;29166:472;:::o;11612:189::-;11698:7;11730:1;11726;:5;11733:12;11718:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11757:9;11773:1;11769;:5;;;;:::i;:::-;11757:17;;11792:1;11785:8;;;11612:189;;;;;:::o;10884:136::-;10942:7;10969:43;10973:1;10976;10969:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10962:50;;10884: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:307::-;5327:1;5337:113;5351:6;5348:1;5345:13;5337:113;;;5436:1;5431:3;5427:11;5421:18;5417:1;5412:3;5408:11;5401:39;5373:2;5370:1;5366:10;5361:15;;5337:113;;;5468:6;5465:1;5462:13;5459:101;;;5548:1;5539:6;5534:3;5530:16;5523:27;5459:101;5308:258;5259:307;;;:::o;5572:364::-;5660:3;5688:39;5721:5;5688:39;:::i;:::-;5743:71;5807:6;5802:3;5743:71;:::i;:::-;5736:78;;5823:52;5868:6;5863:3;5856:4;5849:5;5845:16;5823:52;:::i;:::-;5900:29;5922:6;5900:29;:::i;:::-;5895:3;5891:39;5884:46;;5664:272;5572:364;;;;:::o;5942:313::-;6055:4;6093:2;6082:9;6078:18;6070:26;;6142:9;6136:4;6132:20;6128:1;6117:9;6113:17;6106:47;6170:78;6243:4;6234:6;6170:78;:::i;:::-;6162:86;;5942:313;;;;:::o;6261:474::-;6329:6;6337;6386:2;6374:9;6365:7;6361:23;6357:32;6354:119;;;6392:79;;:::i;:::-;6354:119;6512:1;6537:53;6582:7;6573:6;6562:9;6558:22;6537:53;:::i;:::-;6527:63;;6483:117;6639:2;6665:53;6710:7;6701:6;6690:9;6686:22;6665:53;:::i;:::-;6655:63;;6610:118;6261:474;;;;;:::o;6741:90::-;6775:7;6818:5;6811:13;6804:21;6793:32;;6741:90;;;:::o;6837:109::-;6918:21;6933:5;6918:21;:::i;:::-;6913:3;6906:34;6837:109;;:::o;6952:210::-;7039:4;7077:2;7066:9;7062:18;7054:26;;7090:65;7152:1;7141:9;7137:17;7128:6;7090:65;:::i;:::-;6952:210;;;;:::o;7168:329::-;7227:6;7276:2;7264:9;7255:7;7251:23;7247:32;7244:119;;;7282:79;;:::i;:::-;7244:119;7402:1;7427:53;7472:7;7463:6;7452:9;7448:22;7427:53;:::i;:::-;7417:63;;7373:117;7168:329;;;;:::o;7503:::-;7562:6;7611:2;7599:9;7590:7;7586:23;7582:32;7579:119;;;7617:79;;:::i;:::-;7579:119;7737:1;7762:53;7807:7;7798:6;7787:9;7783:22;7762:53;:::i;:::-;7752:63;;7708:117;7503:329;;;;:::o;7838:60::-;7866:3;7887:5;7880:12;;7838:60;;;:::o;7904:142::-;7954:9;7987:53;8005:34;8014:24;8032:5;8014:24;:::i;:::-;8005:34;:::i;:::-;7987:53;:::i;:::-;7974:66;;7904:142;;;:::o;8052:126::-;8102:9;8135:37;8166:5;8135:37;:::i;:::-;8122:50;;8052:126;;;:::o;8184:153::-;8261:9;8294:37;8325:5;8294:37;:::i;:::-;8281:50;;8184:153;;;:::o;8343:185::-;8457:64;8515:5;8457:64;:::i;:::-;8452:3;8445:77;8343:185;;:::o;8534:276::-;8654:4;8692:2;8681:9;8677:18;8669:26;;8705:98;8800:1;8789:9;8785:17;8776:6;8705:98;:::i;:::-;8534:276;;;;:::o;8816:619::-;8893:6;8901;8909;8958:2;8946:9;8937:7;8933:23;8929:32;8926:119;;;8964:79;;:::i;:::-;8926:119;9084:1;9109:53;9154:7;9145:6;9134:9;9130:22;9109:53;:::i;:::-;9099:63;;9055:117;9211:2;9237:53;9282:7;9273:6;9262:9;9258:22;9237:53;:::i;:::-;9227:63;;9182:118;9339:2;9365:53;9410:7;9401:6;9390:9;9386:22;9365:53;:::i;:::-;9355:63;;9310:118;8816:619;;;;;:::o;9441:118::-;9528:24;9546:5;9528:24;:::i;:::-;9523:3;9516:37;9441:118;;:::o;9565:222::-;9658:4;9696:2;9685:9;9681:18;9673:26;;9709:71;9777:1;9766:9;9762:17;9753:6;9709:71;:::i;:::-;9565:222;;;;:::o;9793:86::-;9828:7;9868:4;9861:5;9857:16;9846:27;;9793:86;;;:::o;9885:112::-;9968:22;9984:5;9968:22;:::i;:::-;9963:3;9956:35;9885:112;;:::o;10003:214::-;10092:4;10130:2;10119:9;10115:18;10107:26;;10143:67;10207:1;10196:9;10192:17;10183:6;10143:67;:::i;:::-;10003:214;;;;:::o;10223:117::-;10332:1;10329;10322:12;10363:568;10436:8;10446:6;10496:3;10489:4;10481:6;10477:17;10473:27;10463:122;;10504:79;;:::i;:::-;10463:122;10617:6;10604:20;10594:30;;10647:18;10639:6;10636:30;10633:117;;;10669:79;;:::i;:::-;10633:117;10783:4;10775:6;10771:17;10759:29;;10837:3;10829:4;10821:6;10817:17;10807:8;10803:32;10800:41;10797:128;;;10844:79;;:::i;:::-;10797:128;10363:568;;;;;:::o;10937:559::-;11023:6;11031;11080:2;11068:9;11059:7;11055:23;11051:32;11048:119;;;11086:79;;:::i;:::-;11048:119;11234:1;11223:9;11219:17;11206:31;11264:18;11256:6;11253:30;11250:117;;;11286:79;;:::i;:::-;11250:117;11399:80;11471:7;11462:6;11451:9;11447:22;11399:80;:::i;:::-;11381:98;;;;11177:312;10937:559;;;;;:::o;11502:116::-;11572:21;11587:5;11572:21;:::i;:::-;11565:5;11562:32;11552:60;;11608:1;11605;11598:12;11552:60;11502:116;:::o;11624:133::-;11667:5;11705:6;11692:20;11683:29;;11721:30;11745:5;11721:30;:::i;:::-;11624:133;;;;:::o;11763:468::-;11828:6;11836;11885:2;11873:9;11864:7;11860:23;11856:32;11853:119;;;11891:79;;:::i;:::-;11853:119;12011:1;12036:53;12081:7;12072:6;12061:9;12057:22;12036:53;:::i;:::-;12026:63;;11982:117;12138:2;12164:50;12206:7;12197:6;12186:9;12182:22;12164:50;:::i;:::-;12154:60;;12109:115;11763:468;;;;;:::o;12237:474::-;12305:6;12313;12362:2;12350:9;12341:7;12337:23;12333:32;12330:119;;;12368:79;;:::i;:::-;12330:119;12488:1;12513:53;12558:7;12549:6;12538:9;12534:22;12513:53;:::i;:::-;12503:63;;12459:117;12615:2;12641:53;12686:7;12677:6;12666:9;12662:22;12641:53;:::i;:::-;12631:63;;12586:118;12237:474;;;;;:::o;12717:182::-;12857:34;12853:1;12845:6;12841:14;12834:58;12717:182;:::o;12905:366::-;13047:3;13068:67;13132:2;13127:3;13068:67;:::i;:::-;13061:74;;13144:93;13233:3;13144:93;:::i;:::-;13262:2;13257:3;13253:12;13246:19;;12905:366;;;:::o;13277:419::-;13443:4;13481:2;13470:9;13466:18;13458:26;;13530:9;13524:4;13520:20;13516:1;13505:9;13501:17;13494:47;13558:131;13684:4;13558:131;:::i;:::-;13550:139;;13277:419;;;:::o;13702:180::-;13750:77;13747:1;13740:88;13847:4;13844:1;13837:15;13871:4;13868:1;13861:15;13888:180;13936:77;13933:1;13926:88;14033:4;14030:1;14023:15;14057:4;14054:1;14047:15;14074:233;14113:3;14136:24;14154:5;14136:24;:::i;:::-;14127:33;;14182:66;14175:5;14172:77;14169:103;;14252:18;;:::i;:::-;14169:103;14299:1;14292:5;14288:13;14281:20;;14074:233;;;:::o;14313:305::-;14353:3;14372:20;14390:1;14372:20;:::i;:::-;14367:25;;14406:20;14424:1;14406:20;:::i;:::-;14401:25;;14560:1;14492:66;14488:74;14485:1;14482:81;14479:107;;;14566:18;;:::i;:::-;14479:107;14610:1;14607;14603:9;14596:16;;14313:305;;;;:::o;14624:179::-;14764:31;14760:1;14752:6;14748:14;14741:55;14624:179;:::o;14809:366::-;14951:3;14972:67;15036:2;15031:3;14972:67;:::i;:::-;14965:74;;15048:93;15137:3;15048:93;:::i;:::-;15166:2;15161:3;15157:12;15150:19;;14809:366;;;:::o;15181:419::-;15347:4;15385:2;15374:9;15370:18;15362:26;;15434:9;15428:4;15424:20;15420:1;15409:9;15405:17;15398:47;15462:131;15588:4;15462:131;:::i;:::-;15454:139;;15181:419;;;:::o;15606:180::-;15654:77;15651:1;15644:88;15751:4;15748:1;15741:15;15775:4;15772:1;15765:15;15792:320;15836:6;15873:1;15867:4;15863:12;15853:22;;15920:1;15914:4;15910:12;15941:18;15931:81;;15997:4;15989:6;15985:17;15975:27;;15931:81;16059:2;16051:6;16048:14;16028:18;16025:38;16022:84;;16078:18;;:::i;:::-;16022:84;15843:269;15792:320;;;:::o;16118:244::-;16258:34;16254:1;16246:6;16242:14;16235:58;16327:27;16322:2;16314:6;16310:15;16303:52;16118:244;:::o;16368:366::-;16510:3;16531:67;16595:2;16590:3;16531:67;:::i;:::-;16524:74;;16607:93;16696:3;16607:93;:::i;:::-;16725:2;16720:3;16716:12;16709:19;;16368:366;;;:::o;16740:419::-;16906:4;16944:2;16933:9;16929:18;16921:26;;16993:9;16987:4;16983:20;16979:1;16968:9;16964:17;16957:47;17021:131;17147:4;17021:131;:::i;:::-;17013:139;;16740:419;;;:::o;17165:225::-;17305:34;17301:1;17293:6;17289:14;17282:58;17374:8;17369:2;17361:6;17357:15;17350:33;17165:225;:::o;17396:366::-;17538:3;17559:67;17623:2;17618:3;17559:67;:::i;:::-;17552:74;;17635:93;17724:3;17635:93;:::i;:::-;17753:2;17748:3;17744:12;17737:19;;17396:366;;;:::o;17768:419::-;17934:4;17972:2;17961:9;17957:18;17949:26;;18021:9;18015:4;18011:20;18007:1;17996:9;17992:17;17985:47;18049:131;18175:4;18049:131;:::i;:::-;18041:139;;17768:419;;;:::o;18193:177::-;18333:29;18329:1;18321:6;18317:14;18310:53;18193:177;:::o;18376:366::-;18518:3;18539:67;18603:2;18598:3;18539:67;:::i;:::-;18532:74;;18615:93;18704:3;18615:93;:::i;:::-;18733:2;18728:3;18724:12;18717:19;;18376:366;;;:::o;18748:419::-;18914:4;18952:2;18941:9;18937:18;18929:26;;19001:9;18995:4;18991:20;18987:1;18976:9;18972:17;18965:47;19029:131;19155:4;19029:131;:::i;:::-;19021:139;;18748:419;;;:::o;19173:223::-;19313:34;19309:1;19301:6;19297:14;19290:58;19382:6;19377:2;19369:6;19365:15;19358:31;19173:223;:::o;19402:366::-;19544:3;19565:67;19629:2;19624:3;19565:67;:::i;:::-;19558:74;;19641:93;19730:3;19641:93;:::i;:::-;19759:2;19754:3;19750:12;19743:19;;19402:366;;;:::o;19774:419::-;19940:4;19978:2;19967:9;19963:18;19955:26;;20027:9;20021:4;20017:20;20013:1;20002:9;19998:17;19991:47;20055:131;20181:4;20055:131;:::i;:::-;20047:139;;19774:419;;;:::o;20199:221::-;20339:34;20335:1;20327:6;20323:14;20316:58;20408:4;20403:2;20395:6;20391:15;20384:29;20199:221;:::o;20426:366::-;20568:3;20589:67;20653:2;20648:3;20589:67;:::i;:::-;20582:74;;20665:93;20754:3;20665:93;:::i;:::-;20783:2;20778:3;20774:12;20767:19;;20426:366;;;:::o;20798:419::-;20964:4;21002:2;20991:9;20987:18;20979:26;;21051:9;21045:4;21041:20;21037:1;21026:9;21022:17;21015:47;21079:131;21205:4;21079:131;:::i;:::-;21071:139;;20798:419;;;:::o;21223:348::-;21263:7;21286:20;21304:1;21286:20;:::i;:::-;21281:25;;21320:20;21338:1;21320:20;:::i;:::-;21315:25;;21508:1;21440:66;21436:74;21433:1;21430:81;21425:1;21418:9;21411:17;21407:105;21404:131;;;21515:18;;:::i;:::-;21404:131;21563:1;21560;21556:9;21545:20;;21223:348;;;;:::o;21577:180::-;21625:77;21622:1;21615:88;21722:4;21719:1;21712:15;21746:4;21743:1;21736:15;21763:185;21803:1;21820:20;21838:1;21820:20;:::i;:::-;21815:25;;21854:20;21872:1;21854:20;:::i;:::-;21849:25;;21893:1;21883:35;;21898:18;;:::i;:::-;21883:35;21940:1;21937;21933:9;21928:14;;21763:185;;;;:::o;21954:224::-;22094:34;22090:1;22082:6;22078:14;22071:58;22163:7;22158:2;22150:6;22146:15;22139:32;21954:224;:::o;22184:366::-;22326:3;22347:67;22411:2;22406:3;22347:67;:::i;:::-;22340:74;;22423:93;22512:3;22423:93;:::i;:::-;22541:2;22536:3;22532:12;22525:19;;22184:366;;;:::o;22556:419::-;22722:4;22760:2;22749:9;22745:18;22737:26;;22809:9;22803:4;22799:20;22795:1;22784:9;22780:17;22773:47;22837:131;22963:4;22837:131;:::i;:::-;22829:139;;22556:419;;;:::o;22981:222::-;23121:34;23117:1;23109:6;23105:14;23098:58;23190:5;23185:2;23177:6;23173:15;23166:30;22981:222;:::o;23209:366::-;23351:3;23372:67;23436:2;23431:3;23372:67;:::i;:::-;23365:74;;23448:93;23537:3;23448:93;:::i;:::-;23566:2;23561:3;23557:12;23550:19;;23209:366;;;:::o;23581:419::-;23747:4;23785:2;23774:9;23770:18;23762:26;;23834:9;23828:4;23824:20;23820:1;23809:9;23805:17;23798:47;23862:131;23988:4;23862:131;:::i;:::-;23854:139;;23581:419;;;:::o;24006:172::-;24146:24;24142:1;24134:6;24130:14;24123:48;24006:172;:::o;24184:366::-;24326:3;24347:67;24411:2;24406:3;24347:67;:::i;:::-;24340:74;;24423:93;24512:3;24423:93;:::i;:::-;24541:2;24536:3;24532:12;24525:19;;24184:366;;;:::o;24556:419::-;24722:4;24760:2;24749:9;24745:18;24737:26;;24809:9;24803:4;24799:20;24795:1;24784:9;24780:17;24773:47;24837:131;24963:4;24837:131;:::i;:::-;24829:139;;24556:419;;;:::o;24981:222::-;25121:34;25117:1;25109:6;25105:14;25098:58;25190:5;25185:2;25177:6;25173:15;25166:30;24981:222;:::o;25209:366::-;25351:3;25372:67;25436:2;25431:3;25372:67;:::i;:::-;25365:74;;25448:93;25537:3;25448:93;:::i;:::-;25566:2;25561:3;25557:12;25550:19;;25209:366;;;:::o;25581:419::-;25747:4;25785:2;25774:9;25770:18;25762:26;;25834:9;25828:4;25824:20;25820:1;25809:9;25805:17;25798:47;25862:131;25988:4;25862:131;:::i;:::-;25854:139;;25581:419;;;:::o;26006:297::-;26146:34;26142:1;26134:6;26130:14;26123:58;26215:34;26210:2;26202:6;26198:15;26191:59;26284:11;26279:2;26271:6;26267:15;26260:36;26006:297;:::o;26309:366::-;26451:3;26472:67;26536:2;26531:3;26472:67;:::i;:::-;26465:74;;26548:93;26637:3;26548:93;:::i;:::-;26666:2;26661:3;26657:12;26650:19;;26309:366;;;:::o;26681:419::-;26847:4;26885:2;26874:9;26870:18;26862:26;;26934:9;26928:4;26924:20;26920:1;26909:9;26905:17;26898:47;26962:131;27088:4;26962:131;:::i;:::-;26954:139;;26681:419;;;:::o;27106:240::-;27246:34;27242:1;27234:6;27230:14;27223:58;27315:23;27310:2;27302:6;27298:15;27291:48;27106:240;:::o;27352:366::-;27494:3;27515:67;27579:2;27574:3;27515:67;:::i;:::-;27508:74;;27591:93;27680:3;27591:93;:::i;:::-;27709:2;27704:3;27700:12;27693:19;;27352:366;;;:::o;27724:419::-;27890:4;27928:2;27917:9;27913:18;27905:26;;27977:9;27971:4;27967:20;27963:1;27952:9;27948:17;27941:47;28005:131;28131:4;28005:131;:::i;:::-;27997:139;;27724:419;;;:::o;28149:169::-;28289:21;28285:1;28277:6;28273:14;28266:45;28149:169;:::o;28324:366::-;28466:3;28487:67;28551:2;28546:3;28487:67;:::i;:::-;28480:74;;28563:93;28652:3;28563:93;:::i;:::-;28681:2;28676:3;28672:12;28665:19;;28324:366;;;:::o;28696:419::-;28862:4;28900:2;28889:9;28885:18;28877:26;;28949:9;28943:4;28939:20;28935:1;28924:9;28920:17;28913:47;28977:131;29103:4;28977:131;:::i;:::-;28969:139;;28696:419;;;:::o;29121:241::-;29261:34;29257:1;29249:6;29245:14;29238:58;29330:24;29325:2;29317:6;29313:15;29306:49;29121:241;:::o;29368:366::-;29510:3;29531:67;29595:2;29590:3;29531:67;:::i;:::-;29524:74;;29607:93;29696:3;29607:93;:::i;:::-;29725:2;29720:3;29716:12;29709:19;;29368:366;;;:::o;29740:419::-;29906:4;29944:2;29933:9;29929:18;29921:26;;29993:9;29987:4;29983:20;29979:1;29968:9;29964:17;29957:47;30021:131;30147:4;30021:131;:::i;:::-;30013:139;;29740:419;;;:::o;30165:191::-;30205:4;30225:20;30243:1;30225:20;:::i;:::-;30220:25;;30259:20;30277:1;30259:20;:::i;:::-;30254:25;;30298:1;30295;30292:8;30289:34;;;30303:18;;:::i;:::-;30289:34;30348:1;30345;30341:9;30333:17;;30165:191;;;;:::o;30362:147::-;30463:11;30500:3;30485:18;;30362:147;;;;:::o;30515:114::-;;:::o;30635:398::-;30794:3;30815:83;30896:1;30891:3;30815:83;:::i;:::-;30808:90;;30907:93;30996:3;30907:93;:::i;:::-;31025:1;31020:3;31016:11;31009:18;;30635:398;;;:::o;31039:379::-;31223:3;31245:147;31388:3;31245:147;:::i;:::-;31238:154;;31409:3;31402:10;;31039:379;;;:::o;31424:220::-;31564:34;31560:1;31552:6;31548:14;31541:58;31633:3;31628:2;31620:6;31616:15;31609:28;31424:220;:::o;31650:366::-;31792:3;31813:67;31877:2;31872:3;31813:67;:::i;:::-;31806:74;;31889:93;31978:3;31889:93;:::i;:::-;32007:2;32002:3;31998:12;31991:19;;31650:366;;;:::o;32022:419::-;32188:4;32226:2;32215:9;32211:18;32203:26;;32275:9;32269:4;32265:20;32261:1;32250:9;32246:17;32239:47;32303:131;32429:4;32303:131;:::i;:::-;32295:139;;32022:419;;;:::o;32447:220::-;32587:34;32583:1;32575:6;32571:14;32564:58;32656:3;32651:2;32643:6;32639:15;32632:28;32447:220;:::o;32673:366::-;32815:3;32836:67;32900:2;32895:3;32836:67;:::i;:::-;32829:74;;32912:93;33001:3;32912:93;:::i;:::-;33030:2;33025:3;33021:12;33014:19;;32673:366;;;:::o;33045:419::-;33211:4;33249:2;33238:9;33234:18;33226:26;;33298:9;33292:4;33288:20;33284:1;33273:9;33269:17;33262:47;33326:131;33452:4;33326:131;:::i;:::-;33318:139;;33045:419;;;:::o;33470:143::-;33527:5;33558:6;33552:13;33543:22;;33574:33;33601:5;33574:33;:::i;:::-;33470:143;;;;:::o;33619:351::-;33689:6;33738:2;33726:9;33717:7;33713:23;33709:32;33706:119;;;33744:79;;:::i;:::-;33706:119;33864:1;33889:64;33945:7;33936:6;33925:9;33921:22;33889:64;:::i;:::-;33879:74;;33835:128;33619:351;;;;:::o;33976:85::-;34021:7;34050:5;34039:16;;33976:85;;;:::o;34067:158::-;34125:9;34158:61;34176:42;34185:32;34211:5;34185:32;:::i;:::-;34176:42;:::i;:::-;34158:61;:::i;:::-;34145:74;;34067:158;;;:::o;34231:147::-;34326:45;34365:5;34326:45;:::i;:::-;34321:3;34314:58;34231:147;;:::o;34384:114::-;34451:6;34485:5;34479:12;34469:22;;34384:114;;;:::o;34504:184::-;34603:11;34637:6;34632:3;34625:19;34677:4;34672:3;34668:14;34653:29;;34504:184;;;;:::o;34694:132::-;34761:4;34784:3;34776:11;;34814:4;34809:3;34805:14;34797:22;;34694:132;;;:::o;34832:108::-;34909:24;34927:5;34909:24;:::i;:::-;34904:3;34897:37;34832:108;;:::o;34946:179::-;35015:10;35036:46;35078:3;35070:6;35036:46;:::i;:::-;35114:4;35109:3;35105:14;35091:28;;34946:179;;;;:::o;35131:113::-;35201:4;35233;35228:3;35224:14;35216:22;;35131:113;;;:::o;35280:732::-;35399:3;35428:54;35476:5;35428:54;:::i;:::-;35498:86;35577:6;35572:3;35498:86;:::i;:::-;35491:93;;35608:56;35658:5;35608:56;:::i;:::-;35687:7;35718:1;35703:284;35728:6;35725:1;35722:13;35703:284;;;35804:6;35798:13;35831:63;35890:3;35875:13;35831:63;:::i;:::-;35824:70;;35917:60;35970:6;35917:60;:::i;:::-;35907:70;;35763:224;35750:1;35747;35743:9;35738:14;;35703:284;;;35707:14;36003:3;35996:10;;35404:608;;;35280:732;;;;:::o;36018:831::-;36281:4;36319:3;36308:9;36304:19;36296:27;;36333:71;36401:1;36390:9;36386:17;36377:6;36333:71;:::i;:::-;36414:80;36490:2;36479:9;36475:18;36466:6;36414:80;:::i;:::-;36541:9;36535:4;36531:20;36526:2;36515:9;36511:18;36504:48;36569:108;36672:4;36663:6;36569:108;:::i;:::-;36561:116;;36687:72;36755:2;36744:9;36740:18;36731:6;36687:72;:::i;:::-;36769:73;36837:3;36826:9;36822:19;36813:6;36769:73;:::i;:::-;36018:831;;;;;;;;:::o

Swarm Source

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