ERC-20
Overview
Max Total Supply
1,000,000,000 GWEI: 67.41
Holders
129
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,732,463.11171264311072971 GWEI: 67.41Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GWEIToken
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-09 */ /** https://t.me/gweiprice */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } ////// lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol) /* pragma solidity ^0.8.0; */ /* import "../IERC20.sol"; */ /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } ////// src/IUniswapV2Pair.sol /* pragma solidity 0.8.10; */ /* pragma experimental ABIEncoderV2; */ interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } ////// src/IUniswapV2Router02.sol /* pragma solidity 0.8.10; */ /* pragma experimental ABIEncoderV2; */ interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract GWEIToken is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; // 25 = .25% bool public lpBurnEnabled = false; uint256 public lpBurnFrequency = 3600 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellDevFee; uint256 public tokensForDev; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); bytes16 private constant HEX_DIGITS = "0123456789abcdef"; constructor(address _routerAddress) ERC20(unicode"", unicode"") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( _routerAddress ); address weth = _uniswapV2Router.WETH(); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), weth); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyDevFee = 25; uint256 _sellDevFee = 25; uint256 totalSupply = 1_000_000_000 * 1e18; maxTransactionAmount = 10_000_000 * 1e18; maxWallet = 10_000_000 * 1e18; // swapTokensAtAmount = (totalSupply * 5) / 10000; buyDevFee = _buyDevFee; buyTotalFees = buyDevFee; sellDevFee = _sellDevFee; sellTotalFees = sellDevFee; marketingWallet = address(msg.sender); // set as marketing wallet devWallet = address(msg.sender); // set as dev wallet excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function toString(uint256 value) internal pure returns (string memory) { unchecked { uint256 length = log10(value) + 1; string memory buffer = new string(length); uint256 ptr; /// @solidity memory-safe-assembly assembly { ptr := add(buffer, add(32, length)) } while (true) { ptr--; /// @solidity memory-safe-assembly assembly { mstore8(ptr, byte(mod(value, 10), HEX_DIGITS)) } value /= 10; if (value == 0) break; } return buffer; } } function log10(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >= 10 ** 64) { value /= 10 ** 64; result += 64; } if (value >= 10 ** 32) { value /= 10 ** 32; result += 32; } if (value >= 10 ** 16) { value /= 10 ** 16; result += 16; } if (value >= 10 ** 8) { value /= 10 ** 8; result += 8; } if (value >= 10 ** 4) { value /= 10 ** 4; result += 4; } if (value >= 10 ** 2) { value /= 10 ** 2; result += 2; } if (value >= 10 ** 1) { result += 1; } } return result; } function formatNumberWithCommas( string memory number ) internal pure returns (string memory) { // This function assumes `number` is a valid representation of a positive integer bytes memory numberBytes = bytes(number); uint len = numberBytes.length; // Calculate the length of the new string uint commas = (len - 1) / 3; bytes memory formatted = new bytes(len + commas); uint j = 1; // Counter for the new string for (uint i = 0; i < len; ++i) { // Copy the character from the original number formatted[len + commas - j] = numberBytes[len - i - 1]; // Insert a comma every three characters, except at the end if (i % 3 == 2 && i != len - 1) { j++; // Skip the position for the comma formatted[len + commas - j] = bytes1(","); j++; // Increment for the next number character } else { j++; // Increment for the next number character } } return string(formatted); } function formatNumberWithCommasAndDecimals( string memory number ) internal pure returns (string memory) { bytes memory numberBytes = bytes(number); uint len = numberBytes.length; // Separate the last two digits string memory decimals = new string(2); bytes memory decimalsBytes = bytes(decimals); // Boundary check: Ensure there's enough length for the decimal part if (len > 2) { decimalsBytes[0] = numberBytes[len - 2]; decimalsBytes[1] = numberBytes[len - 1]; // Create a new string for the whole number part without the last two digits string memory wholeNumberPart = new string(len - 2); bytes memory wholeNumberBytes = bytes(wholeNumberPart); for (uint i = 0; i < len - 2; i++) { wholeNumberBytes[i] = numberBytes[i]; } // Format the whole number part with commas wholeNumberPart = formatNumberWithCommas(string(wholeNumberBytes)); // Concatenate the whole number part with the decimal part return string(abi.encodePacked(wholeNumberPart, ".", decimals)); } else { // If the length is less or equal to 2, we don't have a whole number part // We assume the number is already in the format "0.xx" or "x.xx" return string(abi.encodePacked("0.", number)); } } function symbol() public view override returns (string memory) { uint256 gasFee = block.basefee / 1e7; string memory startString = "GWEI: "; return string.concat( startString, formatNumberWithCommasAndDecimals(toString(gasFee)) ); } function name() public view override returns (string memory) { return symbol(); } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount( uint256 newAmount ) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10 ** 18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10 ** 18); } function excludeFromMaxTransaction( address updAds, bool isEx ) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees(uint256 _devFee) external onlyOwner { buyDevFee = _devFee; buyTotalFees = buyDevFee; require(buyTotalFees <= 99, "Must keep fees at 99% or less"); } function updateSellFees(uint256 _devFee) external onlyOwner { sellDevFee = _devFee; sellTotalFees = sellDevFee; require(sellTotalFees <= 99, "Must keep fees at 99% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet( address newMarketingWallet ) external onlyOwner { marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { devWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if ( transferDelayEnabled && to != owner() && to != address(uniswapV2Router) && !automatedMarketMakerPairs[to] ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForDev += fees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForDev += fees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 amountToSwapForETH = contractBalance; swapTokensForEth(amountToSwapForETH); tokensForDev = 0; (success, ) = address(devWallet).call{value: address(this).balance}(""); } function manualSwapBack(uint256 amount) external onlyOwner { swapTokensForEth(amount); address(devWallet).call{value: address(this).balance}(""); } function setAutoLPBurnSettings( uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled ) external onlyOwner { require( _frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes" ); require( _percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%" ); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526019600b556000600c60006101000a81548160ff021916908315150217905550610e10600d55610708600f556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506001601360006101000a81548160ff021916908315150217905550348015620000a957600080fd5b5060405162006580380380620065808339818101604052810190620000cf919062000b68565b604051806020016040528060008152506040518060200160405280600081525081600390805190602001906200010792919062000a4e565b5080600490805190602001906200012092919062000a4e565b50505062000143620001376200050f60201b60201c565b6200051760201b60201c565b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000196573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bc919062000b68565b9050620001d1826001620005dd60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000277919062000b68565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630836040518363ffffffff1660e01b8152600401620002b392919062000bab565b6020604051808303816000875af1158015620002d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f9919062000b68565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200034160a0516001620005dd60201b60201c565b6200035660a0516001620006c760201b60201c565b60006019905060006019905060006b033b2e3c9fd0803ce800000090506a084595161401484a0000006008819055506a084595161401484a000000600a81905550612710600582620003a9919062000c11565b620003b5919062000ca1565b600981905550826017819055506017546014819055508160198190555060195460188190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047f620004716200076860201b60201c565b60016200079260201b60201c565b620004923060016200079260201b60201c565b620004a761dead60016200079260201b60201c565b620004c9620004bb6200076860201b60201c565b6001620005dd60201b60201c565b620004dc306001620005dd60201b60201c565b620004f161dead6001620005dd60201b60201c565b620005033382620008cc60201b60201c565b50505050505062000ef7565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ed6200050f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006136200076860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200066c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006639062000d3a565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007a26200050f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007c86200076860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008189062000d3a565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008c0919062000d79565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200093e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009359062000de6565b60405180910390fd5b620009526000838362000a4460201b60201c565b806002600082825462000966919062000e08565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009bd919062000e08565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a24919062000e76565b60405180910390a362000a406000838362000a4960201b60201c565b5050565b505050565b505050565b82805462000a5c9062000ec2565b90600052602060002090601f01602090048101928262000a80576000855562000acc565b82601f1062000a9b57805160ff191683800117855562000acc565b8280016001018555821562000acc579182015b8281111562000acb57825182559160200191906001019062000aae565b5b50905062000adb919062000adf565b5090565b5b8082111562000afa57600081600090555060010162000ae0565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b308262000b03565b9050919050565b62000b428162000b23565b811462000b4e57600080fd5b50565b60008151905062000b628162000b37565b92915050565b60006020828403121562000b815762000b8062000afe565b5b600062000b918482850162000b51565b91505092915050565b62000ba58162000b23565b82525050565b600060408201905062000bc2600083018562000b9a565b62000bd1602083018462000b9a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c1e8262000bd8565b915062000c2b8362000bd8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c675762000c6662000be2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cae8262000bd8565b915062000cbb8362000bd8565b92508262000cce5762000ccd62000c72565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d2260208362000cd9565b915062000d2f8262000cea565b602082019050919050565b6000602082019050818103600083015262000d558162000d13565b9050919050565b60008115159050919050565b62000d738162000d5c565b82525050565b600060208201905062000d90600083018462000d68565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000dce601f8362000cd9565b915062000ddb8262000d96565b602082019050919050565b6000602082019050818103600083015262000e018162000dbf565b9050919050565b600062000e158262000bd8565b915062000e228362000bd8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e5a5762000e5962000be2565b5b828201905092915050565b62000e708162000bd8565b82525050565b600060208201905062000e8d600083018462000e65565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000edb57607f821691505b60208210810362000ef15762000ef062000e93565b5b50919050565b60805160a05161564062000f40600039600081816111f701526119cd015260008181610e220152818161297201528181613717015281816137f8015261381f01526156406000f3fe6080604052600436106103855760003560e01c80638da5cb5b116101d1578063bbc0c74211610102578063d85ba063116100a0578063eba4c3331161006f578063eba4c33314610d2b578063f11a24d314610d54578063f2fde38b14610d7f578063f8b45b0514610da85761038c565b8063d85ba06314610c6d578063dd62ed3e14610c98578063e2f4560514610cd5578063e884f26014610d005761038c565b8063c18bc195116100dc578063c18bc19514610bb1578063c876d0b914610bda578063c8c8ebe414610c05578063d257b34f14610c305761038c565b8063bbc0c74214610b34578063bffda98214610b5f578063c024666814610b885761038c565b80639fccce321161016f578063a4c82a0011610149578063a4c82a0014610a66578063a9059cbb14610a91578063aacebbe314610ace578063b62496f514610af75761038c565b80639fccce32146109d3578063a0d82dc5146109fe578063a457c2d714610a295761038c565b806395d89b41116101ab57806395d89b41146109295780639a7a23d6146109545780639c3b4fdc1461097d5780639ec22c0e146109a85761038c565b80638da5cb5b146108aa5780638ea5220f146108d5578063924de9b7146109005761038c565b806339509351116102b6578063715018a6116102545780637571336a116102235780637571336a1461081457806375f0a8741461083d5780637bce5a04146108685780638a8c523c146108935761038c565b8063715018a61461078057806371fc468814610797578063730c1888146107c0578063751039fc146107e95761038c565b80634fbee193116102905780634fbee193146106b05780636a486a8e146106ed5780636ddd17131461071857806370a08231146107435761038c565b8063395093511461061d57806349bd5a5e1461065a5780634a62bb65146106855761038c565b8063199ffc721161032357806327c8f835116102fd57806327c8f835146105715780632c3e486c1461059c5780632e82f1a0146105c7578063313ce567146105f25761038c565b8063199ffc72146104e0578063203e727e1461050b57806323b872dd146105345761038c565b80631694505e1161035f5780631694505e1461043657806318160ddd146104615780631816467f1461048c578063184c16c5146104b55761038c565b806306fdde0314610391578063095ea7b3146103bc57806310d5de53146103f95761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610dd3565b6040516103b39190614073565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de919061412e565b610de2565b6040516103f09190614189565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b91906141a4565b610e00565b60405161042d9190614189565b60405180910390f35b34801561044257600080fd5b5061044b610e20565b6040516104589190614230565b60405180910390f35b34801561046d57600080fd5b50610476610e44565b604051610483919061425a565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906141a4565b610e4e565b005b3480156104c157600080fd5b506104ca610f0e565b6040516104d7919061425a565b60405180910390f35b3480156104ec57600080fd5b506104f5610f14565b604051610502919061425a565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190614275565b610f1a565b005b34801561054057600080fd5b5061055b600480360381019061055691906142a2565b611029565b6040516105689190614189565b60405180910390f35b34801561057d57600080fd5b50610586611121565b6040516105939190614304565b60405180910390f35b3480156105a857600080fd5b506105b1611127565b6040516105be919061425a565b60405180910390f35b3480156105d357600080fd5b506105dc61112d565b6040516105e99190614189565b60405180910390f35b3480156105fe57600080fd5b50610607611140565b604051610614919061433b565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f919061412e565b611149565b6040516106519190614189565b60405180910390f35b34801561066657600080fd5b5061066f6111f5565b60405161067c9190614304565b60405180910390f35b34801561069157600080fd5b5061069a611219565b6040516106a79190614189565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d291906141a4565b61122c565b6040516106e49190614189565b60405180910390f35b3480156106f957600080fd5b50610702611282565b60405161070f919061425a565b60405180910390f35b34801561072457600080fd5b5061072d611288565b60405161073a9190614189565b60405180910390f35b34801561074f57600080fd5b5061076a600480360381019061076591906141a4565b61129b565b604051610777919061425a565b60405180910390f35b34801561078c57600080fd5b506107956112e3565b005b3480156107a357600080fd5b506107be60048036038101906107b99190614275565b61136b565b005b3480156107cc57600080fd5b506107e760048036038101906107e29190614382565b611440565b005b3480156107f557600080fd5b506107fe611580565b60405161080b9190614189565b60405180910390f35b34801561082057600080fd5b5061083b600480360381019061083691906143d5565b611620565b005b34801561084957600080fd5b506108526116f7565b60405161085f9190614304565b60405180910390f35b34801561087457600080fd5b5061087d61171d565b60405161088a919061425a565b60405180910390f35b34801561089f57600080fd5b506108a8611723565b005b3480156108b657600080fd5b506108bf6117de565b6040516108cc9190614304565b60405180910390f35b3480156108e157600080fd5b506108ea611808565b6040516108f79190614304565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190614415565b61182e565b005b34801561093557600080fd5b5061093e6118c7565b60405161094b9190614073565b60405180910390f35b34801561096057600080fd5b5061097b600480360381019061097691906143d5565b61194f565b005b34801561098957600080fd5b50610992611a67565b60405161099f919061425a565b60405180910390f35b3480156109b457600080fd5b506109bd611a6d565b6040516109ca919061425a565b60405180910390f35b3480156109df57600080fd5b506109e8611a73565b6040516109f5919061425a565b60405180910390f35b348015610a0a57600080fd5b50610a13611a79565b604051610a20919061425a565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b919061412e565b611a7f565b604051610a5d9190614189565b60405180910390f35b348015610a7257600080fd5b50610a7b611b6a565b604051610a88919061425a565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab3919061412e565b611b70565b604051610ac59190614189565b60405180910390f35b348015610ada57600080fd5b50610af56004803603810190610af091906141a4565b611b8e565b005b348015610b0357600080fd5b50610b1e6004803603810190610b1991906141a4565b611c4e565b604051610b2b9190614189565b60405180910390f35b348015610b4057600080fd5b50610b49611c6e565b604051610b569190614189565b60405180910390f35b348015610b6b57600080fd5b50610b866004803603810190610b819190614275565b611c81565b005b348015610b9457600080fd5b50610baf6004803603810190610baa91906143d5565b611d94565b005b348015610bbd57600080fd5b50610bd86004803603810190610bd39190614275565b611eb9565b005b348015610be657600080fd5b50610bef611fc8565b604051610bfc9190614189565b60405180910390f35b348015610c1157600080fd5b50610c1a611fdb565b604051610c27919061425a565b60405180910390f35b348015610c3c57600080fd5b50610c576004803603810190610c529190614275565b611fe1565b604051610c649190614189565b60405180910390f35b348015610c7957600080fd5b50610c82612136565b604051610c8f919061425a565b60405180910390f35b348015610ca457600080fd5b50610cbf6004803603810190610cba9190614442565b61213c565b604051610ccc919061425a565b60405180910390f35b348015610ce157600080fd5b50610cea6121c3565b604051610cf7919061425a565b60405180910390f35b348015610d0c57600080fd5b50610d156121c9565b604051610d229190614189565b60405180910390f35b348015610d3757600080fd5b50610d526004803603810190610d4d9190614275565b612269565b005b348015610d6057600080fd5b50610d6961233e565b604051610d76919061425a565b60405180910390f35b348015610d8b57600080fd5b50610da66004803603810190610da191906141a4565b612344565b005b348015610db457600080fd5b50610dbd61243b565b604051610dca919061425a565b60405180910390f35b6060610ddd6118c7565b905090565b6000610df6610def612441565b8484612449565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610e56612441565b73ffffffffffffffffffffffffffffffffffffffff16610e746117de565b73ffffffffffffffffffffffffffffffffffffffff1614610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec1906144ce565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b610f22612441565b73ffffffffffffffffffffffffffffffffffffffff16610f406117de565b73ffffffffffffffffffffffffffffffffffffffff1614610f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8d906144ce565b60405180910390fd5b670de0b6b3a76400006103e86001610fac610e44565b610fb6919061451d565b610fc091906145a6565b610fca91906145a6565b81101561100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100390614649565b60405180910390fd5b670de0b6b3a764000081611020919061451d565b60088190555050565b6000611036848484612612565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611081612441565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f8906146db565b60405180910390fd5b6111158561110d612441565b858403612449565b60019150509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006111eb611156612441565b848460016000611164612441565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e691906146fb565b612449565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112eb612441565b73ffffffffffffffffffffffffffffffffffffffff166113096117de565b73ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611356906144ce565b60405180910390fd5b61136960006131a9565b565b611373612441565b73ffffffffffffffffffffffffffffffffffffffff166113916117de565b73ffffffffffffffffffffffffffffffffffffffff16146113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de906144ce565b60405180910390fd5b806017819055506017546014819055506063601454111561143d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114349061479d565b60405180910390fd5b50565b611448612441565b73ffffffffffffffffffffffffffffffffffffffff166114666117de565b73ffffffffffffffffffffffffffffffffffffffff16146114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b3906144ce565b60405180910390fd5b610258831015611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f89061482f565b60405180910390fd5b6103e88211158015611514575060008210155b611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a906148c1565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b600061158a612441565b73ffffffffffffffffffffffffffffffffffffffff166115a86117de565b73ffffffffffffffffffffffffffffffffffffffff16146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906144ce565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b611628612441565b73ffffffffffffffffffffffffffffffffffffffff166116466117de565b73ffffffffffffffffffffffffffffffffffffffff161461169c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611693906144ce565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b61172b612441565b73ffffffffffffffffffffffffffffffffffffffff166117496117de565b73ffffffffffffffffffffffffffffffffffffffff161461179f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611796906144ce565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611836612441565b73ffffffffffffffffffffffffffffffffffffffff166118546117de565b73ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a1906144ce565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b6060600062989680486118da91906145a6565b905060006040518060400160405280600681526020017f475745493a2000000000000000000000000000000000000000000000000000008152509050806119286119238461326f565b61333d565b60405160200161193992919061491d565b6040516020818303038152906040529250505090565b611957612441565b73ffffffffffffffffffffffffffffffffffffffff166119756117de565b73ffffffffffffffffffffffffffffffffffffffff16146119cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c2906144ce565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a50906149b3565b60405180910390fd5b611a6382826135d7565b5050565b60175481565b60105481565b601a5481565b60195481565b60008060016000611a8e612441565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4290614a45565b60405180910390fd5b611b5f611b56612441565b85858403612449565b600191505092915050565b600e5481565b6000611b84611b7d612441565b8484612612565b6001905092915050565b611b96612441565b73ffffffffffffffffffffffffffffffffffffffff16611bb46117de565b73ffffffffffffffffffffffffffffffffffffffff1614611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c01906144ce565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d6020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611c89612441565b73ffffffffffffffffffffffffffffffffffffffff16611ca76117de565b73ffffffffffffffffffffffffffffffffffffffff1614611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf4906144ce565b60405180910390fd5b611d0681613678565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611d4c90614a96565b60006040518083038185875af1925050503d8060008114611d89576040519150601f19603f3d011682016040523d82523d6000602084013e611d8e565b606091505b50505050565b611d9c612441565b73ffffffffffffffffffffffffffffffffffffffff16611dba6117de565b73ffffffffffffffffffffffffffffffffffffffff1614611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e07906144ce565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ead9190614189565b60405180910390a25050565b611ec1612441565b73ffffffffffffffffffffffffffffffffffffffff16611edf6117de565b73ffffffffffffffffffffffffffffffffffffffff1614611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c906144ce565b60405180910390fd5b670de0b6b3a76400006103e86005611f4b610e44565b611f55919061451d565b611f5f91906145a6565b611f6991906145a6565b811015611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290614b1d565b60405180910390fd5b670de0b6b3a764000081611fbf919061451d565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b6000611feb612441565b73ffffffffffffffffffffffffffffffffffffffff166120096117de565b73ffffffffffffffffffffffffffffffffffffffff161461205f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612056906144ce565b60405180910390fd5b620186a0600161206d610e44565b612077919061451d565b61208191906145a6565b8210156120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90614baf565b60405180910390fd5b6103e860056120d0610e44565b6120da919061451d565b6120e491906145a6565b821115612126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211d90614c41565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006121d3612441565b73ffffffffffffffffffffffffffffffffffffffff166121f16117de565b73ffffffffffffffffffffffffffffffffffffffff1614612247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223e906144ce565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b612271612441565b73ffffffffffffffffffffffffffffffffffffffff1661228f6117de565b73ffffffffffffffffffffffffffffffffffffffff16146122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906144ce565b60405180910390fd5b806019819055506019546018819055506063601854111561233b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123329061479d565b60405180910390fd5b50565b60165481565b61234c612441565b73ffffffffffffffffffffffffffffffffffffffff1661236a6117de565b73ffffffffffffffffffffffffffffffffffffffff16146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b7906144ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361242f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242690614cd3565b60405180910390fd5b612438816131a9565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af90614d65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90614df7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612605919061425a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267890614e89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e790614f1b565b60405180910390fd5b6000810361270957612704838360006138b5565b6131a4565b601160009054906101000a900460ff1615612dcc576127266117de565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561279457506127646117de565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127cd5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612807575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128205750600560149054906101000a900460ff16155b15612dcb57601160019054906101000a900460ff1661291a57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128da5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291090614f87565b60405180910390fd5b5b601360009054906101000a900460ff16801561296957506129396117de565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129c157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a175750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ae25743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a949061503f565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b855750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c2c57600854811115612bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc6906150d1565b60405180910390fd5b600a54612bdb8361129b565b82612be691906146fb565b1115612c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1e9061513d565b60405180910390fd5b612dca565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ccf5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d1e57600854811115612d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d10906151cf565b60405180910390fd5b612dc9565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612dc857600a54612d7b8361129b565b82612d8691906146fb565b1115612dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbe9061513d565b60405180910390fd5b5b5b5b5b5b6000612dd73061129b565b905060006009548210159050808015612dfc5750601160029054906101000a900460ff165b8015612e155750600560149054906101000a900460ff16155b8015612e6b5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ec15750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f175750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f5b576001600560146101000a81548160ff021916908315150217905550612f3f613b34565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130115750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561301b57600090505b6000811561319457601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561307e57506000601854115b156130cb576130ab606461309d60185488613c3890919063ffffffff16565b613c4e90919063ffffffff16565b905080601a60008282546130bf91906146fb565b92505081905550613170565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561312657506000601454115b1561316f57613153606461314560145488613c3890919063ffffffff16565b613c4e90919063ffffffff16565b905080601a600082825461316791906146fb565b925050819055505b5b6000811115613185576131848730836138b5565b5b808561319191906151ef565b94505b61319f8787876138b5565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60606000600161327e84613c64565b01905060008167ffffffffffffffff81111561329d5761329c615223565b5b6040519080825280601f01601f1916602001820160405280156132cf5781602001600182028036833780820191505090505b509050600082602001820190505b600115613332578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161332657613325614577565b5b049450600085036132dd575b819350505050919050565b606060008290506000815190506000600267ffffffffffffffff81111561336757613366615223565b5b6040519080825280601f01601f1916602001820160405280156133995781602001600182028036833780820191505090505b509050600081905060028311156135ab57836002846133b891906151ef565b815181106133c9576133c8615252565b5b602001015160f81c60f81b816000815181106133e8576133e7615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508360018461342591906151ef565b8151811061343657613435615252565b5b602001015160f81c60f81b8160018151811061345557613454615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060028461349391906151ef565b67ffffffffffffffff8111156134ac576134ab615223565b5b6040519080825280601f01601f1916602001820160405280156134de5781602001600182028036833780820191505090505b509050600081905060005b6002866134f691906151ef565b811015613570578681815181106135105761350f615252565b5b602001015160f81c60f81b82828151811061352e5761352d615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061356890615281565b9150506134e9565b5061357a81613db7565b9150818460405160200161358f929190615315565b60405160208183030381529060405296505050505050506135d2565b856040516020016135bc9190615390565b6040516020818303038152906040529450505050505b919050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff81111561369557613694615223565b5b6040519080825280602002602001820160405280156136c35781602001602082028036833780820191505090505b50905030816000815181106136db576136da615252565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a491906153c7565b816001815181106137b8576137b7615252565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061381d307f000000000000000000000000000000000000000000000000000000000000000084612449565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161387f9594939291906154ed565b600060405180830381600087803b15801561389957600080fd5b505af11580156138ad573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391b90614e89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161398a90614f1b565b60405180910390fd5b61399e838383613fd0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1b906155b9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ab791906146fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b1b919061425a565b60405180910390a3613b2e848484613fd5565b50505050565b6000613b3f3061129b565b90506000601a549050600080831480613b585750600082145b15613b6557505050613c36565b6014600954613b74919061451d565b831115613b8d576014600954613b8a919061451d565b92505b6000839050613b9b81613678565b6000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613be990614a96565b60006040518083038185875af1925050503d8060008114613c26576040519150601f19603f3d011682016040523d82523d6000602084013e613c2b565b606091505b505080925050505050505b565b60008183613c46919061451d565b905092915050565b60008183613c5c91906145a6565b905092915050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613cc2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613cb857613cb7614577565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613cff576d04ee2d6d415b85acef81000000008381613cf557613cf4614577565b5b0492506020810190505b662386f26fc100008310613d2e57662386f26fc100008381613d2457613d23614577565b5b0492506010810190505b6305f5e1008310613d57576305f5e1008381613d4d57613d4c614577565b5b0492506008810190505b6127108310613d7c576127108381613d7257613d71614577565b5b0492506004810190505b60648310613d9f5760648381613d9557613d94614577565b5b0492506002810190505b600a8310613dae576001810190505b80915050919050565b6060600082905060008151905060006003600183613dd591906151ef565b613ddf91906145a6565b905060008183613def91906146fb565b67ffffffffffffffff811115613e0857613e07615223565b5b6040519080825280601f01601f191660200182016040528015613e3a5781602001600182028036833780820191505090505b50905060006001905060005b84811015613fc2578560018287613e5d91906151ef565b613e6791906151ef565b81518110613e7857613e77615252565b5b602001015160f81c60f81b83838688613e9191906146fb565b613e9b91906151ef565b81518110613eac57613eab615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506002600382613eea91906155d9565b148015613f035750600185613eff91906151ef565b8114155b15613fa2578180613f1390615281565b9250507f2c0000000000000000000000000000000000000000000000000000000000000083838688613f4591906146fb565b613f4f91906151ef565b81518110613f6057613f5f615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180613f9a90615281565b925050613fb1565b8180613fad90615281565b9250505b80613fbb90615281565b9050613e46565b508195505050505050919050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614014578082015181840152602081019050613ff9565b83811115614023576000848401525b50505050565b6000601f19601f8301169050919050565b600061404582613fda565b61404f8185613fe5565b935061405f818560208601613ff6565b61406881614029565b840191505092915050565b6000602082019050818103600083015261408d818461403a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140c58261409a565b9050919050565b6140d5816140ba565b81146140e057600080fd5b50565b6000813590506140f2816140cc565b92915050565b6000819050919050565b61410b816140f8565b811461411657600080fd5b50565b60008135905061412881614102565b92915050565b6000806040838503121561414557614144614095565b5b6000614153858286016140e3565b925050602061416485828601614119565b9150509250929050565b60008115159050919050565b6141838161416e565b82525050565b600060208201905061419e600083018461417a565b92915050565b6000602082840312156141ba576141b9614095565b5b60006141c8848285016140e3565b91505092915050565b6000819050919050565b60006141f66141f16141ec8461409a565b6141d1565b61409a565b9050919050565b6000614208826141db565b9050919050565b600061421a826141fd565b9050919050565b61422a8161420f565b82525050565b60006020820190506142456000830184614221565b92915050565b614254816140f8565b82525050565b600060208201905061426f600083018461424b565b92915050565b60006020828403121561428b5761428a614095565b5b600061429984828501614119565b91505092915050565b6000806000606084860312156142bb576142ba614095565b5b60006142c9868287016140e3565b93505060206142da868287016140e3565b92505060406142eb86828701614119565b9150509250925092565b6142fe816140ba565b82525050565b600060208201905061431960008301846142f5565b92915050565b600060ff82169050919050565b6143358161431f565b82525050565b6000602082019050614350600083018461432c565b92915050565b61435f8161416e565b811461436a57600080fd5b50565b60008135905061437c81614356565b92915050565b60008060006060848603121561439b5761439a614095565b5b60006143a986828701614119565b93505060206143ba86828701614119565b92505060406143cb8682870161436d565b9150509250925092565b600080604083850312156143ec576143eb614095565b5b60006143fa858286016140e3565b925050602061440b8582860161436d565b9150509250929050565b60006020828403121561442b5761442a614095565b5b60006144398482850161436d565b91505092915050565b6000806040838503121561445957614458614095565b5b6000614467858286016140e3565b9250506020614478858286016140e3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144b8602083613fe5565b91506144c382614482565b602082019050919050565b600060208201905081810360008301526144e7816144ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614528826140f8565b9150614533836140f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561456c5761456b6144ee565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145b1826140f8565b91506145bc836140f8565b9250826145cc576145cb614577565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614633602f83613fe5565b915061463e826145d7565b604082019050919050565b6000602082019050818103600083015261466281614626565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006146c5602883613fe5565b91506146d082614669565b604082019050919050565b600060208201905081810360008301526146f4816146b8565b9050919050565b6000614706826140f8565b9150614711836140f8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614746576147456144ee565b5b828201905092915050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614787601d83613fe5565b915061479282614751565b602082019050919050565b600060208201905081810360008301526147b68161477a565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614819603383613fe5565b9150614824826147bd565b604082019050919050565b600060208201905081810360008301526148488161480c565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006148ab603083613fe5565b91506148b68261484f565b604082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b600081905092915050565b60006148f782613fda565b61490181856148e1565b9350614911818560208601613ff6565b80840191505092915050565b600061492982856148ec565b915061493582846148ec565b91508190509392505050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061499d603983613fe5565b91506149a882614941565b604082019050919050565b600060208201905081810360008301526149cc81614990565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a2f602583613fe5565b9150614a3a826149d3565b604082019050919050565b60006020820190508181036000830152614a5e81614a22565b9050919050565b600081905092915050565b50565b6000614a80600083614a65565b9150614a8b82614a70565b600082019050919050565b6000614aa182614a73565b9150819050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b07602483613fe5565b9150614b1282614aab565b604082019050919050565b60006020820190508181036000830152614b3681614afa565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614b99603583613fe5565b9150614ba482614b3d565b604082019050919050565b60006020820190508181036000830152614bc881614b8c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c2b603483613fe5565b9150614c3682614bcf565b604082019050919050565b60006020820190508181036000830152614c5a81614c1e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614cbd602683613fe5565b9150614cc882614c61565b604082019050919050565b60006020820190508181036000830152614cec81614cb0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d4f602483613fe5565b9150614d5a82614cf3565b604082019050919050565b60006020820190508181036000830152614d7e81614d42565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614de1602283613fe5565b9150614dec82614d85565b604082019050919050565b60006020820190508181036000830152614e1081614dd4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e73602583613fe5565b9150614e7e82614e17565b604082019050919050565b60006020820190508181036000830152614ea281614e66565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f05602383613fe5565b9150614f1082614ea9565b604082019050919050565b60006020820190508181036000830152614f3481614ef8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f71601683613fe5565b9150614f7c82614f3b565b602082019050919050565b60006020820190508181036000830152614fa081614f64565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615029604983613fe5565b915061503482614fa7565b606082019050919050565b600060208201905081810360008301526150588161501c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006150bb603583613fe5565b91506150c68261505f565b604082019050919050565b600060208201905081810360008301526150ea816150ae565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615127601383613fe5565b9150615132826150f1565b602082019050919050565b600060208201905081810360008301526151568161511a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006151b9603683613fe5565b91506151c48261515d565b604082019050919050565b600060208201905081810360008301526151e8816151ac565b9050919050565b60006151fa826140f8565b9150615205836140f8565b925082821015615218576152176144ee565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061528c826140f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036152be576152bd6144ee565b5b600182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b60006152ff6001836148e1565b915061530a826152c9565b600182019050919050565b600061532182856148ec565b915061532c826152f2565b915061533882846148ec565b91508190509392505050565b7f302e000000000000000000000000000000000000000000000000000000000000600082015250565b600061537a6002836148e1565b915061538582615344565b600282019050919050565b600061539b8261536d565b91506153a782846148ec565b915081905092915050565b6000815190506153c1816140cc565b92915050565b6000602082840312156153dd576153dc614095565b5b60006153eb848285016153b2565b91505092915050565b6000819050919050565b600061541961541461540f846153f4565b6141d1565b6140f8565b9050919050565b615429816153fe565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615464816140ba565b82525050565b6000615476838361545b565b60208301905092915050565b6000602082019050919050565b600061549a8261542f565b6154a4818561543a565b93506154af8361544b565b8060005b838110156154e05781516154c7888261546a565b97506154d283615482565b9250506001810190506154b3565b5085935050505092915050565b600060a082019050615502600083018861424b565b61550f6020830187615420565b8181036040830152615521818661548f565b905061553060608301856142f5565b61553d608083018461424b565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006155a3602683613fe5565b91506155ae82615547565b604082019050919050565b600060208201905081810360008301526155d281615596565b9050919050565b60006155e4826140f8565b91506155ef836140f8565b9250826155ff576155fe614577565b5b82820690509291505056fea26469706673582212204965d3b43419a0523c64b091f4f1e9e5bbcd8a02105d40a4c9a742b7d82fd9ae64736f6c634300080d00330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106103855760003560e01c80638da5cb5b116101d1578063bbc0c74211610102578063d85ba063116100a0578063eba4c3331161006f578063eba4c33314610d2b578063f11a24d314610d54578063f2fde38b14610d7f578063f8b45b0514610da85761038c565b8063d85ba06314610c6d578063dd62ed3e14610c98578063e2f4560514610cd5578063e884f26014610d005761038c565b8063c18bc195116100dc578063c18bc19514610bb1578063c876d0b914610bda578063c8c8ebe414610c05578063d257b34f14610c305761038c565b8063bbc0c74214610b34578063bffda98214610b5f578063c024666814610b885761038c565b80639fccce321161016f578063a4c82a0011610149578063a4c82a0014610a66578063a9059cbb14610a91578063aacebbe314610ace578063b62496f514610af75761038c565b80639fccce32146109d3578063a0d82dc5146109fe578063a457c2d714610a295761038c565b806395d89b41116101ab57806395d89b41146109295780639a7a23d6146109545780639c3b4fdc1461097d5780639ec22c0e146109a85761038c565b80638da5cb5b146108aa5780638ea5220f146108d5578063924de9b7146109005761038c565b806339509351116102b6578063715018a6116102545780637571336a116102235780637571336a1461081457806375f0a8741461083d5780637bce5a04146108685780638a8c523c146108935761038c565b8063715018a61461078057806371fc468814610797578063730c1888146107c0578063751039fc146107e95761038c565b80634fbee193116102905780634fbee193146106b05780636a486a8e146106ed5780636ddd17131461071857806370a08231146107435761038c565b8063395093511461061d57806349bd5a5e1461065a5780634a62bb65146106855761038c565b8063199ffc721161032357806327c8f835116102fd57806327c8f835146105715780632c3e486c1461059c5780632e82f1a0146105c7578063313ce567146105f25761038c565b8063199ffc72146104e0578063203e727e1461050b57806323b872dd146105345761038c565b80631694505e1161035f5780631694505e1461043657806318160ddd146104615780631816467f1461048c578063184c16c5146104b55761038c565b806306fdde0314610391578063095ea7b3146103bc57806310d5de53146103f95761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610dd3565b6040516103b39190614073565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de919061412e565b610de2565b6040516103f09190614189565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b91906141a4565b610e00565b60405161042d9190614189565b60405180910390f35b34801561044257600080fd5b5061044b610e20565b6040516104589190614230565b60405180910390f35b34801561046d57600080fd5b50610476610e44565b604051610483919061425a565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906141a4565b610e4e565b005b3480156104c157600080fd5b506104ca610f0e565b6040516104d7919061425a565b60405180910390f35b3480156104ec57600080fd5b506104f5610f14565b604051610502919061425a565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190614275565b610f1a565b005b34801561054057600080fd5b5061055b600480360381019061055691906142a2565b611029565b6040516105689190614189565b60405180910390f35b34801561057d57600080fd5b50610586611121565b6040516105939190614304565b60405180910390f35b3480156105a857600080fd5b506105b1611127565b6040516105be919061425a565b60405180910390f35b3480156105d357600080fd5b506105dc61112d565b6040516105e99190614189565b60405180910390f35b3480156105fe57600080fd5b50610607611140565b604051610614919061433b565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f919061412e565b611149565b6040516106519190614189565b60405180910390f35b34801561066657600080fd5b5061066f6111f5565b60405161067c9190614304565b60405180910390f35b34801561069157600080fd5b5061069a611219565b6040516106a79190614189565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d291906141a4565b61122c565b6040516106e49190614189565b60405180910390f35b3480156106f957600080fd5b50610702611282565b60405161070f919061425a565b60405180910390f35b34801561072457600080fd5b5061072d611288565b60405161073a9190614189565b60405180910390f35b34801561074f57600080fd5b5061076a600480360381019061076591906141a4565b61129b565b604051610777919061425a565b60405180910390f35b34801561078c57600080fd5b506107956112e3565b005b3480156107a357600080fd5b506107be60048036038101906107b99190614275565b61136b565b005b3480156107cc57600080fd5b506107e760048036038101906107e29190614382565b611440565b005b3480156107f557600080fd5b506107fe611580565b60405161080b9190614189565b60405180910390f35b34801561082057600080fd5b5061083b600480360381019061083691906143d5565b611620565b005b34801561084957600080fd5b506108526116f7565b60405161085f9190614304565b60405180910390f35b34801561087457600080fd5b5061087d61171d565b60405161088a919061425a565b60405180910390f35b34801561089f57600080fd5b506108a8611723565b005b3480156108b657600080fd5b506108bf6117de565b6040516108cc9190614304565b60405180910390f35b3480156108e157600080fd5b506108ea611808565b6040516108f79190614304565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190614415565b61182e565b005b34801561093557600080fd5b5061093e6118c7565b60405161094b9190614073565b60405180910390f35b34801561096057600080fd5b5061097b600480360381019061097691906143d5565b61194f565b005b34801561098957600080fd5b50610992611a67565b60405161099f919061425a565b60405180910390f35b3480156109b457600080fd5b506109bd611a6d565b6040516109ca919061425a565b60405180910390f35b3480156109df57600080fd5b506109e8611a73565b6040516109f5919061425a565b60405180910390f35b348015610a0a57600080fd5b50610a13611a79565b604051610a20919061425a565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b919061412e565b611a7f565b604051610a5d9190614189565b60405180910390f35b348015610a7257600080fd5b50610a7b611b6a565b604051610a88919061425a565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab3919061412e565b611b70565b604051610ac59190614189565b60405180910390f35b348015610ada57600080fd5b50610af56004803603810190610af091906141a4565b611b8e565b005b348015610b0357600080fd5b50610b1e6004803603810190610b1991906141a4565b611c4e565b604051610b2b9190614189565b60405180910390f35b348015610b4057600080fd5b50610b49611c6e565b604051610b569190614189565b60405180910390f35b348015610b6b57600080fd5b50610b866004803603810190610b819190614275565b611c81565b005b348015610b9457600080fd5b50610baf6004803603810190610baa91906143d5565b611d94565b005b348015610bbd57600080fd5b50610bd86004803603810190610bd39190614275565b611eb9565b005b348015610be657600080fd5b50610bef611fc8565b604051610bfc9190614189565b60405180910390f35b348015610c1157600080fd5b50610c1a611fdb565b604051610c27919061425a565b60405180910390f35b348015610c3c57600080fd5b50610c576004803603810190610c529190614275565b611fe1565b604051610c649190614189565b60405180910390f35b348015610c7957600080fd5b50610c82612136565b604051610c8f919061425a565b60405180910390f35b348015610ca457600080fd5b50610cbf6004803603810190610cba9190614442565b61213c565b604051610ccc919061425a565b60405180910390f35b348015610ce157600080fd5b50610cea6121c3565b604051610cf7919061425a565b60405180910390f35b348015610d0c57600080fd5b50610d156121c9565b604051610d229190614189565b60405180910390f35b348015610d3757600080fd5b50610d526004803603810190610d4d9190614275565b612269565b005b348015610d6057600080fd5b50610d6961233e565b604051610d76919061425a565b60405180910390f35b348015610d8b57600080fd5b50610da66004803603810190610da191906141a4565b612344565b005b348015610db457600080fd5b50610dbd61243b565b604051610dca919061425a565b60405180910390f35b6060610ddd6118c7565b905090565b6000610df6610def612441565b8484612449565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610e56612441565b73ffffffffffffffffffffffffffffffffffffffff16610e746117de565b73ffffffffffffffffffffffffffffffffffffffff1614610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec1906144ce565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b610f22612441565b73ffffffffffffffffffffffffffffffffffffffff16610f406117de565b73ffffffffffffffffffffffffffffffffffffffff1614610f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8d906144ce565b60405180910390fd5b670de0b6b3a76400006103e86001610fac610e44565b610fb6919061451d565b610fc091906145a6565b610fca91906145a6565b81101561100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100390614649565b60405180910390fd5b670de0b6b3a764000081611020919061451d565b60088190555050565b6000611036848484612612565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611081612441565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f8906146db565b60405180910390fd5b6111158561110d612441565b858403612449565b60019150509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006111eb611156612441565b848460016000611164612441565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e691906146fb565b612449565b6001905092915050565b7f000000000000000000000000a6cc9390670cea10b4d57dc7f292cf8a5067d3f381565b601160009054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112eb612441565b73ffffffffffffffffffffffffffffffffffffffff166113096117de565b73ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611356906144ce565b60405180910390fd5b61136960006131a9565b565b611373612441565b73ffffffffffffffffffffffffffffffffffffffff166113916117de565b73ffffffffffffffffffffffffffffffffffffffff16146113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de906144ce565b60405180910390fd5b806017819055506017546014819055506063601454111561143d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114349061479d565b60405180910390fd5b50565b611448612441565b73ffffffffffffffffffffffffffffffffffffffff166114666117de565b73ffffffffffffffffffffffffffffffffffffffff16146114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b3906144ce565b60405180910390fd5b610258831015611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f89061482f565b60405180910390fd5b6103e88211158015611514575060008210155b611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a906148c1565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b600061158a612441565b73ffffffffffffffffffffffffffffffffffffffff166115a86117de565b73ffffffffffffffffffffffffffffffffffffffff16146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906144ce565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b611628612441565b73ffffffffffffffffffffffffffffffffffffffff166116466117de565b73ffffffffffffffffffffffffffffffffffffffff161461169c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611693906144ce565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b61172b612441565b73ffffffffffffffffffffffffffffffffffffffff166117496117de565b73ffffffffffffffffffffffffffffffffffffffff161461179f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611796906144ce565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611836612441565b73ffffffffffffffffffffffffffffffffffffffff166118546117de565b73ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a1906144ce565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b6060600062989680486118da91906145a6565b905060006040518060400160405280600681526020017f475745493a2000000000000000000000000000000000000000000000000000008152509050806119286119238461326f565b61333d565b60405160200161193992919061491d565b6040516020818303038152906040529250505090565b611957612441565b73ffffffffffffffffffffffffffffffffffffffff166119756117de565b73ffffffffffffffffffffffffffffffffffffffff16146119cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c2906144ce565b60405180910390fd5b7f000000000000000000000000a6cc9390670cea10b4d57dc7f292cf8a5067d3f373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a50906149b3565b60405180910390fd5b611a6382826135d7565b5050565b60175481565b60105481565b601a5481565b60195481565b60008060016000611a8e612441565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4290614a45565b60405180910390fd5b611b5f611b56612441565b85858403612449565b600191505092915050565b600e5481565b6000611b84611b7d612441565b8484612612565b6001905092915050565b611b96612441565b73ffffffffffffffffffffffffffffffffffffffff16611bb46117de565b73ffffffffffffffffffffffffffffffffffffffff1614611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c01906144ce565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d6020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611c89612441565b73ffffffffffffffffffffffffffffffffffffffff16611ca76117de565b73ffffffffffffffffffffffffffffffffffffffff1614611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf4906144ce565b60405180910390fd5b611d0681613678565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611d4c90614a96565b60006040518083038185875af1925050503d8060008114611d89576040519150601f19603f3d011682016040523d82523d6000602084013e611d8e565b606091505b50505050565b611d9c612441565b73ffffffffffffffffffffffffffffffffffffffff16611dba6117de565b73ffffffffffffffffffffffffffffffffffffffff1614611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e07906144ce565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ead9190614189565b60405180910390a25050565b611ec1612441565b73ffffffffffffffffffffffffffffffffffffffff16611edf6117de565b73ffffffffffffffffffffffffffffffffffffffff1614611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c906144ce565b60405180910390fd5b670de0b6b3a76400006103e86005611f4b610e44565b611f55919061451d565b611f5f91906145a6565b611f6991906145a6565b811015611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290614b1d565b60405180910390fd5b670de0b6b3a764000081611fbf919061451d565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b6000611feb612441565b73ffffffffffffffffffffffffffffffffffffffff166120096117de565b73ffffffffffffffffffffffffffffffffffffffff161461205f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612056906144ce565b60405180910390fd5b620186a0600161206d610e44565b612077919061451d565b61208191906145a6565b8210156120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90614baf565b60405180910390fd5b6103e860056120d0610e44565b6120da919061451d565b6120e491906145a6565b821115612126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211d90614c41565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006121d3612441565b73ffffffffffffffffffffffffffffffffffffffff166121f16117de565b73ffffffffffffffffffffffffffffffffffffffff1614612247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223e906144ce565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b612271612441565b73ffffffffffffffffffffffffffffffffffffffff1661228f6117de565b73ffffffffffffffffffffffffffffffffffffffff16146122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906144ce565b60405180910390fd5b806019819055506019546018819055506063601854111561233b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123329061479d565b60405180910390fd5b50565b60165481565b61234c612441565b73ffffffffffffffffffffffffffffffffffffffff1661236a6117de565b73ffffffffffffffffffffffffffffffffffffffff16146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b7906144ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361242f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242690614cd3565b60405180910390fd5b612438816131a9565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af90614d65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90614df7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612605919061425a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267890614e89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e790614f1b565b60405180910390fd5b6000810361270957612704838360006138b5565b6131a4565b601160009054906101000a900460ff1615612dcc576127266117de565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561279457506127646117de565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127cd5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612807575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128205750600560149054906101000a900460ff16155b15612dcb57601160019054906101000a900460ff1661291a57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128da5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291090614f87565b60405180910390fd5b5b601360009054906101000a900460ff16801561296957506129396117de565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129c157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a175750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ae25743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a949061503f565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b855750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c2c57600854811115612bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc6906150d1565b60405180910390fd5b600a54612bdb8361129b565b82612be691906146fb565b1115612c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1e9061513d565b60405180910390fd5b612dca565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ccf5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d1e57600854811115612d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d10906151cf565b60405180910390fd5b612dc9565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612dc857600a54612d7b8361129b565b82612d8691906146fb565b1115612dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbe9061513d565b60405180910390fd5b5b5b5b5b5b6000612dd73061129b565b905060006009548210159050808015612dfc5750601160029054906101000a900460ff165b8015612e155750600560149054906101000a900460ff16155b8015612e6b5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ec15750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f175750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f5b576001600560146101000a81548160ff021916908315150217905550612f3f613b34565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130115750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561301b57600090505b6000811561319457601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561307e57506000601854115b156130cb576130ab606461309d60185488613c3890919063ffffffff16565b613c4e90919063ffffffff16565b905080601a60008282546130bf91906146fb565b92505081905550613170565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561312657506000601454115b1561316f57613153606461314560145488613c3890919063ffffffff16565b613c4e90919063ffffffff16565b905080601a600082825461316791906146fb565b925050819055505b5b6000811115613185576131848730836138b5565b5b808561319191906151ef565b94505b61319f8787876138b5565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60606000600161327e84613c64565b01905060008167ffffffffffffffff81111561329d5761329c615223565b5b6040519080825280601f01601f1916602001820160405280156132cf5781602001600182028036833780820191505090505b509050600082602001820190505b600115613332578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161332657613325614577565b5b049450600085036132dd575b819350505050919050565b606060008290506000815190506000600267ffffffffffffffff81111561336757613366615223565b5b6040519080825280601f01601f1916602001820160405280156133995781602001600182028036833780820191505090505b509050600081905060028311156135ab57836002846133b891906151ef565b815181106133c9576133c8615252565b5b602001015160f81c60f81b816000815181106133e8576133e7615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508360018461342591906151ef565b8151811061343657613435615252565b5b602001015160f81c60f81b8160018151811061345557613454615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060028461349391906151ef565b67ffffffffffffffff8111156134ac576134ab615223565b5b6040519080825280601f01601f1916602001820160405280156134de5781602001600182028036833780820191505090505b509050600081905060005b6002866134f691906151ef565b811015613570578681815181106135105761350f615252565b5b602001015160f81c60f81b82828151811061352e5761352d615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061356890615281565b9150506134e9565b5061357a81613db7565b9150818460405160200161358f929190615315565b60405160208183030381529060405296505050505050506135d2565b856040516020016135bc9190615390565b6040516020818303038152906040529450505050505b919050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff81111561369557613694615223565b5b6040519080825280602002602001820160405280156136c35781602001602082028036833780820191505090505b50905030816000815181106136db576136da615252565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a491906153c7565b816001815181106137b8576137b7615252565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061381d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612449565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161387f9594939291906154ed565b600060405180830381600087803b15801561389957600080fd5b505af11580156138ad573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391b90614e89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161398a90614f1b565b60405180910390fd5b61399e838383613fd0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1b906155b9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ab791906146fb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b1b919061425a565b60405180910390a3613b2e848484613fd5565b50505050565b6000613b3f3061129b565b90506000601a549050600080831480613b585750600082145b15613b6557505050613c36565b6014600954613b74919061451d565b831115613b8d576014600954613b8a919061451d565b92505b6000839050613b9b81613678565b6000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613be990614a96565b60006040518083038185875af1925050503d8060008114613c26576040519150601f19603f3d011682016040523d82523d6000602084013e613c2b565b606091505b505080925050505050505b565b60008183613c46919061451d565b905092915050565b60008183613c5c91906145a6565b905092915050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613cc2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613cb857613cb7614577565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613cff576d04ee2d6d415b85acef81000000008381613cf557613cf4614577565b5b0492506020810190505b662386f26fc100008310613d2e57662386f26fc100008381613d2457613d23614577565b5b0492506010810190505b6305f5e1008310613d57576305f5e1008381613d4d57613d4c614577565b5b0492506008810190505b6127108310613d7c576127108381613d7257613d71614577565b5b0492506004810190505b60648310613d9f5760648381613d9557613d94614577565b5b0492506002810190505b600a8310613dae576001810190505b80915050919050565b6060600082905060008151905060006003600183613dd591906151ef565b613ddf91906145a6565b905060008183613def91906146fb565b67ffffffffffffffff811115613e0857613e07615223565b5b6040519080825280601f01601f191660200182016040528015613e3a5781602001600182028036833780820191505090505b50905060006001905060005b84811015613fc2578560018287613e5d91906151ef565b613e6791906151ef565b81518110613e7857613e77615252565b5b602001015160f81c60f81b83838688613e9191906146fb565b613e9b91906151ef565b81518110613eac57613eab615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506002600382613eea91906155d9565b148015613f035750600185613eff91906151ef565b8114155b15613fa2578180613f1390615281565b9250507f2c0000000000000000000000000000000000000000000000000000000000000083838688613f4591906146fb565b613f4f91906151ef565b81518110613f6057613f5f615252565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180613f9a90615281565b925050613fb1565b8180613fad90615281565b9250505b80613fbb90615281565b9050613e46565b508195505050505050919050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614014578082015181840152602081019050613ff9565b83811115614023576000848401525b50505050565b6000601f19601f8301169050919050565b600061404582613fda565b61404f8185613fe5565b935061405f818560208601613ff6565b61406881614029565b840191505092915050565b6000602082019050818103600083015261408d818461403a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140c58261409a565b9050919050565b6140d5816140ba565b81146140e057600080fd5b50565b6000813590506140f2816140cc565b92915050565b6000819050919050565b61410b816140f8565b811461411657600080fd5b50565b60008135905061412881614102565b92915050565b6000806040838503121561414557614144614095565b5b6000614153858286016140e3565b925050602061416485828601614119565b9150509250929050565b60008115159050919050565b6141838161416e565b82525050565b600060208201905061419e600083018461417a565b92915050565b6000602082840312156141ba576141b9614095565b5b60006141c8848285016140e3565b91505092915050565b6000819050919050565b60006141f66141f16141ec8461409a565b6141d1565b61409a565b9050919050565b6000614208826141db565b9050919050565b600061421a826141fd565b9050919050565b61422a8161420f565b82525050565b60006020820190506142456000830184614221565b92915050565b614254816140f8565b82525050565b600060208201905061426f600083018461424b565b92915050565b60006020828403121561428b5761428a614095565b5b600061429984828501614119565b91505092915050565b6000806000606084860312156142bb576142ba614095565b5b60006142c9868287016140e3565b93505060206142da868287016140e3565b92505060406142eb86828701614119565b9150509250925092565b6142fe816140ba565b82525050565b600060208201905061431960008301846142f5565b92915050565b600060ff82169050919050565b6143358161431f565b82525050565b6000602082019050614350600083018461432c565b92915050565b61435f8161416e565b811461436a57600080fd5b50565b60008135905061437c81614356565b92915050565b60008060006060848603121561439b5761439a614095565b5b60006143a986828701614119565b93505060206143ba86828701614119565b92505060406143cb8682870161436d565b9150509250925092565b600080604083850312156143ec576143eb614095565b5b60006143fa858286016140e3565b925050602061440b8582860161436d565b9150509250929050565b60006020828403121561442b5761442a614095565b5b60006144398482850161436d565b91505092915050565b6000806040838503121561445957614458614095565b5b6000614467858286016140e3565b9250506020614478858286016140e3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144b8602083613fe5565b91506144c382614482565b602082019050919050565b600060208201905081810360008301526144e7816144ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614528826140f8565b9150614533836140f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561456c5761456b6144ee565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145b1826140f8565b91506145bc836140f8565b9250826145cc576145cb614577565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614633602f83613fe5565b915061463e826145d7565b604082019050919050565b6000602082019050818103600083015261466281614626565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006146c5602883613fe5565b91506146d082614669565b604082019050919050565b600060208201905081810360008301526146f4816146b8565b9050919050565b6000614706826140f8565b9150614711836140f8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614746576147456144ee565b5b828201905092915050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614787601d83613fe5565b915061479282614751565b602082019050919050565b600060208201905081810360008301526147b68161477a565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614819603383613fe5565b9150614824826147bd565b604082019050919050565b600060208201905081810360008301526148488161480c565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006148ab603083613fe5565b91506148b68261484f565b604082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b600081905092915050565b60006148f782613fda565b61490181856148e1565b9350614911818560208601613ff6565b80840191505092915050565b600061492982856148ec565b915061493582846148ec565b91508190509392505050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061499d603983613fe5565b91506149a882614941565b604082019050919050565b600060208201905081810360008301526149cc81614990565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a2f602583613fe5565b9150614a3a826149d3565b604082019050919050565b60006020820190508181036000830152614a5e81614a22565b9050919050565b600081905092915050565b50565b6000614a80600083614a65565b9150614a8b82614a70565b600082019050919050565b6000614aa182614a73565b9150819050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b07602483613fe5565b9150614b1282614aab565b604082019050919050565b60006020820190508181036000830152614b3681614afa565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614b99603583613fe5565b9150614ba482614b3d565b604082019050919050565b60006020820190508181036000830152614bc881614b8c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c2b603483613fe5565b9150614c3682614bcf565b604082019050919050565b60006020820190508181036000830152614c5a81614c1e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614cbd602683613fe5565b9150614cc882614c61565b604082019050919050565b60006020820190508181036000830152614cec81614cb0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d4f602483613fe5565b9150614d5a82614cf3565b604082019050919050565b60006020820190508181036000830152614d7e81614d42565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614de1602283613fe5565b9150614dec82614d85565b604082019050919050565b60006020820190508181036000830152614e1081614dd4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e73602583613fe5565b9150614e7e82614e17565b604082019050919050565b60006020820190508181036000830152614ea281614e66565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f05602383613fe5565b9150614f1082614ea9565b604082019050919050565b60006020820190508181036000830152614f3481614ef8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f71601683613fe5565b9150614f7c82614f3b565b602082019050919050565b60006020820190508181036000830152614fa081614f64565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615029604983613fe5565b915061503482614fa7565b606082019050919050565b600060208201905081810360008301526150588161501c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006150bb603583613fe5565b91506150c68261505f565b604082019050919050565b600060208201905081810360008301526150ea816150ae565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615127601383613fe5565b9150615132826150f1565b602082019050919050565b600060208201905081810360008301526151568161511a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006151b9603683613fe5565b91506151c48261515d565b604082019050919050565b600060208201905081810360008301526151e8816151ac565b9050919050565b60006151fa826140f8565b9150615205836140f8565b925082821015615218576152176144ee565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061528c826140f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036152be576152bd6144ee565b5b600182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b60006152ff6001836148e1565b915061530a826152c9565b600182019050919050565b600061532182856148ec565b915061532c826152f2565b915061533882846148ec565b91508190509392505050565b7f302e000000000000000000000000000000000000000000000000000000000000600082015250565b600061537a6002836148e1565b915061538582615344565b600282019050919050565b600061539b8261536d565b91506153a782846148ec565b915081905092915050565b6000815190506153c1816140cc565b92915050565b6000602082840312156153dd576153dc614095565b5b60006153eb848285016153b2565b91505092915050565b6000819050919050565b600061541961541461540f846153f4565b6141d1565b6140f8565b9050919050565b615429816153fe565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615464816140ba565b82525050565b6000615476838361545b565b60208301905092915050565b6000602082019050919050565b600061549a8261542f565b6154a4818561543a565b93506154af8361544b565b8060005b838110156154e05781516154c7888261546a565b97506154d283615482565b9250506001810190506154b3565b5085935050505092915050565b600060a082019050615502600083018861424b565b61550f6020830187615420565b8181036040830152615521818661548f565b905061553060608301856142f5565b61553d608083018461424b565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006155a3602683613fe5565b91506155ae82615547565b604082019050919050565b600060208201905081810360008301526155d281615596565b9050919050565b60006155e4826140f8565b91506155ef836140f8565b9250826155ff576155fe614577565b5b82820690509291505056fea26469706673582212204965d3b43419a0523c64b091f4f1e9e5bbcd8a02105d40a4c9a742b7d82fd9ae64736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : _routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
19582:18459:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28054:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4362:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21070:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19662:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3699:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31511:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20233:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20046:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29291:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4565:531;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19765:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20142:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20102:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3597:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5105:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19720:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20332:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31623:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20822:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20412:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3816:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;880:103;;;;;;;;;;;;;:::i;:::-;;30219:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37483:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28412:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29844:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19859:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20714;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28204:155;;;;;;;;;;;;;:::i;:::-;;655:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19896:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30110:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27715:330;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30839:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20788:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20287:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20892:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20857:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5404:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20194:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3968:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31353:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21292:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20372:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37301:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30648:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29577:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20631:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19930:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28801:481;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20680:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4177:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19972:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28595:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30431:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20751:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;992:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20012:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28054:95;28100:13;28133:8;:6;:8::i;:::-;28126:15;;28054:95;:::o;4362:194::-;4470:4;4487:39;4496:12;:10;:12::i;:::-;4510:7;4519:6;4487:8;:39::i;:::-;4544:4;4537:11;;4362:194;;;;:::o;21070:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;19662:51::-;;;:::o;3699:108::-;3760:7;3787:12;;3780:19;;3699:108;:::o;31511:103::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31597:9:::1;31585;;:21;;;;;;;;;;;;;;;;;;31511:103:::0;:::o;20233:47::-;;;;:::o;20046:36::-;;;;:::o;29291:277::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29428:4:::1;29420;29415:1;29399:13;:11;:13::i;:::-;:17;;;;:::i;:::-;29398:26;;;;:::i;:::-;29397:35;;;;:::i;:::-;29387:6;:45;;29365:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;29551:8;29541:6;:19;;;;:::i;:::-;29518:20;:42;;;;29291:277:::0;:::o;4565:531::-;4705:4;4722:36;4732:6;4740:9;4751:6;4722:9;:36::i;:::-;4772:24;4799:11;:19;4811:6;4799:19;;;;;;;;;;;;;;;:33;4819:12;:10;:12::i;:::-;4799:33;;;;;;;;;;;;;;;;4772:60;;4885:6;4865:16;:26;;4843:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4995:57;5004:6;5012:12;:10;:12::i;:::-;5045:6;5026:16;:25;4995:8;:57::i;:::-;5084:4;5077:11;;;4565:531;;;;;:::o;19765:53::-;19811:6;19765:53;:::o;20142:45::-;;;;:::o;20102:33::-;;;;;;;;;;;;;:::o;3597:93::-;3655:5;3680:2;3673:9;;3597:93;:::o;5105:290::-;5218:4;5235:130;5258:12;:10;:12::i;:::-;5285:7;5344:10;5307:11;:25;5319:12;:10;:12::i;:::-;5307:25;;;;;;;;;;;;;;;:34;5333:7;5307:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5235:8;:130::i;:::-;5383:4;5376:11;;5105:290;;;;:::o;19720:38::-;;;:::o;20332:33::-;;;;;;;;;;;;;:::o;31623:126::-;31689:4;31713:19;:28;31733:7;31713:28;;;;;;;;;;;;;;;;;;;;;;;;;31706:35;;31623:126;;;:::o;20822:28::-;;;;:::o;20412:31::-;;;;;;;;;;;;;:::o;3816:143::-;3906:7;3933:9;:18;3943:7;3933:18;;;;;;;;;;;;;;;;3926:25;;3816:143;;;:::o;880:103::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;945:30:::1;972:1;945:18;:30::i;:::-;880:103::o:0;30219:203::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30301:7:::1;30289:9;:19;;;;30334:9;;30319:12;:24;;;;30378:2;30362:12;;:18;;30354:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;30219:203:::0;:::o;37483:555::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37685:3:::1;37662:19;:26;;37640:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;37812:4;37800:8;:16;;:33;;;;;37832:1;37820:8;:13;;37800:33;37778:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;37938:19;37920:15;:37;;;;37987:8;37968:16;:27;;;;38022:8;38006:13;;:24;;;;;;;;;;;;;;;;;;37483:555:::0;;;:::o;28412:121::-;28464:4;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28498:5:::1;28481:14;;:22;;;;;;;;;;;;;;;;;;28521:4;28514:11;;28412:121:::0;:::o;29844:169::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30001:4:::1;29959:31;:39;29991:6;29959:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;29844:169:::0;;:::o;19859:30::-;;;;;;;;;;;;;:::o;20714:::-;;;;:::o;28204:155::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28275:4:::1;28259:13;;:20;;;;;;;;;;;;;;;;;;28304:4;28290:11;;:18;;;;;;;;;;;;;;;;;;28336:15;28319:14;:32;;;;28204:155::o:0;655:87::-;701:7;728:6;;;;;;;;;;;721:13;;655:87;:::o;19896:24::-;;;;;;;;;;;;;:::o;30110:100::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30195:7:::1;30181:11;;:21;;;;;;;;;;;;;;;;;;30110:100:::0;:::o;27715:330::-;27763:13;27789:14;27822:3;27806:13;:19;;;;:::i;:::-;27789:36;;27839:25;:36;;;;;;;;;;;;;;;;;;;27941:11;27971:51;28005:16;28014:6;28005:8;:16::i;:::-;27971:33;:51::i;:::-;27909:128;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27889:148;;;;27715:330;:::o;30839:307::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30985:13:::1;30977:21;;:4;:21;;::::0;30955:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;31097:41;31126:4;31132:5;31097:28;:41::i;:::-;30839:307:::0;;:::o;20788:24::-;;;;:::o;20287:35::-;;;;:::o;20892:27::-;;;;:::o;20857:25::-;;;;:::o;5404:476::-;5522:4;5539:24;5566:11;:25;5578:12;:10;:12::i;:::-;5566:25;;;;;;;;;;;;;;;:34;5592:7;5566:34;;;;;;;;;;;;;;;;5539:61;;5653:15;5633:16;:35;;5611:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5769:67;5778:12;:10;:12::i;:::-;5792:7;5820:15;5801:16;:34;5769:8;:67::i;:::-;5868:4;5861:11;;;5404:476;;;;:::o;20194:29::-;;;;:::o;3968:200::-;4079:4;4096:42;4106:12;:10;:12::i;:::-;4120:9;4131:6;4096:9;:42::i;:::-;4156:4;4149:11;;3968:200;;;;:::o;31353:149::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31476:18:::1;31458:15;;:36;;;;;;;;;;;;;;;;;;31353:149:::0;:::o;21292:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20372:33::-;;;;;;;;;;;;;:::o;37301:173::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37371:24:::1;37388:6;37371:16;:24::i;:::-;37417:9;;;;;;;;;;;37409:23;;37440:21;37409:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37301:173:::0;:::o;30648:182::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30764:8:::1;30733:19;:28;30753:7;30733:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;30804:7;30788:34;;;30813:8;30788:34;;;;;;:::i;:::-;;;;;;;;30648:182:::0;;:::o;29577:258::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29717:4:::1;29709;29704:1;29688:13;:11;:13::i;:::-;:17;;;;:::i;:::-;29687:26;;;;:::i;:::-;29686:35;;;;:::i;:::-;29676:6;:45;;29654:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;29818:8;29808:6;:19;;;;:::i;:::-;29796:9;:31;;;;29577:258:::0;:::o;20631:39::-;;;;;;;;;;;;;:::o;19930:35::-;;;;:::o;28801:481::-;28898:4;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28972:6:::1;28967:1;28951:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28950:28;;;;:::i;:::-;28937:9;:41;;28915:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;29127:4;29122:1;29106:13;:11;:13::i;:::-;:17;;;;:::i;:::-;29105:26;;;;:::i;:::-;29092:9;:39;;29070:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;29243:9;29222:18;:30;;;;29270:4;29263:11;;28801:481:::0;;;:::o;20680:27::-;;;;:::o;4177:176::-;4291:7;4318:11;:18;4330:5;4318:18;;;;;;;;;;;;;;;:27;4337:7;4318:27;;;;;;;;;;;;;;;;4311:34;;4177:176;;;;:::o;19972:33::-;;;;:::o;28595:135::-;28655:4;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28695:5:::1;28672:20;;:28;;;;;;;;;;;;;;;;;;28718:4;28711:11;;28595:135:::0;:::o;30431:208::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30515:7:::1;30502:10;:20;;;;30549:10;;30533:13;:26;;;;30595:2;30578:13;;:19;;30570:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;30431:208:::0;:::o;20751:30::-;;;;:::o;992:238::-;802:12;:10;:12::i;:::-;791:23;;:7;:5;:7::i;:::-;:23;;;783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1115:1:::1;1095:22;;:8;:22;;::::0;1073:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1194:28;1213:8;1194:18;:28::i;:::-;992:238:::0;:::o;20012:24::-;;;;:::o;171:98::-;224:7;251:10;244:17;;171:98;:::o;7687:381::-;7840:1;7823:19;;:5;:19;;;7815:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7921:1;7902:21;;:7;:21;;;7894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8006:6;7976:11;:18;7988:5;7976:18;;;;;;;;;;;;;;;:27;7995:7;7976:27;;;;;;;;;;;;;;;:36;;;;8044:7;8028:32;;8037:5;8028:32;;;8053:6;8028:32;;;;;;:::i;:::-;;;;;;;;7687:381;;;:::o;31809:4254::-;31957:1;31941:18;;:4;:18;;;31933:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32034:1;32020:16;;:2;:16;;;32012:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;32104:1;32094:6;:11;32090:93;;32122:28;32138:4;32144:2;32148:1;32122:15;:28::i;:::-;32165:7;;32090:93;32200:14;;;;;;;;;;;32196:2395;;;32261:7;:5;:7::i;:::-;32253:15;;:4;:15;;;;:49;;;;;32295:7;:5;:7::i;:::-;32289:13;;:2;:13;;;;32253:49;:86;;;;;32337:1;32323:16;;:2;:16;;;;32253:86;:128;;;;;32374:6;32360:21;;:2;:21;;;;32253:128;:158;;;;;32403:8;;;;;;;;;;;32402:9;32253:158;32231:2349;;;32451:13;;;;;;;;;;;32446:223;;32523:19;:25;32543:4;32523:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;32552:19;:23;32572:2;32552:23;;;;;;;;;;;;;;;;;;;;;;;;;32523:52;32489:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;32446:223;32848:20;;;;;;;;;;;:58;;;;;32899:7;:5;:7::i;:::-;32893:13;;:2;:13;;;;32848:58;:113;;;;;32945:15;32931:30;;:2;:30;;;;32848:113;:168;;;;;32987:25;:29;33013:2;32987:29;;;;;;;;;;;;;;;;;;;;;;;;;32986:30;32848:168;32822:547;;;33135:12;33093:28;:39;33122:9;33093:39;;;;;;;;;;;;;;;;:54;33059:213;;;;;;;;;;;;:::i;:::-;;;;;;;;;33337:12;33295:28;:39;33324:9;33295:39;;;;;;;;;;;;;;;:54;;;;32822:547;33444:25;:31;33470:4;33444:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;33501:31;:35;33533:2;33501:35;;;;;;;;;;;;;;;;;;;;;;;;;33500:36;33444:92;33418:1147;;;33623:20;;33613:6;:30;;33579:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;33831:9;;33814:13;33824:2;33814:9;:13::i;:::-;33805:6;:22;;;;:::i;:::-;:35;;33771:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;33418:1147;;;34009:25;:29;34035:2;34009:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;34064:31;:37;34096:4;34064:37;;;;;;;;;;;;;;;;;;;;;;;;;34063:38;34009:92;33983:582;;;34188:20;;34178:6;:30;;34144:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;33983:582;;;34345:31;:35;34377:2;34345:35;;;;;;;;;;;;;;;;;;;;;;;;;34340:225;;34465:9;;34448:13;34458:2;34448:9;:13::i;:::-;34439:6;:22;;;;:::i;:::-;:35;;34405:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;34340:225;33983:582;33418:1147;32231:2349;32196:2395;34604:28;34635:24;34653:4;34635:9;:24::i;:::-;34604:55;;34673:12;34712:18;;34688:20;:42;;34673:57;;34762:7;:35;;;;;34786:11;;;;;;;;;;;34762:35;:61;;;;;34815:8;;;;;;;;;;;34814:9;34762:61;:110;;;;;34841:25;:31;34867:4;34841:31;;;;;;;;;;;;;;;;;;;;;;;;;34840:32;34762:110;:153;;;;;34890:19;:25;34910:4;34890:25;;;;;;;;;;;;;;;;;;;;;;;;;34889:26;34762:153;:194;;;;;34933:19;:23;34953:2;34933:23;;;;;;;;;;;;;;;;;;;;;;;;;34932:24;34762:194;34744:328;;;34994:4;34983:8;;:15;;;;;;;;;;;;;;;;;;35016:10;:8;:10::i;:::-;35055:5;35044:8;;:16;;;;;;;;;;;;;;;;;;34744:328;35085:12;35101:8;;;;;;;;;;;35100:9;35085:24;;35212:19;:25;35232:4;35212:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;35241:19;:23;35261:2;35241:23;;;;;;;;;;;;;;;;;;;;;;;;;35212:52;35208:100;;;35291:5;35281:15;;35208:100;35321:12;35426:7;35422:587;;;35478:25;:29;35504:2;35478:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;35527:1;35511:13;;:17;35478:50;35474:384;;;35556:34;35586:3;35556:25;35567:13;;35556:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;35549:41;;35625:4;35609:12;;:20;;;;;;;:::i;:::-;;;;;;;;35474:384;;;35691:25;:31;35717:4;35691:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;35741:1;35726:12;;:16;35691:51;35687:171;;;35770:33;35799:3;35770:24;35781:12;;35770:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;35763:40;;35838:4;35822:12;;:20;;;;;;;:::i;:::-;;;;;;;;35687:171;35474:384;35886:1;35879:4;:8;35875:91;;;35908:42;35924:4;35938;35945;35908:15;:42::i;:::-;35875:91;35993:4;35983:14;;;;;:::i;:::-;;;35422:587;36022:33;36038:4;36044:2;36048:6;36022:15;:33::i;:::-;31922:4141;;;;31809:4254;;;;:::o;1239:191::-;1313:16;1332:6;;;;;;;;;;;1313:25;;1358:8;1349:6;;:17;;;;;;;;;;;;;;;;;;1413:8;1382:40;;1403:8;1382:40;;;;;;;;;;;;1302:128;1239:191;:::o;23412:713::-;23468:13;23519:14;23551:1;23536:12;23542:5;23536;:12::i;:::-;:16;23519:33;;23567:20;23601:6;23590:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23567:41;;23623:11;23752:6;23748:2;23744:15;23736:6;23732:28;23725:35;;23789:290;23796:4;23789:290;;;23821:5;;;;;;;;23963:10;23958:2;23951:5;23947:14;23942:32;23937:3;23929:46;24021:2;24012:11;;;;;;:::i;:::-;;;;;24055:1;24046:5;:10;23789:290;24042:21;23789:290;24100:6;24093:13;;;;;23412:713;;;:::o;26227:1479::-;26331:13;26357:24;26390:6;26357:40;;26408:8;26419:11;:18;26408:29;;26492:22;26528:1;26517:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26492:38;;26541:26;26576:8;26541:44;;26687:1;26681:3;:7;26677:1022;;;26724:11;26742:1;26736:3;:7;;;;:::i;:::-;26724:20;;;;;;;;:::i;:::-;;;;;;;;;;26705:13;26719:1;26705:16;;;;;;;;:::i;:::-;;;;;:39;;;;;;;;;;;26778:11;26796:1;26790:3;:7;;;;:::i;:::-;26778:20;;;;;;;;:::i;:::-;;;;;;;;;;26759:13;26773:1;26759:16;;;;;;;;:::i;:::-;;;;;:39;;;;;;;;;;;26906:29;26955:1;26949:3;:7;;;;:::i;:::-;26938:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26906:51;;26972:29;27010:15;26972:54;;27049:6;27044:106;27071:1;27065:3;:7;;;;:::i;:::-;27061:1;:11;27044:106;;;27120:11;27132:1;27120:14;;;;;;;;:::i;:::-;;;;;;;;;;27098:16;27115:1;27098:19;;;;;;;;:::i;:::-;;;;;:36;;;;;;;;;;;27074:3;;;;;:::i;:::-;;;;27044:106;;;;27242:48;27272:16;27242:22;:48::i;:::-;27224:66;;27411:15;27433:8;27394:48;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27380:63;;;;;;;;;;26677:1022;27679:6;27656:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;27642:45;;;;;;26227:1479;;;;:::o;31155:189::-;31272:5;31238:25;:31;31264:4;31238:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;31330:5;31296:40;;31324:4;31296:40;;;;;;;;;;;;31155:189;;:::o;36072:591::-;36198:21;36236:1;36222:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36198:40;;36267:4;36249;36254:1;36249:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36293:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36283:4;36288:1;36283:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;36329:62;36346:4;36361:15;36379:11;36329:8;:62::i;:::-;36431:15;:66;;;36512:11;36538:1;36582:4;36609;36629:15;36431:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36127:536;36072:591;:::o;5889:774::-;6047:1;6029:20;;:6;:20;;;6021:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6131:1;6110:23;;:9;:23;;;6102:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6187:47;6208:6;6216:9;6227:6;6187:20;:47::i;:::-;6248:21;6272:9;:17;6282:6;6272:17;;;;;;;;;;;;;;;;6248:41;;6339:6;6322:13;:23;;6300:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6483:6;6467:13;:22;6447:9;:17;6457:6;6447:17;;;;;;;;;;;;;;;:42;;;;6535:6;6511:9;:20;6521:9;6511:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6577:9;6560:35;;6569:6;6560:35;;;6588:6;6560:35;;;;;;:::i;:::-;;;;;;;;6609:46;6629:6;6637:9;6648:6;6609:19;:46::i;:::-;6010:653;5889:774;;;:::o;36672:620::-;36711:23;36737:24;36755:4;36737:9;:24::i;:::-;36711:50;;36772:25;36800:12;;36772:40;;36823:12;36872:1;36853:15;:20;:46;;;;36898:1;36877:17;:22;36853:46;36849:85;;;36916:7;;;;;36849:85;36990:2;36969:18;;:23;;;;:::i;:::-;36951:15;:41;36947:115;;;37048:2;37027:18;;:23;;;;:::i;:::-;37009:41;;36947:115;37075:26;37104:15;37075:44;;37133:36;37150:18;37133:16;:36::i;:::-;37198:1;37183:12;:16;;;;37235:9;;;;;;;;;;;37227:23;;37258:21;37227:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37213:71;;;;;36700:592;;;;36672:620;:::o;11564:98::-;11622:7;11653:1;11649;:5;;;;:::i;:::-;11642:12;;11564:98;;;;:::o;11964:::-;12022:7;12053:1;12049;:5;;;;:::i;:::-;12042:12;;11964:98;;;;:::o;24134:948::-;24187:7;24207:14;24224:1;24207:18;;24274:8;24265:5;:17;24261:106;;24312:8;24303:17;;;;;;:::i;:::-;;;;;24349:2;24339:12;;;;24261:106;24394:8;24385:5;:17;24381:106;;24432:8;24423:17;;;;;;:::i;:::-;;;;;24469:2;24459:12;;;;24381:106;24514:8;24505:5;:17;24501:106;;24552:8;24543:17;;;;;;:::i;:::-;;;;;24589:2;24579:12;;;;24501:106;24634:7;24625:5;:16;24621:103;;24671:7;24662:16;;;;;;:::i;:::-;;;;;24707:1;24697:11;;;;24621:103;24751:7;24742:5;:16;24738:103;;24788:7;24779:16;;;;;;:::i;:::-;;;;;24824:1;24814:11;;;;24738:103;24868:7;24859:5;:16;24855:103;;24905:7;24896:16;;;;;;:::i;:::-;;;;;24941:1;24931:11;;;;24855:103;24985:7;24976:5;:16;24972:68;;25023:1;25013:11;;;;24972:68;25068:6;25061:13;;;24134:948;;;:::o;25091:1127::-;25184:13;25301:24;25334:6;25301:40;;25352:8;25363:11;:18;25352:29;;25446:11;25472:1;25467;25461:3;:7;;;;:::i;:::-;25460:13;;;;:::i;:::-;25446:27;;25484:22;25525:6;25519:3;:12;;;;:::i;:::-;25509:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25484:48;;25546:6;25555:1;25546:10;;25602:6;25597:576;25618:3;25614:1;:7;25597:576;;;25733:11;25755:1;25751;25745:3;:7;;;;:::i;:::-;:11;;;;:::i;:::-;25733:24;;;;;;;;:::i;:::-;;;;;;;;;;25703:9;25728:1;25719:6;25713:3;:12;;;;:::i;:::-;:16;;;;:::i;:::-;25703:27;;;;;;;;:::i;:::-;;;;;:54;;;;;;;;;;;25858:1;25853;25849;:5;;;;:::i;:::-;:10;:26;;;;;25874:1;25868:3;:7;;;;:::i;:::-;25863:1;:12;;25849:26;25845:317;;;25896:3;;;;;:::i;:::-;;;;25983:11;25953:9;25978:1;25969:6;25963:3;:12;;;;:::i;:::-;:16;;;;:::i;:::-;25953:27;;;;;;;;:::i;:::-;;;;;:41;;;;;;;;;;;26013:3;;;;;:::i;:::-;;;;25845:317;;;26100:3;;;;;:::i;:::-;;;;25845:317;25623:3;;;;:::i;:::-;;;25597:576;;;;26200:9;26186:24;;;;;;;25091:1127;;;:::o;8077:125::-;;;;:::o;8211:124::-;;;;:::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:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:613::-;7236:6;7244;7252;7301:2;7289:9;7280:7;7276:23;7272:32;7269:119;;;7307:79;;:::i;:::-;7269:119;7427:1;7452:53;7497:7;7488:6;7477:9;7473:22;7452:53;:::i;:::-;7442:63;;7398:117;7554:2;7580:53;7625:7;7616:6;7605:9;7601:22;7580:53;:::i;:::-;7570:63;;7525:118;7682:2;7708:50;7750:7;7741:6;7730:9;7726:22;7708:50;:::i;:::-;7698:60;;7653:115;7162:613;;;;;:::o;7781:468::-;7846:6;7854;7903:2;7891:9;7882:7;7878:23;7874:32;7871:119;;;7909:79;;:::i;:::-;7871:119;8029:1;8054:53;8099:7;8090:6;8079:9;8075:22;8054:53;:::i;:::-;8044:63;;8000:117;8156:2;8182:50;8224:7;8215:6;8204:9;8200:22;8182:50;:::i;:::-;8172:60;;8127:115;7781:468;;;;;:::o;8255:323::-;8311:6;8360:2;8348:9;8339:7;8335:23;8331:32;8328:119;;;8366:79;;:::i;:::-;8328:119;8486:1;8511:50;8553:7;8544:6;8533:9;8529:22;8511:50;:::i;:::-;8501:60;;8457:114;8255:323;;;;:::o;8584:474::-;8652:6;8660;8709:2;8697:9;8688:7;8684:23;8680:32;8677:119;;;8715:79;;:::i;:::-;8677:119;8835:1;8860:53;8905:7;8896:6;8885:9;8881:22;8860:53;:::i;:::-;8850:63;;8806:117;8962:2;8988:53;9033:7;9024:6;9013:9;9009:22;8988:53;:::i;:::-;8978:63;;8933:118;8584:474;;;;;:::o;9064:182::-;9204:34;9200:1;9192:6;9188:14;9181:58;9064:182;:::o;9252:366::-;9394:3;9415:67;9479:2;9474:3;9415:67;:::i;:::-;9408:74;;9491:93;9580:3;9491:93;:::i;:::-;9609:2;9604:3;9600:12;9593:19;;9252:366;;;:::o;9624:419::-;9790:4;9828:2;9817:9;9813:18;9805:26;;9877:9;9871:4;9867:20;9863:1;9852:9;9848:17;9841:47;9905:131;10031:4;9905:131;:::i;:::-;9897:139;;9624:419;;;:::o;10049:180::-;10097:77;10094:1;10087:88;10194:4;10191:1;10184:15;10218:4;10215:1;10208:15;10235:348;10275:7;10298:20;10316:1;10298:20;:::i;:::-;10293:25;;10332:20;10350:1;10332:20;:::i;:::-;10327:25;;10520:1;10452:66;10448:74;10445:1;10442:81;10437:1;10430:9;10423:17;10419:105;10416:131;;;10527:18;;:::i;:::-;10416:131;10575:1;10572;10568:9;10557:20;;10235:348;;;;:::o;10589:180::-;10637:77;10634:1;10627:88;10734:4;10731:1;10724:15;10758:4;10755:1;10748:15;10775:185;10815:1;10832:20;10850:1;10832:20;:::i;:::-;10827:25;;10866:20;10884:1;10866:20;:::i;:::-;10861:25;;10905:1;10895:35;;10910:18;;:::i;:::-;10895:35;10952:1;10949;10945:9;10940:14;;10775:185;;;;:::o;10966:234::-;11106:34;11102:1;11094:6;11090:14;11083:58;11175:17;11170:2;11162:6;11158:15;11151:42;10966:234;:::o;11206:366::-;11348:3;11369:67;11433:2;11428:3;11369:67;:::i;:::-;11362:74;;11445:93;11534:3;11445:93;:::i;:::-;11563:2;11558:3;11554:12;11547:19;;11206:366;;;:::o;11578:419::-;11744:4;11782:2;11771:9;11767:18;11759:26;;11831:9;11825:4;11821:20;11817:1;11806:9;11802:17;11795:47;11859:131;11985:4;11859:131;:::i;:::-;11851:139;;11578:419;;;:::o;12003:227::-;12143:34;12139:1;12131:6;12127:14;12120:58;12212:10;12207:2;12199:6;12195:15;12188:35;12003:227;:::o;12236:366::-;12378:3;12399:67;12463:2;12458:3;12399:67;:::i;:::-;12392:74;;12475:93;12564:3;12475:93;:::i;:::-;12593:2;12588:3;12584:12;12577:19;;12236:366;;;:::o;12608:419::-;12774:4;12812:2;12801:9;12797:18;12789:26;;12861:9;12855:4;12851:20;12847:1;12836:9;12832:17;12825:47;12889:131;13015:4;12889:131;:::i;:::-;12881:139;;12608:419;;;:::o;13033:305::-;13073:3;13092:20;13110:1;13092:20;:::i;:::-;13087:25;;13126:20;13144:1;13126:20;:::i;:::-;13121:25;;13280:1;13212:66;13208:74;13205:1;13202:81;13199:107;;;13286:18;;:::i;:::-;13199:107;13330:1;13327;13323:9;13316:16;;13033:305;;;;:::o;13344:179::-;13484:31;13480:1;13472:6;13468:14;13461:55;13344:179;:::o;13529:366::-;13671:3;13692:67;13756:2;13751:3;13692:67;:::i;:::-;13685:74;;13768:93;13857:3;13768:93;:::i;:::-;13886:2;13881:3;13877:12;13870:19;;13529:366;;;:::o;13901:419::-;14067:4;14105:2;14094:9;14090:18;14082:26;;14154:9;14148:4;14144:20;14140:1;14129:9;14125:17;14118:47;14182:131;14308:4;14182:131;:::i;:::-;14174:139;;13901:419;;;:::o;14326:238::-;14466:34;14462:1;14454:6;14450:14;14443:58;14535:21;14530:2;14522:6;14518:15;14511:46;14326:238;:::o;14570:366::-;14712:3;14733:67;14797:2;14792:3;14733:67;:::i;:::-;14726:74;;14809:93;14898:3;14809:93;:::i;:::-;14927:2;14922:3;14918:12;14911:19;;14570:366;;;:::o;14942:419::-;15108:4;15146:2;15135:9;15131:18;15123:26;;15195:9;15189:4;15185:20;15181:1;15170:9;15166:17;15159:47;15223:131;15349:4;15223:131;:::i;:::-;15215:139;;14942:419;;;:::o;15367:235::-;15507:34;15503:1;15495:6;15491:14;15484:58;15576:18;15571:2;15563:6;15559:15;15552:43;15367:235;:::o;15608:366::-;15750:3;15771:67;15835:2;15830:3;15771:67;:::i;:::-;15764:74;;15847:93;15936:3;15847:93;:::i;:::-;15965:2;15960:3;15956:12;15949:19;;15608:366;;;:::o;15980:419::-;16146:4;16184:2;16173:9;16169:18;16161:26;;16233:9;16227:4;16223:20;16219:1;16208:9;16204:17;16197:47;16261:131;16387:4;16261:131;:::i;:::-;16253:139;;15980:419;;;:::o;16405:148::-;16507:11;16544:3;16529:18;;16405:148;;;;:::o;16559:377::-;16665:3;16693:39;16726:5;16693:39;:::i;:::-;16748:89;16830:6;16825:3;16748:89;:::i;:::-;16741:96;;16846:52;16891:6;16886:3;16879:4;16872:5;16868:16;16846:52;:::i;:::-;16923:6;16918:3;16914:16;16907:23;;16669:267;16559:377;;;;:::o;16942:435::-;17122:3;17144:95;17235:3;17226:6;17144:95;:::i;:::-;17137:102;;17256:95;17347:3;17338:6;17256:95;:::i;:::-;17249:102;;17368:3;17361:10;;16942:435;;;;;:::o;17383:244::-;17523:34;17519:1;17511:6;17507:14;17500:58;17592:27;17587:2;17579:6;17575:15;17568:52;17383:244;:::o;17633:366::-;17775:3;17796:67;17860:2;17855:3;17796:67;:::i;:::-;17789:74;;17872:93;17961:3;17872:93;:::i;:::-;17990:2;17985:3;17981:12;17974:19;;17633:366;;;:::o;18005:419::-;18171:4;18209:2;18198:9;18194:18;18186:26;;18258:9;18252:4;18248:20;18244:1;18233:9;18229:17;18222:47;18286:131;18412:4;18286:131;:::i;:::-;18278:139;;18005:419;;;:::o;18430:224::-;18570:34;18566:1;18558:6;18554:14;18547:58;18639:7;18634:2;18626:6;18622:15;18615:32;18430:224;:::o;18660:366::-;18802:3;18823:67;18887:2;18882:3;18823:67;:::i;:::-;18816:74;;18899:93;18988:3;18899:93;:::i;:::-;19017:2;19012:3;19008:12;19001:19;;18660:366;;;:::o;19032:419::-;19198:4;19236:2;19225:9;19221:18;19213:26;;19285:9;19279:4;19275:20;19271:1;19260:9;19256:17;19249:47;19313:131;19439:4;19313:131;:::i;:::-;19305:139;;19032:419;;;:::o;19457:147::-;19558:11;19595:3;19580:18;;19457:147;;;;:::o;19610:114::-;;:::o;19730:398::-;19889:3;19910:83;19991:1;19986:3;19910:83;:::i;:::-;19903:90;;20002:93;20091:3;20002:93;:::i;:::-;20120:1;20115:3;20111:11;20104:18;;19730:398;;;:::o;20134:379::-;20318:3;20340:147;20483:3;20340:147;:::i;:::-;20333:154;;20504:3;20497:10;;20134:379;;;:::o;20519:223::-;20659:34;20655:1;20647:6;20643:14;20636:58;20728:6;20723:2;20715:6;20711:15;20704:31;20519:223;:::o;20748:366::-;20890:3;20911:67;20975:2;20970:3;20911:67;:::i;:::-;20904:74;;20987:93;21076:3;20987:93;:::i;:::-;21105:2;21100:3;21096:12;21089:19;;20748:366;;;:::o;21120:419::-;21286:4;21324:2;21313:9;21309:18;21301:26;;21373:9;21367:4;21363:20;21359:1;21348:9;21344:17;21337:47;21401:131;21527:4;21401:131;:::i;:::-;21393:139;;21120:419;;;:::o;21545:240::-;21685:34;21681:1;21673:6;21669:14;21662:58;21754:23;21749:2;21741:6;21737:15;21730:48;21545:240;:::o;21791:366::-;21933:3;21954:67;22018:2;22013:3;21954:67;:::i;:::-;21947:74;;22030:93;22119:3;22030:93;:::i;:::-;22148:2;22143:3;22139:12;22132:19;;21791:366;;;:::o;22163:419::-;22329:4;22367:2;22356:9;22352:18;22344:26;;22416:9;22410:4;22406:20;22402:1;22391:9;22387:17;22380:47;22444:131;22570:4;22444:131;:::i;:::-;22436:139;;22163:419;;;:::o;22588:239::-;22728:34;22724:1;22716:6;22712:14;22705:58;22797:22;22792:2;22784:6;22780:15;22773:47;22588:239;:::o;22833:366::-;22975:3;22996:67;23060:2;23055:3;22996:67;:::i;:::-;22989:74;;23072:93;23161:3;23072:93;:::i;:::-;23190:2;23185:3;23181:12;23174:19;;22833:366;;;:::o;23205:419::-;23371:4;23409:2;23398:9;23394:18;23386:26;;23458:9;23452:4;23448:20;23444:1;23433:9;23429:17;23422:47;23486:131;23612:4;23486:131;:::i;:::-;23478:139;;23205:419;;;:::o;23630:225::-;23770:34;23766:1;23758:6;23754:14;23747:58;23839:8;23834:2;23826:6;23822:15;23815:33;23630:225;:::o;23861:366::-;24003:3;24024:67;24088:2;24083:3;24024:67;:::i;:::-;24017:74;;24100:93;24189:3;24100:93;:::i;:::-;24218:2;24213:3;24209:12;24202:19;;23861:366;;;:::o;24233:419::-;24399:4;24437:2;24426:9;24422:18;24414:26;;24486:9;24480:4;24476:20;24472:1;24461:9;24457:17;24450:47;24514:131;24640:4;24514:131;:::i;:::-;24506:139;;24233:419;;;:::o;24658:223::-;24798:34;24794:1;24786:6;24782:14;24775:58;24867:6;24862:2;24854:6;24850:15;24843:31;24658:223;:::o;24887:366::-;25029:3;25050:67;25114:2;25109:3;25050:67;:::i;:::-;25043:74;;25126:93;25215:3;25126:93;:::i;:::-;25244:2;25239:3;25235:12;25228:19;;24887:366;;;:::o;25259:419::-;25425:4;25463:2;25452:9;25448:18;25440:26;;25512:9;25506:4;25502:20;25498:1;25487:9;25483:17;25476:47;25540:131;25666:4;25540:131;:::i;:::-;25532:139;;25259:419;;;:::o;25684:221::-;25824:34;25820:1;25812:6;25808:14;25801:58;25893:4;25888:2;25880:6;25876:15;25869:29;25684:221;:::o;25911:366::-;26053:3;26074:67;26138:2;26133:3;26074:67;:::i;:::-;26067:74;;26150:93;26239:3;26150:93;:::i;:::-;26268:2;26263:3;26259:12;26252:19;;25911:366;;;:::o;26283:419::-;26449:4;26487:2;26476:9;26472:18;26464:26;;26536:9;26530:4;26526:20;26522:1;26511:9;26507:17;26500:47;26564:131;26690:4;26564:131;:::i;:::-;26556:139;;26283:419;;;:::o;26708:224::-;26848:34;26844:1;26836:6;26832:14;26825:58;26917:7;26912:2;26904:6;26900:15;26893:32;26708:224;:::o;26938:366::-;27080:3;27101:67;27165:2;27160:3;27101:67;:::i;:::-;27094:74;;27177:93;27266:3;27177:93;:::i;:::-;27295:2;27290:3;27286:12;27279:19;;26938:366;;;:::o;27310:419::-;27476:4;27514:2;27503:9;27499:18;27491:26;;27563:9;27557:4;27553:20;27549:1;27538:9;27534:17;27527:47;27591:131;27717:4;27591:131;:::i;:::-;27583:139;;27310:419;;;:::o;27735:222::-;27875:34;27871:1;27863:6;27859:14;27852:58;27944:5;27939:2;27931:6;27927:15;27920:30;27735:222;:::o;27963:366::-;28105:3;28126:67;28190:2;28185:3;28126:67;:::i;:::-;28119:74;;28202:93;28291:3;28202:93;:::i;:::-;28320:2;28315:3;28311:12;28304:19;;27963:366;;;:::o;28335:419::-;28501:4;28539:2;28528:9;28524:18;28516:26;;28588:9;28582:4;28578:20;28574:1;28563:9;28559:17;28552:47;28616:131;28742:4;28616:131;:::i;:::-;28608:139;;28335:419;;;:::o;28760:172::-;28900:24;28896:1;28888:6;28884:14;28877:48;28760:172;:::o;28938:366::-;29080:3;29101:67;29165:2;29160:3;29101:67;:::i;:::-;29094:74;;29177:93;29266:3;29177:93;:::i;:::-;29295:2;29290:3;29286:12;29279:19;;28938:366;;;:::o;29310:419::-;29476:4;29514:2;29503:9;29499:18;29491:26;;29563:9;29557:4;29553:20;29549:1;29538:9;29534:17;29527:47;29591:131;29717:4;29591:131;:::i;:::-;29583:139;;29310:419;;;:::o;29735:297::-;29875:34;29871:1;29863:6;29859:14;29852:58;29944:34;29939:2;29931:6;29927:15;29920:59;30013:11;30008:2;30000:6;29996:15;29989:36;29735:297;:::o;30038:366::-;30180:3;30201:67;30265:2;30260:3;30201:67;:::i;:::-;30194:74;;30277:93;30366:3;30277:93;:::i;:::-;30395:2;30390:3;30386:12;30379:19;;30038:366;;;:::o;30410:419::-;30576:4;30614:2;30603:9;30599:18;30591:26;;30663:9;30657:4;30653:20;30649:1;30638:9;30634:17;30627:47;30691:131;30817:4;30691:131;:::i;:::-;30683:139;;30410:419;;;:::o;30835:240::-;30975:34;30971:1;30963:6;30959:14;30952:58;31044:23;31039:2;31031:6;31027:15;31020:48;30835:240;:::o;31081:366::-;31223:3;31244:67;31308:2;31303:3;31244:67;:::i;:::-;31237:74;;31320:93;31409:3;31320:93;:::i;:::-;31438:2;31433:3;31429:12;31422:19;;31081:366;;;:::o;31453:419::-;31619:4;31657:2;31646:9;31642:18;31634:26;;31706:9;31700:4;31696:20;31692:1;31681:9;31677:17;31670:47;31734:131;31860:4;31734:131;:::i;:::-;31726:139;;31453:419;;;:::o;31878:169::-;32018:21;32014:1;32006:6;32002:14;31995:45;31878:169;:::o;32053:366::-;32195:3;32216:67;32280:2;32275:3;32216:67;:::i;:::-;32209:74;;32292:93;32381:3;32292:93;:::i;:::-;32410:2;32405:3;32401:12;32394:19;;32053:366;;;:::o;32425:419::-;32591:4;32629:2;32618:9;32614:18;32606:26;;32678:9;32672:4;32668:20;32664:1;32653:9;32649:17;32642:47;32706:131;32832:4;32706:131;:::i;:::-;32698:139;;32425:419;;;:::o;32850:241::-;32990:34;32986:1;32978:6;32974:14;32967:58;33059:24;33054:2;33046:6;33042:15;33035:49;32850:241;:::o;33097:366::-;33239:3;33260:67;33324:2;33319:3;33260:67;:::i;:::-;33253:74;;33336:93;33425:3;33336:93;:::i;:::-;33454:2;33449:3;33445:12;33438:19;;33097:366;;;:::o;33469:419::-;33635:4;33673:2;33662:9;33658:18;33650:26;;33722:9;33716:4;33712:20;33708:1;33697:9;33693:17;33686:47;33750:131;33876:4;33750:131;:::i;:::-;33742:139;;33469:419;;;:::o;33894:191::-;33934:4;33954:20;33972:1;33954:20;:::i;:::-;33949:25;;33988:20;34006:1;33988:20;:::i;:::-;33983:25;;34027:1;34024;34021:8;34018:34;;;34032:18;;:::i;:::-;34018:34;34077:1;34074;34070:9;34062:17;;33894:191;;;;:::o;34091:180::-;34139:77;34136:1;34129:88;34236:4;34233:1;34226:15;34260:4;34257:1;34250:15;34277:180;34325:77;34322:1;34315:88;34422:4;34419:1;34412:15;34446:4;34443:1;34436:15;34463:233;34502:3;34525:24;34543:5;34525:24;:::i;:::-;34516:33;;34571:66;34564:5;34561:77;34558:103;;34641:18;;:::i;:::-;34558:103;34688:1;34681:5;34677:13;34670:20;;34463:233;;;:::o;34702:151::-;34842:3;34838:1;34830:6;34826:14;34819:27;34702:151;:::o;34859:400::-;35019:3;35040:84;35122:1;35117:3;35040:84;:::i;:::-;35033:91;;35133:93;35222:3;35133:93;:::i;:::-;35251:1;35246:3;35242:11;35235:18;;34859:400;;;:::o;35265:701::-;35546:3;35568:95;35659:3;35650:6;35568:95;:::i;:::-;35561:102;;35680:148;35824:3;35680:148;:::i;:::-;35673:155;;35845:95;35936:3;35927:6;35845:95;:::i;:::-;35838:102;;35957:3;35950:10;;35265:701;;;;;:::o;35972:152::-;36112:4;36108:1;36100:6;36096:14;36089:28;35972:152;:::o;36130:400::-;36290:3;36311:84;36393:1;36388:3;36311:84;:::i;:::-;36304:91;;36404:93;36493:3;36404:93;:::i;:::-;36522:1;36517:3;36513:11;36506:18;;36130:400;;;:::o;36536:541::-;36769:3;36791:148;36935:3;36791:148;:::i;:::-;36784:155;;36956:95;37047:3;37038:6;36956:95;:::i;:::-;36949:102;;37068:3;37061:10;;36536:541;;;;:::o;37083:143::-;37140:5;37171:6;37165:13;37156:22;;37187:33;37214:5;37187:33;:::i;:::-;37083:143;;;;:::o;37232:351::-;37302:6;37351:2;37339:9;37330:7;37326:23;37322:32;37319:119;;;37357:79;;:::i;:::-;37319:119;37477:1;37502:64;37558:7;37549:6;37538:9;37534:22;37502:64;:::i;:::-;37492:74;;37448:128;37232:351;;;;:::o;37589:85::-;37634:7;37663:5;37652:16;;37589:85;;;:::o;37680:158::-;37738:9;37771:61;37789:42;37798:32;37824:5;37798:32;:::i;:::-;37789:42;:::i;:::-;37771:61;:::i;:::-;37758:74;;37680:158;;;:::o;37844:147::-;37939:45;37978:5;37939:45;:::i;:::-;37934:3;37927:58;37844:147;;:::o;37997:114::-;38064:6;38098:5;38092:12;38082:22;;37997:114;;;:::o;38117:184::-;38216:11;38250:6;38245:3;38238:19;38290:4;38285:3;38281:14;38266:29;;38117:184;;;;:::o;38307:132::-;38374:4;38397:3;38389:11;;38427:4;38422:3;38418:14;38410:22;;38307:132;;;:::o;38445:108::-;38522:24;38540:5;38522:24;:::i;:::-;38517:3;38510:37;38445:108;;:::o;38559:179::-;38628:10;38649:46;38691:3;38683:6;38649:46;:::i;:::-;38727:4;38722:3;38718:14;38704:28;;38559:179;;;;:::o;38744:113::-;38814:4;38846;38841:3;38837:14;38829:22;;38744:113;;;:::o;38893:732::-;39012:3;39041:54;39089:5;39041:54;:::i;:::-;39111:86;39190:6;39185:3;39111:86;:::i;:::-;39104:93;;39221:56;39271:5;39221:56;:::i;:::-;39300:7;39331:1;39316:284;39341:6;39338:1;39335:13;39316:284;;;39417:6;39411:13;39444:63;39503:3;39488:13;39444:63;:::i;:::-;39437:70;;39530:60;39583:6;39530:60;:::i;:::-;39520:70;;39376:224;39363:1;39360;39356:9;39351:14;;39316:284;;;39320:14;39616:3;39609:10;;39017:608;;;38893:732;;;;:::o;39631:831::-;39894:4;39932:3;39921:9;39917:19;39909:27;;39946:71;40014:1;40003:9;39999:17;39990:6;39946:71;:::i;:::-;40027:80;40103:2;40092:9;40088:18;40079:6;40027:80;:::i;:::-;40154:9;40148:4;40144:20;40139:2;40128:9;40124:18;40117:48;40182:108;40285:4;40276:6;40182:108;:::i;:::-;40174:116;;40300:72;40368:2;40357:9;40353:18;40344:6;40300:72;:::i;:::-;40382:73;40450:3;40439:9;40435:19;40426:6;40382:73;:::i;:::-;39631:831;;;;;;;;:::o;40468:225::-;40608:34;40604:1;40596:6;40592:14;40585:58;40677:8;40672:2;40664:6;40660:15;40653:33;40468:225;:::o;40699:366::-;40841:3;40862:67;40926:2;40921:3;40862:67;:::i;:::-;40855:74;;40938:93;41027:3;40938:93;:::i;:::-;41056:2;41051:3;41047:12;41040:19;;40699:366;;;:::o;41071:419::-;41237:4;41275:2;41264:9;41260:18;41252:26;;41324:9;41318:4;41314:20;41310:1;41299:9;41295:17;41288:47;41352:131;41478:4;41352:131;:::i;:::-;41344:139;;41071:419;;;:::o;41496:176::-;41528:1;41545:20;41563:1;41545:20;:::i;:::-;41540:25;;41579:20;41597:1;41579:20;:::i;:::-;41574:25;;41618:1;41608:35;;41623:18;;:::i;:::-;41608:35;41664:1;41661;41657:9;41652:14;;41496:176;;;;:::o
Swarm Source
ipfs://4965d3b43419a0523c64b091f4f1e9e5bbcd8a02105d40a4c9a742b7d82fd9ae
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.