ETH Price: $3,380.32 (-1.94%)
Gas: 4 Gwei

Token

Last Dragon Slayer (J)
 

Overview

Max Total Supply

1,000,000,000,000 J

Holders

215

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
96,000,000 J

Value
$0.00
0x5b0b3c507704cde98e049e8818b40729b022c13d
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:
J

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

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 _owner) { owner = _owner; }
	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 J is IERC20, Auth {
	string constant _name = "Last Dragon Slayer"; 
	string constant _symbol = "J"; 
	uint8 constant _decimals = 9;
	uint256 constant _totalSupply = 1_000_000_000_000 * 10**_decimals;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	uint256 private _tradingOpenBlock;
	mapping (address => bool) private _isLiqPool;

	uint8 private fee_taxRateMaxLimit; uint8 private fee_taxRateBuy; uint8 private fee_taxRateSell;

	uint256 private lim_maxTxAmount; uint256 private lim_maxWalletAmount;
	uint256 private lim_taxSwapMin; uint256 private lim_taxSwapMax;

	address private _liquidityPool;

	mapping(address => bool) private exm_noFees;
	mapping(address => bool) private exm_noLimits;
	
	bool private _inTaxSwap = false;
	address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
	address private _wethAddress = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
	IUniswapV2Router02 private _uniswapV2Router;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	event TokensBurned(address burnedFrom, uint256 tokenAmount);
	event TaxRatesChanged(uint8 taxRateBuy, uint8 taxRateSell);
	event LimitsIncreased(uint256 maxTransaction, uint256 maxWalletSize);
	event TaxSwapSettingsChanged(uint256 taxSwapMin, uint256 taxSwapMax);
	event WalletExemptionsSet(address wallet, bool noFees, bool noLimits);

	constructor() Auth(msg.sender) {
		_tradingOpenBlock = type(uint256).max; 
		fee_taxRateMaxLimit = 7;
		lim_maxTxAmount = _totalSupply;
		lim_maxWalletAmount = _totalSupply;
		lim_taxSwapMin = _totalSupply * 10 / 10000;
		lim_taxSwapMax = _totalSupply * 50 / 10000;
		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);

		exm_noFees[owner] = true;
		exm_noFees[address(this)] = true;
		exm_noFees[_uniswapV2RouterAddress] = true;

		exm_noLimits[owner] = true;
		exm_noLimits[address(this)] = true;
		exm_noLimits[_uniswapV2RouterAddress] = 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(), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "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 addLP() external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_liquidityPool == address(0), "LP already added");

		_balances[address(this)] = _totalSupply / 2;
		emit Transfer(address(0), address(this), _balances[address(this)]);

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

		_wethAddress = _uniswapV2Router.WETH(); //override the WETH address from router
		_liquidityPool = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _wethAddress);

		_isLiqPool[_liquidityPool] = true;

		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance >= 0, "no eth");		
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");

		_approveRouter(_contractTokenBalance);
		_addLiquidity(_contractTokenBalance, _contractETHBalance, false);
	}

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

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

	function openTrading() external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_liquidityPool != address(0), "LP not initialized");
		_openTrading();
	}

	function _openTrading() internal {
		lim_maxTxAmount     = 100 * _totalSupply / 10000 + 10**_decimals; 
		lim_maxWalletAmount = 100 * _totalSupply / 10000 + 10**_decimals;
		fee_taxRateBuy = 4;
		fee_taxRateSell = 4;
		_tradingOpenBlock = block.number + 134;
	}

	function tradingOpen() external view returns (bool) {
		if (_tradingOpen() && block.number >= _tradingOpenBlock + 10) { return _tradingOpen(); }
		else { return false; }
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender!=address(0) && recipient!=address(0), "Zero address not allowed");

		if ( !_inTaxSwap && _isLiqPool[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() && !exm_noLimits[recipient] && !exm_noLimits[sender] ) {
			if ( transferAmount > lim_maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > lim_maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _tradingOpen() private view returns (bool) {
		bool result = false;
		if (block.number >= _tradingOpenBlock) { result = true; }
		return result;
	}

	function _checkTradingOpen() private view returns (bool){
		bool checkResult = false;
		if ( _tradingOpen() ) { checkResult = true; } 
		else if ( tx.origin == owner ) { checkResult = true; } 
		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !_tradingOpen() || exm_noFees[sender] || exm_noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * fee_taxRateBuy / 100; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * fee_taxRateSell / 100; }
		else { taxAmount = 0; }
		return taxAmount;
	}

	function getExemptions(address wallet) external view returns(bool noFees, bool noLimits) {
		return (exm_noFees[wallet], exm_noLimits[wallet]);
	}

	function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
		exm_noFees[wallet] = noFees;
		exm_noLimits[wallet] = noLimits;
		emit WalletExemptionsSet(wallet, noFees, noLimits);
	}

	function getFeeSettings() external view returns(uint8 taxRateMaxLimit, uint8 taxRateBuy, uint8 taxRateSell) {
		return (fee_taxRateMaxLimit, fee_taxRateBuy, fee_taxRateSell);
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner {
		require( newBuyTax+newSellTax <= 2*fee_taxRateMaxLimit, "Tax too high");
		fee_taxRateBuy = newBuyTax;
		fee_taxRateSell = newSellTax;
		emit TaxRatesChanged(newBuyTax, newSellTax);
	}

	function getWallets() external view returns(address contractOwner, address liquidityPool) {
		return (owner, _liquidityPool);
	}

	function getLimits() external view returns(uint256 maxTxAmount, uint256 maxWalletAmount, uint256 taxSwapMin, uint256 taxSwapMax) {
		return (lim_maxTxAmount, lim_maxWalletAmount, lim_taxSwapMin, lim_taxSwapMax);
	}

	function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
		uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
		require(newTxAmt >= lim_maxTxAmount, "tx limit too low");
		lim_maxTxAmount = newTxAmt;
		uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
		require(newWalletAmt >= lim_maxWalletAmount, "wallet limit too low");
		lim_maxWalletAmount = newWalletAmt;
		emit LimitsIncreased(lim_maxTxAmount, lim_maxWalletAmount);
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		lim_taxSwapMin = _totalSupply * minValue / minDivider;
		lim_taxSwapMax = _totalSupply * maxValue / maxDivider;
		require(lim_taxSwapMax > lim_taxSwapMin);
		emit TaxSwapSettingsChanged(lim_taxSwapMin, lim_taxSwapMax);
	}

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

		if ( _taxTokensAvailable >= lim_taxSwapMin && _tradingOpen() ) {
			if ( _taxTokensAvailable >= lim_taxSwapMax ) { _taxTokensAvailable = lim_taxSwapMax; }
			uint256 _tokensForLP = _taxTokensAvailable / 2;
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
			if (_tokensToSwap >= 10**_decimals) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				if ( _ethSwapped > 0 ) {
					_approveRouter(_tokensForLP);
					_addLiquidity(_tokensForLP, _ethSwapped, false);
				}
			}
		}
	}

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

	function recoverBalance() external onlyOwner {
		uint256 _stuckEthBalance = address(this).balance;
        require (_stuckEthBalance > 0);
		address payable recipient = payable(owner);
		recipient.transfer(_stuckEthBalance);
	}

	function manualSwap(uint8 swapPercent) external onlyOwner {
		uint256 taxTokenBalance = balanceOf(address(this));
		require(taxTokenBalance > 0, "No tokens");
		uint256 tokensToSwap = taxTokenBalance * swapPercent / 100;
		_swapTaxTokensForEth(tokensToSwap);
	}

	function burnTokens(uint256 amount) external {
		uint256 _tokensAvailable = balanceOf(msg.sender);
		require(amount <= _tokensAvailable, "Token balance too low");
		_balances[msg.sender] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(msg.sender, address(0), 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":"uint256","name":"maxTransaction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"LimitsIncreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateSell","type":"uint8"}],"name":"TaxRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"name":"TaxSwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"burnedFrom","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"noFees","type":"bool"},{"indexed":false,"internalType":"bool","name":"noLimits","type":"bool"}],"name":"WalletExemptionsSet","type":"event"},{"inputs":[],"name":"addLP","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":[{"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":"getFeeSettings","outputs":[{"internalType":"uint8","name":"taxRateMaxLimit","type":"uint8"},{"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"internalType":"uint8","name":"taxRateSell","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWallets","outputs":[{"internalType":"address","name":"contractOwner","type":"address"},{"internalType":"address","name":"liquidityPool","type":"address"}],"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":"uint8","name":"swapPercent","type":"uint8"}],"name":"manualSwap","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":[],"name":"recoverBalance","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":"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":[],"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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}]

60806040526000600d60006101000a81548160ff02191690831515021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003819055506007600560006101000a81548160ff021916908360ff1602179055506009600a62000117919062000650565b64e8d4a51000620001299190620006a1565b6006819055506009600a6200013f919062000650565b64e8d4a51000620001519190620006a1565b600781905550612710600a6009600a6200016c919062000650565b64e8d4a510006200017e9190620006a1565b6200018a9190620006a1565b62000196919062000731565b60088190555061271060326009600a620001b1919062000650565b64e8d4a51000620001c39190620006a1565b620001cf9190620006a1565b620001db919062000731565b600981905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000769565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000544578086048111156200051c576200051b620004b6565b5b60018516156200052c5780820291505b80810290506200053c85620004e5565b9450620004fc565b94509492505050565b6000826200055f576001905062000632565b816200056f576000905062000632565b81600181146200058857600281146200059357620005c9565b600191505062000632565b60ff841115620005a857620005a7620004b6565b5b8360020a915084821115620005c257620005c1620004b6565b5b5062000632565b5060208310610133831016604e8410600b8410161715620006035782820a905083811115620005fd57620005fc620004b6565b5b62000632565b620006128484846001620004f2565b925090508184048111156200062c576200062b620004b6565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200065d8262000639565b91506200066a8362000643565b9250620006997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200054d565b905092915050565b6000620006ae8262000639565b9150620006bb8362000639565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620006f757620006f6620004b6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073e8262000639565b91506200074b8362000639565b9250826200075e576200075d62000702565b5b828204905092915050565b61430380620007796000396000f3fe60806040526004361061014f5760003560e01c8063a9059cbb116100b6578063db7a46051161006f578063db7a46051461047d578063dd62ed3e146104a9578063e4dbc45b146104e6578063f2fde38b1461050f578063fd96502414610538578063ffb54a991461056157610156565b8063a9059cbb146103a9578063b1421803146103e6578063b1850e941461040f578063bc37e1a314610426578063c9567bf91461043d578063ccb1edae1461045457610156565b8063313ce56711610108578063313ce567146102815780636d1b229d146102ac5780636f89e409146102d557806370a0823114610303578063931b68ea1461034057806395d89b411461037e57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806318839bc3146101ee57806323b872dd146102175780632b38400e1461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061058c565b60405161017d9190612f78565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190613033565b6105c9565b6040516101ba919061308e565b60405180910390f35b3480156101cf57600080fd5b506101d86106bb565b6040516101e591906130b8565b60405180910390f35b3480156101fa57600080fd5b50610215600480360381019061021091906130ff565b6106e0565b005b34801561022357600080fd5b5061023e60048036038101906102399190613152565b61085c565b60405161024b919061308e565b60405180910390f35b34801561026057600080fd5b50610269610a65565b604051610278939291906131c1565b60405180910390f35b34801561028d57600080fd5b50610296610aa5565b6040516102a391906131f8565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190613213565b610aae565b005b3480156102e157600080fd5b506102ea610c4d565b6040516102fa9493929190613240565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190613285565b610c6d565b60405161033791906130b8565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190613285565b610cb6565b6040516103759291906132b2565b60405180910390f35b34801561038a57600080fd5b50610393610d5c565b6040516103a09190612f78565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb9190613033565b610d99565b6040516103dd919061308e565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190613315565b610df5565b005b34801561041b57600080fd5b50610424610ff2565b005b34801561043257600080fd5b5061043b611103565b005b34801561044957600080fd5b5061045261189b565b005b34801561046057600080fd5b5061047b60048036038101906104769190613381565b611a0c565b005b34801561048957600080fd5b50610492611b17565b6040516104a09291906133bd565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb91906133e6565b611b66565b6040516104dd91906130b8565b60405180910390f35b3480156104f257600080fd5b5061050d60048036038101906105089190613462565b611bed565b005b34801561051b57600080fd5b5061053660048036038101906105319190613507565b611d5a565b005b34801561054457600080fd5b5061055f600480360381019061055a9190613534565b611e62565b005b34801561056d57600080fd5b50610576611fd2565b604051610583919061308e565b60405180910390f35b60606040518060400160405280601281526020017f4c61737420447261676f6e20536c617965720000000000000000000000000000815250905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106a991906130b8565b60405180910390a36001905092915050565b60006009600a6106cb91906136d6565b64e8d4a510006106db9190613721565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461076e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610765906137ed565b60405180910390fd5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed083838360405161084f9392919061380d565b60405180910390a1505050565b6000610866612012565b6108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c90613890565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a515781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109d091906138b0565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a5c84848461208f565b90509392505050565b6000806000600560009054906101000a900460ff16600560019054906101000a900460ff16600560029054906101000a900460ff16925092509250909192565b60006009905090565b6000610ab933610c6d565b905080821115610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590613930565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b4d91906138b0565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ba39190613950565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c0891906130b8565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb63383604051610c419291906139a6565b60405180910390a15050565b600080600080600654600754600854600954935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600181526020017f4a00000000000000000000000000000000000000000000000000000000000000815250905090565b6000610da3612012565b610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990613890565b60405180910390fd5b610ded33848461208f565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a906137ed565b60405180910390fd5b600060016103e88461ffff166009600a610e9d91906136d6565b64e8d4a51000610ead9190613721565b610eb79190613721565b610ec191906139fe565b610ecb9190613950565b9050600654811015610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990613a7b565b60405180910390fd5b80600681905550600060016103e88461ffff166009600a610f3391906136d6565b64e8d4a51000610f439190613721565b610f4d9190613721565b610f5791906139fe565b610f619190613950565b9050600754811015610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613ae7565b60405180910390fd5b806007819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f7600654600754604051610fe4929190613b07565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611080576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611077906137ed565b60405180910390fd5b60004790506000811161109257600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156110fe573d6000803e3d6000fd5b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611188906137ed565b60405180910390fd5b611199612502565b156111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090613b7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126190613be8565b60405180910390fd5b60026009600a61127a91906136d6565b64e8d4a5100061128a9190613721565b61129491906139fe565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161137491906130b8565b60405180910390a3600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a6113ca91906136d6565b64e8d4a510006113da9190613721565b6113e491906138b0565b600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161152691906130b8565b60405180910390a3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bf9190613c1d565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190613c1d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016116ec9291906133bd565b6020604051808303816000875af115801561170b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172f9190613c1d565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060004790506000811015611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990613c96565b60405180910390fd5b600061183d30610c6d565b905060008111611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187990613d02565b60405180910390fd5b61188b8161251e565b61189781836000612708565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611920906137ed565b60405180910390fd5b611931612502565b15611971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196890613b7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613d6e565b60405180910390fd5b611a0a6127e6565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a91906137ed565b60405180910390fd5b6000611aa530610c6d565b905060008111611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae190613dda565b60405180910390fd5b600060648360ff1683611afd9190613721565b611b0791906139fe565b9050611b12816128dd565b505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c72906137ed565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611c9791906136d6565b64e8d4a51000611ca79190613721565b611cb19190613721565b611cbb91906139fe565b6008819055508063ffffffff168263ffffffff166009600a611cdd91906136d6565b64e8d4a51000611ced9190613721565b611cf79190613721565b611d0191906139fe565b60098190555060085460095411611d1757600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb600854600954604051611d4c929190613b07565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf906137ed565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611e579190613e59565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee7906137ed565b60405180910390fd5b600560009054906101000a900460ff166002611f0c9190613e74565b60ff168183611f1b9190613eaf565b60ff161115611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690613f32565b60405180910390fd5b81600560016101000a81548160ff021916908360ff16021790555080600560026101000a81548160ff021916908360ff1602179055507f94d8197da20bd26f7c800d15b8e51253da620d77aab22e936a4e29fdaa1fd3ad8282604051611fc6929190613f52565b60405180910390a15050565b6000611fdc612502565b8015611ff65750600a600354611ff29190613950565b4310155b1561200a57612003612502565b905061200f565b600090505b90565b60008060009050612021612502565b1561202f5760019050612088565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361208757600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120fa5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213090613fc7565b60405180910390fd5b600d60009054906101000a900460ff1615801561219f5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ad576121ac612a8e565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561221557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561226d575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122bd5761227d848484612b76565b6122bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b390614033565b60405180910390fd5b5b60006122ca858585612d05565b9050600081846122da91906138b0565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232791906138b0565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156124025781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123be9190613950565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244d9190613950565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516124ed91906130b8565b60405180910390a36001925050509392505050565b60008060009050600354431061251757600190505b8091505090565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612705577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516126fc91906130b8565b60405180910390a35b50565b6000816127335760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161279a9695949392919061408e565b60606040518083038185885af11580156127b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127dd9190614104565b50505050505050565b6009600a6127f491906136d6565b6127106009600a61280591906136d6565b64e8d4a510006128159190613721565b60646128219190613721565b61282b91906139fe565b6128359190613950565b6006819055506009600a61284991906136d6565b6127106009600a61285a91906136d6565b64e8d4a5100061286a9190613721565b60646128769190613721565b61288091906139fe565b61288a9190613950565b6007819055506004600560016101000a81548160ff021916908360ff1602179055506004600560026101000a81548160ff021916908360ff1602179055506086436128d59190613950565b600381905550565b6128e68161251e565b6000600267ffffffffffffffff81111561290357612902614157565b5b6040519080825280602002602001820160405280156129315781602001602082028036833780820191505090505b509050308160008151811061294957612948614186565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129ba576129b9614186565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a58959493929190614273565b600060405180830381600087803b158015612a7257600080fd5b505af1158015612a86573d6000803e3d6000fd5b505050505050565b6001600d60006101000a81548160ff0219169083151502179055506000612ab430610c6d565b90506008548110158015612acc5750612acb612502565b5b15612b58576009548110612ae05760095490505b6000600282612aef91906139fe565b905060008183612aff91906138b0565b90506009600a612b0f91906136d6565b8110612b55576000479050612b23826128dd565b60008147612b3191906138b0565b90506000811115612b5257612b458461251e565b612b5184826000612708565b5b50505b50505b506000600d60006101000a81548160ff021916908315150217905550565b60008060019050612b85612502565b8015612bdb5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c315750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cfa57600654831115612c495760009050612cf9565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cee575060075483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cec9190613950565b115b15612cf857600090505b5b5b809150509392505050565b600080612d10612502565b1580612d655750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612db95750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dc75760009050612ed4565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e4a576064600560019054906101000a900460ff1660ff1684612e399190613721565b612e4391906139fe565b9050612ed3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ecd576064600560029054906101000a900460ff1660ff1684612ebc9190613721565b612ec691906139fe565b9050612ed2565b600090505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f19578082015181840152602081019050612efe565b83811115612f28576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f4a82612edf565b612f548185612eea565b9350612f64818560208601612efb565b612f6d81612f2e565b840191505092915050565b60006020820190508181036000830152612f928184612f3f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fca82612f9f565b9050919050565b612fda81612fbf565b8114612fe557600080fd5b50565b600081359050612ff781612fd1565b92915050565b6000819050919050565b61301081612ffd565b811461301b57600080fd5b50565b60008135905061302d81613007565b92915050565b6000806040838503121561304a57613049612f9a565b5b600061305885828601612fe8565b92505060206130698582860161301e565b9150509250929050565b60008115159050919050565b61308881613073565b82525050565b60006020820190506130a3600083018461307f565b92915050565b6130b281612ffd565b82525050565b60006020820190506130cd60008301846130a9565b92915050565b6130dc81613073565b81146130e757600080fd5b50565b6000813590506130f9816130d3565b92915050565b60008060006060848603121561311857613117612f9a565b5b600061312686828701612fe8565b9350506020613137868287016130ea565b9250506040613148868287016130ea565b9150509250925092565b60008060006060848603121561316b5761316a612f9a565b5b600061317986828701612fe8565b935050602061318a86828701612fe8565b925050604061319b8682870161301e565b9150509250925092565b600060ff82169050919050565b6131bb816131a5565b82525050565b60006060820190506131d660008301866131b2565b6131e360208301856131b2565b6131f060408301846131b2565b949350505050565b600060208201905061320d60008301846131b2565b92915050565b60006020828403121561322957613228612f9a565b5b60006132378482850161301e565b91505092915050565b600060808201905061325560008301876130a9565b61326260208301866130a9565b61326f60408301856130a9565b61327c60608301846130a9565b95945050505050565b60006020828403121561329b5761329a612f9a565b5b60006132a984828501612fe8565b91505092915050565b60006040820190506132c7600083018561307f565b6132d4602083018461307f565b9392505050565b600061ffff82169050919050565b6132f2816132db565b81146132fd57600080fd5b50565b60008135905061330f816132e9565b92915050565b6000806040838503121561332c5761332b612f9a565b5b600061333a85828601613300565b925050602061334b85828601613300565b9150509250929050565b61335e816131a5565b811461336957600080fd5b50565b60008135905061337b81613355565b92915050565b60006020828403121561339757613396612f9a565b5b60006133a58482850161336c565b91505092915050565b6133b781612fbf565b82525050565b60006040820190506133d260008301856133ae565b6133df60208301846133ae565b9392505050565b600080604083850312156133fd576133fc612f9a565b5b600061340b85828601612fe8565b925050602061341c85828601612fe8565b9150509250929050565b600063ffffffff82169050919050565b61343f81613426565b811461344a57600080fd5b50565b60008135905061345c81613436565b92915050565b6000806000806080858703121561347c5761347b612f9a565b5b600061348a8782880161344d565b945050602061349b8782880161344d565b93505060406134ac8782880161344d565b92505060606134bd8782880161344d565b91505092959194509250565b60006134d482612f9f565b9050919050565b6134e4816134c9565b81146134ef57600080fd5b50565b600081359050613501816134db565b92915050565b60006020828403121561351d5761351c612f9a565b5b600061352b848285016134f2565b91505092915050565b6000806040838503121561354b5761354a612f9a565b5b60006135598582860161336c565b925050602061356a8582860161336c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156135fa578086048111156135d6576135d5613574565b5b60018516156135e55780820291505b80810290506135f3856135a3565b94506135ba565b94509492505050565b60008261361357600190506136cf565b8161362157600090506136cf565b8160018114613637576002811461364157613670565b60019150506136cf565b60ff84111561365357613652613574565b5b8360020a91508482111561366a57613669613574565b5b506136cf565b5060208310610133831016604e8410600b84101617156136a55782820a9050838111156136a05761369f613574565b5b6136cf565b6136b284848460016135b0565b925090508184048111156136c9576136c8613574565b5b81810290505b9392505050565b60006136e182612ffd565b91506136ec836131a5565b92506137197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613603565b905092915050565b600061372c82612ffd565b915061373783612ffd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137705761376f613574565b5b828202905092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b60006137d7602a83612eea565b91506137e28261377b565b604082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b600060608201905061382260008301866133ae565b61382f602083018561307f565b61383c604083018461307f565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061387a601083612eea565b915061388582613844565b602082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b60006138bb82612ffd565b91506138c683612ffd565b9250828210156138d9576138d8613574565b5b828203905092915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b600061391a601583612eea565b9150613925826138e4565b602082019050919050565b600060208201905081810360008301526139498161390d565b9050919050565b600061395b82612ffd565b915061396683612ffd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561399b5761399a613574565b5b828201905092915050565b60006040820190506139bb60008301856133ae565b6139c860208301846130a9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a0982612ffd565b9150613a1483612ffd565b925082613a2457613a236139cf565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b6000613a65601083612eea565b9150613a7082613a2f565b602082019050919050565b60006020820190508181036000830152613a9481613a58565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000613ad1601483612eea565b9150613adc82613a9b565b602082019050919050565b60006020820190508181036000830152613b0081613ac4565b9050919050565b6000604082019050613b1c60008301856130a9565b613b2960208301846130a9565b9392505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000613b66601483612eea565b9150613b7182613b30565b602082019050919050565b60006020820190508181036000830152613b9581613b59565b9050919050565b7f4c5020616c726561647920616464656400000000000000000000000000000000600082015250565b6000613bd2601083612eea565b9150613bdd82613b9c565b602082019050919050565b60006020820190508181036000830152613c0181613bc5565b9050919050565b600081519050613c1781612fd1565b92915050565b600060208284031215613c3357613c32612f9a565b5b6000613c4184828501613c08565b91505092915050565b7f6e6f206574680000000000000000000000000000000000000000000000000000600082015250565b6000613c80600683612eea565b9150613c8b82613c4a565b602082019050919050565b60006020820190508181036000830152613caf81613c73565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000613cec600983612eea565b9150613cf782613cb6565b602082019050919050565b60006020820190508181036000830152613d1b81613cdf565b9050919050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b6000613d58601283612eea565b9150613d6382613d22565b602082019050919050565b60006020820190508181036000830152613d8781613d4b565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000613dc4600983612eea565b9150613dcf82613d8e565b602082019050919050565b60006020820190508181036000830152613df381613db7565b9050919050565b6000819050919050565b6000613e1f613e1a613e1584612f9f565b613dfa565b612f9f565b9050919050565b6000613e3182613e04565b9050919050565b6000613e4382613e26565b9050919050565b613e5381613e38565b82525050565b6000602082019050613e6e6000830184613e4a565b92915050565b6000613e7f826131a5565b9150613e8a836131a5565b92508160ff0483118215151615613ea457613ea3613574565b5b828202905092915050565b6000613eba826131a5565b9150613ec5836131a5565b92508260ff03821115613edb57613eda613574565b5b828201905092915050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000613f1c600c83612eea565b9150613f2782613ee6565b602082019050919050565b60006020820190508181036000830152613f4b81613f0f565b9050919050565b6000604082019050613f6760008301856131b2565b613f7460208301846131b2565b9392505050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000613fb1601883612eea565b9150613fbc82613f7b565b602082019050919050565b60006020820190508181036000830152613fe081613fa4565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061401d601183612eea565b915061402882613fe7565b602082019050919050565b6000602082019050818103600083015261404c81614010565b9050919050565b6000819050919050565b600061407861407361406e84614053565b613dfa565b612ffd565b9050919050565b6140888161405d565b82525050565b600060c0820190506140a360008301896133ae565b6140b060208301886130a9565b6140bd604083018761407f565b6140ca606083018661407f565b6140d760808301856133ae565b6140e460a08301846130a9565b979650505050505050565b6000815190506140fe81613007565b92915050565b60008060006060848603121561411d5761411c612f9a565b5b600061412b868287016140ef565b935050602061413c868287016140ef565b925050604061414d868287016140ef565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141ea81612fbf565b82525050565b60006141fc83836141e1565b60208301905092915050565b6000602082019050919050565b6000614220826141b5565b61422a81856141c0565b9350614235836141d1565b8060005b8381101561426657815161424d88826141f0565b975061425883614208565b925050600181019050614239565b5085935050505092915050565b600060a08201905061428860008301886130a9565b614295602083018761407f565b81810360408301526142a78186614215565b90506142b660608301856133ae565b6142c360808301846130a9565b969550505050505056fea26469706673582212204d50882030a1da00ca440bcdcd7ce3e6b7ab9a1c54d10369cec25a7ef686945664736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063a9059cbb116100b6578063db7a46051161006f578063db7a46051461047d578063dd62ed3e146104a9578063e4dbc45b146104e6578063f2fde38b1461050f578063fd96502414610538578063ffb54a991461056157610156565b8063a9059cbb146103a9578063b1421803146103e6578063b1850e941461040f578063bc37e1a314610426578063c9567bf91461043d578063ccb1edae1461045457610156565b8063313ce56711610108578063313ce567146102815780636d1b229d146102ac5780636f89e409146102d557806370a0823114610303578063931b68ea1461034057806395d89b411461037e57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806318839bc3146101ee57806323b872dd146102175780632b38400e1461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061058c565b60405161017d9190612f78565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190613033565b6105c9565b6040516101ba919061308e565b60405180910390f35b3480156101cf57600080fd5b506101d86106bb565b6040516101e591906130b8565b60405180910390f35b3480156101fa57600080fd5b50610215600480360381019061021091906130ff565b6106e0565b005b34801561022357600080fd5b5061023e60048036038101906102399190613152565b61085c565b60405161024b919061308e565b60405180910390f35b34801561026057600080fd5b50610269610a65565b604051610278939291906131c1565b60405180910390f35b34801561028d57600080fd5b50610296610aa5565b6040516102a391906131f8565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190613213565b610aae565b005b3480156102e157600080fd5b506102ea610c4d565b6040516102fa9493929190613240565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190613285565b610c6d565b60405161033791906130b8565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190613285565b610cb6565b6040516103759291906132b2565b60405180910390f35b34801561038a57600080fd5b50610393610d5c565b6040516103a09190612f78565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb9190613033565b610d99565b6040516103dd919061308e565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190613315565b610df5565b005b34801561041b57600080fd5b50610424610ff2565b005b34801561043257600080fd5b5061043b611103565b005b34801561044957600080fd5b5061045261189b565b005b34801561046057600080fd5b5061047b60048036038101906104769190613381565b611a0c565b005b34801561048957600080fd5b50610492611b17565b6040516104a09291906133bd565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb91906133e6565b611b66565b6040516104dd91906130b8565b60405180910390f35b3480156104f257600080fd5b5061050d60048036038101906105089190613462565b611bed565b005b34801561051b57600080fd5b5061053660048036038101906105319190613507565b611d5a565b005b34801561054457600080fd5b5061055f600480360381019061055a9190613534565b611e62565b005b34801561056d57600080fd5b50610576611fd2565b604051610583919061308e565b60405180910390f35b60606040518060400160405280601281526020017f4c61737420447261676f6e20536c617965720000000000000000000000000000815250905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106a991906130b8565b60405180910390a36001905092915050565b60006009600a6106cb91906136d6565b64e8d4a510006106db9190613721565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461076e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610765906137ed565b60405180910390fd5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed083838360405161084f9392919061380d565b60405180910390a1505050565b6000610866612012565b6108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089c90613890565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a515781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109d091906138b0565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a5c84848461208f565b90509392505050565b6000806000600560009054906101000a900460ff16600560019054906101000a900460ff16600560029054906101000a900460ff16925092509250909192565b60006009905090565b6000610ab933610c6d565b905080821115610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590613930565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b4d91906138b0565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ba39190613950565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c0891906130b8565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb63383604051610c419291906139a6565b60405180910390a15050565b600080600080600654600754600854600954935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600181526020017f4a00000000000000000000000000000000000000000000000000000000000000815250905090565b6000610da3612012565b610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990613890565b60405180910390fd5b610ded33848461208f565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a906137ed565b60405180910390fd5b600060016103e88461ffff166009600a610e9d91906136d6565b64e8d4a51000610ead9190613721565b610eb79190613721565b610ec191906139fe565b610ecb9190613950565b9050600654811015610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990613a7b565b60405180910390fd5b80600681905550600060016103e88461ffff166009600a610f3391906136d6565b64e8d4a51000610f439190613721565b610f4d9190613721565b610f5791906139fe565b610f619190613950565b9050600754811015610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613ae7565b60405180910390fd5b806007819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f7600654600754604051610fe4929190613b07565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611080576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611077906137ed565b60405180910390fd5b60004790506000811161109257600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156110fe573d6000803e3d6000fd5b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611188906137ed565b60405180910390fd5b611199612502565b156111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090613b7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126190613be8565b60405180910390fd5b60026009600a61127a91906136d6565b64e8d4a5100061128a9190613721565b61129491906139fe565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161137491906130b8565b60405180910390a3600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a6113ca91906136d6565b64e8d4a510006113da9190613721565b6113e491906138b0565b600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161152691906130b8565b60405180910390a3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bf9190613c1d565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190613c1d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016116ec9291906133bd565b6020604051808303816000875af115801561170b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172f9190613c1d565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060004790506000811015611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990613c96565b60405180910390fd5b600061183d30610c6d565b905060008111611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187990613d02565b60405180910390fd5b61188b8161251e565b61189781836000612708565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611920906137ed565b60405180910390fd5b611931612502565b15611971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196890613b7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613d6e565b60405180910390fd5b611a0a6127e6565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a91906137ed565b60405180910390fd5b6000611aa530610c6d565b905060008111611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae190613dda565b60405180910390fd5b600060648360ff1683611afd9190613721565b611b0791906139fe565b9050611b12816128dd565b505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c72906137ed565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611c9791906136d6565b64e8d4a51000611ca79190613721565b611cb19190613721565b611cbb91906139fe565b6008819055508063ffffffff168263ffffffff166009600a611cdd91906136d6565b64e8d4a51000611ced9190613721565b611cf79190613721565b611d0191906139fe565b60098190555060085460095411611d1757600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb600854600954604051611d4c929190613b07565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf906137ed565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611e579190613e59565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee7906137ed565b60405180910390fd5b600560009054906101000a900460ff166002611f0c9190613e74565b60ff168183611f1b9190613eaf565b60ff161115611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690613f32565b60405180910390fd5b81600560016101000a81548160ff021916908360ff16021790555080600560026101000a81548160ff021916908360ff1602179055507f94d8197da20bd26f7c800d15b8e51253da620d77aab22e936a4e29fdaa1fd3ad8282604051611fc6929190613f52565b60405180910390a15050565b6000611fdc612502565b8015611ff65750600a600354611ff29190613950565b4310155b1561200a57612003612502565b905061200f565b600090505b90565b60008060009050612021612502565b1561202f5760019050612088565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361208757600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120fa5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213090613fc7565b60405180910390fd5b600d60009054906101000a900460ff1615801561219f5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121ad576121ac612a8e565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561221557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561226d575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122bd5761227d848484612b76565b6122bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b390614033565b60405180910390fd5b5b60006122ca858585612d05565b9050600081846122da91906138b0565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232791906138b0565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156124025781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123be9190613950565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244d9190613950565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516124ed91906130b8565b60405180910390a36001925050509392505050565b60008060009050600354431061251757600190505b8091505090565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612705577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516126fc91906130b8565b60405180910390a35b50565b6000816127335760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161279a9695949392919061408e565b60606040518083038185885af11580156127b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127dd9190614104565b50505050505050565b6009600a6127f491906136d6565b6127106009600a61280591906136d6565b64e8d4a510006128159190613721565b60646128219190613721565b61282b91906139fe565b6128359190613950565b6006819055506009600a61284991906136d6565b6127106009600a61285a91906136d6565b64e8d4a5100061286a9190613721565b60646128769190613721565b61288091906139fe565b61288a9190613950565b6007819055506004600560016101000a81548160ff021916908360ff1602179055506004600560026101000a81548160ff021916908360ff1602179055506086436128d59190613950565b600381905550565b6128e68161251e565b6000600267ffffffffffffffff81111561290357612902614157565b5b6040519080825280602002602001820160405280156129315781602001602082028036833780820191505090505b509050308160008151811061294957612948614186565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129ba576129b9614186565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a58959493929190614273565b600060405180830381600087803b158015612a7257600080fd5b505af1158015612a86573d6000803e3d6000fd5b505050505050565b6001600d60006101000a81548160ff0219169083151502179055506000612ab430610c6d565b90506008548110158015612acc5750612acb612502565b5b15612b58576009548110612ae05760095490505b6000600282612aef91906139fe565b905060008183612aff91906138b0565b90506009600a612b0f91906136d6565b8110612b55576000479050612b23826128dd565b60008147612b3191906138b0565b90506000811115612b5257612b458461251e565b612b5184826000612708565b5b50505b50505b506000600d60006101000a81548160ff021916908315150217905550565b60008060019050612b85612502565b8015612bdb5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c315750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cfa57600654831115612c495760009050612cf9565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cee575060075483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cec9190613950565b115b15612cf857600090505b5b5b809150509392505050565b600080612d10612502565b1580612d655750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612db95750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dc75760009050612ed4565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e4a576064600560019054906101000a900460ff1660ff1684612e399190613721565b612e4391906139fe565b9050612ed3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ecd576064600560029054906101000a900460ff1660ff1684612ebc9190613721565b612ec691906139fe565b9050612ed2565b600090505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f19578082015181840152602081019050612efe565b83811115612f28576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f4a82612edf565b612f548185612eea565b9350612f64818560208601612efb565b612f6d81612f2e565b840191505092915050565b60006020820190508181036000830152612f928184612f3f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fca82612f9f565b9050919050565b612fda81612fbf565b8114612fe557600080fd5b50565b600081359050612ff781612fd1565b92915050565b6000819050919050565b61301081612ffd565b811461301b57600080fd5b50565b60008135905061302d81613007565b92915050565b6000806040838503121561304a57613049612f9a565b5b600061305885828601612fe8565b92505060206130698582860161301e565b9150509250929050565b60008115159050919050565b61308881613073565b82525050565b60006020820190506130a3600083018461307f565b92915050565b6130b281612ffd565b82525050565b60006020820190506130cd60008301846130a9565b92915050565b6130dc81613073565b81146130e757600080fd5b50565b6000813590506130f9816130d3565b92915050565b60008060006060848603121561311857613117612f9a565b5b600061312686828701612fe8565b9350506020613137868287016130ea565b9250506040613148868287016130ea565b9150509250925092565b60008060006060848603121561316b5761316a612f9a565b5b600061317986828701612fe8565b935050602061318a86828701612fe8565b925050604061319b8682870161301e565b9150509250925092565b600060ff82169050919050565b6131bb816131a5565b82525050565b60006060820190506131d660008301866131b2565b6131e360208301856131b2565b6131f060408301846131b2565b949350505050565b600060208201905061320d60008301846131b2565b92915050565b60006020828403121561322957613228612f9a565b5b60006132378482850161301e565b91505092915050565b600060808201905061325560008301876130a9565b61326260208301866130a9565b61326f60408301856130a9565b61327c60608301846130a9565b95945050505050565b60006020828403121561329b5761329a612f9a565b5b60006132a984828501612fe8565b91505092915050565b60006040820190506132c7600083018561307f565b6132d4602083018461307f565b9392505050565b600061ffff82169050919050565b6132f2816132db565b81146132fd57600080fd5b50565b60008135905061330f816132e9565b92915050565b6000806040838503121561332c5761332b612f9a565b5b600061333a85828601613300565b925050602061334b85828601613300565b9150509250929050565b61335e816131a5565b811461336957600080fd5b50565b60008135905061337b81613355565b92915050565b60006020828403121561339757613396612f9a565b5b60006133a58482850161336c565b91505092915050565b6133b781612fbf565b82525050565b60006040820190506133d260008301856133ae565b6133df60208301846133ae565b9392505050565b600080604083850312156133fd576133fc612f9a565b5b600061340b85828601612fe8565b925050602061341c85828601612fe8565b9150509250929050565b600063ffffffff82169050919050565b61343f81613426565b811461344a57600080fd5b50565b60008135905061345c81613436565b92915050565b6000806000806080858703121561347c5761347b612f9a565b5b600061348a8782880161344d565b945050602061349b8782880161344d565b93505060406134ac8782880161344d565b92505060606134bd8782880161344d565b91505092959194509250565b60006134d482612f9f565b9050919050565b6134e4816134c9565b81146134ef57600080fd5b50565b600081359050613501816134db565b92915050565b60006020828403121561351d5761351c612f9a565b5b600061352b848285016134f2565b91505092915050565b6000806040838503121561354b5761354a612f9a565b5b60006135598582860161336c565b925050602061356a8582860161336c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156135fa578086048111156135d6576135d5613574565b5b60018516156135e55780820291505b80810290506135f3856135a3565b94506135ba565b94509492505050565b60008261361357600190506136cf565b8161362157600090506136cf565b8160018114613637576002811461364157613670565b60019150506136cf565b60ff84111561365357613652613574565b5b8360020a91508482111561366a57613669613574565b5b506136cf565b5060208310610133831016604e8410600b84101617156136a55782820a9050838111156136a05761369f613574565b5b6136cf565b6136b284848460016135b0565b925090508184048111156136c9576136c8613574565b5b81810290505b9392505050565b60006136e182612ffd565b91506136ec836131a5565b92506137197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613603565b905092915050565b600061372c82612ffd565b915061373783612ffd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137705761376f613574565b5b828202905092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b60006137d7602a83612eea565b91506137e28261377b565b604082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b600060608201905061382260008301866133ae565b61382f602083018561307f565b61383c604083018461307f565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061387a601083612eea565b915061388582613844565b602082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b60006138bb82612ffd565b91506138c683612ffd565b9250828210156138d9576138d8613574565b5b828203905092915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b600061391a601583612eea565b9150613925826138e4565b602082019050919050565b600060208201905081810360008301526139498161390d565b9050919050565b600061395b82612ffd565b915061396683612ffd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561399b5761399a613574565b5b828201905092915050565b60006040820190506139bb60008301856133ae565b6139c860208301846130a9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a0982612ffd565b9150613a1483612ffd565b925082613a2457613a236139cf565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b6000613a65601083612eea565b9150613a7082613a2f565b602082019050919050565b60006020820190508181036000830152613a9481613a58565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000613ad1601483612eea565b9150613adc82613a9b565b602082019050919050565b60006020820190508181036000830152613b0081613ac4565b9050919050565b6000604082019050613b1c60008301856130a9565b613b2960208301846130a9565b9392505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000613b66601483612eea565b9150613b7182613b30565b602082019050919050565b60006020820190508181036000830152613b9581613b59565b9050919050565b7f4c5020616c726561647920616464656400000000000000000000000000000000600082015250565b6000613bd2601083612eea565b9150613bdd82613b9c565b602082019050919050565b60006020820190508181036000830152613c0181613bc5565b9050919050565b600081519050613c1781612fd1565b92915050565b600060208284031215613c3357613c32612f9a565b5b6000613c4184828501613c08565b91505092915050565b7f6e6f206574680000000000000000000000000000000000000000000000000000600082015250565b6000613c80600683612eea565b9150613c8b82613c4a565b602082019050919050565b60006020820190508181036000830152613caf81613c73565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000613cec600983612eea565b9150613cf782613cb6565b602082019050919050565b60006020820190508181036000830152613d1b81613cdf565b9050919050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b6000613d58601283612eea565b9150613d6382613d22565b602082019050919050565b60006020820190508181036000830152613d8781613d4b565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000613dc4600983612eea565b9150613dcf82613d8e565b602082019050919050565b60006020820190508181036000830152613df381613db7565b9050919050565b6000819050919050565b6000613e1f613e1a613e1584612f9f565b613dfa565b612f9f565b9050919050565b6000613e3182613e04565b9050919050565b6000613e4382613e26565b9050919050565b613e5381613e38565b82525050565b6000602082019050613e6e6000830184613e4a565b92915050565b6000613e7f826131a5565b9150613e8a836131a5565b92508160ff0483118215151615613ea457613ea3613574565b5b828202905092915050565b6000613eba826131a5565b9150613ec5836131a5565b92508260ff03821115613edb57613eda613574565b5b828201905092915050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000613f1c600c83612eea565b9150613f2782613ee6565b602082019050919050565b60006020820190508181036000830152613f4b81613f0f565b9050919050565b6000604082019050613f6760008301856131b2565b613f7460208301846131b2565b9392505050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000613fb1601883612eea565b9150613fbc82613f7b565b602082019050919050565b60006020820190508181036000830152613fe081613fa4565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061401d601183612eea565b915061402882613fe7565b602082019050919050565b6000602082019050818103600083015261404c81614010565b9050919050565b6000819050919050565b600061407861407361406e84614053565b613dfa565b612ffd565b9050919050565b6140888161405d565b82525050565b600060c0820190506140a360008301896133ae565b6140b060208301886130a9565b6140bd604083018761407f565b6140ca606083018661407f565b6140d760808301856133ae565b6140e460a08301846130a9565b979650505050505050565b6000815190506140fe81613007565b92915050565b60008060006060848603121561411d5761411c612f9a565b5b600061412b868287016140ef565b935050602061413c868287016140ef565b925050604061414d868287016140ef565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141ea81612fbf565b82525050565b60006141fc83836141e1565b60208301905092915050565b6000602082019050919050565b6000614220826141b5565b61422a81856141c0565b9350614235836141d1565b8060005b8381101561426657815161424d88826141f0565b975061425883614208565b925050600181019050614239565b5085935050505092915050565b600060a08201905061428860008301886130a9565b614295602083018761407f565b81810360408301526142a78186614215565b90506142b660608301856133ae565b6142c360808301846130a9565b969550505050505056fea26469706673582212204d50882030a1da00ca440bcdcd7ce3e6b7ab9a1c54d10369cec25a7ef686945664736f6c634300080f0033

Deployed Bytecode Sourcemap

1902:11770:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4584:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3994:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9876:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4989:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10095:179;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;4085:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13337:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10687:216;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4338:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9723:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4168:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4784:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10908:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12829:232;;;;;;;;;;;;;:::i;:::-;;5357:963;;;;;;;;;;;;;:::i;:::-;;6955:183;;;;;;;;;;;;;:::i;:::-;;13066:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10552:130;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4446:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11418:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1091:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10279:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7415:175;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4255:80;4303:13;4327:5;;;;;;;;;;;;;;;;;4320:12;;4255:80;:::o;4584:195::-;4659:4;4705:6;4670:11;:23;4682:10;4670:23;;;;;;;;;;;;;;;:32;4694:7;4670:32;;;;;;;;;;;;;;;:41;;;;4742:7;4721:37;;4730:10;4721:37;;;4751:6;4721:37;;;;;;:::i;:::-;;;;;;;;4770:4;4763:11;;4584:195;;;;:::o;3994:88::-;4049:7;2043:1;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;4060:19;;3994:88;:::o;9876:214::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9988:6:::1;9967:10;:18;9978:6;9967:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10022:8;9999:12;:20;10012:6;9999:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;10040:45;10060:6;10068;10076:8;10040:45;;;;;;;;:::i;:::-;;;;;;;;9876:214:::0;;;:::o;4989:363::-;5089:4;5108:19;:17;:19::i;:::-;5100:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5192:17;5157:11;:19;5169:6;5157:19;;;;;;;;;;;;;;;:31;5177:10;5157:31;;;;;;;;;;;;;;;;:52;5153:143;;5284:6;5250:11;:19;5262:6;5250:19;;;;;;;;;;;;;;;:31;5270:10;5250:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5216:11;:19;5228:6;5216:19;;;;;;;;;;;;;;;:31;5236:10;5216:31;;;;;;;;;;;;;;;:74;;;;5153:143;5307:40;5321:6;5329:9;5340:6;5307:13;:40::i;:::-;5300:47;;4989:363;;;;;:::o;10095:179::-;10143:21;10166:16;10184:17;10216:19;;;;;;;;;;;10237:14;;;;;;;;;;;10253:15;;;;;;;;;;;10208:61;;;;;;10095:179;;;:::o;4085:80::-;4137:5;2043:1;4146:16;;4085:80;:::o;13337:332::-;13387:24;13414:21;13424:10;13414:9;:21::i;:::-;13387:48;;13458:16;13448:6;:26;;13440:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13530:6;13505:9;:21;13515:10;13505:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13566:6;13541:9;:21;13559:1;13541:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13611:1;13582:40;;13591:10;13582:40;;;13615:6;13582:40;;;;;;:::i;:::-;;;;;;;;13632:32;13645:10;13657:6;13632:32;;;;;;;:::i;:::-;;;;;;;;13382:287;13337:332;:::o;10687:216::-;10730:19;10751:23;10776:18;10796;10829:15;;10846:19;;10867:14;;10883;;10821:77;;;;;;;;10687:216;;;;:::o;4338:105::-;4404:7;4422:9;:18;4432:7;4422:18;;;;;;;;;;;;;;;;4415:25;;4338:105;;;:::o;9723:148::-;9784:11;9797:13;9825:10;:18;9836:6;9825:18;;;;;;;;;;;;;;;;;;;;;;;;;9845:12;:20;9858:6;9845:20;;;;;;;;;;;;;;;;;;;;;;;;;9817:49;;;;9723:148;;;:::o;4168:84::-;4218:13;4242:7;;;;;;;;;;;;;;;;;4235:14;;4168:84;:::o;4784:200::-;4864:4;4883:19;:17;:19::i;:::-;4875:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;4935:44;4949:10;4961:9;4972:6;4935:13;:44::i;:::-;4928:51;;4784:200;;;;:::o;10908:505::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11008:16:::1;11067:1;11060:4;11042:15;11027:30;;2043:1;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;11027:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;11008:60;;11093:15;;11081:8;:27;;11073:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11152:8;11134:15;:26;;;;11165:20;11232:1;11225:4;11203:19;11188:34;;2043:1;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;11188:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;11165:68;;11262:19;;11246:12;:35;;11238:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11333:12;11311:19;:34;;;;11355:53;11371:15;;11388:19;;11355:53;;;;;;;:::i;:::-;;;;;;;;11003:410;;10908:505:::0;;:::o;12829:232::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12879:24:::1;12906:21;12879:48;;12966:1;12947:16;:20;12938:30;;;::::0;::::1;;12973:25;13009:5:::0;::::1;;;;;;;;;;12973:42;;13020:9;:18;;:36;13039:16;13020:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12874:187;;12829:232::o:0;5357:963::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5407:14:::1;:12;:14::i;:::-;5406:15;5398:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5485:1;5459:28;;:14;;;;;;;;;;;:28;;;5451:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5557:1;2043;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;5542:16;;;;:::i;:::-;5515:9;:24;5533:4;5515:24;;;;;;;;;;;;;;;:43;;;;5597:4;5568:61;;5585:1;5568:61;;;5604:9;:24;5622:4;5604:24;;;;;;;;;;;;;;;;5568:61;;;;;;:::i;:::-;;;;;;;;5670:9;:24;5688:4;5670:24;;;;;;;;;;;;;;;;2043:1;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;5655:39;;;;:::i;:::-;5636:9;:16;5646:5:::0;::::1;;;;;;;;;;5636:16;;;;;;;;;;;;;;;:58;;;;5725:5;::::0;::::1;;;;;;;;5704:45;;5721:1;5704:45;;;5732:9;:16;5742:5:::0;::::1;;;;;;;;;;5732:16;;;;;;;;;;;;;;;;5704:45;;;;;;:::i;:::-;;;;;;;;5771:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5756:12;;:38;;;;;;;;;;;;;;;;;;5874:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5856:56;;;5921:4;5928:12;;;;;;;;;;;5856:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5839:14;;:102;;;;;;;;;;;;;;;;;;5977:4;5948:10;:26;5959:14;;;;;;;;;;;5948:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5988:27;6018:21;5988:51;;6075:1;6052:19;:24;;6044:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:29;6126:24;6144:4;6126:9;:24::i;:::-;6094:56;;6187:1;6163:21;:25;6155:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6209:37;6224:21;6209:14;:37::i;:::-;6251:64;6265:21;6288:19;6309:5;6251:13;:64::i;:::-;5393:927;;5357:963::o:0;6955:183::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7011:14:::1;:12;:14::i;:::-;7010:15;7002:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7089:1;7063:28;;:14;;;;;;;;;;;:28;;::::0;7055:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7119:14;:12;:14::i;:::-;6955:183::o:0;13066:266::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13129:23:::1;13155:24;13173:4;13155:9;:24::i;:::-;13129:50;;13210:1;13192:15;:19;13184:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;13230:20;13285:3;13271:11;13253:29;;:15;:29;;;;:::i;:::-;:35;;;;:::i;:::-;13230:58;;13293:34;13314:12;13293:20;:34::i;:::-;13124:208;;13066:266:::0;:::o;10552:130::-;10596:21;10619;10655:5;;;;;;;;;;10662:14;;;;;;;;;;;10647:30;;;;10552:130;;:::o;4446:133::-;4530:7;4548:11;:19;4560:6;4548:19;;;;;;;;;;;;;;;:28;4568:7;4548:28;;;;;;;;;;;;;;;;4541:35;;4446:133;;;;:::o;11418:347::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11583:10:::1;11557:36;;11572:8;11557:23;;2043:1;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;11557:23;;;;:::i;:::-;:36;;;;:::i;:::-;11540:14;:53;;;;11641:10;11615:36;;11630:8;11615:23;;2043:1;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;11615:23;;;;:::i;:::-;:36;;;;:::i;:::-;11598:14;:53;;;;11681:14;;11664;;:31;11656:40;;;::::0;::::1;;11706:54;11729:14;;11745;;11706:54;;;;;;;:::i;:::-;;;;;;;;11418:347:::0;;;;:::o;1091:130::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1173:8:::1;1165:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1188:30;1209:8;1188:30;;;;;;:::i;:::-;;;;;;;;1091:130:::0;:::o;10279:268::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10394:19:::1;;;;;;;;;;;10392:1;:21;;;;:::i;:::-;10368:45;;10378:10;10368:9;:20;;;;:::i;:::-;:45;;;;10359:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10452:9;10435:14;;:26;;;;;;;;;;;;;;;;;;10484:10;10466:15;;:28;;;;;;;;;;;;;;;;;;10504:38;10520:9;10531:10;10504:38;;;;;;;:::i;:::-;;;;;;;;10279:268:::0;;:::o;7415:175::-;7461:4;7476:14;:12;:14::i;:::-;:56;;;;;7530:2;7510:17;;:22;;;;:::i;:::-;7494:12;:38;;7476:56;7472:114;;;7543:14;:12;:14::i;:::-;7536:21;;;;7472:114;7578:5;7571:12;;7415:175;;:::o;9052:222::-;9103:4;9113:16;9132:5;9113:24;;9147:14;:12;:14::i;:::-;9142:104;;;9180:4;9166:18;;9142:104;;;9215:5;;;;;;;;;;9202:18;;:9;:18;;;9197:49;;9239:4;9225:18;;9197:49;9142:104;9258:11;9251:18;;;9052:222;:::o;7595:812::-;7687:4;7722:1;7706:18;;:6;:18;;;;:43;;;;;7747:1;7728:21;;:9;:21;;;;7706:43;7698:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;7791:10;;;;;;;;;;;7790:11;:36;;;;;7805:10;:21;7816:9;7805:21;;;;;;;;;;;;;;;;;;;;;;;;;7790:36;7785:69;;;7831:20;:18;:20::i;:::-;7785:69;7883:4;7865:23;;:6;:23;;;;:53;;;;;7913:4;7892:26;;:9;:26;;;;7865:53;:72;;;;;7932:5;;;;;;;;;;7922:15;;:6;:15;;;;7865:72;7860:154;;;7950:39;7963:6;7971:9;7982:6;7950:12;:39::i;:::-;7942:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7860:154;8018:18;8039:40;8053:6;8061:9;8072:6;8039:13;:40::i;:::-;8018:61;;8084:23;8119:10;8110:6;:19;;;;:::i;:::-;8084:45;;8174:6;8154:9;:17;8164:6;8154:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;8134:9;:17;8144:6;8134:17;;;;;;;;;;;;;;;:46;;;;8203:1;8190:10;:14;8185:91;;;8263:10;8236:9;:24;8254:4;8236:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;8209:9;:24;8227:4;8209:24;;;;;;;;;;;;;;;:64;;;;8185:91;8326:15;8303:9;:20;8313:9;8303:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;8280:9;:20;8290:9;8280:20;;;;;;;;;;;;;;;:61;;;;8368:9;8351:35;;8360:6;8351:35;;;8379:6;8351:35;;;;;;:::i;:::-;;;;;;;;8398:4;8391:11;;;;7595:812;;;;;:::o;8887:160::-;8933:4;8944:11;8958:5;8944:19;;8988:17;;8972:12;:33;8968:57;;9018:4;9009:13;;8968:57;9036:6;9029:13;;;8887:160;:::o;6325:299::-;6444:12;6390:11;:26;6410:4;6390:26;;;;;;;;;;;;;;;:51;2780:42;6390:51;;;;;;;;;;;;;;;;:66;6385:235;;;6519:17;6465:11;:26;6485:4;6465:26;;;;;;;;;;;;;;;:51;2780:42;6465:51;;;;;;;;;;;;;;;:71;;;;2780:42;6547:67;;6564:4;6547:67;;;6596:17;6547:67;;;;;;:::i;:::-;;;;;;;;6385:235;6325:299;:::o;6629:321::-;6726:24;6774:8;6768:46;;6806:5;;;;;;;;;;6787:24;;6768:46;6818:16;;;;;;;;;;;:32;;;6858:13;6883:4;6890:12;6904:1;6907;6910:16;6928:15;6818:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6721:229;6629:321;;;:::o;7143:267::-;2043:1;7232:2;:13;;;;:::i;:::-;7224:5;2043:1;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;7203:3;:18;;;;:::i;:::-;:26;;;;:::i;:::-;:42;;;;:::i;:::-;7181:15;:64;;;;2043:1;7302:2;:13;;;;:::i;:::-;7294:5;2043:1;2100:2;:13;;;;:::i;:::-;2080:17;:33;;;;:::i;:::-;7273:3;:18;;;;:::i;:::-;:26;;;;:::i;:::-;:42;;;;:::i;:::-;7251:19;:64;;;;7337:1;7320:14;;:18;;;;;;;;;;;;;;;;;;7361:1;7343:15;;:19;;;;;;;;;;;;;;;;;;7402:3;7387:12;:18;;;;:::i;:::-;7367:17;:38;;;;7143:267::o;12503:321::-;12568:28;12583:12;12568:14;:28::i;:::-;12601:21;12639:1;12625:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12601:40;;12664:4;12646;12651:1;12646:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12684:12;;;;;;;;;;;12674:4;12679:1;12674:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;;;12701:16;;;;;;;;;;;:67;;;12769:12;12782:1;12784:4;12797;12803:15;12701:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12563:261;12503:321;:::o;11770:728::-;2996:4;2983:10;;:17;;;;;;;;;;;;;;;;;;11825:27:::1;11855:24;11873:4;11855:9;:24::i;:::-;11825:54;;11914:14;;11891:19;:37;;:55;;;;;11932:14;:12;:14::i;:::-;11891:55;11886:608;;;11983:14;;11960:19;:37;11955:86;;12024:14;;12002:36;;11955:86;12046:20;12091:1;12069:19;:23;;;;:::i;:::-;12046:46;;12098:21;12144:12;12122:19;:34;;;;:::i;:::-;12098:58;;2043:1;12183:2;:13;;;;:::i;:::-;12166;:30;12162:327;;12205:19;12227:21;12205:43;;12255:35;12276:13;12255:20;:35::i;:::-;12297:19;12343:11;12319:21;:35;;;;:::i;:::-;12297:57;;12380:1;12366:11;:15;12361:122;;;12392:28;12407:12;12392:14;:28::i;:::-;12428:47;12442:12;12456:11;12469:5;12428:13;:47::i;:::-;12361:122;12198:291;;12162:327;11949:545;;11886:608;11820:678;3018:5:::0;3005:10;;:18;;;;;;;;;;;;;;;;;;11770:728::o;8413:469::-;8517:4;8528:21;8552:4;8528:28;;8566:14;:12;:14::i;:::-;:42;;;;;8585:12;:23;8598:9;8585:23;;;;;;;;;;;;;;;;;;;;;;;;;8584:24;8566:42;:67;;;;;8613:12;:20;8626:6;8613:20;;;;;;;;;;;;;;;;;;;;;;;;;8612:21;8566:67;8561:289;;;8664:15;;8647:14;:32;8642:203;;;8703:5;8684:24;;8642:203;;;8727:10;:21;8738:9;8727:21;;;;;;;;;;;;;;;;;;;;;;;;;8726:22;:87;;;;;8793:19;;8776:14;8753:9;:20;8763:9;8753:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:59;8726:87;8721:124;;;8837:5;8818:24;;8721:124;8642:203;8561:289;8861:16;8854:23;;;8413:469;;;;;:::o;9279:439::-;9376:7;9390:17;9418:14;:12;:14::i;:::-;9417:15;:37;;;;9436:10;:18;9447:6;9436:18;;;;;;;;;;;;;;;;;;;;;;;;;9417:37;:62;;;;9458:10;:21;9469:9;9458:21;;;;;;;;;;;;;;;;;;;;;;;;;9417:62;9412:281;;;9496:1;9484:13;;9412:281;;;9514:10;:18;9525:6;9514:18;;;;;;;;;;;;;;;;;;;;;;;;;9509:184;;;9575:3;9558:14;;;;;;;;;;;9549:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;9537:41;;9509:184;;;9595:10;:21;9606:9;9595:21;;;;;;;;;;;;;;;;;;;;;;;;;9590:103;;;9660:3;9642:15;;;;;;;;;;;9633:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;9621:42;;9590:103;;;9689:1;9677:13;;9590:103;9509:184;9412:281;9704:9;9697:16;;;9279:439;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:607::-;4178:6;4186;4194;4243:2;4231:9;4222:7;4218:23;4214:32;4211:119;;;4249:79;;:::i;:::-;4211:119;4369:1;4394:53;4439:7;4430:6;4419:9;4415:22;4394:53;:::i;:::-;4384:63;;4340:117;4496:2;4522:50;4564:7;4555:6;4544:9;4540:22;4522:50;:::i;:::-;4512:60;;4467:115;4621:2;4647:50;4689:7;4680:6;4669:9;4665:22;4647:50;:::i;:::-;4637:60;;4592:115;4107:607;;;;;:::o;4720:619::-;4797:6;4805;4813;4862:2;4850:9;4841:7;4837:23;4833:32;4830:119;;;4868:79;;:::i;:::-;4830:119;4988:1;5013:53;5058:7;5049:6;5038:9;5034:22;5013:53;:::i;:::-;5003:63;;4959:117;5115:2;5141:53;5186:7;5177:6;5166:9;5162:22;5141:53;:::i;:::-;5131:63;;5086:118;5243:2;5269:53;5314:7;5305:6;5294:9;5290:22;5269:53;:::i;:::-;5259:63;;5214:118;4720:619;;;;;:::o;5345:86::-;5380:7;5420:4;5413:5;5409:16;5398:27;;5345:86;;;:::o;5437:112::-;5520:22;5536:5;5520:22;:::i;:::-;5515:3;5508:35;5437:112;;:::o;5555:418::-;5692:4;5730:2;5719:9;5715:18;5707:26;;5743:67;5807:1;5796:9;5792:17;5783:6;5743:67;:::i;:::-;5820:68;5884:2;5873:9;5869:18;5860:6;5820:68;:::i;:::-;5898;5962:2;5951:9;5947:18;5938:6;5898:68;:::i;:::-;5555:418;;;;;;:::o;5979:214::-;6068:4;6106:2;6095:9;6091:18;6083:26;;6119:67;6183:1;6172:9;6168:17;6159:6;6119:67;:::i;:::-;5979:214;;;;:::o;6199:329::-;6258:6;6307:2;6295:9;6286:7;6282:23;6278:32;6275:119;;;6313:79;;:::i;:::-;6275:119;6433:1;6458:53;6503:7;6494:6;6483:9;6479:22;6458:53;:::i;:::-;6448:63;;6404:117;6199:329;;;;:::o;6534:553::-;6711:4;6749:3;6738:9;6734:19;6726:27;;6763:71;6831:1;6820:9;6816:17;6807:6;6763:71;:::i;:::-;6844:72;6912:2;6901:9;6897:18;6888:6;6844:72;:::i;:::-;6926;6994:2;6983:9;6979:18;6970:6;6926:72;:::i;:::-;7008;7076:2;7065:9;7061:18;7052:6;7008:72;:::i;:::-;6534:553;;;;;;;:::o;7093:329::-;7152:6;7201:2;7189:9;7180:7;7176:23;7172:32;7169:119;;;7207:79;;:::i;:::-;7169:119;7327:1;7352:53;7397:7;7388:6;7377:9;7373:22;7352:53;:::i;:::-;7342:63;;7298:117;7093:329;;;;:::o;7428:308::-;7537:4;7575:2;7564:9;7560:18;7552:26;;7588:65;7650:1;7639:9;7635:17;7626:6;7588:65;:::i;:::-;7663:66;7725:2;7714:9;7710:18;7701:6;7663:66;:::i;:::-;7428:308;;;;;:::o;7742:89::-;7778:7;7818:6;7811:5;7807:18;7796:29;;7742:89;;;:::o;7837:120::-;7909:23;7926:5;7909:23;:::i;:::-;7902:5;7899:34;7889:62;;7947:1;7944;7937:12;7889:62;7837:120;:::o;7963:137::-;8008:5;8046:6;8033:20;8024:29;;8062:32;8088:5;8062:32;:::i;:::-;7963:137;;;;:::o;8106:470::-;8172:6;8180;8229:2;8217:9;8208:7;8204:23;8200:32;8197:119;;;8235:79;;:::i;:::-;8197:119;8355:1;8380:52;8424:7;8415:6;8404:9;8400:22;8380:52;:::i;:::-;8370:62;;8326:116;8481:2;8507:52;8551:7;8542:6;8531:9;8527:22;8507:52;:::i;:::-;8497:62;;8452:117;8106:470;;;;;:::o;8582:118::-;8653:22;8669:5;8653:22;:::i;:::-;8646:5;8643:33;8633:61;;8690:1;8687;8680:12;8633:61;8582:118;:::o;8706:135::-;8750:5;8788:6;8775:20;8766:29;;8804:31;8829:5;8804:31;:::i;:::-;8706:135;;;;:::o;8847:325::-;8904:6;8953:2;8941:9;8932:7;8928:23;8924:32;8921:119;;;8959:79;;:::i;:::-;8921:119;9079:1;9104:51;9147:7;9138:6;9127:9;9123:22;9104:51;:::i;:::-;9094:61;;9050:115;8847:325;;;;:::o;9178:118::-;9265:24;9283:5;9265:24;:::i;:::-;9260:3;9253:37;9178:118;;:::o;9302:332::-;9423:4;9461:2;9450:9;9446:18;9438:26;;9474:71;9542:1;9531:9;9527:17;9518:6;9474:71;:::i;:::-;9555:72;9623:2;9612:9;9608:18;9599:6;9555:72;:::i;:::-;9302:332;;;;;:::o;9640:474::-;9708:6;9716;9765:2;9753:9;9744:7;9740:23;9736:32;9733:119;;;9771:79;;:::i;:::-;9733:119;9891:1;9916:53;9961:7;9952:6;9941:9;9937:22;9916:53;:::i;:::-;9906:63;;9862:117;10018:2;10044:53;10089:7;10080:6;10069:9;10065:22;10044:53;:::i;:::-;10034:63;;9989:118;9640:474;;;;;:::o;10120:93::-;10156:7;10196:10;10189:5;10185:22;10174:33;;10120:93;;;:::o;10219:120::-;10291:23;10308:5;10291:23;:::i;:::-;10284:5;10281:34;10271:62;;10329:1;10326;10319:12;10271:62;10219:120;:::o;10345:137::-;10390:5;10428:6;10415:20;10406:29;;10444:32;10470:5;10444:32;:::i;:::-;10345:137;;;;:::o;10488:757::-;10570:6;10578;10586;10594;10643:3;10631:9;10622:7;10618:23;10614:33;10611:120;;;10650:79;;:::i;:::-;10611:120;10770:1;10795:52;10839:7;10830:6;10819:9;10815:22;10795:52;:::i;:::-;10785:62;;10741:116;10896:2;10922:52;10966:7;10957:6;10946:9;10942:22;10922:52;:::i;:::-;10912:62;;10867:117;11023:2;11049:52;11093:7;11084:6;11073:9;11069:22;11049:52;:::i;:::-;11039:62;;10994:117;11150:2;11176:52;11220:7;11211:6;11200:9;11196:22;11176:52;:::i;:::-;11166:62;;11121:117;10488:757;;;;;;;:::o;11251:104::-;11296:7;11325:24;11343:5;11325:24;:::i;:::-;11314:35;;11251:104;;;:::o;11361:138::-;11442:32;11468:5;11442:32;:::i;:::-;11435:5;11432:43;11422:71;;11489:1;11486;11479:12;11422:71;11361:138;:::o;11505:155::-;11559:5;11597:6;11584:20;11575:29;;11613:41;11648:5;11613:41;:::i;:::-;11505:155;;;;:::o;11666:345::-;11733:6;11782:2;11770:9;11761:7;11757:23;11753:32;11750:119;;;11788:79;;:::i;:::-;11750:119;11908:1;11933:61;11986:7;11977:6;11966:9;11962:22;11933:61;:::i;:::-;11923:71;;11879:125;11666:345;;;;:::o;12017:466::-;12081:6;12089;12138:2;12126:9;12117:7;12113:23;12109:32;12106:119;;;12144:79;;:::i;:::-;12106:119;12264:1;12289:51;12332:7;12323:6;12312:9;12308:22;12289:51;:::i;:::-;12279:61;;12235:115;12389:2;12415:51;12458:7;12449:6;12438:9;12434:22;12415:51;:::i;:::-;12405:61;;12360:116;12017:466;;;;;:::o;12489:180::-;12537:77;12534:1;12527:88;12634:4;12631:1;12624:15;12658:4;12655:1;12648:15;12675:102;12717:8;12764:5;12761:1;12757:13;12736:34;;12675:102;;;:::o;12783:848::-;12844:5;12851:4;12875:6;12866:15;;12899:5;12890:14;;12913:712;12934:1;12924:8;12921:15;12913:712;;;13029:4;13024:3;13020:14;13014:4;13011:24;13008:50;;;13038:18;;:::i;:::-;13008:50;13088:1;13078:8;13074:16;13071:451;;;13503:4;13496:5;13492:16;13483:25;;13071:451;13553:4;13547;13543:15;13535:23;;13583:32;13606:8;13583:32;:::i;:::-;13571:44;;12913:712;;;12783:848;;;;;;;:::o;13637:1073::-;13691:5;13882:8;13872:40;;13903:1;13894:10;;13905:5;;13872:40;13931:4;13921:36;;13948:1;13939:10;;13950:5;;13921:36;14017:4;14065:1;14060:27;;;;14101:1;14096:191;;;;14010:277;;14060:27;14078:1;14069:10;;14080:5;;;14096:191;14141:3;14131:8;14128:17;14125:43;;;14148:18;;:::i;:::-;14125:43;14197:8;14194:1;14190:16;14181:25;;14232:3;14225:5;14222:14;14219:40;;;14239:18;;:::i;:::-;14219:40;14272:5;;;14010:277;;14396:2;14386:8;14383:16;14377:3;14371:4;14368:13;14364:36;14346:2;14336:8;14333:16;14328:2;14322:4;14319:12;14315:35;14299:111;14296:246;;;14452:8;14446:4;14442:19;14433:28;;14487:3;14480:5;14477:14;14474:40;;;14494:18;;:::i;:::-;14474:40;14527:5;;14296:246;14567:42;14605:3;14595:8;14589:4;14586:1;14567:42;:::i;:::-;14552:57;;;;14641:4;14636:3;14632:14;14625:5;14622:25;14619:51;;;14650:18;;:::i;:::-;14619:51;14699:4;14692:5;14688:16;14679:25;;13637:1073;;;;;;:::o;14716:281::-;14774:5;14798:23;14816:4;14798:23;:::i;:::-;14790:31;;14842:25;14858:8;14842:25;:::i;:::-;14830:37;;14886:104;14923:66;14913:8;14907:4;14886:104;:::i;:::-;14877:113;;14716:281;;;;:::o;15003:348::-;15043:7;15066:20;15084:1;15066:20;:::i;:::-;15061:25;;15100:20;15118:1;15100:20;:::i;:::-;15095:25;;15288:1;15220:66;15216:74;15213:1;15210:81;15205:1;15198:9;15191:17;15187:105;15184:131;;;15295:18;;:::i;:::-;15184:131;15343:1;15340;15336:9;15325:20;;15003:348;;;;:::o;15357:229::-;15497:34;15493:1;15485:6;15481:14;15474:58;15566:12;15561:2;15553:6;15549:15;15542:37;15357:229;:::o;15592:366::-;15734:3;15755:67;15819:2;15814:3;15755:67;:::i;:::-;15748:74;;15831:93;15920:3;15831:93;:::i;:::-;15949:2;15944:3;15940:12;15933:19;;15592:366;;;:::o;15964:419::-;16130:4;16168:2;16157:9;16153:18;16145:26;;16217:9;16211:4;16207:20;16203:1;16192:9;16188:17;16181:47;16245:131;16371:4;16245:131;:::i;:::-;16237:139;;15964:419;;;:::o;16389:418::-;16526:4;16564:2;16553:9;16549:18;16541:26;;16577:71;16645:1;16634:9;16630:17;16621:6;16577:71;:::i;:::-;16658:66;16720:2;16709:9;16705:18;16696:6;16658:66;:::i;:::-;16734;16796:2;16785:9;16781:18;16772:6;16734:66;:::i;:::-;16389:418;;;;;;:::o;16813:166::-;16953:18;16949:1;16941:6;16937:14;16930:42;16813:166;:::o;16985:366::-;17127:3;17148:67;17212:2;17207:3;17148:67;:::i;:::-;17141:74;;17224:93;17313:3;17224:93;:::i;:::-;17342:2;17337:3;17333:12;17326:19;;16985:366;;;:::o;17357:419::-;17523:4;17561:2;17550:9;17546:18;17538:26;;17610:9;17604:4;17600:20;17596:1;17585:9;17581:17;17574:47;17638:131;17764:4;17638:131;:::i;:::-;17630:139;;17357:419;;;:::o;17782:191::-;17822:4;17842:20;17860:1;17842:20;:::i;:::-;17837:25;;17876:20;17894:1;17876:20;:::i;:::-;17871:25;;17915:1;17912;17909:8;17906:34;;;17920:18;;:::i;:::-;17906:34;17965:1;17962;17958:9;17950:17;;17782:191;;;;:::o;17979:171::-;18119:23;18115:1;18107:6;18103:14;18096:47;17979:171;:::o;18156:366::-;18298:3;18319:67;18383:2;18378:3;18319:67;:::i;:::-;18312:74;;18395:93;18484:3;18395:93;:::i;:::-;18513:2;18508:3;18504:12;18497:19;;18156:366;;;:::o;18528:419::-;18694:4;18732:2;18721:9;18717:18;18709:26;;18781:9;18775:4;18771:20;18767:1;18756:9;18752:17;18745:47;18809:131;18935:4;18809:131;:::i;:::-;18801:139;;18528:419;;;:::o;18953:305::-;18993:3;19012:20;19030:1;19012:20;:::i;:::-;19007:25;;19046:20;19064:1;19046:20;:::i;:::-;19041:25;;19200:1;19132:66;19128:74;19125:1;19122:81;19119:107;;;19206:18;;:::i;:::-;19119:107;19250:1;19247;19243:9;19236:16;;18953:305;;;;:::o;19264:332::-;19385:4;19423:2;19412:9;19408:18;19400:26;;19436:71;19504:1;19493:9;19489:17;19480:6;19436:71;:::i;:::-;19517:72;19585:2;19574:9;19570:18;19561:6;19517:72;:::i;:::-;19264:332;;;;;:::o;19602:180::-;19650:77;19647:1;19640:88;19747:4;19744:1;19737:15;19771:4;19768:1;19761:15;19788:185;19828:1;19845:20;19863:1;19845:20;:::i;:::-;19840:25;;19879:20;19897:1;19879:20;:::i;:::-;19874:25;;19918:1;19908:35;;19923:18;;:::i;:::-;19908:35;19965:1;19962;19958:9;19953:14;;19788:185;;;;:::o;19979:166::-;20119:18;20115:1;20107:6;20103:14;20096:42;19979:166;:::o;20151:366::-;20293:3;20314:67;20378:2;20373:3;20314:67;:::i;:::-;20307:74;;20390:93;20479:3;20390:93;:::i;:::-;20508:2;20503:3;20499:12;20492:19;;20151:366;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20523:419;;;:::o;20948:170::-;21088:22;21084:1;21076:6;21072:14;21065:46;20948:170;:::o;21124:366::-;21266:3;21287:67;21351:2;21346:3;21287:67;:::i;:::-;21280:74;;21363:93;21452:3;21363:93;:::i;:::-;21481:2;21476:3;21472:12;21465:19;;21124:366;;;:::o;21496:419::-;21662:4;21700:2;21689:9;21685:18;21677:26;;21749:9;21743:4;21739:20;21735:1;21724:9;21720:17;21713:47;21777:131;21903:4;21777:131;:::i;:::-;21769:139;;21496:419;;;:::o;21921:332::-;22042:4;22080:2;22069:9;22065:18;22057:26;;22093:71;22161:1;22150:9;22146:17;22137:6;22093:71;:::i;:::-;22174:72;22242:2;22231:9;22227:18;22218:6;22174:72;:::i;:::-;21921:332;;;;;:::o;22259:170::-;22399:22;22395:1;22387:6;22383:14;22376:46;22259:170;:::o;22435:366::-;22577:3;22598:67;22662:2;22657:3;22598:67;:::i;:::-;22591:74;;22674:93;22763:3;22674:93;:::i;:::-;22792:2;22787:3;22783:12;22776:19;;22435:366;;;:::o;22807:419::-;22973:4;23011:2;23000:9;22996:18;22988:26;;23060:9;23054:4;23050:20;23046:1;23035:9;23031:17;23024:47;23088:131;23214:4;23088:131;:::i;:::-;23080:139;;22807:419;;;:::o;23232:166::-;23372:18;23368:1;23360:6;23356:14;23349:42;23232:166;:::o;23404:366::-;23546:3;23567:67;23631:2;23626:3;23567:67;:::i;:::-;23560:74;;23643:93;23732:3;23643:93;:::i;:::-;23761:2;23756:3;23752:12;23745:19;;23404:366;;;:::o;23776:419::-;23942:4;23980:2;23969:9;23965:18;23957:26;;24029:9;24023:4;24019:20;24015:1;24004:9;24000:17;23993:47;24057:131;24183:4;24057:131;:::i;:::-;24049:139;;23776:419;;;:::o;24201:143::-;24258:5;24289:6;24283:13;24274:22;;24305:33;24332:5;24305:33;:::i;:::-;24201:143;;;;:::o;24350:351::-;24420:6;24469:2;24457:9;24448:7;24444:23;24440:32;24437:119;;;24475:79;;:::i;:::-;24437:119;24595:1;24620:64;24676:7;24667:6;24656:9;24652:22;24620:64;:::i;:::-;24610:74;;24566:128;24350:351;;;;:::o;24707:156::-;24847:8;24843:1;24835:6;24831:14;24824:32;24707:156;:::o;24869:365::-;25011:3;25032:66;25096:1;25091:3;25032:66;:::i;:::-;25025:73;;25107:93;25196:3;25107:93;:::i;:::-;25225:2;25220:3;25216:12;25209:19;;24869:365;;;:::o;25240:419::-;25406:4;25444:2;25433:9;25429:18;25421:26;;25493:9;25487:4;25483:20;25479:1;25468:9;25464:17;25457:47;25521:131;25647:4;25521:131;:::i;:::-;25513:139;;25240:419;;;:::o;25665:159::-;25805:11;25801:1;25793:6;25789:14;25782:35;25665:159;:::o;25830:365::-;25972:3;25993:66;26057:1;26052:3;25993:66;:::i;:::-;25986:73;;26068:93;26157:3;26068:93;:::i;:::-;26186:2;26181:3;26177:12;26170:19;;25830:365;;;:::o;26201:419::-;26367:4;26405:2;26394:9;26390:18;26382:26;;26454:9;26448:4;26444:20;26440:1;26429:9;26425:17;26418:47;26482:131;26608:4;26482:131;:::i;:::-;26474:139;;26201:419;;;:::o;26626:168::-;26766:20;26762:1;26754:6;26750:14;26743:44;26626:168;:::o;26800:366::-;26942:3;26963:67;27027:2;27022:3;26963:67;:::i;:::-;26956:74;;27039:93;27128:3;27039:93;:::i;:::-;27157:2;27152:3;27148:12;27141:19;;26800:366;;;:::o;27172:419::-;27338:4;27376:2;27365:9;27361:18;27353:26;;27425:9;27419:4;27415:20;27411:1;27400:9;27396:17;27389:47;27453:131;27579:4;27453:131;:::i;:::-;27445:139;;27172:419;;;:::o;27597:159::-;27737:11;27733:1;27725:6;27721:14;27714:35;27597:159;:::o;27762:365::-;27904:3;27925:66;27989:1;27984:3;27925:66;:::i;:::-;27918:73;;28000:93;28089:3;28000:93;:::i;:::-;28118:2;28113:3;28109:12;28102:19;;27762:365;;;:::o;28133:419::-;28299:4;28337:2;28326:9;28322:18;28314:26;;28386:9;28380:4;28376:20;28372:1;28361:9;28357:17;28350:47;28414:131;28540:4;28414:131;:::i;:::-;28406:139;;28133:419;;;:::o;28558:60::-;28586:3;28607:5;28600:12;;28558:60;;;:::o;28624:142::-;28674:9;28707:53;28725:34;28734:24;28752:5;28734:24;:::i;:::-;28725:34;:::i;:::-;28707:53;:::i;:::-;28694:66;;28624:142;;;:::o;28772:126::-;28822:9;28855:37;28886:5;28855:37;:::i;:::-;28842:50;;28772:126;;;:::o;28904:134::-;28962:9;28995:37;29026:5;28995:37;:::i;:::-;28982:50;;28904:134;;;:::o;29044:147::-;29139:45;29178:5;29139:45;:::i;:::-;29134:3;29127:58;29044:147;;:::o;29197:238::-;29298:4;29336:2;29325:9;29321:18;29313:26;;29349:79;29425:1;29414:9;29410:17;29401:6;29349:79;:::i;:::-;29197:238;;;;:::o;29441:280::-;29479:7;29502:18;29518:1;29502:18;:::i;:::-;29497:23;;29534:18;29550:1;29534:18;:::i;:::-;29529:23;;29658:1;29652:4;29648:12;29645:1;29642:19;29637:1;29630:9;29623:17;29619:43;29616:69;;;29665:18;;:::i;:::-;29616:69;29713:1;29710;29706:9;29695:20;;29441:280;;;;:::o;29727:237::-;29765:3;29784:18;29800:1;29784:18;:::i;:::-;29779:23;;29816:18;29832:1;29816:18;:::i;:::-;29811:23;;29906:1;29900:4;29896:12;29893:1;29890:19;29887:45;;;29912:18;;:::i;:::-;29887:45;29956:1;29953;29949:9;29942:16;;29727:237;;;;:::o;29970:162::-;30110:14;30106:1;30098:6;30094:14;30087:38;29970:162;:::o;30138:366::-;30280:3;30301:67;30365:2;30360:3;30301:67;:::i;:::-;30294:74;;30377:93;30466:3;30377:93;:::i;:::-;30495:2;30490:3;30486:12;30479:19;;30138:366;;;:::o;30510:419::-;30676:4;30714:2;30703:9;30699:18;30691:26;;30763:9;30757:4;30753:20;30749:1;30738:9;30734:17;30727:47;30791:131;30917:4;30791:131;:::i;:::-;30783:139;;30510:419;;;:::o;30935:316::-;31048:4;31086:2;31075:9;31071:18;31063:26;;31099:67;31163:1;31152:9;31148:17;31139:6;31099:67;:::i;:::-;31176:68;31240:2;31229:9;31225:18;31216:6;31176:68;:::i;:::-;30935:316;;;;;:::o;31257:174::-;31397:26;31393:1;31385:6;31381:14;31374:50;31257:174;:::o;31437:366::-;31579:3;31600:67;31664:2;31659:3;31600:67;:::i;:::-;31593:74;;31676:93;31765:3;31676:93;:::i;:::-;31794:2;31789:3;31785:12;31778:19;;31437:366;;;:::o;31809:419::-;31975:4;32013:2;32002:9;31998:18;31990:26;;32062:9;32056:4;32052:20;32048:1;32037:9;32033:17;32026:47;32090:131;32216:4;32090:131;:::i;:::-;32082:139;;31809:419;;;:::o;32234:167::-;32374:19;32370:1;32362:6;32358:14;32351:43;32234:167;:::o;32407:366::-;32549:3;32570:67;32634:2;32629:3;32570:67;:::i;:::-;32563:74;;32646:93;32735:3;32646:93;:::i;:::-;32764:2;32759:3;32755:12;32748:19;;32407:366;;;:::o;32779:419::-;32945:4;32983:2;32972:9;32968:18;32960:26;;33032:9;33026:4;33022:20;33018:1;33007:9;33003:17;32996:47;33060:131;33186:4;33060:131;:::i;:::-;33052:139;;32779:419;;;:::o;33204:85::-;33249:7;33278:5;33267:16;;33204:85;;;:::o;33295:158::-;33353:9;33386:61;33404:42;33413:32;33439:5;33413:32;:::i;:::-;33404:42;:::i;:::-;33386:61;:::i;:::-;33373:74;;33295:158;;;:::o;33459:147::-;33554:45;33593:5;33554:45;:::i;:::-;33549:3;33542:58;33459:147;;:::o;33612:807::-;33861:4;33899:3;33888:9;33884:19;33876:27;;33913:71;33981:1;33970:9;33966:17;33957:6;33913:71;:::i;:::-;33994:72;34062:2;34051:9;34047:18;34038:6;33994:72;:::i;:::-;34076:80;34152:2;34141:9;34137:18;34128:6;34076:80;:::i;:::-;34166;34242:2;34231:9;34227:18;34218:6;34166:80;:::i;:::-;34256:73;34324:3;34313:9;34309:19;34300:6;34256:73;:::i;:::-;34339;34407:3;34396:9;34392:19;34383:6;34339:73;:::i;:::-;33612:807;;;;;;;;;:::o;34425:143::-;34482:5;34513:6;34507:13;34498:22;;34529:33;34556:5;34529:33;:::i;:::-;34425:143;;;;:::o;34574:663::-;34662:6;34670;34678;34727:2;34715:9;34706:7;34702:23;34698:32;34695:119;;;34733:79;;:::i;:::-;34695:119;34853:1;34878:64;34934:7;34925:6;34914:9;34910:22;34878:64;:::i;:::-;34868:74;;34824:128;34991:2;35017:64;35073:7;35064:6;35053:9;35049:22;35017:64;:::i;:::-;35007:74;;34962:129;35130:2;35156:64;35212:7;35203:6;35192:9;35188:22;35156:64;:::i;:::-;35146:74;;35101:129;34574:663;;;;;:::o;35243:180::-;35291:77;35288:1;35281:88;35388:4;35385:1;35378:15;35412:4;35409:1;35402:15;35429:180;35477:77;35474:1;35467:88;35574:4;35571:1;35564:15;35598:4;35595:1;35588:15;35615:114;35682:6;35716:5;35710:12;35700:22;;35615:114;;;:::o;35735:184::-;35834:11;35868:6;35863:3;35856:19;35908:4;35903:3;35899:14;35884:29;;35735:184;;;;:::o;35925:132::-;35992:4;36015:3;36007:11;;36045:4;36040:3;36036:14;36028:22;;35925:132;;;:::o;36063:108::-;36140:24;36158:5;36140:24;:::i;:::-;36135:3;36128:37;36063:108;;:::o;36177:179::-;36246:10;36267:46;36309:3;36301:6;36267:46;:::i;:::-;36345:4;36340:3;36336:14;36322:28;;36177:179;;;;:::o;36362:113::-;36432:4;36464;36459:3;36455:14;36447:22;;36362:113;;;:::o;36511:732::-;36630:3;36659:54;36707:5;36659:54;:::i;:::-;36729:86;36808:6;36803:3;36729:86;:::i;:::-;36722:93;;36839:56;36889:5;36839:56;:::i;:::-;36918:7;36949:1;36934:284;36959:6;36956:1;36953:13;36934:284;;;37035:6;37029:13;37062:63;37121:3;37106:13;37062:63;:::i;:::-;37055:70;;37148:60;37201:6;37148:60;:::i;:::-;37138:70;;36994:224;36981:1;36978;36974:9;36969:14;;36934:284;;;36938:14;37234:3;37227:10;;36635:608;;;36511:732;;;;:::o;37249:831::-;37512:4;37550:3;37539:9;37535:19;37527:27;;37564:71;37632:1;37621:9;37617:17;37608:6;37564:71;:::i;:::-;37645:80;37721:2;37710:9;37706:18;37697:6;37645:80;:::i;:::-;37772:9;37766:4;37762:20;37757:2;37746:9;37742:18;37735:48;37800:108;37903:4;37894:6;37800:108;:::i;:::-;37792:116;;37918:72;37986:2;37975:9;37971:18;37962:6;37918:72;:::i;:::-;38000:73;38068:3;38057:9;38053:19;38044:6;38000:73;:::i;:::-;37249:831;;;;;;;;:::o

Swarm Source

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