ETH Price: $2,985.76 (-2.15%)
Gas: 2 Gwei

Token

Ara Ara (ARA)
 

Overview

Max Total Supply

1,000,000 ARA

Holders

260

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,315.346019479619902807 ARA

Value
$0.00
0x9202d5d9c4c938162c9856a4f5f0fae3da3304c1
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:
ARA

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-01
*/

/*

https://t.me/AraAraPortal
https://twitter.com/AraAraCoin
https://araara.lol/

*/


// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.20;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    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 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 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        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;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        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) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        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 ARA is ERC20, Ownable {

    string _name = "Ara Ara";
    string _symbol = "ARA";

    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private isSwapping;
 
    address private treasuryWallet;
    address private devWallet;
 
    uint256 public maxTx;
    uint256 public swapTreshold;
    uint256 public maxWallet;
 
    bool public limitsActive = true;
    bool public tradingLive = true;
    bool public swapEnabled = true;
    bool public shouldContractSellAll = false;
 
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
 
    // Seller Map
    mapping (address => uint256) private _holderFirstBuyTimestamp;
 
    // Blacklist Map
    mapping (address => bool) private _blacklist;
    bool public transferDelayEnabled = true;
 
    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
 
    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
 
    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event treasuryWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20(_name, _symbol) {
 
        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 _buyTreasuryFee = 15;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;
 
        uint256 _sellTreasuryFee = 20;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
 
        uint256 totalSupply = 1000000 * 1e18;
 
        maxTx = totalSupply * 20 / 1000; // 2%
        maxWallet = totalSupply * 20 / 1000; // 2% 
        swapTreshold = totalSupply * 1 / 1000; // 0.05%
 
        buyTreasuryFee = _buyTreasuryFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyDevFee;
 
        sellTreasuryFee = _sellTreasuryFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellDevFee;

        treasuryWallet = address(0xaBE7094d28493893ddC64c3cCEe22fB872Fe3CFD);
        devWallet = address(0xaBE7094d28493893ddC64c3cCEe22fB872Fe3CFD);
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(treasuryWallet), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(devWallet), true);
        excludeFromMaxTransaction(address(treasuryWallet), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
    }
 
    // once enabled, can never be turned off
    function EnableTrading() external onlyOwner {
       
        tradingLive = true;
        swapEnabled = true;
        launchedAt = block.number;

       
       
        
    }
 
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsActive = false;
        return true;
    }
 
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }

    function enableEmptyContract(bool enabled) external onlyOwner{
        shouldContractSellAll = enabled;
    }
 
     // change the minimum amount of tokens to sell from fees
    function setSwapTreshold(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTreshold = newAmount;
        return true;
    }
 
    function updateTransactionLimits(uint256 _maxTx, uint256 _maxWallet) external onlyOwner {
        require(_maxTx >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        require(_maxWallet >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxTx = _maxTx * (10**18);
        maxWallet = _maxWallet * (10**18);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function reduceFees(
        uint256 _devBuyFee,
        uint256 _liquidityBuyFee,
        uint256 _treasuryBuyFee,
        uint256 _devSellFee,
        uint256 _liquiditySellFee,
        uint256 _treasurySellFee
    ) external onlyOwner {
        require(_devBuyFee <= buyDevFee &&
         _liquidityBuyFee <= buyLiquidityFee && 
         _treasuryBuyFee <= buyTreasuryFee &&
         _devSellFee <= sellDevFee && 
         _liquiditySellFee <= sellLiquidityFee &&
         _treasurySellFee <= sellTreasuryFee, "Fees must be lower then the current");

        buyDevFee = _devBuyFee;
        buyLiquidityFee = _liquidityBuyFee;
        buyTreasuryFee = _treasuryBuyFee;
        buyTotalFees = buyDevFee + buyLiquidityFee + buyTreasuryFee;
        sellDevFee = _devSellFee;
        sellLiquidityFee = _liquiditySellFee;
        sellTreasuryFee = _treasurySellFee;
        sellTotalFees = sellDevFee + sellLiquidityFee + sellTreasuryFee;
        require(buyTotalFees <= 30 && sellTotalFees <= 30, "Fees cannot be higher then 30%");
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateContractSellEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function blacklist(address account, bool isBlacklisted) public onlyOwner {
        _blacklist[account] = isBlacklisted;
    }
 
    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 updateFeeRecivers(address newTreasuryWallet, address newDevWallet) external onlyOwner{
        emit treasuryWalletUpdated(newTreasuryWallet, treasuryWallet);
        treasuryWallet = newTreasuryWallet;
        emit devWalletUpdated(newDevWallet, devWallet);
        devWallet = newDevWallet;
    }

 
  
    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");
        require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
        
        if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
        
    }
        
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsActive){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !isSwapping
            ){
                if(!tradingLive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTx, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTx, "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 >= swapTreshold;
 
        if( 
            canSwap &&
            swapEnabled &&
            !isSwapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            isSwapping = true;
 
            swapBack();
 
            isSwapping = false;
        }
 
        bool takeFee = !isSwapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(shouldContractSellAll == false){
            if(contractBalance > swapTreshold * 20){
                contractBalance = swapTreshold * 20;
            }
        }else{
            contractBalance = balanceOf(address(this));
        }
        
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForTreasury).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(treasuryWallet).call{value: address(this).balance}("");
    }
}

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":[],"name":"AutoNukeLP","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":[],"name":"ManualNukeLP","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"treasuryWalletUpdated","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","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":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableEmptyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","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":"uint256","name":"_devBuyFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityBuyFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryBuyFee","type":"uint256"},{"internalType":"uint256","name":"_devSellFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_treasurySellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","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":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldContractSellAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTreshold","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","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":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateContractSellEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasuryWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateFeeRecivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600781526020017f4172612041726100000000000000000000000000000000000000000000000000815250600690816200004a919062000fa5565b506040518060400160405280600381526020017f41524100000000000000000000000000000000000000000000000000000000008152506007908162000091919062000fa5565b506001600d5f6101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff0219169083151502179055505f600d60036101000a81548160ff021916908315150217905550600160115f6101000a81548160ff02191690831515021790555034801562000122575f80fd5b5060068054620001329062000da5565b80601f0160208091040260200160405190810160405280929190818152602001828054620001609062000da5565b8015620001af5780601f106200018557610100808354040283529160200191620001af565b820191905f5260205f20905b8154815290600101906020018083116200019157829003601f168201915b505050505060078054620001c39062000da5565b80601f0160208091040260200160405190810160405280929190818152602001828054620001f19062000da5565b8015620002405780601f10620002165761010080835404028352916020019162000240565b820191905f5260205f20905b8154815290600101906020018083116200022257829003601f168201915b5050505050816003908162000256919062000fa5565b50806004908162000268919062000fa5565b5050505f6200027c6200082e60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620003448160016200083560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003e89190620010ee565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200044e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004749190620010ee565b6040518363ffffffff1660e01b8152600401620004939291906200112f565b6020604051808303815f875af1158015620004b0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004d69190620010ee565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200051e60a05160016200083560201b60201c565b6200053360a05160016200092e60201b60201c565b5f600f90505f805f601490505f805f69d3c21bcecceda100000090506103e860148262000561919062001187565b6200056d9190620011fe565b600a819055506103e860148262000585919062001187565b620005919190620011fe565b600c819055506103e8600182620005a9919062001187565b620005b59190620011fe565b600b81905550866013819055508560148190555084601581905550601554601454601354620005e5919062001235565b620005f1919062001235565b60128190555083601781905550826018819055508160198190555060195460185460175462000621919062001235565b6200062d919062001235565b60168190555073abe7094d28493893ddc64c3ccee22fb872fe3cfd600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073abe7094d28493893ddc64c3ccee22fb872fe3cfd60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006fe620006f0620009cc60201b60201c565b6001620009f460201b60201c565b62000711306001620009f460201b60201c565b6200072661dead6001620009f460201b60201c565b6200075b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009f460201b60201c565b6200077d6200076f620009cc60201b60201c565b60016200083560201b60201c565b620007903060016200083560201b60201c565b620007a561dead60016200083560201b60201c565b620007d960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200083560201b60201c565b6200080e600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200083560201b60201c565b62000820338262000b3d60201b60201c565b50505050505050506200142c565b5f33905090565b620008456200082e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008cd90620012cd565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000a046200082e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8c90620012cd565b60405180910390fd5b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000b31919062001309565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ba59062001372565b60405180910390fd5b62000bc15f838362000cda60201b60201c565b62000bd88160025462000cdf60201b90919060201c565b60028190555062000c2f815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000cdf60201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cce9190620013a3565b60405180910390a35050565b505050565b5f80828462000cef919062001235565b90508381101562000d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d2e906200140c565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000dbd57607f821691505b60208210810362000dd35762000dd262000d78565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000e377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dfa565b62000e43868362000dfa565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000e8d62000e8762000e818462000e5b565b62000e64565b62000e5b565b9050919050565b5f819050919050565b62000ea88362000e6d565b62000ec062000eb78262000e94565b84845462000e06565b825550505050565b5f90565b62000ed662000ec8565b62000ee381848462000e9d565b505050565b5b8181101562000f0a5762000efe5f8262000ecc565b60018101905062000ee9565b5050565b601f82111562000f595762000f238162000dd9565b62000f2e8462000deb565b8101602085101562000f3e578190505b62000f5662000f4d8562000deb565b83018262000ee8565b50505b505050565b5f82821c905092915050565b5f62000f7b5f198460080262000f5e565b1980831691505092915050565b5f62000f95838362000f6a565b9150826002028217905092915050565b62000fb08262000d41565b67ffffffffffffffff81111562000fcc5762000fcb62000d4b565b5b62000fd8825462000da5565b62000fe582828562000f0e565b5f60209050601f8311600181146200101b575f841562001006578287015190505b62001012858262000f88565b86555062001081565b601f1984166200102b8662000dd9565b5f5b8281101562001054578489015182556001820191506020850194506020810190506200102d565b8683101562001074578489015162001070601f89168262000f6a565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620010b8826200108d565b9050919050565b620010ca81620010ac565b8114620010d5575f80fd5b50565b5f81519050620010e881620010bf565b92915050565b5f6020828403121562001106576200110562001089565b5b5f6200111584828501620010d8565b91505092915050565b6200112981620010ac565b82525050565b5f604082019050620011445f8301856200111e565b6200115360208301846200111e565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620011938262000e5b565b9150620011a08362000e5b565b9250828202620011b08162000e5b565b91508282048414831517620011ca57620011c96200115a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200120a8262000e5b565b9150620012178362000e5b565b9250826200122a5762001229620011d1565b5b828204905092915050565b5f620012418262000e5b565b91506200124e8362000e5b565b92508282019050808211156200126957620012686200115a565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620012b56020836200126f565b9150620012c2826200127f565b602082019050919050565b5f6020820190508181035f830152620012e681620012a7565b9050919050565b5f8115159050919050565b6200130381620012ed565b82525050565b5f6020820190506200131e5f830184620012f8565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200135a601f836200126f565b9150620013678262001324565b602082019050919050565b5f6020820190508181035f8301526200138b816200134c565b9050919050565b6200139d8162000e5b565b82525050565b5f602082019050620013b85f83018462001392565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f620013f4601b836200126f565b91506200140182620013be565b602082019050919050565b5f6020820190508181035f8301526200142581620013e6565b9050919050565b60805160a051615460620014865f395f818161132301528181611caa0152612b1e01525f8181610cb901528181612ac601528181613c5101528181613d3001528181613d5701528181613ded0152613e1401526154605ff3fe6080604052600436106102e7575f3560e01c8063715018a61161018f578063b62496f5116100db578063dd62ed3e11610094578063f11a24d31161006e578063f11a24d314610b34578063f2fde38b14610b5e578063f637434214610b86578063f8b45b0514610bb0576102ee565b8063dd62ed3e14610aa4578063e52fb9ec14610ae0578063e884f26014610b0a576102ee565b8063b62496f514610986578063c0246668146109c2578063c876d0b9146109ea578063cc2ffe7c14610a14578063cfd1940e14610a3e578063d85ba06314610a7a576102ee565b806395d89b41116101485780639fccce32116101225780639fccce32146108ba578063a0d82dc5146108e4578063a457c2d71461090e578063a9059cbb1461094a576102ee565b806395d89b411461083e5780639a7a23d6146108685780639c3b4fdc14610890576102ee565b8063715018a61461075a5780637437681e14610770578063751039fc1461079a5780637571336a146107c45780637ebb640a146107ec5780638da5cb5b14610814576102ee565b806323b872dd1161024e57806358c84e70116102075780636a486a8e116101e15780636a486a8e146106a05780636b2fb124146106ca5780636ddd1713146106f457806370a082311461071e576102ee565b806358c84e70146106265780635c068a8c1461064e5780635f5828f614610678576102ee565b806323b872dd146104f6578063313ce56714610532578063395093511461055c578063404e51291461059857806349bd5a5e146105c05780634fbee193146105ea576102ee565b8063184f5c6a116102a0578063184f5c6a146104125780631864217b1461043a5780631a8145bb146104645780631cce34ee1461048e5780631d97b7cd146104b857806322b55037146104ce576102ee565b806306fdde03146102f2578063095ea7b31461031c57806310d5de531461035857806311704f52146103945780631694505e146103be57806318160ddd146103e8576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b50610306610bda565b6040516103139190613fa9565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d919061405a565b610c6a565b60405161034f91906140b2565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906140cb565b610c87565b60405161038b91906140b2565b60405180910390f35b34801561039f575f80fd5b506103a8610ca4565b6040516103b591906140b2565b60405180910390f35b3480156103c9575f80fd5b506103d2610cb7565b6040516103df9190614151565b60405180910390f35b3480156103f3575f80fd5b506103fc610cdb565b6040516104099190614179565b60405180910390f35b34801561041d575f80fd5b50610438600480360381019061043391906141bc565b610ce4565b005b348015610445575f80fd5b5061044e610d97565b60405161045b91906140b2565b60405180910390f35b34801561046f575f80fd5b50610478610daa565b6040516104859190614179565b60405180910390f35b348015610499575f80fd5b506104a2610db0565b6040516104af91906140b2565b60405180910390f35b3480156104c3575f80fd5b506104cc610dc2565b005b3480156104d9575f80fd5b506104f460048036038101906104ef91906141e7565b610e97565b005b348015610501575f80fd5b5061051c60048036038101906105179190614225565b6110a9565b60405161052991906140b2565b60405180910390f35b34801561053d575f80fd5b5061054661117d565b6040516105539190614290565b60405180910390f35b348015610567575f80fd5b50610582600480360381019061057d919061405a565b611185565b60405161058f91906140b2565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b991906142a9565b611233565b005b3480156105cb575f80fd5b506105d4611321565b6040516105e191906142f6565b60405180910390f35b3480156105f5575f80fd5b50610610600480360381019061060b91906140cb565b611345565b60405161061d91906140b2565b60405180910390f35b348015610631575f80fd5b5061064c6004803603810190610647919061430f565b611397565b005b348015610659575f80fd5b50610662611585565b60405161066f9190614179565b60405180910390f35b348015610683575f80fd5b5061069e600480360381019061069991906141bc565b61158b565b005b3480156106ab575f80fd5b506106b461163e565b6040516106c19190614179565b60405180910390f35b3480156106d5575f80fd5b506106de611644565b6040516106eb9190614179565b60405180910390f35b3480156106ff575f80fd5b5061070861164a565b60405161071591906140b2565b60405180910390f35b348015610729575f80fd5b50610744600480360381019061073f91906140cb565b61165d565b6040516107519190614179565b60405180910390f35b348015610765575f80fd5b5061076e6116a2565b005b34801561077b575f80fd5b506107846117f5565b6040516107919190614179565b60405180910390f35b3480156107a5575f80fd5b506107ae6117fb565b6040516107bb91906140b2565b60405180910390f35b3480156107cf575f80fd5b506107ea60048036038101906107e591906142a9565b6118b2565b005b3480156107f7575f80fd5b50610812600480360381019061080d9190614398565b6119a0565b005b34801561081f575f80fd5b50610828611b5a565b60405161083591906142f6565b60405180910390f35b348015610849575f80fd5b50610852611b82565b60405161085f9190613fa9565b60405180910390f35b348015610873575f80fd5b5061088e600480360381019061088991906142a9565b611c12565b005b34801561089b575f80fd5b506108a4611d44565b6040516108b19190614179565b60405180910390f35b3480156108c5575f80fd5b506108ce611d4a565b6040516108db9190614179565b60405180910390f35b3480156108ef575f80fd5b506108f8611d50565b6040516109059190614179565b60405180910390f35b348015610919575f80fd5b50610934600480360381019061092f919061405a565b611d56565b60405161094191906140b2565b60405180910390f35b348015610955575f80fd5b50610970600480360381019061096b919061405a565b611e1e565b60405161097d91906140b2565b60405180910390f35b348015610991575f80fd5b506109ac60048036038101906109a791906140cb565b611e3b565b6040516109b991906140b2565b60405180910390f35b3480156109cd575f80fd5b506109e860048036038101906109e391906142a9565b611e57565b005b3480156109f5575f80fd5b506109fe611f93565b604051610a0b91906140b2565b60405180910390f35b348015610a1f575f80fd5b50610a28611fa5565b604051610a359190614179565b60405180910390f35b348015610a49575f80fd5b50610a646004803603810190610a5f91906143d6565b611fab565b604051610a7191906140b2565b60405180910390f35b348015610a85575f80fd5b50610a8e612119565b604051610a9b9190614179565b60405180910390f35b348015610aaf575f80fd5b50610aca6004803603810190610ac591906141e7565b61211f565b604051610ad79190614179565b60405180910390f35b348015610aeb575f80fd5b50610af46121a1565b604051610b019190614179565b60405180910390f35b348015610b15575f80fd5b50610b1e6121a7565b604051610b2b91906140b2565b60405180910390f35b348015610b3f575f80fd5b50610b4861225e565b604051610b559190614179565b60405180910390f35b348015610b69575f80fd5b50610b846004803603810190610b7f91906140cb565b612264565b005b348015610b91575f80fd5b50610b9a612426565b604051610ba79190614179565b60405180910390f35b348015610bbb575f80fd5b50610bc461242c565b604051610bd19190614179565b60405180910390f35b606060038054610be99061442e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c159061442e565b8015610c605780601f10610c3757610100808354040283529160200191610c60565b820191905f5260205f20905b815481529060010190602001808311610c4357829003601f168201915b5050505050905090565b5f610c7d610c76612432565b8484612439565b6001905092915050565b601f602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610cec612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d71906144a8565b60405180910390fd5b80600d60036101000a81548160ff02191690831515021790555050565b600d60039054906101000a900460ff1681565b601b5481565b600d5f9054906101000a900460ff1681565b610dca612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4f906144a8565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043601d81905550565b610e9f612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f24906144a8565b60405180910390fd5b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f02f8a1483978974a6412ba3a67040b4daa4fc0dfe9439a7295f9a9538394f63560405160405180910390a381600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6110b58484846125fc565b611172846110c1612432565b61116d856040518060600160405280602881526020016153de6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f611124612432565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133c59092919063ffffffff16565b612439565b600190509392505050565b5f6012905090565b5f611229611191612432565b846112248560015f6111a1612432565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461342790919063ffffffff16565b612439565b6001905092915050565b61123b612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c0906144a8565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61139f612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611424906144a8565b60405180910390fd5b601554861115801561144157506014548511155b801561144f57506013548411155b801561145d57506019548311155b801561146b57506018548211155b801561147957506017548111155b6114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af90614536565b60405180910390fd5b8560158190555084601481905550836013819055506013546014546015546114e09190614581565b6114ea9190614581565b6012819055508260198190555081601881905550806017819055506017546018546019546115189190614581565b6115229190614581565b601681905550601e6012541115801561153e5750601e60165411155b61157d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611574906145fe565b60405180910390fd5b505050505050565b60135481565b611593612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611618906144a8565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60165481565b60175481565b600d60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116aa612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f906144a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a5481565b5f611804612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611889906144a8565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b6118ba612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f906144a8565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6119a8612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d906144a8565b60405180910390fd5b670de0b6b3a76400006103e86001611a4c610cdb565b611a56919061461c565b611a60919061468a565b611a6a919061468a565b821015611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa39061472a565b60405180910390fd5b670de0b6b3a76400006103e86005611ac2610cdb565b611acc919061461c565b611ad6919061468a565b611ae0919061468a565b811015611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b19906147b8565b60405180910390fd5b670de0b6b3a764000082611b36919061461c565b600a81905550670de0b6b3a764000081611b50919061461c565b600c819055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b919061442e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbd9061442e565b8015611c085780601f10611bdf57610100808354040283529160200191611c08565b820191905f5260205f20905b815481529060010190602001808311611beb57829003601f168201915b5050505050905090565b611c1a612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f906144a8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d90614846565b60405180910390fd5b611d408282613484565b5050565b60155481565b601c5481565b60195481565b5f611e14611d62612432565b84611e0f856040518060600160405280602581526020016154066025913960015f611d8b612432565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133c59092919063ffffffff16565b612439565b6001905092915050565b5f611e31611e2a612432565b84846125fc565b6001905092915050565b60208052805f5260405f205f915054906101000a900460ff1681565b611e5f612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee4906144a8565b60405180910390fd5b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f8791906140b2565b60405180910390a25050565b60115f9054906101000a900460ff1681565b601a5481565b5f611fb4612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612039906144a8565b60405180910390fd5b620186a06001612050610cdb565b61205a919061461c565b612064919061468a565b8210156120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d906148d4565b60405180910390fd5b6103e860056120b3610cdb565b6120bd919061461c565b6120c7919061468a565b821115612109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210090614962565b60405180910390fd5b81600b8190555060019050919050565b60125481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b5f6121b0612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612235906144a8565b60405180910390fd5b5f60115f6101000a81548160ff0219169083151502179055506001905090565b60145481565b61226c612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f1906144a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235f906149f0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600c5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e90614a7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250c90614b0c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125ef9190614179565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361266a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266190614b9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cf90614c28565b60405180910390fd5b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612776575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6127b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ac90614cb6565b60405180910390fd5b60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128525750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b505f810361286a5761286583835f613522565b6133c0565b600d5f9054906101000a900460ff1615612f1057612886611b5a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128f457506128c4611b5a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561292c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612966575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297e575060085f9054906101000a900460ff16155b15612f0f57600d60019054906101000a900460ff16612a7257601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a325750601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6890614d1e565b60405180910390fd5b5b60115f9054906101000a900460ff1615612c3557612a8e611b5a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b1557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b6d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c345743600e5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890614dd2565b60405180910390fd5b43600e5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612cd25750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d7957600a54811115612d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1390614e60565b60405180910390fd5b600c54612d288361165d565b82612d339190614581565b1115612d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6b90614ec8565b60405180910390fd5b612f0e565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e165750601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e6557600a54811115612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790614f56565b60405180910390fd5b612f0d565b601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f0c57600c54612ebf8361165d565b82612eca9190614581565b1115612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290614ec8565b60405180910390fd5b5b5b5b5b5b5f612f1a3061165d565b90505f600b548210159050808015612f3e5750600d60029054906101000a900460ff165b8015612f56575060085f9054906101000a900460ff16155b8015612fa9575060205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ffc5750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561304f5750601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561309057600160085f6101000a81548160ff0219169083151502179055506130766137ab565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff16159050601e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061313e5750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613147575f90505b5f81156133b05760205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131a557505f601654115b1561326f576131d260646131c460165488613aa690919063ffffffff16565b613b1d90919063ffffffff16565b9050601654601854826131e5919061461c565b6131ef919061468a565b601b5f8282546131ff9190614581565b9250508190555060165460195482613217919061461c565b613221919061468a565b601c5f8282546132319190614581565b9250508190555060165460175482613249919061461c565b613253919061468a565b601a5f8282546132639190614581565b9250508190555061338d565b60205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156132c657505f601254115b1561338c576132f360646132e560125488613aa690919063ffffffff16565b613b1d90919063ffffffff16565b905060125460145482613306919061461c565b613310919061468a565b601b5f8282546133209190614581565b9250508190555060125460155482613338919061461c565b613342919061468a565b601c5f8282546133529190614581565b925050819055506012546013548261336a919061461c565b613374919061468a565b601a5f8282546133849190614581565b925050819055505b5b5f8111156133a1576133a0873083613522565b5b80856133ad9190614f74565b94505b6133bb878787613522565b505050505b505050565b5f83831115829061340c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134039190613fa9565b60405180910390fd5b505f838561341a9190614f74565b9050809150509392505050565b5f8082846134359190614581565b90508381101561347a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347190614ff1565b60405180910390fd5b8091505092915050565b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358790614b9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f590614c28565b60405180910390fd5b613609838383613b66565b613672816040518060600160405280602681526020016153b8602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133c59092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613701815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461342790919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161379e9190614179565b60405180910390a3505050565b5f6137b53061165d565b90505f601c54601a54601b546137cb9190614581565b6137d59190614581565b90505f808314806137e557505f82145b156137f257505050613aa4565b5f1515600d60039054906101000a900460ff16151503613839576014600b5461381b919061461c565b831115613834576014600b54613831919061461c565b92505b613845565b6138423061165d565b92505b5f600283601b5486613857919061461c565b613861919061468a565b61386b919061468a565b90505f6138818286613b6b90919063ffffffff16565b90505f47905061389082613bb4565b5f6138a48247613b6b90919063ffffffff16565b90505f6138ce876138c0601a5485613aa690919063ffffffff16565b613b1d90919063ffffffff16565b90505f6138f8886138ea601c5486613aa690919063ffffffff16565b613b1d90919063ffffffff16565b90505f8183856139089190614f74565b6139129190614f74565b90505f601b819055505f601a819055505f601c8190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161396e9061503c565b5f6040518083038185875af1925050503d805f81146139a8576040519150601f19603f3d011682016040523d82523d5f602084013e6139ad565b606091505b5050809850505f871180156139c157505f81115b15613a0e576139d08782613de7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613a0593929190615050565b60405180910390a15b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a549061503c565b5f6040518083038185875af1925050503d805f8114613a8e576040519150601f19603f3d011682016040523d82523d5f602084013e613a93565b606091505b505080985050505050505050505050505b565b5f808303613ab6575f9050613b17565b5f8284613ac3919061461c565b9050828482613ad2919061468a565b14613b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b09906150f5565b60405180910390fd5b809150505b92915050565b5f613b5e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ebe565b905092915050565b505050565b5f613bac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506133c5565b905092915050565b5f600267ffffffffffffffff811115613bd057613bcf615113565b5b604051908082528060200260200182016040528015613bfe5781602001602082028036833780820191505090505b50905030815f81518110613c1557613c14615140565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cdc9190615181565b81600181518110613cf057613cef615140565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d55307f000000000000000000000000000000000000000000000000000000000000000084612439565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613db695949392919061529c565b5f604051808303815f87803b158015613dcd575f80fd5b505af1158015613ddf573d5f803e3d5ffd5b505050505050565b613e12307f000000000000000000000000000000000000000000000000000000000000000084612439565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613e76969594939291906152f4565b60606040518083038185885af1158015613e92573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613eb79190615367565b5050505050565b5f8083118290613f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613efb9190613fa9565b60405180910390fd5b505f8385613f12919061468a565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613f56578082015181840152602081019050613f3b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613f7b82613f1f565b613f858185613f29565b9350613f95818560208601613f39565b613f9e81613f61565b840191505092915050565b5f6020820190508181035f830152613fc18184613f71565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613ff682613fcd565b9050919050565b61400681613fec565b8114614010575f80fd5b50565b5f8135905061402181613ffd565b92915050565b5f819050919050565b61403981614027565b8114614043575f80fd5b50565b5f8135905061405481614030565b92915050565b5f80604083850312156140705761406f613fc9565b5b5f61407d85828601614013565b925050602061408e85828601614046565b9150509250929050565b5f8115159050919050565b6140ac81614098565b82525050565b5f6020820190506140c55f8301846140a3565b92915050565b5f602082840312156140e0576140df613fc9565b5b5f6140ed84828501614013565b91505092915050565b5f819050919050565b5f61411961411461410f84613fcd565b6140f6565b613fcd565b9050919050565b5f61412a826140ff565b9050919050565b5f61413b82614120565b9050919050565b61414b81614131565b82525050565b5f6020820190506141645f830184614142565b92915050565b61417381614027565b82525050565b5f60208201905061418c5f83018461416a565b92915050565b61419b81614098565b81146141a5575f80fd5b50565b5f813590506141b681614192565b92915050565b5f602082840312156141d1576141d0613fc9565b5b5f6141de848285016141a8565b91505092915050565b5f80604083850312156141fd576141fc613fc9565b5b5f61420a85828601614013565b925050602061421b85828601614013565b9150509250929050565b5f805f6060848603121561423c5761423b613fc9565b5b5f61424986828701614013565b935050602061425a86828701614013565b925050604061426b86828701614046565b9150509250925092565b5f60ff82169050919050565b61428a81614275565b82525050565b5f6020820190506142a35f830184614281565b92915050565b5f80604083850312156142bf576142be613fc9565b5b5f6142cc85828601614013565b92505060206142dd858286016141a8565b9150509250929050565b6142f081613fec565b82525050565b5f6020820190506143095f8301846142e7565b92915050565b5f805f805f8060c0878903121561432957614328613fc9565b5b5f61433689828a01614046565b965050602061434789828a01614046565b955050604061435889828a01614046565b945050606061436989828a01614046565b935050608061437a89828a01614046565b92505060a061438b89828a01614046565b9150509295509295509295565b5f80604083850312156143ae576143ad613fc9565b5b5f6143bb85828601614046565b92505060206143cc85828601614046565b9150509250929050565b5f602082840312156143eb576143ea613fc9565b5b5f6143f884828501614046565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061444557607f821691505b60208210810361445857614457614401565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614492602083613f29565b915061449d8261445e565b602082019050919050565b5f6020820190508181035f8301526144bf81614486565b9050919050565b7f46656573206d757374206265206c6f776572207468656e2074686520637572725f8201527f656e740000000000000000000000000000000000000000000000000000000000602082015250565b5f614520602383613f29565b915061452b826144c6565b604082019050919050565b5f6020820190508181035f83015261454d81614514565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61458b82614027565b915061459683614027565b92508282019050808211156145ae576145ad614554565b5b92915050565b7f466565732063616e6e6f7420626520686967686572207468656e2033302500005f82015250565b5f6145e8601e83613f29565b91506145f3826145b4565b602082019050919050565b5f6020820190508181035f830152614615816145dc565b9050919050565b5f61462682614027565b915061463183614027565b925082820261463f81614027565b9150828204841483151761465657614655614554565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61469482614027565b915061469f83614027565b9250826146af576146ae61465d565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614714602f83613f29565b915061471f826146ba565b604082019050919050565b5f6020820190508181035f83015261474181614708565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6147a2602483613f29565b91506147ad82614748565b604082019050919050565b5f6020820190508181035f8301526147cf81614796565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614830603983613f29565b915061483b826147d6565b604082019050919050565b5f6020820190508181035f83015261485d81614824565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6148be603583613f29565b91506148c982614864565b604082019050919050565b5f6020820190508181035f8301526148eb816148b2565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61494c603483613f29565b9150614957826148f2565b604082019050919050565b5f6020820190508181035f83015261497981614940565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6149da602683613f29565b91506149e582614980565b604082019050919050565b5f6020820190508181035f830152614a07816149ce565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614a68602483613f29565b9150614a7382614a0e565b604082019050919050565b5f6020820190508181035f830152614a9581614a5c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614af6602283613f29565b9150614b0182614a9c565b604082019050919050565b5f6020820190508181035f830152614b2381614aea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614b84602583613f29565b9150614b8f82614b2a565b604082019050919050565b5f6020820190508181035f830152614bb181614b78565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614c12602383613f29565b9150614c1d82614bb8565b604082019050919050565b5f6020820190508181035f830152614c3f81614c06565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d20745f8201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b5f614ca0603183613f29565b9150614cab82614c46565b604082019050919050565b5f6020820190508181035f830152614ccd81614c94565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614d08601683613f29565b9150614d1382614cd4565b602082019050919050565b5f6020820190508181035f830152614d3581614cfc565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614dbc604983613f29565b9150614dc782614d3c565b606082019050919050565b5f6020820190508181035f830152614de981614db0565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614e4a603583613f29565b9150614e5582614df0565b604082019050919050565b5f6020820190508181035f830152614e7781614e3e565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614eb2601383613f29565b9150614ebd82614e7e565b602082019050919050565b5f6020820190508181035f830152614edf81614ea6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614f40603683613f29565b9150614f4b82614ee6565b604082019050919050565b5f6020820190508181035f830152614f6d81614f34565b9050919050565b5f614f7e82614027565b9150614f8983614027565b9250828203905081811115614fa157614fa0614554565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614fdb601b83613f29565b9150614fe682614fa7565b602082019050919050565b5f6020820190508181035f83015261500881614fcf565b9050919050565b5f81905092915050565b50565b5f6150275f8361500f565b915061503282615019565b5f82019050919050565b5f6150468261501c565b9150819050919050565b5f6060820190506150635f83018661416a565b615070602083018561416a565b61507d604083018461416a565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6150df602183613f29565b91506150ea82615085565b604082019050919050565b5f6020820190508181035f83015261510c816150d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061517b81613ffd565b92915050565b5f6020828403121561519657615195613fc9565b5b5f6151a38482850161516d565b91505092915050565b5f819050919050565b5f6151cf6151ca6151c5846151ac565b6140f6565b614027565b9050919050565b6151df816151b5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61521781613fec565b82525050565b5f615228838361520e565b60208301905092915050565b5f602082019050919050565b5f61524a826151e5565b61525481856151ef565b935061525f836151ff565b805f5b8381101561528f578151615276888261521d565b975061528183615234565b925050600181019050615262565b5085935050505092915050565b5f60a0820190506152af5f83018861416a565b6152bc60208301876151d6565b81810360408301526152ce8186615240565b90506152dd60608301856142e7565b6152ea608083018461416a565b9695505050505050565b5f60c0820190506153075f8301896142e7565b615314602083018861416a565b61532160408301876151d6565b61532e60608301866151d6565b61533b60808301856142e7565b61534860a083018461416a565b979650505050505050565b5f8151905061536181614030565b92915050565b5f805f6060848603121561537e5761537d613fc9565b5b5f61538b86828701615353565b935050602061539c86828701615353565b92505060406153ad86828701615353565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220359f9ff24c8144077f6273d550e2e9f753e4379fbeca8aa54245a9891ef74a8764736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102e7575f3560e01c8063715018a61161018f578063b62496f5116100db578063dd62ed3e11610094578063f11a24d31161006e578063f11a24d314610b34578063f2fde38b14610b5e578063f637434214610b86578063f8b45b0514610bb0576102ee565b8063dd62ed3e14610aa4578063e52fb9ec14610ae0578063e884f26014610b0a576102ee565b8063b62496f514610986578063c0246668146109c2578063c876d0b9146109ea578063cc2ffe7c14610a14578063cfd1940e14610a3e578063d85ba06314610a7a576102ee565b806395d89b41116101485780639fccce32116101225780639fccce32146108ba578063a0d82dc5146108e4578063a457c2d71461090e578063a9059cbb1461094a576102ee565b806395d89b411461083e5780639a7a23d6146108685780639c3b4fdc14610890576102ee565b8063715018a61461075a5780637437681e14610770578063751039fc1461079a5780637571336a146107c45780637ebb640a146107ec5780638da5cb5b14610814576102ee565b806323b872dd1161024e57806358c84e70116102075780636a486a8e116101e15780636a486a8e146106a05780636b2fb124146106ca5780636ddd1713146106f457806370a082311461071e576102ee565b806358c84e70146106265780635c068a8c1461064e5780635f5828f614610678576102ee565b806323b872dd146104f6578063313ce56714610532578063395093511461055c578063404e51291461059857806349bd5a5e146105c05780634fbee193146105ea576102ee565b8063184f5c6a116102a0578063184f5c6a146104125780631864217b1461043a5780631a8145bb146104645780631cce34ee1461048e5780631d97b7cd146104b857806322b55037146104ce576102ee565b806306fdde03146102f2578063095ea7b31461031c57806310d5de531461035857806311704f52146103945780631694505e146103be57806318160ddd146103e8576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b50610306610bda565b6040516103139190613fa9565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d919061405a565b610c6a565b60405161034f91906140b2565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906140cb565b610c87565b60405161038b91906140b2565b60405180910390f35b34801561039f575f80fd5b506103a8610ca4565b6040516103b591906140b2565b60405180910390f35b3480156103c9575f80fd5b506103d2610cb7565b6040516103df9190614151565b60405180910390f35b3480156103f3575f80fd5b506103fc610cdb565b6040516104099190614179565b60405180910390f35b34801561041d575f80fd5b50610438600480360381019061043391906141bc565b610ce4565b005b348015610445575f80fd5b5061044e610d97565b60405161045b91906140b2565b60405180910390f35b34801561046f575f80fd5b50610478610daa565b6040516104859190614179565b60405180910390f35b348015610499575f80fd5b506104a2610db0565b6040516104af91906140b2565b60405180910390f35b3480156104c3575f80fd5b506104cc610dc2565b005b3480156104d9575f80fd5b506104f460048036038101906104ef91906141e7565b610e97565b005b348015610501575f80fd5b5061051c60048036038101906105179190614225565b6110a9565b60405161052991906140b2565b60405180910390f35b34801561053d575f80fd5b5061054661117d565b6040516105539190614290565b60405180910390f35b348015610567575f80fd5b50610582600480360381019061057d919061405a565b611185565b60405161058f91906140b2565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b991906142a9565b611233565b005b3480156105cb575f80fd5b506105d4611321565b6040516105e191906142f6565b60405180910390f35b3480156105f5575f80fd5b50610610600480360381019061060b91906140cb565b611345565b60405161061d91906140b2565b60405180910390f35b348015610631575f80fd5b5061064c6004803603810190610647919061430f565b611397565b005b348015610659575f80fd5b50610662611585565b60405161066f9190614179565b60405180910390f35b348015610683575f80fd5b5061069e600480360381019061069991906141bc565b61158b565b005b3480156106ab575f80fd5b506106b461163e565b6040516106c19190614179565b60405180910390f35b3480156106d5575f80fd5b506106de611644565b6040516106eb9190614179565b60405180910390f35b3480156106ff575f80fd5b5061070861164a565b60405161071591906140b2565b60405180910390f35b348015610729575f80fd5b50610744600480360381019061073f91906140cb565b61165d565b6040516107519190614179565b60405180910390f35b348015610765575f80fd5b5061076e6116a2565b005b34801561077b575f80fd5b506107846117f5565b6040516107919190614179565b60405180910390f35b3480156107a5575f80fd5b506107ae6117fb565b6040516107bb91906140b2565b60405180910390f35b3480156107cf575f80fd5b506107ea60048036038101906107e591906142a9565b6118b2565b005b3480156107f7575f80fd5b50610812600480360381019061080d9190614398565b6119a0565b005b34801561081f575f80fd5b50610828611b5a565b60405161083591906142f6565b60405180910390f35b348015610849575f80fd5b50610852611b82565b60405161085f9190613fa9565b60405180910390f35b348015610873575f80fd5b5061088e600480360381019061088991906142a9565b611c12565b005b34801561089b575f80fd5b506108a4611d44565b6040516108b19190614179565b60405180910390f35b3480156108c5575f80fd5b506108ce611d4a565b6040516108db9190614179565b60405180910390f35b3480156108ef575f80fd5b506108f8611d50565b6040516109059190614179565b60405180910390f35b348015610919575f80fd5b50610934600480360381019061092f919061405a565b611d56565b60405161094191906140b2565b60405180910390f35b348015610955575f80fd5b50610970600480360381019061096b919061405a565b611e1e565b60405161097d91906140b2565b60405180910390f35b348015610991575f80fd5b506109ac60048036038101906109a791906140cb565b611e3b565b6040516109b991906140b2565b60405180910390f35b3480156109cd575f80fd5b506109e860048036038101906109e391906142a9565b611e57565b005b3480156109f5575f80fd5b506109fe611f93565b604051610a0b91906140b2565b60405180910390f35b348015610a1f575f80fd5b50610a28611fa5565b604051610a359190614179565b60405180910390f35b348015610a49575f80fd5b50610a646004803603810190610a5f91906143d6565b611fab565b604051610a7191906140b2565b60405180910390f35b348015610a85575f80fd5b50610a8e612119565b604051610a9b9190614179565b60405180910390f35b348015610aaf575f80fd5b50610aca6004803603810190610ac591906141e7565b61211f565b604051610ad79190614179565b60405180910390f35b348015610aeb575f80fd5b50610af46121a1565b604051610b019190614179565b60405180910390f35b348015610b15575f80fd5b50610b1e6121a7565b604051610b2b91906140b2565b60405180910390f35b348015610b3f575f80fd5b50610b4861225e565b604051610b559190614179565b60405180910390f35b348015610b69575f80fd5b50610b846004803603810190610b7f91906140cb565b612264565b005b348015610b91575f80fd5b50610b9a612426565b604051610ba79190614179565b60405180910390f35b348015610bbb575f80fd5b50610bc461242c565b604051610bd19190614179565b60405180910390f35b606060038054610be99061442e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c159061442e565b8015610c605780601f10610c3757610100808354040283529160200191610c60565b820191905f5260205f20905b815481529060010190602001808311610c4357829003601f168201915b5050505050905090565b5f610c7d610c76612432565b8484612439565b6001905092915050565b601f602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610cec612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d71906144a8565b60405180910390fd5b80600d60036101000a81548160ff02191690831515021790555050565b600d60039054906101000a900460ff1681565b601b5481565b600d5f9054906101000a900460ff1681565b610dca612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4f906144a8565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043601d81905550565b610e9f612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f24906144a8565b60405180910390fd5b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f02f8a1483978974a6412ba3a67040b4daa4fc0dfe9439a7295f9a9538394f63560405160405180910390a381600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6110b58484846125fc565b611172846110c1612432565b61116d856040518060600160405280602881526020016153de6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f611124612432565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133c59092919063ffffffff16565b612439565b600190509392505050565b5f6012905090565b5f611229611191612432565b846112248560015f6111a1612432565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461342790919063ffffffff16565b612439565b6001905092915050565b61123b612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c0906144a8565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000f3468a3fca3be56018aa1eb6d8dab1c4837d30c581565b5f601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61139f612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611424906144a8565b60405180910390fd5b601554861115801561144157506014548511155b801561144f57506013548411155b801561145d57506019548311155b801561146b57506018548211155b801561147957506017548111155b6114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af90614536565b60405180910390fd5b8560158190555084601481905550836013819055506013546014546015546114e09190614581565b6114ea9190614581565b6012819055508260198190555081601881905550806017819055506017546018546019546115189190614581565b6115229190614581565b601681905550601e6012541115801561153e5750601e60165411155b61157d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611574906145fe565b60405180910390fd5b505050505050565b60135481565b611593612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611618906144a8565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60165481565b60175481565b600d60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116aa612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f906144a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a5481565b5f611804612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611889906144a8565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b6118ba612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f906144a8565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6119a8612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d906144a8565b60405180910390fd5b670de0b6b3a76400006103e86001611a4c610cdb565b611a56919061461c565b611a60919061468a565b611a6a919061468a565b821015611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa39061472a565b60405180910390fd5b670de0b6b3a76400006103e86005611ac2610cdb565b611acc919061461c565b611ad6919061468a565b611ae0919061468a565b811015611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b19906147b8565b60405180910390fd5b670de0b6b3a764000082611b36919061461c565b600a81905550670de0b6b3a764000081611b50919061461c565b600c819055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b919061442e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbd9061442e565b8015611c085780601f10611bdf57610100808354040283529160200191611c08565b820191905f5260205f20905b815481529060010190602001808311611beb57829003601f168201915b5050505050905090565b611c1a612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f906144a8565b60405180910390fd5b7f000000000000000000000000f3468a3fca3be56018aa1eb6d8dab1c4837d30c573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d90614846565b60405180910390fd5b611d408282613484565b5050565b60155481565b601c5481565b60195481565b5f611e14611d62612432565b84611e0f856040518060600160405280602581526020016154066025913960015f611d8b612432565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133c59092919063ffffffff16565b612439565b6001905092915050565b5f611e31611e2a612432565b84846125fc565b6001905092915050565b60208052805f5260405f205f915054906101000a900460ff1681565b611e5f612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee4906144a8565b60405180910390fd5b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f8791906140b2565b60405180910390a25050565b60115f9054906101000a900460ff1681565b601a5481565b5f611fb4612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612039906144a8565b60405180910390fd5b620186a06001612050610cdb565b61205a919061461c565b612064919061468a565b8210156120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d906148d4565b60405180910390fd5b6103e860056120b3610cdb565b6120bd919061461c565b6120c7919061468a565b821115612109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210090614962565b60405180910390fd5b81600b8190555060019050919050565b60125481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b5f6121b0612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612235906144a8565b60405180910390fd5b5f60115f6101000a81548160ff0219169083151502179055506001905090565b60145481565b61226c612432565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f1906144a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235f906149f0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600c5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e90614a7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250c90614b0c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125ef9190614179565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361266a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266190614b9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cf90614c28565b60405180910390fd5b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612776575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6127b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ac90614cb6565b60405180910390fd5b60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128525750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b505f810361286a5761286583835f613522565b6133c0565b600d5f9054906101000a900460ff1615612f1057612886611b5a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128f457506128c4611b5a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561292c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612966575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561297e575060085f9054906101000a900460ff16155b15612f0f57600d60019054906101000a900460ff16612a7257601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a325750601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6890614d1e565b60405180910390fd5b5b60115f9054906101000a900460ff1615612c3557612a8e611b5a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b1557507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b6d57507f000000000000000000000000f3468a3fca3be56018aa1eb6d8dab1c4837d30c573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c345743600e5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890614dd2565b60405180910390fd5b43600e5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612cd25750601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d7957600a54811115612d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1390614e60565b60405180910390fd5b600c54612d288361165d565b82612d339190614581565b1115612d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6b90614ec8565b60405180910390fd5b612f0e565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e165750601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e6557600a54811115612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790614f56565b60405180910390fd5b612f0d565b601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612f0c57600c54612ebf8361165d565b82612eca9190614581565b1115612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290614ec8565b60405180910390fd5b5b5b5b5b5b5f612f1a3061165d565b90505f600b548210159050808015612f3e5750600d60029054906101000a900460ff165b8015612f56575060085f9054906101000a900460ff16155b8015612fa9575060205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ffc5750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561304f5750601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561309057600160085f6101000a81548160ff0219169083151502179055506130766137ab565b5f60085f6101000a81548160ff0219169083151502179055505b5f60085f9054906101000a900460ff16159050601e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061313e5750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613147575f90505b5f81156133b05760205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131a557505f601654115b1561326f576131d260646131c460165488613aa690919063ffffffff16565b613b1d90919063ffffffff16565b9050601654601854826131e5919061461c565b6131ef919061468a565b601b5f8282546131ff9190614581565b9250508190555060165460195482613217919061461c565b613221919061468a565b601c5f8282546132319190614581565b9250508190555060165460175482613249919061461c565b613253919061468a565b601a5f8282546132639190614581565b9250508190555061338d565b60205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156132c657505f601254115b1561338c576132f360646132e560125488613aa690919063ffffffff16565b613b1d90919063ffffffff16565b905060125460145482613306919061461c565b613310919061468a565b601b5f8282546133209190614581565b9250508190555060125460155482613338919061461c565b613342919061468a565b601c5f8282546133529190614581565b925050819055506012546013548261336a919061461c565b613374919061468a565b601a5f8282546133849190614581565b925050819055505b5b5f8111156133a1576133a0873083613522565b5b80856133ad9190614f74565b94505b6133bb878787613522565b505050505b505050565b5f83831115829061340c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134039190613fa9565b60405180910390fd5b505f838561341a9190614f74565b9050809150509392505050565b5f8082846134359190614581565b90508381101561347a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347190614ff1565b60405180910390fd5b8091505092915050565b8060205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358790614b9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f590614c28565b60405180910390fd5b613609838383613b66565b613672816040518060600160405280602681526020016153b8602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133c59092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613701815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461342790919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161379e9190614179565b60405180910390a3505050565b5f6137b53061165d565b90505f601c54601a54601b546137cb9190614581565b6137d59190614581565b90505f808314806137e557505f82145b156137f257505050613aa4565b5f1515600d60039054906101000a900460ff16151503613839576014600b5461381b919061461c565b831115613834576014600b54613831919061461c565b92505b613845565b6138423061165d565b92505b5f600283601b5486613857919061461c565b613861919061468a565b61386b919061468a565b90505f6138818286613b6b90919063ffffffff16565b90505f47905061389082613bb4565b5f6138a48247613b6b90919063ffffffff16565b90505f6138ce876138c0601a5485613aa690919063ffffffff16565b613b1d90919063ffffffff16565b90505f6138f8886138ea601c5486613aa690919063ffffffff16565b613b1d90919063ffffffff16565b90505f8183856139089190614f74565b6139129190614f74565b90505f601b819055505f601a819055505f601c8190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161396e9061503c565b5f6040518083038185875af1925050503d805f81146139a8576040519150601f19603f3d011682016040523d82523d5f602084013e6139ad565b606091505b5050809850505f871180156139c157505f81115b15613a0e576139d08782613de7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613a0593929190615050565b60405180910390a15b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a549061503c565b5f6040518083038185875af1925050503d805f8114613a8e576040519150601f19603f3d011682016040523d82523d5f602084013e613a93565b606091505b505080985050505050505050505050505b565b5f808303613ab6575f9050613b17565b5f8284613ac3919061461c565b9050828482613ad2919061468a565b14613b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b09906150f5565b60405180910390fd5b809150505b92915050565b5f613b5e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ebe565b905092915050565b505050565b5f613bac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506133c5565b905092915050565b5f600267ffffffffffffffff811115613bd057613bcf615113565b5b604051908082528060200260200182016040528015613bfe5781602001602082028036833780820191505090505b50905030815f81518110613c1557613c14615140565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cdc9190615181565b81600181518110613cf057613cef615140565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d55307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612439565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613db695949392919061529c565b5f604051808303815f87803b158015613dcd575f80fd5b505af1158015613ddf573d5f803e3d5ffd5b505050505050565b613e12307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612439565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613e76969594939291906152f4565b60606040518083038185885af1158015613e92573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613eb79190615367565b5050505050565b5f8083118290613f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613efb9190613fa9565b60405180910390fd5b505f8385613f12919061468a565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613f56578082015181840152602081019050613f3b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613f7b82613f1f565b613f858185613f29565b9350613f95818560208601613f39565b613f9e81613f61565b840191505092915050565b5f6020820190508181035f830152613fc18184613f71565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613ff682613fcd565b9050919050565b61400681613fec565b8114614010575f80fd5b50565b5f8135905061402181613ffd565b92915050565b5f819050919050565b61403981614027565b8114614043575f80fd5b50565b5f8135905061405481614030565b92915050565b5f80604083850312156140705761406f613fc9565b5b5f61407d85828601614013565b925050602061408e85828601614046565b9150509250929050565b5f8115159050919050565b6140ac81614098565b82525050565b5f6020820190506140c55f8301846140a3565b92915050565b5f602082840312156140e0576140df613fc9565b5b5f6140ed84828501614013565b91505092915050565b5f819050919050565b5f61411961411461410f84613fcd565b6140f6565b613fcd565b9050919050565b5f61412a826140ff565b9050919050565b5f61413b82614120565b9050919050565b61414b81614131565b82525050565b5f6020820190506141645f830184614142565b92915050565b61417381614027565b82525050565b5f60208201905061418c5f83018461416a565b92915050565b61419b81614098565b81146141a5575f80fd5b50565b5f813590506141b681614192565b92915050565b5f602082840312156141d1576141d0613fc9565b5b5f6141de848285016141a8565b91505092915050565b5f80604083850312156141fd576141fc613fc9565b5b5f61420a85828601614013565b925050602061421b85828601614013565b9150509250929050565b5f805f6060848603121561423c5761423b613fc9565b5b5f61424986828701614013565b935050602061425a86828701614013565b925050604061426b86828701614046565b9150509250925092565b5f60ff82169050919050565b61428a81614275565b82525050565b5f6020820190506142a35f830184614281565b92915050565b5f80604083850312156142bf576142be613fc9565b5b5f6142cc85828601614013565b92505060206142dd858286016141a8565b9150509250929050565b6142f081613fec565b82525050565b5f6020820190506143095f8301846142e7565b92915050565b5f805f805f8060c0878903121561432957614328613fc9565b5b5f61433689828a01614046565b965050602061434789828a01614046565b955050604061435889828a01614046565b945050606061436989828a01614046565b935050608061437a89828a01614046565b92505060a061438b89828a01614046565b9150509295509295509295565b5f80604083850312156143ae576143ad613fc9565b5b5f6143bb85828601614046565b92505060206143cc85828601614046565b9150509250929050565b5f602082840312156143eb576143ea613fc9565b5b5f6143f884828501614046565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061444557607f821691505b60208210810361445857614457614401565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614492602083613f29565b915061449d8261445e565b602082019050919050565b5f6020820190508181035f8301526144bf81614486565b9050919050565b7f46656573206d757374206265206c6f776572207468656e2074686520637572725f8201527f656e740000000000000000000000000000000000000000000000000000000000602082015250565b5f614520602383613f29565b915061452b826144c6565b604082019050919050565b5f6020820190508181035f83015261454d81614514565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61458b82614027565b915061459683614027565b92508282019050808211156145ae576145ad614554565b5b92915050565b7f466565732063616e6e6f7420626520686967686572207468656e2033302500005f82015250565b5f6145e8601e83613f29565b91506145f3826145b4565b602082019050919050565b5f6020820190508181035f830152614615816145dc565b9050919050565b5f61462682614027565b915061463183614027565b925082820261463f81614027565b9150828204841483151761465657614655614554565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61469482614027565b915061469f83614027565b9250826146af576146ae61465d565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614714602f83613f29565b915061471f826146ba565b604082019050919050565b5f6020820190508181035f83015261474181614708565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6147a2602483613f29565b91506147ad82614748565b604082019050919050565b5f6020820190508181035f8301526147cf81614796565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614830603983613f29565b915061483b826147d6565b604082019050919050565b5f6020820190508181035f83015261485d81614824565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6148be603583613f29565b91506148c982614864565b604082019050919050565b5f6020820190508181035f8301526148eb816148b2565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61494c603483613f29565b9150614957826148f2565b604082019050919050565b5f6020820190508181035f83015261497981614940565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6149da602683613f29565b91506149e582614980565b604082019050919050565b5f6020820190508181035f830152614a07816149ce565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614a68602483613f29565b9150614a7382614a0e565b604082019050919050565b5f6020820190508181035f830152614a9581614a5c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614af6602283613f29565b9150614b0182614a9c565b604082019050919050565b5f6020820190508181035f830152614b2381614aea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614b84602583613f29565b9150614b8f82614b2a565b604082019050919050565b5f6020820190508181035f830152614bb181614b78565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614c12602383613f29565b9150614c1d82614bb8565b604082019050919050565b5f6020820190508181035f830152614c3f81614c06565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d20745f8201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b5f614ca0603183613f29565b9150614cab82614c46565b604082019050919050565b5f6020820190508181035f830152614ccd81614c94565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614d08601683613f29565b9150614d1382614cd4565b602082019050919050565b5f6020820190508181035f830152614d3581614cfc565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614dbc604983613f29565b9150614dc782614d3c565b606082019050919050565b5f6020820190508181035f830152614de981614db0565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614e4a603583613f29565b9150614e5582614df0565b604082019050919050565b5f6020820190508181035f830152614e7781614e3e565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614eb2601383613f29565b9150614ebd82614e7e565b602082019050919050565b5f6020820190508181035f830152614edf81614ea6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614f40603683613f29565b9150614f4b82614ee6565b604082019050919050565b5f6020820190508181035f830152614f6d81614f34565b9050919050565b5f614f7e82614027565b9150614f8983614027565b9250828203905081811115614fa157614fa0614554565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614fdb601b83613f29565b9150614fe682614fa7565b602082019050919050565b5f6020820190508181035f83015261500881614fcf565b9050919050565b5f81905092915050565b50565b5f6150275f8361500f565b915061503282615019565b5f82019050919050565b5f6150468261501c565b9150819050919050565b5f6060820190506150635f83018661416a565b615070602083018561416a565b61507d604083018461416a565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6150df602183613f29565b91506150ea82615085565b604082019050919050565b5f6020820190508181035f83015261510c816150d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061517b81613ffd565b92915050565b5f6020828403121561519657615195613fc9565b5b5f6151a38482850161516d565b91505092915050565b5f819050919050565b5f6151cf6151ca6151c5846151ac565b6140f6565b614027565b9050919050565b6151df816151b5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61521781613fec565b82525050565b5f615228838361520e565b60208301905092915050565b5f602082019050919050565b5f61524a826151e5565b61525481856151ef565b935061525f836151ff565b805f5b8381101561528f578151615276888261521d565b975061528183615234565b925050600181019050615262565b5085935050505092915050565b5f60a0820190506152af5f83018861416a565b6152bc60208301876151d6565b81810360408301526152ce8186615240565b90506152dd60608301856142e7565b6152ea608083018461416a565b9695505050505050565b5f60c0820190506153075f8301896142e7565b615314602083018861416a565b61532160408301876151d6565b61532e60608301866151d6565b61533b60808301856142e7565b61534860a083018461416a565b979650505050505050565b5f8151905061536181614030565b92915050565b5f805f6060848603121561537e5761537d613fc9565b5b5f61538b86828701615353565b935050602061539c86828701615353565b92505060406153ad86828701615353565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220359f9ff24c8144077f6273d550e2e9f753e4379fbeca8aa54245a9891ef74a8764736f6c63430008140033

Deployed Bytecode Sourcemap

17648:16208:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4846:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5760:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19260:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18130:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17786:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5167:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23128:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18204:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18974:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18092:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22568:185;;;;;;;;;;;;;:::i;:::-;;26298:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5937:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5066:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6300:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25711:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17844:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26624:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24245:1061;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18683:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25402:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18790:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18825:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18167;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5283:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10821:148;;;;;;;;;;;;;:::i;:::-;;17997:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22806:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24093:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23691:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10607:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4954:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25847:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18756:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19014:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18900:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6526:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5418:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19483:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25520:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18600:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18935:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23311:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18649:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5601:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18024:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22986:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18719:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10977:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18862:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18058:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4846:100;4900:13;4933:5;4926:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4846:100;:::o;5760:169::-;5843:4;5860:39;5869:12;:10;:12::i;:::-;5883:7;5892:6;5860:8;:39::i;:::-;5917:4;5910:11;;5760:169;;;;:::o;19260:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18130:30::-;;;;;;;;;;;;;:::o;17786:51::-;;;:::o;5167:108::-;5228:7;5255:12;;5248:19;;5167:108;:::o;23128:111::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23224:7:::1;23200:21;;:31;;;;;;;;;;;;;;;;;;23128:111:::0;:::o;18204:41::-;;;;;;;;;;;;;:::o;18974:33::-;;;;:::o;18092:31::-;;;;;;;;;;;;;:::o;22568:185::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22646:4:::1;22632:11;;:18;;;;;;;;;;;;;;;;;;22675:4;22661:11;;:18;;;;;;;;;;;;;;;;;;22703:12;22690:10;:25;;;;22568:185::o:0;26298:311::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26449:14:::1;;;;;;;;;;;26408:56;;26430:17;26408:56;;;;;;;;;;;;26492:17;26475:14;;:34;;;;;;;;;;;;;;;;;;26556:9;;;;;;;;;;;26525:41;;26542:12;26525:41;;;;;;;;;;;;26589:12;26577:9;;:24;;;;;;;;;;;;;;;;;;26298:311:::0;;:::o;5937:355::-;6077:4;6094:36;6104:6;6112:9;6123:6;6094:9;:36::i;:::-;6141:121;6150:6;6158:12;:10;:12::i;:::-;6172:89;6210:6;6172:89;;;;;;;;;;;;;;;;;:11;:19;6184:6;6172:19;;;;;;;;;;;;;;;:33;6192:12;:10;:12::i;:::-;6172:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6141:8;:121::i;:::-;6280:4;6273:11;;5937:355;;;;;:::o;5066:93::-;5124:5;5149:2;5142:9;;5066:93;:::o;6300:218::-;6388:4;6405:83;6414:12;:10;:12::i;:::-;6428:7;6437:50;6476:10;6437:11;:25;6449:12;:10;:12::i;:::-;6437:25;;;;;;;;;;;;;;;:34;6463:7;6437:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6405:8;:83::i;:::-;6506:4;6499:11;;6300:218;;;;:::o;25711:127::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25817:13:::1;25795:10;:19;25806:7;25795:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25711:127:::0;;:::o;17844:38::-;;;:::o;26624:125::-;26689:4;26713:19;:28;26733:7;26713:28;;;;;;;;;;;;;;;;;;;;;;;;;26706:35;;26624:125;;;:::o;24245:1061::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24523:9:::1;;24509:10;:23;;:72;;;;;24566:15;;24546:16;:35;;24509:72;:120;;;;;24615:14;;24596:15;:33;;24509:120;:159;;;;;24658:10;;24643:11;:25;;24509:159;:211;;;;;24704:16;;24683:17;:37;;24509:211;:260;;;;;24754:15;;24734:16;:35;;24509:260;24501:308;;;;;;;;;;;;:::i;:::-;;;;;;;;;24834:10;24822:9;:22;;;;24873:16;24855:15;:34;;;;24917:15;24900:14;:32;;;;24988:14;;24970:15;;24958:9;;:27;;;;:::i;:::-;:44;;;;:::i;:::-;24943:12;:59;;;;25026:11;25013:10;:24;;;;25067:17;25048:16;:36;;;;25113:16;25095:15;:34;;;;25188:15;;25169:16;;25156:10;;:29;;;;:::i;:::-;:47;;;;:::i;:::-;25140:13;:63;;;;25238:2;25222:12;;:18;;:41;;;;;25261:2;25244:13;;:19;;25222:41;25214:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;24245:1061:::0;;;;;;:::o;18683:29::-;;;;:::o;25402:109::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25496:7:::1;25482:11;;:21;;;;;;;;;;;;;;;;;;25402:109:::0;:::o;18790:28::-;;;;:::o;18825:30::-;;;;:::o;18167:::-;;;;;;;;;;;;;:::o;5283:127::-;5357:7;5384:9;:18;5394:7;5384:18;;;;;;;;;;;;;;;;5377:25;;5283:127;;;:::o;10821:148::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10928:1:::1;10891:40;;10912:6;;;;;;;;;;;10891:40;;;;;;;;;;;;10959:1;10942:6;;:19;;;;;;;;;;;;;;;;;;10821:148::o:0;17997:20::-;;;;:::o;22806:118::-;22858:4;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22889:5:::1;22874:12;;:20;;;;;;;;;;;;;;;;;;22912:4;22905:11;;22806:118:::0;:::o;24093:144::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24225:4:::1;24183:31;:39;24215:6;24183:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24093:144:::0;;:::o;23691:393::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23835:4:::1;23829;23825:1;23809:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23808:31;;;;:::i;:::-;23798:6;:41;;23790:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;23951:4;23945;23941:1;23925:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23924:31;;;;:::i;:::-;23910:10;:45;;23902:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;24025:6;24015;:17;;;;:::i;:::-;24007:5;:25;;;;24069:6;24055:10;:21;;;;:::i;:::-;24043:9;:33;;;;23691:393:::0;;:::o;10607:79::-;10645:7;10672:6;;;;;;;;;;;10665:13;;10607:79;:::o;4954:104::-;5010:13;5043:7;5036:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4954:104;:::o;25847:245::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25954:13:::1;25946:21;;:4;:21;;::::0;25938:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26043:41;26072:4;26078:5;26043:28;:41::i;:::-;25847:245:::0;;:::o;18756:24::-;;;;:::o;19014:27::-;;;;:::o;18900:25::-;;;;:::o;6526:269::-;6619:4;6636:129;6645:12;:10;:12::i;:::-;6659:7;6668:96;6707:15;6668:96;;;;;;;;;;;;;;;;;:11;:25;6680:12;:10;:12::i;:::-;6668:25;;;;;;;;;;;;;;;:34;6694:7;6668:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6636:8;:129::i;:::-;6783:4;6776:11;;6526:269;;;;:::o;5418:175::-;5504:4;5521:42;5531:12;:10;:12::i;:::-;5545:9;5556:6;5521:9;:42::i;:::-;5581:4;5574:11;;5418:175;;;;:::o;19483:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;25520:182::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25636:8:::1;25605:19;:28;25625:7;25605:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25676:7;25660:34;;;25685:8;25660:34;;;;;;:::i;:::-;;;;;;;;25520:182:::0;;:::o;18600:39::-;;;;;;;;;;;;;:::o;18935:32::-;;;;:::o;23311:371::-;23383:4;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23440:6:::1;23436:1;23420:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;23407:9;:39;;23399:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;23556:4;23552:1;23536:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23523:9;:37;;23515:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;23643:9;23628:12;:24;;;;23670:4;23663:11;;23311:371:::0;;;:::o;18649:27::-;;;;:::o;5601:151::-;5690:7;5717:11;:18;5729:5;5717:18;;;;;;;;;;;;;;;:27;5736:7;5717:27;;;;;;;;;;;;;;;;5710:34;;5601:151;;;;:::o;18024:27::-;;;;:::o;22986:134::-;23046:4;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23085:5:::1;23062:20;;:28;;;;;;;;;;;;;;;;;;23108:4;23101:11;;22986:134:::0;:::o;18719:30::-;;;;:::o;10977:244::-;10744:12;:10;:12::i;:::-;10734:22;;:6;;;;;;;;;;;:22;;;10726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11086:1:::1;11066:22;;:8;:22;;::::0;11058:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11176:8;11147:38;;11168:6;;;;;;;;;;;11147:38;;;;;;;;;;;;11205:8;11196:6;;:17;;;;;;;;;;;;;;;;;;10977:244:::0;:::o;18862:31::-;;;;:::o;18058:24::-;;;;:::o;199:98::-;252:7;279:10;272:17;;199:98;:::o;8202:381::-;8355:1;8338:19;;:5;:19;;;8330:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8436:1;8417:21;;:7;:21;;;8409:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8521:6;8491:11;:18;8503:5;8491:18;;;;;;;;;;;;;;;:27;8510:7;8491:27;;;;;;;;;;;;;;;:36;;;;8559:7;8543:32;;8552:5;8543:32;;;8568:6;8543:32;;;;;;:::i;:::-;;;;;;;;8202:381;;;:::o;26758:4246::-;26906:1;26890:18;;:4;:18;;;26882:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26983:1;26969:16;;:2;:16;;;26961:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27045:10;:14;27056:2;27045:14;;;;;;;;;;;;;;;;;;;;;;;;;27044:15;:36;;;;;27064:10;:16;27075:4;27064:16;;;;;;;;;;;;;;;;;;;;;;;;;27063:17;27044:36;27036:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;27159:25;:31;27185:4;27159:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27195:31;:35;27227:2;27195:35;;;;;;;;;;;;;;;;;;;;;;;;;27194:36;27159:71;27155:95;27294:1;27284:6;:11;27281:92;;27312:28;27328:4;27334:2;27338:1;27312:15;:28::i;:::-;27355:7;;27281:92;27389:12;;;;;;;;;;;27386:1779;;;27447:7;:5;:7::i;:::-;27439:15;;:4;:15;;;;:49;;;;;27481:7;:5;:7::i;:::-;27475:13;;:2;:13;;;;27439:49;:86;;;;;27523:1;27509:16;;:2;:16;;;;27439:86;:128;;;;;27560:6;27546:21;;:2;:21;;;;27439:128;:160;;;;;27589:10;;;;;;;;;;;27588:11;27439:160;27417:1737;;;27637:11;;;;;;;;;;;27633:146;;27680:19;:25;27700:4;27680:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27709:19;:23;27729:2;27709:23;;;;;;;;;;;;;;;;;;;;;;;;;27680:52;27672:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27633:146;27938:20;;;;;;;;;;;27934:423;;;27992:7;:5;:7::i;:::-;27986:13;;:2;:13;;;;:47;;;;;28017:15;28003:30;;:2;:30;;;;27986:47;:79;;;;;28051:13;28037:28;;:2;:28;;;;27986:79;27982:356;;;28143:12;28101:28;:39;28130:9;28101:39;;;;;;;;;;;;;;;;:54;28093:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28302:12;28260:28;:39;28289:9;28260:39;;;;;;;;;;;;;;;:54;;;;27982:356;27934:423;28410:25;:31;28436:4;28410:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28446:31;:35;28478:2;28446:35;;;;;;;;;;;;;;;;;;;;;;;;;28445:36;28410:71;28406:733;;;28528:5;;28518:6;:15;;28510:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;28652:9;;28635:13;28645:2;28635:9;:13::i;:::-;28626:6;:22;;;;:::i;:::-;:35;;28618:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28406:733;;;28764:25;:29;28790:2;28764:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28798:31;:37;28830:4;28798:37;;;;;;;;;;;;;;;;;;;;;;;;;28797:38;28764:71;28760:379;;;28882:5;;28872:6;:15;;28864:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;28760:379;;;28993:31;:35;29025:2;28993:35;;;;;;;;;;;;;;;;;;;;;;;;;28989:150;;29086:9;;29069:13;29079:2;29069:9;:13::i;:::-;29060:6;:22;;;;:::i;:::-;:35;;29052:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28989:150;28760:379;28406:733;27417:1737;27386:1779;29178:28;29209:24;29227:4;29209:9;:24::i;:::-;29178:55;;29247:12;29286;;29262:20;:36;;29247:51;;29330:7;:35;;;;;29354:11;;;;;;;;;;;29330:35;:63;;;;;29383:10;;;;;;;;;;;29382:11;29330:63;:112;;;;;29411:25;:31;29437:4;29411:31;;;;;;;;;;;;;;;;;;;;;;;;;29410:32;29330:112;:155;;;;;29460:19;:25;29480:4;29460:25;;;;;;;;;;;;;;;;;;;;;;;;;29459:26;29330:155;:196;;;;;29503:19;:23;29523:2;29503:23;;;;;;;;;;;;;;;;;;;;;;;;;29502:24;29330:196;29312:334;;;29566:4;29553:10;;:17;;;;;;;;;;;;;;;;;;29588:10;:8;:10::i;:::-;29629:5;29616:10;;:18;;;;;;;;;;;;;;;;;;29312:334;29659:12;29675:10;;;;;;;;;;;29674:11;29659:26;;29787:19;:25;29807:4;29787:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29816:19;:23;29836:2;29816:23;;;;;;;;;;;;;;;;;;;;;;;;;29787:52;29784:99;;;29866:5;29856:15;;29784:99;29896:12;30000:7;29997:953;;;30051:25;:29;30077:2;30051:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;30100:1;30084:13;;:17;30051:50;30047:750;;;30128:34;30158:3;30128:25;30139:13;;30128:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;30121:41;;30229:13;;30210:16;;30203:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30181:18;;:61;;;;;;;:::i;:::-;;;;;;;;30297:13;;30284:10;;30277:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;30261:12;;:49;;;;;;;:::i;:::-;;;;;;;;30375:13;;30357:15;;30350:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;30329:17;;:59;;;;;;;:::i;:::-;;;;;;;;30047:750;;;30449:25;:31;30475:4;30449:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;30499:1;30484:12;;:16;30449:51;30446:351;;;30528:33;30557:3;30528:24;30539:12;;30528:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30521:40;;30627:12;;30609:15;;30602:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;30580:18;;:59;;;;;;;:::i;:::-;;;;;;;;30693:12;;30681:9;;30674:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;30658:12;;:47;;;;;;;:::i;:::-;;;;;;;;30769:12;;30752:14;;30745:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;30724:17;;:57;;;;;;;:::i;:::-;;;;;;;;30446:351;30047:750;30824:1;30817:4;:8;30814:93;;;30849:42;30865:4;30879;30886;30849:15;:42::i;:::-;30814:93;30934:4;30924:14;;;;;:::i;:::-;;;29997:953;30963:33;30979:4;30985:2;30989:6;30963:15;:33::i;:::-;26871:4133;;;;26758:4246;;;;:::o;9084:193::-;9170:7;9203:1;9198;:6;;9206:12;9190:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9230:9;9246:1;9242;:5;;;;:::i;:::-;9230:17;;9268:1;9261:8;;;9084:193;;;;;:::o;8750:182::-;8808:7;8828:9;8844:1;8840;:5;;;;:::i;:::-;8828:17;;8869:1;8864;:6;;8856:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8923:1;8916:8;;;8750:182;;;;:::o;26101:189::-;26218:5;26184:25;:31;26210:4;26184:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26276:5;26242:40;;26270:4;26242:40;;;;;;;;;;;;26101:189;;:::o;6803:575::-;6961:1;6943:20;;:6;:20;;;6935:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7045:1;7024:23;;:9;:23;;;7016:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7101:47;7122:6;7130:9;7141:6;7101:20;:47::i;:::-;7182:71;7204:6;7182:71;;;;;;;;;;;;;;;;;:9;:17;7192:6;7182:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7162:9;:17;7172:6;7162:17;;;;;;;;;;;;;;;:91;;;;7287:32;7312:6;7287:9;:20;7297:9;7287:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7264:9;:20;7274:9;7264:20;;;;;;;;;;;;;;;:55;;;;7352:9;7335:35;;7344:6;7335:35;;;7363:6;7335:35;;;;;;:::i;:::-;;;;;;;;6803:575;;;:::o;32148:1705::-;32187:23;32213:24;32231:4;32213:9;:24::i;:::-;32187:50;;32248:25;32317:12;;32297:17;;32276:18;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;32248:81;;32340:12;32388:1;32369:15;:20;:46;;;;32414:1;32393:17;:22;32369:46;32366:60;;;32418:7;;;;;32366:60;32467:5;32442:30;;:21;;;;;;;;;;;:30;;;32439:242;;32524:2;32509:12;;:17;;;;:::i;:::-;32491:15;:35;32488:109;;;32579:2;32564:12;;:17;;;;:::i;:::-;32546:35;;32488:109;32439:242;;;32645:24;32663:4;32645:9;:24::i;:::-;32627:42;;32439:242;32753:23;32838:1;32818:17;32797:18;;32779:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;32753:86;;32850:26;32879:36;32899:15;32879;:19;;:36;;;;:::i;:::-;32850:65;;32929:25;32957:21;32929:49;;32992:36;33009:18;32992:16;:36::i;:::-;33043:18;33064:44;33090:17;33064:21;:25;;:44;;;;:::i;:::-;33043:65;;33122:23;33148:56;33186:17;33148:33;33163:17;;33148:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;33122:82;;33215:17;33235:51;33268:17;33235:28;33250:12;;33235:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;33215:71;;33297:23;33354:9;33336:15;33323:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;33297:66;;33401:1;33380:18;:22;;;;33433:1;33413:17;:21;;;;33460:1;33445:12;:16;;;;33496:9;;;;;;;;;;;33488:23;;33519:9;33488:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33475:58;;;;;33568:1;33550:15;:19;:42;;;;;33591:1;33573:15;:19;33550:42;33547:210;;;33608:46;33621:15;33638;33608:12;:46::i;:::-;33674:71;33689:18;33709:15;33726:18;;33674:71;;;;;;;;:::i;:::-;;;;;;;;33547:210;33791:14;;;;;;;;;;;33783:28;;33819:21;33783:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33770:75;;;;;32176:1677;;;;;;;;;;32148:1705;:::o;9285:254::-;9343:7;9374:1;9369;:6;9365:47;;9399:1;9392:8;;;;9365:47;9425:9;9441:1;9437;:5;;;;:::i;:::-;9425:17;;9470:1;9465;9461;:5;;;;:::i;:::-;:10;9453:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9530:1;9523:8;;;9285:254;;;;;:::o;9547:132::-;9605:7;9632:39;9636:1;9639;9632:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9625:46;;9547:132;;;;:::o;8591:125::-;;;;:::o;8940:136::-;8998:7;9025:43;9029:1;9032;9025:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9018:50;;8940:136;;;;:::o;31013:597::-;31142:21;31180:1;31166:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31142:40;;31211:4;31193;31198:1;31193:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31237:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31227:4;31232:1;31227:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31273:62;31290:4;31305:15;31323:11;31273:8;:62::i;:::-;31375:15;:66;;;31456:11;31482:1;31526:4;31553;31573:15;31375:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31068:542;31013:597;:::o;31619:520::-;31767:62;31784:4;31799:15;31817:11;31767:8;:62::i;:::-;31873:15;:31;;;31912:9;31945:4;31965:11;31991:1;32034;32085:4;32105:15;31873:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31619:520;;:::o;9687:279::-;9773:7;9805:1;9801;:5;9808:12;9793:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9832:9;9848:1;9844;:5;;;;:::i;:::-;9832:17;;9957:1;9950:8;;;9687:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:116::-;5181:21;5196:5;5181:21;:::i;:::-;5174:5;5171:32;5161:60;;5217:1;5214;5207:12;5161:60;5111:116;:::o;5233:133::-;5276:5;5314:6;5301:20;5292:29;;5330:30;5354:5;5330:30;:::i;:::-;5233:133;;;;:::o;5372:323::-;5428:6;5477:2;5465:9;5456:7;5452:23;5448:32;5445:119;;;5483:79;;:::i;:::-;5445:119;5603:1;5628:50;5670:7;5661:6;5650:9;5646:22;5628:50;:::i;:::-;5618:60;;5574:114;5372:323;;;;:::o;5701:474::-;5769:6;5777;5826:2;5814:9;5805:7;5801:23;5797:32;5794:119;;;5832:79;;:::i;:::-;5794:119;5952:1;5977:53;6022:7;6013:6;6002:9;5998:22;5977:53;:::i;:::-;5967:63;;5923:117;6079:2;6105:53;6150:7;6141:6;6130:9;6126:22;6105:53;:::i;:::-;6095:63;;6050:118;5701:474;;;;;:::o;6181:619::-;6258:6;6266;6274;6323:2;6311:9;6302:7;6298:23;6294:32;6291:119;;;6329:79;;:::i;:::-;6291:119;6449:1;6474:53;6519:7;6510:6;6499:9;6495:22;6474:53;:::i;:::-;6464:63;;6420:117;6576:2;6602:53;6647:7;6638:6;6627:9;6623:22;6602:53;:::i;:::-;6592:63;;6547:118;6704:2;6730:53;6775:7;6766:6;6755:9;6751:22;6730:53;:::i;:::-;6720:63;;6675:118;6181:619;;;;;:::o;6806:86::-;6841:7;6881:4;6874:5;6870:16;6859:27;;6806:86;;;:::o;6898:112::-;6981:22;6997:5;6981:22;:::i;:::-;6976:3;6969:35;6898:112;;:::o;7016:214::-;7105:4;7143:2;7132:9;7128:18;7120:26;;7156:67;7220:1;7209:9;7205:17;7196:6;7156:67;:::i;:::-;7016:214;;;;:::o;7236:468::-;7301:6;7309;7358:2;7346:9;7337:7;7333:23;7329:32;7326:119;;;7364:79;;:::i;:::-;7326:119;7484:1;7509:53;7554:7;7545:6;7534:9;7530:22;7509:53;:::i;:::-;7499:63;;7455:117;7611:2;7637:50;7679:7;7670:6;7659:9;7655:22;7637:50;:::i;:::-;7627:60;;7582:115;7236:468;;;;;:::o;7710:118::-;7797:24;7815:5;7797:24;:::i;:::-;7792:3;7785:37;7710:118;;:::o;7834:222::-;7927:4;7965:2;7954:9;7950:18;7942:26;;7978:71;8046:1;8035:9;8031:17;8022:6;7978:71;:::i;:::-;7834:222;;;;:::o;8062:1057::-;8166:6;8174;8182;8190;8198;8206;8255:3;8243:9;8234:7;8230:23;8226:33;8223:120;;;8262:79;;:::i;:::-;8223:120;8382:1;8407:53;8452:7;8443:6;8432:9;8428:22;8407:53;:::i;:::-;8397:63;;8353:117;8509:2;8535:53;8580:7;8571:6;8560:9;8556:22;8535:53;:::i;:::-;8525:63;;8480:118;8637:2;8663:53;8708:7;8699:6;8688:9;8684:22;8663:53;:::i;:::-;8653:63;;8608:118;8765:2;8791:53;8836:7;8827:6;8816:9;8812:22;8791:53;:::i;:::-;8781:63;;8736:118;8893:3;8920:53;8965:7;8956:6;8945:9;8941:22;8920:53;:::i;:::-;8910:63;;8864:119;9022:3;9049:53;9094:7;9085:6;9074:9;9070:22;9049:53;:::i;:::-;9039:63;;8993:119;8062:1057;;;;;;;;:::o;9125:474::-;9193:6;9201;9250:2;9238:9;9229:7;9225:23;9221:32;9218:119;;;9256:79;;:::i;:::-;9218:119;9376:1;9401:53;9446:7;9437:6;9426:9;9422:22;9401:53;:::i;:::-;9391:63;;9347:117;9503:2;9529:53;9574:7;9565:6;9554:9;9550:22;9529:53;:::i;:::-;9519:63;;9474:118;9125:474;;;;;:::o;9605:329::-;9664:6;9713:2;9701:9;9692:7;9688:23;9684:32;9681:119;;;9719:79;;:::i;:::-;9681:119;9839:1;9864:53;9909:7;9900:6;9889:9;9885:22;9864:53;:::i;:::-;9854:63;;9810:117;9605:329;;;;:::o;9940:180::-;9988:77;9985:1;9978:88;10085:4;10082:1;10075:15;10109:4;10106:1;10099:15;10126:320;10170:6;10207:1;10201:4;10197:12;10187:22;;10254:1;10248:4;10244:12;10275:18;10265:81;;10331:4;10323:6;10319:17;10309:27;;10265:81;10393:2;10385:6;10382:14;10362:18;10359:38;10356:84;;10412:18;;:::i;:::-;10356:84;10177:269;10126:320;;;:::o;10452:182::-;10592:34;10588:1;10580:6;10576:14;10569:58;10452:182;:::o;10640:366::-;10782:3;10803:67;10867:2;10862:3;10803:67;:::i;:::-;10796:74;;10879:93;10968:3;10879:93;:::i;:::-;10997:2;10992:3;10988:12;10981:19;;10640:366;;;:::o;11012:419::-;11178:4;11216:2;11205:9;11201:18;11193:26;;11265:9;11259:4;11255:20;11251:1;11240:9;11236:17;11229:47;11293:131;11419:4;11293:131;:::i;:::-;11285:139;;11012:419;;;:::o;11437:222::-;11577:34;11573:1;11565:6;11561:14;11554:58;11646:5;11641:2;11633:6;11629:15;11622:30;11437:222;:::o;11665:366::-;11807:3;11828:67;11892:2;11887:3;11828:67;:::i;:::-;11821:74;;11904:93;11993:3;11904:93;:::i;:::-;12022:2;12017:3;12013:12;12006:19;;11665:366;;;:::o;12037:419::-;12203:4;12241:2;12230:9;12226:18;12218:26;;12290:9;12284:4;12280:20;12276:1;12265:9;12261:17;12254:47;12318:131;12444:4;12318:131;:::i;:::-;12310:139;;12037:419;;;:::o;12462:180::-;12510:77;12507:1;12500:88;12607:4;12604:1;12597:15;12631:4;12628:1;12621:15;12648:191;12688:3;12707:20;12725:1;12707:20;:::i;:::-;12702:25;;12741:20;12759:1;12741:20;:::i;:::-;12736:25;;12784:1;12781;12777:9;12770:16;;12805:3;12802:1;12799:10;12796:36;;;12812:18;;:::i;:::-;12796:36;12648:191;;;;:::o;12845:180::-;12985:32;12981:1;12973:6;12969:14;12962:56;12845:180;:::o;13031:366::-;13173:3;13194:67;13258:2;13253:3;13194:67;:::i;:::-;13187:74;;13270:93;13359:3;13270:93;:::i;:::-;13388:2;13383:3;13379:12;13372:19;;13031:366;;;:::o;13403:419::-;13569:4;13607:2;13596:9;13592:18;13584:26;;13656:9;13650:4;13646:20;13642:1;13631:9;13627:17;13620:47;13684:131;13810:4;13684:131;:::i;:::-;13676:139;;13403:419;;;:::o;13828:410::-;13868:7;13891:20;13909:1;13891:20;:::i;:::-;13886:25;;13925:20;13943:1;13925:20;:::i;:::-;13920:25;;13980:1;13977;13973:9;14002:30;14020:11;14002:30;:::i;:::-;13991:41;;14181:1;14172:7;14168:15;14165:1;14162:22;14142:1;14135:9;14115:83;14092:139;;14211:18;;:::i;:::-;14092:139;13876:362;13828:410;;;;:::o;14244:180::-;14292:77;14289:1;14282:88;14389:4;14386:1;14379:15;14413:4;14410:1;14403:15;14430:185;14470:1;14487:20;14505:1;14487:20;:::i;:::-;14482:25;;14521:20;14539:1;14521:20;:::i;:::-;14516:25;;14560:1;14550:35;;14565:18;;:::i;:::-;14550:35;14607:1;14604;14600:9;14595:14;;14430:185;;;;:::o;14621:234::-;14761:34;14757:1;14749:6;14745:14;14738:58;14830:17;14825:2;14817:6;14813:15;14806:42;14621:234;:::o;14861:366::-;15003:3;15024:67;15088:2;15083:3;15024:67;:::i;:::-;15017:74;;15100:93;15189:3;15100:93;:::i;:::-;15218:2;15213:3;15209:12;15202:19;;14861:366;;;:::o;15233:419::-;15399:4;15437:2;15426:9;15422:18;15414:26;;15486:9;15480:4;15476:20;15472:1;15461:9;15457:17;15450:47;15514:131;15640:4;15514:131;:::i;:::-;15506:139;;15233:419;;;:::o;15658:223::-;15798:34;15794:1;15786:6;15782:14;15775:58;15867:6;15862:2;15854:6;15850:15;15843:31;15658:223;:::o;15887:366::-;16029:3;16050:67;16114:2;16109:3;16050:67;:::i;:::-;16043:74;;16126:93;16215:3;16126:93;:::i;:::-;16244:2;16239:3;16235:12;16228:19;;15887:366;;;:::o;16259:419::-;16425:4;16463:2;16452:9;16448:18;16440:26;;16512:9;16506:4;16502:20;16498:1;16487:9;16483:17;16476:47;16540:131;16666:4;16540:131;:::i;:::-;16532:139;;16259:419;;;:::o;16684:244::-;16824:34;16820:1;16812:6;16808:14;16801:58;16893:27;16888:2;16880:6;16876:15;16869:52;16684:244;:::o;16934:366::-;17076:3;17097:67;17161:2;17156:3;17097:67;:::i;:::-;17090:74;;17173:93;17262:3;17173:93;:::i;:::-;17291:2;17286:3;17282:12;17275:19;;16934:366;;;:::o;17306:419::-;17472:4;17510:2;17499:9;17495:18;17487:26;;17559:9;17553:4;17549:20;17545:1;17534:9;17530:17;17523:47;17587:131;17713:4;17587:131;:::i;:::-;17579:139;;17306:419;;;:::o;17731:240::-;17871:34;17867:1;17859:6;17855:14;17848:58;17940:23;17935:2;17927:6;17923:15;17916:48;17731:240;:::o;17977:366::-;18119:3;18140:67;18204:2;18199:3;18140:67;:::i;:::-;18133:74;;18216:93;18305:3;18216:93;:::i;:::-;18334:2;18329:3;18325:12;18318:19;;17977:366;;;:::o;18349:419::-;18515:4;18553:2;18542:9;18538:18;18530:26;;18602:9;18596:4;18592:20;18588:1;18577:9;18573:17;18566:47;18630:131;18756:4;18630:131;:::i;:::-;18622:139;;18349:419;;;:::o;18774:239::-;18914:34;18910:1;18902:6;18898:14;18891:58;18983:22;18978:2;18970:6;18966:15;18959:47;18774:239;:::o;19019:366::-;19161:3;19182:67;19246:2;19241:3;19182:67;:::i;:::-;19175:74;;19258:93;19347:3;19258:93;:::i;:::-;19376:2;19371:3;19367:12;19360:19;;19019:366;;;:::o;19391:419::-;19557:4;19595:2;19584:9;19580:18;19572:26;;19644:9;19638:4;19634:20;19630:1;19619:9;19615:17;19608:47;19672:131;19798:4;19672:131;:::i;:::-;19664:139;;19391:419;;;:::o;19816:225::-;19956:34;19952:1;19944:6;19940:14;19933:58;20025:8;20020:2;20012:6;20008:15;20001:33;19816:225;:::o;20047:366::-;20189:3;20210:67;20274:2;20269:3;20210:67;:::i;:::-;20203:74;;20286:93;20375:3;20286:93;:::i;:::-;20404:2;20399:3;20395:12;20388:19;;20047:366;;;:::o;20419:419::-;20585:4;20623:2;20612:9;20608:18;20600:26;;20672:9;20666:4;20662:20;20658:1;20647:9;20643:17;20636:47;20700:131;20826:4;20700:131;:::i;:::-;20692:139;;20419:419;;;:::o;20844:223::-;20984:34;20980:1;20972:6;20968:14;20961:58;21053:6;21048:2;21040:6;21036:15;21029:31;20844:223;:::o;21073:366::-;21215:3;21236:67;21300:2;21295:3;21236:67;:::i;:::-;21229:74;;21312:93;21401:3;21312:93;:::i;:::-;21430:2;21425:3;21421:12;21414:19;;21073:366;;;:::o;21445:419::-;21611:4;21649:2;21638:9;21634:18;21626:26;;21698:9;21692:4;21688:20;21684:1;21673:9;21669:17;21662:47;21726:131;21852:4;21726:131;:::i;:::-;21718:139;;21445:419;;;:::o;21870:221::-;22010:34;22006:1;21998:6;21994:14;21987:58;22079:4;22074:2;22066:6;22062:15;22055:29;21870:221;:::o;22097:366::-;22239:3;22260:67;22324:2;22319:3;22260:67;:::i;:::-;22253:74;;22336:93;22425:3;22336:93;:::i;:::-;22454:2;22449:3;22445:12;22438:19;;22097:366;;;:::o;22469:419::-;22635:4;22673:2;22662:9;22658:18;22650:26;;22722:9;22716:4;22712:20;22708:1;22697:9;22693:17;22686:47;22750:131;22876:4;22750:131;:::i;:::-;22742:139;;22469:419;;;:::o;22894:224::-;23034:34;23030:1;23022:6;23018:14;23011:58;23103:7;23098:2;23090:6;23086:15;23079:32;22894:224;:::o;23124:366::-;23266:3;23287:67;23351:2;23346:3;23287:67;:::i;:::-;23280:74;;23363:93;23452:3;23363:93;:::i;:::-;23481:2;23476:3;23472:12;23465:19;;23124:366;;;:::o;23496:419::-;23662:4;23700:2;23689:9;23685:18;23677:26;;23749:9;23743:4;23739:20;23735:1;23724:9;23720:17;23713:47;23777:131;23903:4;23777:131;:::i;:::-;23769:139;;23496:419;;;:::o;23921:222::-;24061:34;24057:1;24049:6;24045:14;24038:58;24130:5;24125:2;24117:6;24113:15;24106:30;23921:222;:::o;24149:366::-;24291:3;24312:67;24376:2;24371:3;24312:67;:::i;:::-;24305:74;;24388:93;24477:3;24388:93;:::i;:::-;24506:2;24501:3;24497:12;24490:19;;24149:366;;;:::o;24521:419::-;24687:4;24725:2;24714:9;24710:18;24702:26;;24774:9;24768:4;24764:20;24760:1;24749:9;24745:17;24738:47;24802:131;24928:4;24802:131;:::i;:::-;24794:139;;24521:419;;;:::o;24946:236::-;25086:34;25082:1;25074:6;25070:14;25063:58;25155:19;25150:2;25142:6;25138:15;25131:44;24946:236;:::o;25188:366::-;25330:3;25351:67;25415:2;25410:3;25351:67;:::i;:::-;25344:74;;25427:93;25516:3;25427:93;:::i;:::-;25545:2;25540:3;25536:12;25529:19;;25188:366;;;:::o;25560:419::-;25726:4;25764:2;25753:9;25749:18;25741:26;;25813:9;25807:4;25803:20;25799:1;25788:9;25784:17;25777:47;25841:131;25967:4;25841:131;:::i;:::-;25833:139;;25560:419;;;:::o;25985:172::-;26125:24;26121:1;26113:6;26109:14;26102:48;25985:172;:::o;26163:366::-;26305:3;26326:67;26390:2;26385:3;26326:67;:::i;:::-;26319:74;;26402:93;26491:3;26402:93;:::i;:::-;26520:2;26515:3;26511:12;26504:19;;26163:366;;;:::o;26535:419::-;26701:4;26739:2;26728:9;26724:18;26716:26;;26788:9;26782:4;26778:20;26774:1;26763:9;26759:17;26752:47;26816:131;26942:4;26816:131;:::i;:::-;26808:139;;26535:419;;;:::o;26960:297::-;27100:34;27096:1;27088:6;27084:14;27077:58;27169:34;27164:2;27156:6;27152:15;27145:59;27238:11;27233:2;27225:6;27221:15;27214:36;26960:297;:::o;27263:366::-;27405:3;27426:67;27490:2;27485:3;27426:67;:::i;:::-;27419:74;;27502:93;27591:3;27502:93;:::i;:::-;27620:2;27615:3;27611:12;27604:19;;27263:366;;;:::o;27635:419::-;27801:4;27839:2;27828:9;27824:18;27816:26;;27888:9;27882:4;27878:20;27874:1;27863:9;27859:17;27852:47;27916:131;28042:4;27916:131;:::i;:::-;27908:139;;27635:419;;;:::o;28060:240::-;28200:34;28196:1;28188:6;28184:14;28177:58;28269:23;28264:2;28256:6;28252:15;28245:48;28060:240;:::o;28306:366::-;28448:3;28469:67;28533:2;28528:3;28469:67;:::i;:::-;28462:74;;28545:93;28634:3;28545:93;:::i;:::-;28663:2;28658:3;28654:12;28647:19;;28306:366;;;:::o;28678:419::-;28844:4;28882:2;28871:9;28867:18;28859:26;;28931:9;28925:4;28921:20;28917:1;28906:9;28902:17;28895:47;28959:131;29085:4;28959:131;:::i;:::-;28951:139;;28678:419;;;:::o;29103:169::-;29243:21;29239:1;29231:6;29227:14;29220:45;29103:169;:::o;29278:366::-;29420:3;29441:67;29505:2;29500:3;29441:67;:::i;:::-;29434:74;;29517:93;29606:3;29517:93;:::i;:::-;29635:2;29630:3;29626:12;29619:19;;29278:366;;;:::o;29650:419::-;29816:4;29854:2;29843:9;29839:18;29831:26;;29903:9;29897:4;29893:20;29889:1;29878:9;29874:17;29867:47;29931:131;30057:4;29931:131;:::i;:::-;29923:139;;29650:419;;;:::o;30075:241::-;30215:34;30211:1;30203:6;30199:14;30192:58;30284:24;30279:2;30271:6;30267:15;30260:49;30075:241;:::o;30322:366::-;30464:3;30485:67;30549:2;30544:3;30485:67;:::i;:::-;30478:74;;30561:93;30650:3;30561:93;:::i;:::-;30679:2;30674:3;30670:12;30663:19;;30322:366;;;:::o;30694:419::-;30860:4;30898:2;30887:9;30883:18;30875:26;;30947:9;30941:4;30937:20;30933:1;30922:9;30918:17;30911:47;30975:131;31101:4;30975:131;:::i;:::-;30967:139;;30694:419;;;:::o;31119:194::-;31159:4;31179:20;31197:1;31179:20;:::i;:::-;31174:25;;31213:20;31231:1;31213:20;:::i;:::-;31208:25;;31257:1;31254;31250:9;31242:17;;31281:1;31275:4;31272:11;31269:37;;;31286:18;;:::i;:::-;31269:37;31119:194;;;;:::o;31319:177::-;31459:29;31455:1;31447:6;31443:14;31436:53;31319:177;:::o;31502:366::-;31644:3;31665:67;31729:2;31724:3;31665:67;:::i;:::-;31658:74;;31741:93;31830:3;31741:93;:::i;:::-;31859:2;31854:3;31850:12;31843:19;;31502:366;;;:::o;31874:419::-;32040:4;32078:2;32067:9;32063:18;32055:26;;32127:9;32121:4;32117:20;32113:1;32102:9;32098:17;32091:47;32155:131;32281:4;32155:131;:::i;:::-;32147:139;;31874:419;;;:::o;32299:147::-;32400:11;32437:3;32422:18;;32299:147;;;;:::o;32452:114::-;;:::o;32572:398::-;32731:3;32752:83;32833:1;32828:3;32752:83;:::i;:::-;32745:90;;32844:93;32933:3;32844:93;:::i;:::-;32962:1;32957:3;32953:11;32946:18;;32572:398;;;:::o;32976:379::-;33160:3;33182:147;33325:3;33182:147;:::i;:::-;33175:154;;33346:3;33339:10;;32976:379;;;:::o;33361:442::-;33510:4;33548:2;33537:9;33533:18;33525:26;;33561:71;33629:1;33618:9;33614:17;33605:6;33561:71;:::i;:::-;33642:72;33710:2;33699:9;33695:18;33686:6;33642:72;:::i;:::-;33724;33792:2;33781:9;33777:18;33768:6;33724:72;:::i;:::-;33361:442;;;;;;:::o;33809:220::-;33949:34;33945:1;33937:6;33933:14;33926:58;34018:3;34013:2;34005:6;34001:15;33994:28;33809:220;:::o;34035:366::-;34177:3;34198:67;34262:2;34257:3;34198:67;:::i;:::-;34191:74;;34274:93;34363:3;34274:93;:::i;:::-;34392:2;34387:3;34383:12;34376:19;;34035:366;;;:::o;34407:419::-;34573:4;34611:2;34600:9;34596:18;34588:26;;34660:9;34654:4;34650:20;34646:1;34635:9;34631:17;34624:47;34688:131;34814:4;34688:131;:::i;:::-;34680:139;;34407:419;;;:::o;34832:180::-;34880:77;34877:1;34870:88;34977:4;34974:1;34967:15;35001:4;34998:1;34991:15;35018:180;35066:77;35063:1;35056:88;35163:4;35160:1;35153:15;35187:4;35184:1;35177:15;35204:143;35261:5;35292:6;35286:13;35277:22;;35308:33;35335:5;35308:33;:::i;:::-;35204:143;;;;:::o;35353:351::-;35423:6;35472:2;35460:9;35451:7;35447:23;35443:32;35440:119;;;35478:79;;:::i;:::-;35440:119;35598:1;35623:64;35679:7;35670:6;35659:9;35655:22;35623:64;:::i;:::-;35613:74;;35569:128;35353:351;;;;:::o;35710:85::-;35755:7;35784:5;35773:16;;35710:85;;;:::o;35801:158::-;35859:9;35892:61;35910:42;35919:32;35945:5;35919:32;:::i;:::-;35910:42;:::i;:::-;35892:61;:::i;:::-;35879:74;;35801:158;;;:::o;35965:147::-;36060:45;36099:5;36060:45;:::i;:::-;36055:3;36048:58;35965:147;;:::o;36118:114::-;36185:6;36219:5;36213:12;36203:22;;36118:114;;;:::o;36238:184::-;36337:11;36371:6;36366:3;36359:19;36411:4;36406:3;36402:14;36387:29;;36238:184;;;;:::o;36428:132::-;36495:4;36518:3;36510:11;;36548:4;36543:3;36539:14;36531:22;;36428:132;;;:::o;36566:108::-;36643:24;36661:5;36643:24;:::i;:::-;36638:3;36631:37;36566:108;;:::o;36680:179::-;36749:10;36770:46;36812:3;36804:6;36770:46;:::i;:::-;36848:4;36843:3;36839:14;36825:28;;36680:179;;;;:::o;36865:113::-;36935:4;36967;36962:3;36958:14;36950:22;;36865:113;;;:::o;37014:732::-;37133:3;37162:54;37210:5;37162:54;:::i;:::-;37232:86;37311:6;37306:3;37232:86;:::i;:::-;37225:93;;37342:56;37392:5;37342:56;:::i;:::-;37421:7;37452:1;37437:284;37462:6;37459:1;37456:13;37437:284;;;37538:6;37532:13;37565:63;37624:3;37609:13;37565:63;:::i;:::-;37558:70;;37651:60;37704:6;37651:60;:::i;:::-;37641:70;;37497:224;37484:1;37481;37477:9;37472:14;;37437:284;;;37441:14;37737:3;37730:10;;37138:608;;;37014:732;;;;:::o;37752:831::-;38015:4;38053:3;38042:9;38038:19;38030:27;;38067:71;38135:1;38124:9;38120:17;38111:6;38067:71;:::i;:::-;38148:80;38224:2;38213:9;38209:18;38200:6;38148:80;:::i;:::-;38275:9;38269:4;38265:20;38260:2;38249:9;38245:18;38238:48;38303:108;38406:4;38397:6;38303:108;:::i;:::-;38295:116;;38421:72;38489:2;38478:9;38474:18;38465:6;38421:72;:::i;:::-;38503:73;38571:3;38560:9;38556:19;38547:6;38503:73;:::i;:::-;37752:831;;;;;;;;:::o;38589:807::-;38838:4;38876:3;38865:9;38861:19;38853:27;;38890:71;38958:1;38947:9;38943:17;38934:6;38890:71;:::i;:::-;38971:72;39039:2;39028:9;39024:18;39015:6;38971:72;:::i;:::-;39053:80;39129:2;39118:9;39114:18;39105:6;39053:80;:::i;:::-;39143;39219:2;39208:9;39204:18;39195:6;39143:80;:::i;:::-;39233:73;39301:3;39290:9;39286:19;39277:6;39233:73;:::i;:::-;39316;39384:3;39373:9;39369:19;39360:6;39316:73;:::i;:::-;38589:807;;;;;;;;;:::o;39402:143::-;39459:5;39490:6;39484:13;39475:22;;39506:33;39533:5;39506:33;:::i;:::-;39402:143;;;;:::o;39551:663::-;39639:6;39647;39655;39704:2;39692:9;39683:7;39679:23;39675:32;39672:119;;;39710:79;;:::i;:::-;39672:119;39830:1;39855:64;39911:7;39902:6;39891:9;39887:22;39855:64;:::i;:::-;39845:74;;39801:128;39968:2;39994:64;40050:7;40041:6;40030:9;40026:22;39994:64;:::i;:::-;39984:74;;39939:129;40107:2;40133:64;40189:7;40180:6;40169:9;40165:22;40133:64;:::i;:::-;40123:74;;40078:129;39551:663;;;;;:::o

Swarm Source

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