ERC-20
Overview
Max Total Supply
10,000,000,000,000 ⠀
Holders
560
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.942904384475659961 ⠀Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BLANK
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-28 */ /* WEBSITE: https://blank.vision/ TWITTER: https://twitter.com/EthBlankvision TELEGRAM: https://t.me/BlankVisionETH WHITEPAPER: https://blank-7.gitbook.io/blank/ EMAIL CONTACT: [email protected] BLANK STICKER PACK: https://t.me/addstickers/BlankVision BLANK EMOJI PACK: https://t.me/addemoji/BlankVisionETH */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BLANK is ERC20, Ownable { string _name = unicode"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀"; string _symbol = unicode"⠀"; using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private isSwppable; uint256 public balance; address private devWallet; uint256 public maxTransaction; uint256 public contractSellTreshold; uint256 public maxWalletHolding; bool public areLimitsOn = true; bool public emptyContractFull = false; uint256 public totalBuyTax; uint256 public devBuyTax; uint256 public liqBuyTax; uint256 public totalSellTax; uint256 public devSellTax; uint256 public liqSellTax; uint256 public tokensForLiquidity; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20(_name, _symbol) { uint256 _devBuyTax = 23; uint256 _liqBuyTax = 0; uint256 _devSellTax = 27; uint256 _liqSellTax = 0; uint256 totalSupply = 10000000000000 * 1e18; maxTransaction = totalSupply * 20 / 1000; // 2% maxWalletHolding = totalSupply * 20 / 1000; // 2% contractSellTreshold = totalSupply * 1 / 1000; // 0.05% devBuyTax = _devBuyTax; liqBuyTax = _liqBuyTax; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSellTax; liqSellTax = _liqSellTax; totalSellTax = devSellTax + liqSellTax; devWallet = address(msg.sender); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(devWallet), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(devWallet), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(devWallet, totalSupply); } receive() external payable { } function openTrading() external onlyOwner{ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)) * 90 / 100; _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function addLP() external onlyOwner{ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)) * 90 / 100; _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function addLiquidity() external onlyOwner{ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)) * 90 / 100; _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function removeStuckEther() external onlyOwner { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "ETH balance must be greater than 0"); (bool success,) = address(devWallet).call{value: ethBalance}(""); require(success, "Failed to clear ETH balance"); } function removeStuckTokenBalance() external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(tokenBalance > 0, "Token balance must be greater than 0"); _transfer(address(this), devWallet, tokenBalance); } function removeLimits() external onlyOwner { areLimitsOn = false; } function enableEmptyContract(bool enabled) external onlyOwner{ emptyContractFull = enabled; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function changeFees( uint256 _devBuy, uint256 _devSell, uint256 _liqBuy, uint256 _liqSell ) external onlyOwner { devBuyTax = _devBuy; liqBuyTax = _liqBuy; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSell; liqSellTax = _liqSell; totalSellTax = devSellTax + liqSellTax; } 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 updateDevWallet(address newDevWallet) external onlyOwner{ emit devWalletUpdated(newDevWallet, devWallet); devWallet = newDevWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(areLimitsOn){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !isSwppable ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= contractSellTreshold; if( canSwap && !isSwppable && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { isSwppable = true; swapBack(); isSwppable = false; } bool takeFee = !isSwppable; // 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] && totalSellTax > 0){ fees = amount.mul(totalSellTax).div(100); tokensForLiquidity += fees * liqSellTax / totalSellTax; tokensForDev += fees * devSellTax / totalSellTax; } // on buy else if(automatedMarketMakerPairs[from] && totalBuyTax > 0) { fees = amount.mul(totalBuyTax).div(100); tokensForLiquidity += fees * liqBuyTax / totalBuyTax; tokensForDev += fees * devBuyTax / totalBuyTax; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(emptyContractFull == false){ if(contractBalance > contractSellTreshold * 20){ contractBalance = contractSellTreshold * 20; } }else{ contractBalance = balanceOf(address(this)); } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForDev; tokensForLiquidity = 0; tokensForDev = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(devWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areLimitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devBuy","type":"uint256"},{"internalType":"uint256","name":"_devSell","type":"uint256"},{"internalType":"uint256","name":"_liqBuy","type":"uint256"},{"internalType":"uint256","name":"_liqSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSellTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emptyContractFull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableEmptyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052604051806106e001604052806106b1815260200162005e5e6106b191396006908162000031919062000bd8565b506040518060400160405280600381526020017fe2a08000000000000000000000000000000000000000000000000000000000008152506007908162000078919062000bd8565b506001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550348015620000b9575f80fd5b5060068054620000c990620009d8565b80601f0160208091040260200160405190810160405280929190818152602001828054620000f790620009d8565b8015620001465780601f106200011c5761010080835404028352916020019162000146565b820191905f5260205f20905b8154815290600101906020018083116200012857829003601f168201915b5050505050600780546200015a90620009d8565b80601f01602080910402602001604051908101604052809291908181526020018280546200018890620009d8565b8015620001d75780601f10620001ad57610100808354040283529160200191620001d7565b820191905f5260205f20905b815481529060010190602001808311620001b957829003601f168201915b50505050508160039081620001ed919062000bd8565b508060049081620001ff919062000bd8565b5050505f62000213620004ff60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f601790505f80601b90505f806c7e37be2022c0914b268000000090506103e8601482620002df919062000ce9565b620002eb919062000d60565b600c819055506103e860148262000303919062000ce9565b6200030f919062000d60565b600e819055506103e860018262000327919062000ce9565b62000333919062000d60565b600d81905550846011819055508360128190555060125460115462000359919062000d97565b60108190555082601481905550816015819055506015546014546200037f919062000d97565b60138190555033600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003e7620003d96200050660201b60201c565b60016200052e60201b60201c565b620003fa3060016200052e60201b60201c565b6200040f61dead60016200052e60201b60201c565b62000443600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200052e60201b60201c565b62000465620004576200050660201b60201c565b60016200067760201b60201c565b620004783060016200067760201b60201c565b6200048d61dead60016200067760201b60201c565b620004c1600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200067760201b60201c565b620004f4600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826200077060201b60201c565b505050505062000f8e565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200053e620004ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620005cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c69062000e2f565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200066b919062000e6b565b60405180910390a25050565b62000687620004ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000718576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070f9062000e2f565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d89062000ed4565b60405180910390fd5b620007f45f83836200090d60201b60201c565b6200080b816002546200091260201b90919060201c565b60028190555062000862815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200091260201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000901919062000f05565b60405180910390a35050565b505050565b5f80828462000922919062000d97565b9050838110156200096a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009619062000f6e565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009f057607f821691505b60208210810362000a065762000a05620009ab565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a2d565b62000a76868362000a2d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ac062000aba62000ab48462000a8e565b62000a97565b62000a8e565b9050919050565b5f819050919050565b62000adb8362000aa0565b62000af362000aea8262000ac7565b84845462000a39565b825550505050565b5f90565b62000b0962000afb565b62000b1681848462000ad0565b505050565b5b8181101562000b3d5762000b315f8262000aff565b60018101905062000b1c565b5050565b601f82111562000b8c5762000b568162000a0c565b62000b618462000a1e565b8101602085101562000b71578190505b62000b8962000b808562000a1e565b83018262000b1b565b50505b505050565b5f82821c905092915050565b5f62000bae5f198460080262000b91565b1980831691505092915050565b5f62000bc8838362000b9d565b9150826002028217905092915050565b62000be38262000974565b67ffffffffffffffff81111562000bff5762000bfe6200097e565b5b62000c0b8254620009d8565b62000c1882828562000b41565b5f60209050601f83116001811462000c4e575f841562000c39578287015190505b62000c45858262000bbb565b86555062000cb4565b601f19841662000c5e8662000a0c565b5f5b8281101562000c875784890151825560018201915060208501945060208101905062000c60565b8683101562000ca7578489015162000ca3601f89168262000b9d565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000cf58262000a8e565b915062000d028362000a8e565b925082820262000d128162000a8e565b9150828204841483151762000d2c5762000d2b62000cbc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d6c8262000a8e565b915062000d798362000a8e565b92508262000d8c5762000d8b62000d33565b5b828204905092915050565b5f62000da38262000a8e565b915062000db08362000a8e565b925082820190508082111562000dcb5762000dca62000cbc565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000e1760208362000dd1565b915062000e248262000de1565b602082019050919050565b5f6020820190508181035f83015262000e488162000e09565b9050919050565b5f8115159050919050565b62000e658162000e4f565b82525050565b5f60208201905062000e805f83018462000e5a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000ebc601f8362000dd1565b915062000ec98262000e86565b602082019050919050565b5f6020820190508181035f83015262000eed8162000eae565b9050919050565b62000eff8162000a8e565b82525050565b5f60208201905062000f1a5f83018462000ef4565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000f56601b8362000dd1565b915062000f638262000f20565b602082019050919050565b5f6020820190508181035f83015262000f878162000f48565b9050919050565b614ec28062000f9c5f395ff3fe608060405260043610610275575f3560e01c8063715018a61161014e578063a9059cbb116100c0578063c3f70b5211610079578063c3f70b5214610918578063c9567bf914610942578063dd62ed3e14610958578063df6f93be14610994578063e8078d94146109be578063f2fde38b146109d45761027c565b8063a9059cbb1461080e578063b62496f51461084a578063b69ef8a814610886578063bc37e1a3146108b0578063be857504146108c6578063c0246668146108f05761027c565b8063945674fe11610112578063945674fe1461071657806395d89b41146107405780639a7a23d61461076a5780639ee2e924146107925780639fccce32146107a8578063a457c2d7146107d25761027c565b8063715018a614610682578063751039fc146106985780637571336a146106ae57806387dd95c0146106d65780638da5cb5b146106ec5761027c565b806323b872dd116101e757806349bd5a5e116101ab57806349bd5a5e146105645780634fbee1931461058e5780635de0f2a0146105ca578063650c4226146105f45780636c7e15c91461061c57806370a08231146106465761027c565b806323b872dd1461046e578063313ce567146104aa57806339509351146104d457806346469afb1461051057806348d791551461053a5761027c565b806318160ddd1161023957806318160ddd146103765780631816467f146103a0578063184f5c6a146103c85780631a8145bb146103f05780631bff78981461041a57806322eb6631146104445761027c565b806306fdde0314610280578063095ea7b3146102aa5780630e947809146102e657806310d5de53146103105780631694505e1461034c5761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b506102946109fc565b6040516102a19190613e54565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190613f05565b610a8c565b6040516102dd9190613f5d565b60405180910390f35b3480156102f1575f80fd5b506102fa610aa9565b6040516103079190613f5d565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613f76565b610abb565b6040516103439190613f5d565b60405180910390f35b348015610357575f80fd5b50610360610ad8565b60405161036d9190613ffc565b60405180910390f35b348015610381575f80fd5b5061038a610afd565b6040516103979190614024565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c19190613f76565b610b06565b005b3480156103d3575f80fd5b506103ee60048036038101906103e99190614067565b610c5a565b005b3480156103fb575f80fd5b50610404610d0d565b6040516104119190614024565b60405180910390f35b348015610425575f80fd5b5061042e610d13565b60405161043b9190614024565b60405180910390f35b34801561044f575f80fd5b50610458610d19565b6040516104659190614024565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190614092565b610d1f565b6040516104a19190613f5d565b60405180910390f35b3480156104b5575f80fd5b506104be610df3565b6040516104cb91906140fd565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f59190613f05565b610dfb565b6040516105079190613f5d565b60405180910390f35b34801561051b575f80fd5b50610524610ea9565b6040516105319190614024565b60405180910390f35b348015610545575f80fd5b5061054e610eaf565b60405161055b9190614024565b60405180910390f35b34801561056f575f80fd5b50610578610eb5565b6040516105859190614125565b60405180910390f35b348015610599575f80fd5b506105b460048036038101906105af9190613f76565b610eda565b6040516105c19190613f5d565b60405180910390f35b3480156105d5575f80fd5b506105de610f2c565b6040516105eb9190614024565b60405180910390f35b3480156105ff575f80fd5b5061061a6004803603810190610615919061413e565b610f32565b005b348015610627575f80fd5b50610630611016565b60405161063d9190614024565b60405180910390f35b348015610651575f80fd5b5061066c60048036038101906106679190613f76565b61101c565b6040516106799190614024565b60405180910390f35b34801561068d575f80fd5b50610696611061565b005b3480156106a3575f80fd5b506106ac6111b4565b005b3480156106b9575f80fd5b506106d460048036038101906106cf91906141a2565b611265565b005b3480156106e1575f80fd5b506106ea611353565b005b3480156106f7575f80fd5b506107006114fc565b60405161070d9190614125565b60405180910390f35b348015610721575f80fd5b5061072a611524565b6040516107379190613f5d565b60405180910390f35b34801561074b575f80fd5b50610754611537565b6040516107619190613e54565b60405180910390f35b348015610775575f80fd5b50610790600480360381019061078b91906141a2565b6115c7565b005b34801561079d575f80fd5b506107a66116fa565b005b3480156107b3575f80fd5b506107bc61180d565b6040516107c99190614024565b60405180910390f35b3480156107dd575f80fd5b506107f860048036038101906107f39190613f05565b611813565b6040516108059190613f5d565b60405180910390f35b348015610819575f80fd5b50610834600480360381019061082f9190613f05565b6118db565b6040516108419190613f5d565b60405180910390f35b348015610855575f80fd5b50610870600480360381019061086b9190613f76565b6118f8565b60405161087d9190613f5d565b60405180910390f35b348015610891575f80fd5b5061089a611915565b6040516108a79190614024565b60405180910390f35b3480156108bb575f80fd5b506108c461191b565b005b3480156108d1575f80fd5b506108da611d21565b6040516108e79190614024565b60405180910390f35b3480156108fb575f80fd5b50610916600480360381019061091191906141a2565b611d27565b005b348015610923575f80fd5b5061092c611e63565b6040516109399190614024565b60405180910390f35b34801561094d575f80fd5b50610956611e69565b005b348015610963575f80fd5b5061097e600480360381019061097991906141e0565b61226f565b60405161098b9190614024565b60405180910390f35b34801561099f575f80fd5b506109a86122f1565b6040516109b59190614024565b60405180910390f35b3480156109c9575f80fd5b506109d26122f7565b005b3480156109df575f80fd5b506109fa60048036038101906109f59190613f76565b6126fd565b005b606060038054610a0b9061424b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a379061424b565b8015610a825780601f10610a5957610100808354040283529160200191610a82565b820191905f5260205f20905b815481529060010190602001808311610a6557829003601f168201915b5050505050905090565b5f610a9f610a98612851565b8484612858565b6001905092915050565b600f5f9054906101000a900460ff1681565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610b0e612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b93906142c5565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c62612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906142c5565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b60165481565b60135481565b60145481565b5f610d2b848484612a1b565b610de884610d37612851565b610de385604051806060016040528060288152602001614e406028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d9a612851565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133409092919063ffffffff16565b612858565b600190509392505050565b5f6012905090565b5f610e9f610e07612851565b84610e9a8560015f610e17612851565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133a290919063ffffffff16565b612858565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b610f3a612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf906142c5565b60405180910390fd5b8360118190555081601281905550601254601154610fe69190614310565b601081905550826014819055508060158190555060155460145461100a9190614310565b60138190555050505050565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611069612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee906142c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111bc612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611241906142c5565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b61126d612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f2906142c5565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61135b612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906142c5565b60405180910390fd5b5f4790505f811161142f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611426906143b3565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611475906143fe565b5f6040518083038185875af1925050503d805f81146114af576040519150601f19603f3d011682016040523d82523d5f602084013e6114b4565b606091505b50509050806114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef9061445c565b60405180910390fd5b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b6060600480546115469061424b565b80601f01602080910402602001604051908101604052809291908181526020018280546115729061424b565b80156115bd5780601f10611594576101008083540402835291602001916115bd565b820191905f5260205f20905b8154815290600101906020018083116115a057829003601f168201915b5050505050905090565b6115cf612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611654906142c5565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e3906144ea565b60405180910390fd5b6116f682826133ff565b5050565b611702612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611787906142c5565b60405180910390fd5b5f61179a3061101c565b90505f81116117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d590614578565b60405180910390fd5b61180a30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612a1b565b50565b60175481565b5f6118d161181f612851565b846118cc85604051806060016040528060258152602001614e686025913960015f611848612851565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133409092919063ffffffff16565b612858565b6001905092915050565b5f6118ee6118e7612851565b8484612a1b565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b611923612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a8906142c5565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506119d4816001611265565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8191906145aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0a91906145aa565b6040518363ffffffff1660e01b8152600401611b279291906145d5565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6791906145aa565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bd260095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611265565b611bfe60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016133ff565b5f4790505f6064605a611c103061101c565b611c1a91906145fc565b611c24919061466a565b9050611c523060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611cd8969594939291906146d3565b60606040518083038185885af1158015611cf4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d199190614746565b505050505050565b60155481565b611d2f612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db4906142c5565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e579190613f5d565b60405180910390a25050565b600c5481565b611e71612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef6906142c5565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050611f22816001611265565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fcf91906145aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612034573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205891906145aa565b6040518363ffffffff1660e01b81526004016120759291906145d5565b6020604051808303815f875af1158015612091573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120b591906145aa565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061212060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611265565b61214c60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016133ff565b5f4790505f6064605a61215e3061101c565b61216891906145fc565b612172919061466a565b90506121a03060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612226969594939291906146d3565b60606040518083038185885af1158015612242573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906122679190614746565b505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b6122ff612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461238d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612384906142c5565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506123b0816001611265565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612439573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245d91906145aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e691906145aa565b6040518363ffffffff1660e01b81526004016125039291906145d5565b6020604051808303815f875af115801561251f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254391906145aa565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506125ae60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611265565b6125da60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016133ff565b5f4790505f6064605a6125ec3061101c565b6125f691906145fc565b612600919061466a565b905061262e3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126b4969594939291906146d3565b60606040518083038185885af11580156126d0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906126f59190614746565b505050505050565b612705612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a906142c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd90614806565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292b90614894565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a0e9190614024565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8090614922565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aee906149b0565b60405180910390fd5b5f8103612b0e57612b0983835f61349d565b61333b565b600f5f9054906101000a900460ff1615612f0357612b2a6114fc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b985750612b686114fc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bd057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c0a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c235750600960149054906101000a900460ff16155b15612f0257601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612cc55750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d6c57600c54811115612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690614a3e565b60405180910390fd5b600e54612d1b8361101c565b82612d269190614310565b1115612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e90614aa6565b60405180910390fd5b612f01565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e095750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e5857600c54811115612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90614b34565b60405180910390fd5b612f00565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612eff57600e54612eb28361101c565b82612ebd9190614310565b1115612efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef590614aa6565b60405180910390fd5b5b5b5b5b5b5f612f0d3061101c565b90505f600d548210159050808015612f325750600960149054906101000a900460ff16155b8015612f855750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fd8575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561302b575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561306e576001600960146101000a81548160ff021916908315150217905550613053613726565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061311d575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613126575f90505b5f811561332b57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561318457505f601354115b1561321c576131b160646131a36013548861394c90919063ffffffff16565b6139c390919063ffffffff16565b9050601354601554826131c491906145fc565b6131ce919061466a565b60165f8282546131de9190614310565b92505081905550601354601454826131f691906145fc565b613200919061466a565b60175f8282546132109190614310565b92505081905550613308565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561327357505f601054115b15613307576132a060646132926010548861394c90919063ffffffff16565b6139c390919063ffffffff16565b9050601054601254826132b391906145fc565b6132bd919061466a565b60165f8282546132cd9190614310565b92505081905550601054601154826132e591906145fc565b6132ef919061466a565b60175f8282546132ff9190614310565b925050819055505b5b5f81111561331c5761331b87308361349d565b5b80856133289190614b52565b94505b61333687878761349d565b505050505b505050565b5f838311158290613387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337e9190613e54565b60405180910390fd5b505f83856133959190614b52565b9050809150509392505050565b5f8082846133b09190614310565b9050838110156133f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ec90614bcf565b60405180910390fd5b8091505092915050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361350b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350290614922565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613570906149b0565b60405180910390fd5b613584838383613a0c565b6135ed81604051806060016040528060268152602001614e1a602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133409092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061367c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133a290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137199190614024565b60405180910390a3505050565b5f6137303061101c565b90505f6017546016546137439190614310565b90505f8083148061375357505f82145b156137605750505061394a565b5f1515600f60019054906101000a900460ff161515036137a7576014600d5461378991906145fc565b8311156137a2576014600d5461379f91906145fc565b92505b6137b3565b6137b03061101c565b92505b5f600283601654866137c591906145fc565b6137cf919061466a565b6137d9919061466a565b90505f6137ef8286613a1190919063ffffffff16565b90505f4790506137fe82613a5a565b5f6138128247613a1190919063ffffffff16565b90505f61383c8761382e6017548561394c90919063ffffffff16565b6139c390919063ffffffff16565b90505f818361384b9190614b52565b90505f6016819055505f6017819055505f8611801561386957505f81115b156138b6576138788682613c90565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826016546040516138ad93929190614bed565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138fb906143fe565b5f6040518083038185875af1925050503d805f8114613935576040519150601f19603f3d011682016040523d82523d5f602084013e61393a565b606091505b5050809750505050505050505050505b565b5f80830361395c575f90506139bd565b5f828461396991906145fc565b9050828482613978919061466a565b146139b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139af90614c92565b60405180910390fd5b809150505b92915050565b5f613a0483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d69565b905092915050565b505050565b5f613a5283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613340565b905092915050565b5f600267ffffffffffffffff811115613a7657613a75614cb0565b5b604051908082528060200260200182016040528015613aa45781602001602082028036833780820191505090505b50905030815f81518110613abb57613aba614cdd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b8391906145aa565b81600181518110613b9757613b96614cdd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bfd3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613c5f959493929190614dc1565b5f604051808303815f87803b158015613c76575f80fd5b505af1158015613c88573d5f803e3d5ffd5b505050505050565b613cbc3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613d21969594939291906146d3565b60606040518083038185885af1158015613d3d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613d629190614746565b5050505050565b5f8083118290613daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613da69190613e54565b60405180910390fd5b505f8385613dbd919061466a565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613e01578082015181840152602081019050613de6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613e2682613dca565b613e308185613dd4565b9350613e40818560208601613de4565b613e4981613e0c565b840191505092915050565b5f6020820190508181035f830152613e6c8184613e1c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613ea182613e78565b9050919050565b613eb181613e97565b8114613ebb575f80fd5b50565b5f81359050613ecc81613ea8565b92915050565b5f819050919050565b613ee481613ed2565b8114613eee575f80fd5b50565b5f81359050613eff81613edb565b92915050565b5f8060408385031215613f1b57613f1a613e74565b5b5f613f2885828601613ebe565b9250506020613f3985828601613ef1565b9150509250929050565b5f8115159050919050565b613f5781613f43565b82525050565b5f602082019050613f705f830184613f4e565b92915050565b5f60208284031215613f8b57613f8a613e74565b5b5f613f9884828501613ebe565b91505092915050565b5f819050919050565b5f613fc4613fbf613fba84613e78565b613fa1565b613e78565b9050919050565b5f613fd582613faa565b9050919050565b5f613fe682613fcb565b9050919050565b613ff681613fdc565b82525050565b5f60208201905061400f5f830184613fed565b92915050565b61401e81613ed2565b82525050565b5f6020820190506140375f830184614015565b92915050565b61404681613f43565b8114614050575f80fd5b50565b5f813590506140618161403d565b92915050565b5f6020828403121561407c5761407b613e74565b5b5f61408984828501614053565b91505092915050565b5f805f606084860312156140a9576140a8613e74565b5b5f6140b686828701613ebe565b93505060206140c786828701613ebe565b92505060406140d886828701613ef1565b9150509250925092565b5f60ff82169050919050565b6140f7816140e2565b82525050565b5f6020820190506141105f8301846140ee565b92915050565b61411f81613e97565b82525050565b5f6020820190506141385f830184614116565b92915050565b5f805f806080858703121561415657614155613e74565b5b5f61416387828801613ef1565b945050602061417487828801613ef1565b935050604061418587828801613ef1565b925050606061419687828801613ef1565b91505092959194509250565b5f80604083850312156141b8576141b7613e74565b5b5f6141c585828601613ebe565b92505060206141d685828601614053565b9150509250929050565b5f80604083850312156141f6576141f5613e74565b5b5f61420385828601613ebe565b925050602061421485828601613ebe565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061426257607f821691505b6020821081036142755761427461421e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6142af602083613dd4565b91506142ba8261427b565b602082019050919050565b5f6020820190508181035f8301526142dc816142a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61431a82613ed2565b915061432583613ed2565b925082820190508082111561433d5761433c6142e3565b5b92915050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f61439d602283613dd4565b91506143a882614343565b604082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b5f81905092915050565b50565b5f6143e95f836143d1565b91506143f4826143db565b5f82019050919050565b5f614408826143de565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f614446601b83613dd4565b915061445182614412565b602082019050919050565b5f6020820190508181035f8301526144738161443a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6144d4603983613dd4565b91506144df8261447a565b604082019050919050565b5f6020820190508181035f830152614501816144c8565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f614562602483613dd4565b915061456d82614508565b604082019050919050565b5f6020820190508181035f83015261458f81614556565b9050919050565b5f815190506145a481613ea8565b92915050565b5f602082840312156145bf576145be613e74565b5b5f6145cc84828501614596565b91505092915050565b5f6040820190506145e85f830185614116565b6145f56020830184614116565b9392505050565b5f61460682613ed2565b915061461183613ed2565b925082820261461f81613ed2565b91508282048414831517614636576146356142e3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61467482613ed2565b915061467f83613ed2565b92508261468f5761468e61463d565b5b828204905092915050565b5f819050919050565b5f6146bd6146b86146b38461469a565b613fa1565b613ed2565b9050919050565b6146cd816146a3565b82525050565b5f60c0820190506146e65f830189614116565b6146f36020830188614015565b61470060408301876146c4565b61470d60608301866146c4565b61471a6080830185614116565b61472760a0830184614015565b979650505050505050565b5f8151905061474081613edb565b92915050565b5f805f6060848603121561475d5761475c613e74565b5b5f61476a86828701614732565b935050602061477b86828701614732565b925050604061478c86828701614732565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6147f0602483613dd4565b91506147fb82614796565b604082019050919050565b5f6020820190508181035f83015261481d816147e4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61487e602283613dd4565b915061488982614824565b604082019050919050565b5f6020820190508181035f8301526148ab81614872565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61490c602583613dd4565b9150614917826148b2565b604082019050919050565b5f6020820190508181035f83015261493981614900565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61499a602383613dd4565b91506149a582614940565b604082019050919050565b5f6020820190508181035f8301526149c78161498e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614a28603583613dd4565b9150614a33826149ce565b604082019050919050565b5f6020820190508181035f830152614a5581614a1c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614a90601383613dd4565b9150614a9b82614a5c565b602082019050919050565b5f6020820190508181035f830152614abd81614a84565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614b1e603683613dd4565b9150614b2982614ac4565b604082019050919050565b5f6020820190508181035f830152614b4b81614b12565b9050919050565b5f614b5c82613ed2565b9150614b6783613ed2565b9250828203905081811115614b7f57614b7e6142e3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614bb9601b83613dd4565b9150614bc482614b85565b602082019050919050565b5f6020820190508181035f830152614be681614bad565b9050919050565b5f606082019050614c005f830186614015565b614c0d6020830185614015565b614c1a6040830184614015565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614c7c602183613dd4565b9150614c8782614c22565b604082019050919050565b5f6020820190508181035f830152614ca981614c70565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614d3c81613e97565b82525050565b5f614d4d8383614d33565b60208301905092915050565b5f602082019050919050565b5f614d6f82614d0a565b614d798185614d14565b9350614d8483614d24565b805f5b83811015614db4578151614d9b8882614d42565b9750614da683614d59565b925050600181019050614d87565b5085935050505092915050565b5f60a082019050614dd45f830188614015565b614de160208301876146c4565b8181036040830152614df38186614d65565b9050614e026060830185614116565b614e0f6080830184614015565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122059c036f4aa50ab71198f4fed78d72fb24e405148bd44d14208e5c07f9947758b64736f6c63430008150033e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080e2a080
Deployed Bytecode
0x608060405260043610610275575f3560e01c8063715018a61161014e578063a9059cbb116100c0578063c3f70b5211610079578063c3f70b5214610918578063c9567bf914610942578063dd62ed3e14610958578063df6f93be14610994578063e8078d94146109be578063f2fde38b146109d45761027c565b8063a9059cbb1461080e578063b62496f51461084a578063b69ef8a814610886578063bc37e1a3146108b0578063be857504146108c6578063c0246668146108f05761027c565b8063945674fe11610112578063945674fe1461071657806395d89b41146107405780639a7a23d61461076a5780639ee2e924146107925780639fccce32146107a8578063a457c2d7146107d25761027c565b8063715018a614610682578063751039fc146106985780637571336a146106ae57806387dd95c0146106d65780638da5cb5b146106ec5761027c565b806323b872dd116101e757806349bd5a5e116101ab57806349bd5a5e146105645780634fbee1931461058e5780635de0f2a0146105ca578063650c4226146105f45780636c7e15c91461061c57806370a08231146106465761027c565b806323b872dd1461046e578063313ce567146104aa57806339509351146104d457806346469afb1461051057806348d791551461053a5761027c565b806318160ddd1161023957806318160ddd146103765780631816467f146103a0578063184f5c6a146103c85780631a8145bb146103f05780631bff78981461041a57806322eb6631146104445761027c565b806306fdde0314610280578063095ea7b3146102aa5780630e947809146102e657806310d5de53146103105780631694505e1461034c5761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b506102946109fc565b6040516102a19190613e54565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190613f05565b610a8c565b6040516102dd9190613f5d565b60405180910390f35b3480156102f1575f80fd5b506102fa610aa9565b6040516103079190613f5d565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613f76565b610abb565b6040516103439190613f5d565b60405180910390f35b348015610357575f80fd5b50610360610ad8565b60405161036d9190613ffc565b60405180910390f35b348015610381575f80fd5b5061038a610afd565b6040516103979190614024565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c19190613f76565b610b06565b005b3480156103d3575f80fd5b506103ee60048036038101906103e99190614067565b610c5a565b005b3480156103fb575f80fd5b50610404610d0d565b6040516104119190614024565b60405180910390f35b348015610425575f80fd5b5061042e610d13565b60405161043b9190614024565b60405180910390f35b34801561044f575f80fd5b50610458610d19565b6040516104659190614024565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190614092565b610d1f565b6040516104a19190613f5d565b60405180910390f35b3480156104b5575f80fd5b506104be610df3565b6040516104cb91906140fd565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f59190613f05565b610dfb565b6040516105079190613f5d565b60405180910390f35b34801561051b575f80fd5b50610524610ea9565b6040516105319190614024565b60405180910390f35b348015610545575f80fd5b5061054e610eaf565b60405161055b9190614024565b60405180910390f35b34801561056f575f80fd5b50610578610eb5565b6040516105859190614125565b60405180910390f35b348015610599575f80fd5b506105b460048036038101906105af9190613f76565b610eda565b6040516105c19190613f5d565b60405180910390f35b3480156105d5575f80fd5b506105de610f2c565b6040516105eb9190614024565b60405180910390f35b3480156105ff575f80fd5b5061061a6004803603810190610615919061413e565b610f32565b005b348015610627575f80fd5b50610630611016565b60405161063d9190614024565b60405180910390f35b348015610651575f80fd5b5061066c60048036038101906106679190613f76565b61101c565b6040516106799190614024565b60405180910390f35b34801561068d575f80fd5b50610696611061565b005b3480156106a3575f80fd5b506106ac6111b4565b005b3480156106b9575f80fd5b506106d460048036038101906106cf91906141a2565b611265565b005b3480156106e1575f80fd5b506106ea611353565b005b3480156106f7575f80fd5b506107006114fc565b60405161070d9190614125565b60405180910390f35b348015610721575f80fd5b5061072a611524565b6040516107379190613f5d565b60405180910390f35b34801561074b575f80fd5b50610754611537565b6040516107619190613e54565b60405180910390f35b348015610775575f80fd5b50610790600480360381019061078b91906141a2565b6115c7565b005b34801561079d575f80fd5b506107a66116fa565b005b3480156107b3575f80fd5b506107bc61180d565b6040516107c99190614024565b60405180910390f35b3480156107dd575f80fd5b506107f860048036038101906107f39190613f05565b611813565b6040516108059190613f5d565b60405180910390f35b348015610819575f80fd5b50610834600480360381019061082f9190613f05565b6118db565b6040516108419190613f5d565b60405180910390f35b348015610855575f80fd5b50610870600480360381019061086b9190613f76565b6118f8565b60405161087d9190613f5d565b60405180910390f35b348015610891575f80fd5b5061089a611915565b6040516108a79190614024565b60405180910390f35b3480156108bb575f80fd5b506108c461191b565b005b3480156108d1575f80fd5b506108da611d21565b6040516108e79190614024565b60405180910390f35b3480156108fb575f80fd5b50610916600480360381019061091191906141a2565b611d27565b005b348015610923575f80fd5b5061092c611e63565b6040516109399190614024565b60405180910390f35b34801561094d575f80fd5b50610956611e69565b005b348015610963575f80fd5b5061097e600480360381019061097991906141e0565b61226f565b60405161098b9190614024565b60405180910390f35b34801561099f575f80fd5b506109a86122f1565b6040516109b59190614024565b60405180910390f35b3480156109c9575f80fd5b506109d26122f7565b005b3480156109df575f80fd5b506109fa60048036038101906109f59190613f76565b6126fd565b005b606060038054610a0b9061424b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a379061424b565b8015610a825780601f10610a5957610100808354040283529160200191610a82565b820191905f5260205f20905b815481529060010190602001808311610a6557829003601f168201915b5050505050905090565b5f610a9f610a98612851565b8484612858565b6001905092915050565b600f5f9054906101000a900460ff1681565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610b0e612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b93906142c5565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c62612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906142c5565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b60165481565b60135481565b60145481565b5f610d2b848484612a1b565b610de884610d37612851565b610de385604051806060016040528060288152602001614e406028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d9a612851565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133409092919063ffffffff16565b612858565b600190509392505050565b5f6012905090565b5f610e9f610e07612851565b84610e9a8560015f610e17612851565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133a290919063ffffffff16565b612858565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b610f3a612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf906142c5565b60405180910390fd5b8360118190555081601281905550601254601154610fe69190614310565b601081905550826014819055508060158190555060155460145461100a9190614310565b60138190555050505050565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611069612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee906142c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111bc612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611241906142c5565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b61126d612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f2906142c5565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61135b612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906142c5565b60405180910390fd5b5f4790505f811161142f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611426906143b3565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611475906143fe565b5f6040518083038185875af1925050503d805f81146114af576040519150601f19603f3d011682016040523d82523d5f602084013e6114b4565b606091505b50509050806114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef9061445c565b60405180910390fd5b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b6060600480546115469061424b565b80601f01602080910402602001604051908101604052809291908181526020018280546115729061424b565b80156115bd5780601f10611594576101008083540402835291602001916115bd565b820191905f5260205f20905b8154815290600101906020018083116115a057829003601f168201915b5050505050905090565b6115cf612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611654906142c5565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e3906144ea565b60405180910390fd5b6116f682826133ff565b5050565b611702612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611787906142c5565b60405180910390fd5b5f61179a3061101c565b90505f81116117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d590614578565b60405180910390fd5b61180a30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612a1b565b50565b60175481565b5f6118d161181f612851565b846118cc85604051806060016040528060258152602001614e686025913960015f611848612851565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133409092919063ffffffff16565b612858565b6001905092915050565b5f6118ee6118e7612851565b8484612a1b565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b611923612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a8906142c5565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506119d4816001611265565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8191906145aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0a91906145aa565b6040518363ffffffff1660e01b8152600401611b279291906145d5565b6020604051808303815f875af1158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6791906145aa565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bd260095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611265565b611bfe60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016133ff565b5f4790505f6064605a611c103061101c565b611c1a91906145fc565b611c24919061466a565b9050611c523060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611cd8969594939291906146d3565b60606040518083038185885af1158015611cf4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d199190614746565b505050505050565b60155481565b611d2f612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db4906142c5565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e579190613f5d565b60405180910390a25050565b600c5481565b611e71612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef6906142c5565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050611f22816001611265565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fcf91906145aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612034573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205891906145aa565b6040518363ffffffff1660e01b81526004016120759291906145d5565b6020604051808303815f875af1158015612091573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120b591906145aa565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061212060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611265565b61214c60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016133ff565b5f4790505f6064605a61215e3061101c565b61216891906145fc565b612172919061466a565b90506121a03060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612226969594939291906146d3565b60606040518083038185885af1158015612242573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906122679190614746565b505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b6122ff612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461238d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612384906142c5565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506123b0816001611265565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612439573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245d91906145aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e691906145aa565b6040518363ffffffff1660e01b81526004016125039291906145d5565b6020604051808303815f875af115801561251f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254391906145aa565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506125ae60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611265565b6125da60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016133ff565b5f4790505f6064605a6125ec3061101c565b6125f691906145fc565b612600919061466a565b905061262e3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126b4969594939291906146d3565b60606040518083038185885af11580156126d0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906126f59190614746565b505050505050565b612705612851565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a906142c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd90614806565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292b90614894565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a0e9190614024565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8090614922565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aee906149b0565b60405180910390fd5b5f8103612b0e57612b0983835f61349d565b61333b565b600f5f9054906101000a900460ff1615612f0357612b2a6114fc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b985750612b686114fc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bd057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c0a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c235750600960149054906101000a900460ff16155b15612f0257601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612cc55750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d6c57600c54811115612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690614a3e565b60405180910390fd5b600e54612d1b8361101c565b82612d269190614310565b1115612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e90614aa6565b60405180910390fd5b612f01565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e095750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e5857600c54811115612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90614b34565b60405180910390fd5b612f00565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612eff57600e54612eb28361101c565b82612ebd9190614310565b1115612efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef590614aa6565b60405180910390fd5b5b5b5b5b5b5f612f0d3061101c565b90505f600d548210159050808015612f325750600960149054906101000a900460ff16155b8015612f855750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fd8575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561302b575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561306e576001600960146101000a81548160ff021916908315150217905550613053613726565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061311d575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613126575f90505b5f811561332b57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561318457505f601354115b1561321c576131b160646131a36013548861394c90919063ffffffff16565b6139c390919063ffffffff16565b9050601354601554826131c491906145fc565b6131ce919061466a565b60165f8282546131de9190614310565b92505081905550601354601454826131f691906145fc565b613200919061466a565b60175f8282546132109190614310565b92505081905550613308565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561327357505f601054115b15613307576132a060646132926010548861394c90919063ffffffff16565b6139c390919063ffffffff16565b9050601054601254826132b391906145fc565b6132bd919061466a565b60165f8282546132cd9190614310565b92505081905550601054601154826132e591906145fc565b6132ef919061466a565b60175f8282546132ff9190614310565b925050819055505b5b5f81111561331c5761331b87308361349d565b5b80856133289190614b52565b94505b61333687878761349d565b505050505b505050565b5f838311158290613387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337e9190613e54565b60405180910390fd5b505f83856133959190614b52565b9050809150509392505050565b5f8082846133b09190614310565b9050838110156133f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ec90614bcf565b60405180910390fd5b8091505092915050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361350b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350290614922565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613570906149b0565b60405180910390fd5b613584838383613a0c565b6135ed81604051806060016040528060268152602001614e1a602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133409092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061367c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133a290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137199190614024565b60405180910390a3505050565b5f6137303061101c565b90505f6017546016546137439190614310565b90505f8083148061375357505f82145b156137605750505061394a565b5f1515600f60019054906101000a900460ff161515036137a7576014600d5461378991906145fc565b8311156137a2576014600d5461379f91906145fc565b92505b6137b3565b6137b03061101c565b92505b5f600283601654866137c591906145fc565b6137cf919061466a565b6137d9919061466a565b90505f6137ef8286613a1190919063ffffffff16565b90505f4790506137fe82613a5a565b5f6138128247613a1190919063ffffffff16565b90505f61383c8761382e6017548561394c90919063ffffffff16565b6139c390919063ffffffff16565b90505f818361384b9190614b52565b90505f6016819055505f6017819055505f8611801561386957505f81115b156138b6576138788682613c90565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826016546040516138ad93929190614bed565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138fb906143fe565b5f6040518083038185875af1925050503d805f8114613935576040519150601f19603f3d011682016040523d82523d5f602084013e61393a565b606091505b5050809750505050505050505050505b565b5f80830361395c575f90506139bd565b5f828461396991906145fc565b9050828482613978919061466a565b146139b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139af90614c92565b60405180910390fd5b809150505b92915050565b5f613a0483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d69565b905092915050565b505050565b5f613a5283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613340565b905092915050565b5f600267ffffffffffffffff811115613a7657613a75614cb0565b5b604051908082528060200260200182016040528015613aa45781602001602082028036833780820191505090505b50905030815f81518110613abb57613aba614cdd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b8391906145aa565b81600181518110613b9757613b96614cdd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613bfd3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613c5f959493929190614dc1565b5f604051808303815f87803b158015613c76575f80fd5b505af1158015613c88573d5f803e3d5ffd5b505050505050565b613cbc3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612858565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613d21969594939291906146d3565b60606040518083038185885af1158015613d3d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613d629190614746565b5050505050565b5f8083118290613daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613da69190613e54565b60405180910390fd5b505f8385613dbd919061466a565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613e01578082015181840152602081019050613de6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613e2682613dca565b613e308185613dd4565b9350613e40818560208601613de4565b613e4981613e0c565b840191505092915050565b5f6020820190508181035f830152613e6c8184613e1c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613ea182613e78565b9050919050565b613eb181613e97565b8114613ebb575f80fd5b50565b5f81359050613ecc81613ea8565b92915050565b5f819050919050565b613ee481613ed2565b8114613eee575f80fd5b50565b5f81359050613eff81613edb565b92915050565b5f8060408385031215613f1b57613f1a613e74565b5b5f613f2885828601613ebe565b9250506020613f3985828601613ef1565b9150509250929050565b5f8115159050919050565b613f5781613f43565b82525050565b5f602082019050613f705f830184613f4e565b92915050565b5f60208284031215613f8b57613f8a613e74565b5b5f613f9884828501613ebe565b91505092915050565b5f819050919050565b5f613fc4613fbf613fba84613e78565b613fa1565b613e78565b9050919050565b5f613fd582613faa565b9050919050565b5f613fe682613fcb565b9050919050565b613ff681613fdc565b82525050565b5f60208201905061400f5f830184613fed565b92915050565b61401e81613ed2565b82525050565b5f6020820190506140375f830184614015565b92915050565b61404681613f43565b8114614050575f80fd5b50565b5f813590506140618161403d565b92915050565b5f6020828403121561407c5761407b613e74565b5b5f61408984828501614053565b91505092915050565b5f805f606084860312156140a9576140a8613e74565b5b5f6140b686828701613ebe565b93505060206140c786828701613ebe565b92505060406140d886828701613ef1565b9150509250925092565b5f60ff82169050919050565b6140f7816140e2565b82525050565b5f6020820190506141105f8301846140ee565b92915050565b61411f81613e97565b82525050565b5f6020820190506141385f830184614116565b92915050565b5f805f806080858703121561415657614155613e74565b5b5f61416387828801613ef1565b945050602061417487828801613ef1565b935050604061418587828801613ef1565b925050606061419687828801613ef1565b91505092959194509250565b5f80604083850312156141b8576141b7613e74565b5b5f6141c585828601613ebe565b92505060206141d685828601614053565b9150509250929050565b5f80604083850312156141f6576141f5613e74565b5b5f61420385828601613ebe565b925050602061421485828601613ebe565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061426257607f821691505b6020821081036142755761427461421e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6142af602083613dd4565b91506142ba8261427b565b602082019050919050565b5f6020820190508181035f8301526142dc816142a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61431a82613ed2565b915061432583613ed2565b925082820190508082111561433d5761433c6142e3565b5b92915050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f61439d602283613dd4565b91506143a882614343565b604082019050919050565b5f6020820190508181035f8301526143ca81614391565b9050919050565b5f81905092915050565b50565b5f6143e95f836143d1565b91506143f4826143db565b5f82019050919050565b5f614408826143de565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f614446601b83613dd4565b915061445182614412565b602082019050919050565b5f6020820190508181035f8301526144738161443a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6144d4603983613dd4565b91506144df8261447a565b604082019050919050565b5f6020820190508181035f830152614501816144c8565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f614562602483613dd4565b915061456d82614508565b604082019050919050565b5f6020820190508181035f83015261458f81614556565b9050919050565b5f815190506145a481613ea8565b92915050565b5f602082840312156145bf576145be613e74565b5b5f6145cc84828501614596565b91505092915050565b5f6040820190506145e85f830185614116565b6145f56020830184614116565b9392505050565b5f61460682613ed2565b915061461183613ed2565b925082820261461f81613ed2565b91508282048414831517614636576146356142e3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61467482613ed2565b915061467f83613ed2565b92508261468f5761468e61463d565b5b828204905092915050565b5f819050919050565b5f6146bd6146b86146b38461469a565b613fa1565b613ed2565b9050919050565b6146cd816146a3565b82525050565b5f60c0820190506146e65f830189614116565b6146f36020830188614015565b61470060408301876146c4565b61470d60608301866146c4565b61471a6080830185614116565b61472760a0830184614015565b979650505050505050565b5f8151905061474081613edb565b92915050565b5f805f6060848603121561475d5761475c613e74565b5b5f61476a86828701614732565b935050602061477b86828701614732565b925050604061478c86828701614732565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6147f0602483613dd4565b91506147fb82614796565b604082019050919050565b5f6020820190508181035f83015261481d816147e4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61487e602283613dd4565b915061488982614824565b604082019050919050565b5f6020820190508181035f8301526148ab81614872565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61490c602583613dd4565b9150614917826148b2565b604082019050919050565b5f6020820190508181035f83015261493981614900565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61499a602383613dd4565b91506149a582614940565b604082019050919050565b5f6020820190508181035f8301526149c78161498e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614a28603583613dd4565b9150614a33826149ce565b604082019050919050565b5f6020820190508181035f830152614a5581614a1c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614a90601383613dd4565b9150614a9b82614a5c565b602082019050919050565b5f6020820190508181035f830152614abd81614a84565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614b1e603683613dd4565b9150614b2982614ac4565b604082019050919050565b5f6020820190508181035f830152614b4b81614b12565b9050919050565b5f614b5c82613ed2565b9150614b6783613ed2565b9250828203905081811115614b7f57614b7e6142e3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614bb9601b83613dd4565b9150614bc482614b85565b602082019050919050565b5f6020820190508181035f830152614be681614bad565b9050919050565b5f606082019050614c005f830186614015565b614c0d6020830185614015565b614c1a6040830184614015565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614c7c602183613dd4565b9150614c8782614c22565b604082019050919050565b5f6020820190508181035f830152614ca981614c70565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614d3c81613e97565b82525050565b5f614d4d8383614d33565b60208301905092915050565b5f602082019050919050565b5f614d6f82614d0a565b614d798185614d14565b9350614d8483614d24565b805f5b83811015614db4578151614d9b8882614d42565b9750614da683614d59565b925050600181019050614d87565b5085935050505092915050565b5f60a082019050614dd45f830188614015565b614de160208301876146c4565b8181036040830152614df38186614d65565b9050614e026060830185614116565b614e0f6080830184614015565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122059c036f4aa50ab71198f4fed78d72fb24e405148bd44d14208e5c07f9947758b64736f6c63430008150033
Deployed Bytecode Sourcemap
17822:16276:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5085:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5999:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19981:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20554:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19682:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5406:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28055:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26745:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20263:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20162:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20196:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6176:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5305:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6539:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20064:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19940:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19730:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28228:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19898:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27017:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20097:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5522:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11066:148;;;;;;;;;;;;;:::i;:::-;;26655:81;;;;;;;;;;;;;:::i;:::-;;26861:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26070:313;;;;;;;;;;;;;:::i;:::-;;10852:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20018:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5193:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27604:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26391:256;;;;;;;;;;;;;:::i;:::-;;20303:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6765:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5657:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20777:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19798:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23948:1050;;;;;;;;;;;;;:::i;:::-;;20228:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27413:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19862:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22898:1042;;;;;;;;;;;;;:::i;:::-;;5840:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20128:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25009:1043;;;;;;;;;;;;;:::i;:::-;;11222:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5085:100;5139:13;5172:5;5165:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5085:100;:::o;5999:169::-;6082:4;6099:39;6108:12;:10;:12::i;:::-;6122:7;6131:6;6099:8;:39::i;:::-;6156:4;6149:11;;5999:169;;;;:::o;19981:30::-;;;;;;;;;;;;;:::o;20554:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;19682:41::-;;;;;;;;;;;;;:::o;5406:108::-;5467:7;5494:12;;5487:19;;5406:108;:::o;28055:165::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28167:9:::1;;;;;;;;;;;28136:41;;28153:12;28136:41;;;;;;;;;;;;28200:12;28188:9;;:24;;;;;;;;;;;;;;;;;;28055:165:::0;:::o;26745:107::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26837:7:::1;26817:17;;:27;;;;;;;;;;;;;;;;;;26745:107:::0;:::o;20263:33::-;;;;:::o;20162:27::-;;;;:::o;20196:25::-;;;;:::o;6176:355::-;6316:4;6333:36;6343:6;6351:9;6362:6;6333:9;:36::i;:::-;6380:121;6389:6;6397:12;:10;:12::i;:::-;6411:89;6449:6;6411:89;;;;;;;;;;;;;;;;;:11;:19;6423:6;6411:19;;;;;;;;;;;;;;;:33;6431:12;:10;:12::i;:::-;6411:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6380:8;:121::i;:::-;6519:4;6512:11;;6176:355;;;;;:::o;5305:93::-;5363:5;5388:2;5381:9;;5305:93;:::o;6539:218::-;6627:4;6644:83;6653:12;:10;:12::i;:::-;6667:7;6676:50;6715:10;6676:11;:25;6688:12;:10;:12::i;:::-;6676:25;;;;;;;;;;;;;;;:34;6702:7;6676:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6644:8;:83::i;:::-;6745:4;6738:11;;6539:218;;;;:::o;20064:26::-;;;;:::o;19940:31::-;;;;:::o;19730:28::-;;;;;;;;;;;;;:::o;28228:125::-;28293:4;28317:19;:28;28337:7;28317:28;;;;;;;;;;;;;;;;;;;;;;;;;28310:35;;28228:125;;;:::o;19898:35::-;;;;:::o;27017:388::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27192:7:::1;27180:9;:19;;;;27222:7;27210:9;:19;;;;27266:9;;27254;;:21;;;;:::i;:::-;27240:11;:35;;;;27299:8;27286:10;:21;;;;27331:8;27318:10;:21;;;;27378:10;;27365;;:23;;;;:::i;:::-;27350:12;:38;;;;27017:388:::0;;;;:::o;20097:24::-;;;;:::o;5522:127::-;5596:7;5623:9;:18;5633:7;5623:18;;;;;;;;;;;;;;;;5616:25;;5522:127;;;:::o;11066:148::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11173:1:::1;11136:40;;11157:6;;;;;;;;;;;11136:40;;;;;;;;;;;;11204:1;11187:6;;:19;;;;;;;;;;;;;;;;;;11066:148::o:0;26655:81::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26723:5:::1;26709:11;;:19;;;;;;;;;;;;;;;;;;26655:81::o:0;26861:144::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26993:4:::1;26951:31;:39;26983:6;26951:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;26861:144:::0;;:::o;26070:313::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26128:18:::1;26149:21;26128:42;;26202:1;26189:10;:14;26181:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;26254:12;26279:9;;;;;;;;;;;26271:23;;26302:10;26271:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26253:64;;;26336:7;26328:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;26117:266;;26070:313::o:0;10852:79::-;10890:7;10917:6;;;;;;;;;;;10910:13;;10852:79;:::o;20018:37::-;;;;;;;;;;;;;:::o;5193:104::-;5249:13;5282:7;5275:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5193:104;:::o;27604:245::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27711:13:::1;;;;;;;;;;;27703:21;;:4;:21;;::::0;27695:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27800:41;27829:4;27835:5;27800:28;:41::i;:::-;27604:245:::0;;:::o;26391:256::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26456:20:::1;26479:24;26497:4;26479:9;:24::i;:::-;26456:47;;26537:1;26522:12;:16;26514:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;26590:49;26608:4;26615:9;;;;;;;;;;;26626:12;26590:9;:49::i;:::-;26445:202;26391:256::o:0;20303:27::-;;;;:::o;6765:269::-;6858:4;6875:129;6884:12;:10;:12::i;:::-;6898:7;6907:96;6946:15;6907:96;;;;;;;;;;;;;;;;;:11;:25;6919:12;:10;:12::i;:::-;6907:25;;;;;;;;;;;;;;;:34;6933:7;6907:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6875:8;:129::i;:::-;7022:4;7015:11;;6765:269;;;;:::o;5657:175::-;5743:4;5760:42;5770:12;:10;:12::i;:::-;5784:9;5795:6;5760:9;:42::i;:::-;5820:4;5813:11;;5657:175;;;;:::o;20777:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;19798:22::-;;;;:::o;23948:1050::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24000:35:::1;24057:42;24000:100;;24114:58;24148:16;24167:4;24114:25;:58::i;:::-;24201:16;24183:15;;:34;;;;;;;;;;;;;;;;;;24265:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24247:56;;;24312:4;24319:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24247:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24231:13;;:112;;;;;;;;;;;;;;;;;;24354:55;24388:13;;;;;;;;;;;24404:4;24354:25;:55::i;:::-;24420:58;24457:13;;;;;;;;;;;24473:4;24420:28;:58::i;:::-;24499:17;24519:21;24499:41;;24551:19;24605:3;24600:2;24573:24;24591:4;24573:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;24551:57;;24639:62;24656:4;24671:15;;;;;;;;;;;24689:11;24639:8;:62::i;:::-;24714:15;;;;;;;;;;;:31;;;24753:9;24786:4;24806:11;24836:1;24883::::0;24926:9:::1;;;;;;;;;;;24950:15;24714:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23983:1015;;;23948:1050::o:0;20228:25::-;;;;:::o;27413:182::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27529:8:::1;27498:19;:28;27518:7;27498:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27569:7;27553:34;;;27578:8;27553:34;;;;;;:::i;:::-;;;;;;;;27413:182:::0;;:::o;19862:29::-;;;;:::o;22898:1042::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22956:35:::1;23013:42;22956:100;;23070:58;23104:16;23123:4;23070:25;:58::i;:::-;23157:16;23139:15;;:34;;;;;;;;;;;;;;;;;;23221:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23203:56;;;23268:4;23275:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23203:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23187:13;;:112;;;;;;;;;;;;;;;;;;23310:55;23344:13;;;;;;;;;;;23360:4;23310:25;:55::i;:::-;23376:58;23413:13;;;;;;;;;;;23429:4;23376:28;:58::i;:::-;23455:17;23475:21;23455:41;;23507:19;23561:3;23556:2;23529:24;23547:4;23529:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;23507:57;;23595:62;23612:4;23627:15;;;;;;;;;;;23645:11;23595:8;:62::i;:::-;23670:15;;;;;;;;;;;:31;;;23709:9;23742:4;23762:11;23792:1;23839::::0;23882:9:::1;;;;;;;;;;;23906:15;23670:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22939:1001;;;22898:1042::o:0;5840:151::-;5929:7;5956:11;:18;5968:5;5956:18;;;;;;;;;;;;;;;:27;5975:7;5956:27;;;;;;;;;;;;;;;;5949:34;;5840:151;;;;:::o;20128:24::-;;;;:::o;25009:1043::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25068:35:::1;25125:42;25068:100;;25182:58;25216:16;25235:4;25182:25;:58::i;:::-;25269:16;25251:15;;:34;;;;;;;;;;;;;;;;;;25333:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25315:56;;;25380:4;25387:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25315:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25299:13;;:112;;;;;;;;;;;;;;;;;;25422:55;25456:13;;;;;;;;;;;25472:4;25422:25;:55::i;:::-;25488:58;25525:13;;;;;;;;;;;25541:4;25488:28;:58::i;:::-;25567:17;25587:21;25567:41;;25619:19;25673:3;25668:2;25641:24;25659:4;25641:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;25619:57;;25707:62;25724:4;25739:15;;;;;;;;;;;25757:11;25707:8;:62::i;:::-;25782:15;;;;;;;;;;;:31;;;25821:9;25854:4;25874:11;25904:1;25951::::0;25994:9:::1;;;;;;;;;;;26018:15;25782:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25051:1001;;;25009:1043::o:0;11222:169::-;10989:12;:10;:12::i;:::-;10979:22;;:6;;;;;;;;;;;:22;;;10971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11346:8:::1;11317:38;;11338:6;;;;;;;;;;;11317:38;;;;;;;;;;;;11375:8;11366:6;;:17;;;;;;;;;;;;;;;;;;11222:169:::0;:::o;438:98::-;491:7;518:10;511:17;;438:98;:::o;8441:381::-;8594:1;8577:19;;:5;:19;;;8569:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8675:1;8656:21;;:7;:21;;;8648:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8760:6;8730:11;:18;8742:5;8730:18;;;;;;;;;;;;;;;:27;8749:7;8730:27;;;;;;;;;;;;;;;:36;;;;8798:7;8782:32;;8791:5;8782:32;;;8807:6;8782:32;;;;;;:::i;:::-;;;;;;;;8441:381;;;:::o;28362:3112::-;28510:1;28494:18;;:4;:18;;;28486:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28587:1;28573:16;;:2;:16;;;28565:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28654:1;28644:6;:11;28641:92;;28672:28;28688:4;28694:2;28698:1;28672:15;:28::i;:::-;28715:7;;28641:92;28749:11;;;;;;;;;;;28746:1083;;;28806:7;:5;:7::i;:::-;28798:15;;:4;:15;;;;:49;;;;;28840:7;:5;:7::i;:::-;28834:13;;:2;:13;;;;28798:49;:86;;;;;28882:1;28868:16;;:2;:16;;;;28798:86;:128;;;;;28919:6;28905:21;;:2;:21;;;;28798:128;:160;;;;;28948:10;;;;;;;;;;;28947:11;28798:160;28776:1042;;;29042:25;:31;29068:4;29042:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;29078:31;:35;29110:2;29078:35;;;;;;;;;;;;;;;;;;;;;;;;;29077:36;29042:71;29038:765;;;29160:14;;29150:6;:24;;29142:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;29293:16;;29276:13;29286:2;29276:9;:13::i;:::-;29267:6;:22;;;;:::i;:::-;:42;;29259:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;29038:765;;;29412:25;:29;29438:2;29412:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;29446:31;:37;29478:4;29446:37;;;;;;;;;;;;;;;;;;;;;;;;;29445:38;29412:71;29408:395;;;29530:14;;29520:6;:24;;29512:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;29408:395;;;29650:31;:35;29682:2;29650:35;;;;;;;;;;;;;;;;;;;;;;;;;29646:157;;29743:16;;29726:13;29736:2;29726:9;:13::i;:::-;29717:6;:22;;;;:::i;:::-;:42;;29709:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;29646:157;29408:395;29038:765;28776:1042;28746:1083;29842:28;29873:24;29891:4;29873:9;:24::i;:::-;29842:55;;29911:12;29950:20;;29926;:44;;29911:59;;30002:7;:35;;;;;30027:10;;;;;;;;;;;30026:11;30002:35;:84;;;;;30055:25;:31;30081:4;30055:31;;;;;;;;;;;;;;;;;;;;;;;;;30054:32;30002:84;:127;;;;;30104:19;:25;30124:4;30104:25;;;;;;;;;;;;;;;;;;;;;;;;;30103:26;30002:127;:168;;;;;30147:19;:23;30167:2;30147:23;;;;;;;;;;;;;;;;;;;;;;;;;30146:24;30002:168;29984:306;;;30210:4;30197:10;;:17;;;;;;;;;;;;;;;;;;30232:10;:8;:10::i;:::-;30273:5;30260:10;;:18;;;;;;;;;;;;;;;;;;29984:306;30303:12;30319:10;;;;;;;;;;;30318:11;30303:26;;30431:19;:25;30451:4;30431:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30460:19;:23;30480:2;30460:23;;;;;;;;;;;;;;;;;;;;;;;;;30431:52;30428:99;;;30510:5;30500:15;;30428:99;30540:12;30644:7;30641:779;;;30695:25;:29;30721:2;30695:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;30743:1;30728:12;;:16;30695:49;30691:576;;;30771:33;30800:3;30771:24;30782:12;;30771:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30764:40;;30865:12;;30852:10;;30845:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;30823:18;;:54;;;;;;;:::i;:::-;;;;;;;;30932:12;;30919:10;;30912:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;30896:12;;:48;;;;;;;:::i;:::-;;;;;;;;30691:576;;;31005:25;:31;31031:4;31005:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;31054:1;31040:11;;:15;31005:50;31002:265;;;31083:32;31111:3;31083:23;31094:11;;31083:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;31076:39;;31175:11;;31163:9;;31156:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;31134:18;;:52;;;;;;;:::i;:::-;;;;;;;;31240:11;;31228:9;;31221:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;31205:12;;:46;;;;;;;:::i;:::-;;;;;;;;31002:265;30691:576;31294:1;31287:4;:8;31284:93;;;31319:42;31335:4;31349;31356;31319:15;:42::i;:::-;31284:93;31404:4;31394:14;;;;;:::i;:::-;;;30641:779;31433:33;31449:4;31455:2;31459:6;31433:15;:33::i;:::-;28475:2999;;;;28362:3112;;;;:::o;9329:193::-;9415:7;9448:1;9443;:6;;9451:12;9435:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9475:9;9491:1;9487;:5;;;;:::i;:::-;9475:17;;9513:1;9506:8;;;9329:193;;;;;:::o;8995:182::-;9053:7;9073:9;9089:1;9085;:5;;;;:::i;:::-;9073:17;;9114:1;9109;:6;;9101:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9168:1;9161:8;;;8995:182;;;;:::o;27858:189::-;27975:5;27941:25;:31;27967:4;27941:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;28033:5;27999:40;;28027:4;27999:40;;;;;;;;;;;;27858:189;;:::o;7042:575::-;7200:1;7182:20;;:6;:20;;;7174:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7284:1;7263:23;;:9;:23;;;7255:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7340:47;7361:6;7369:9;7380:6;7340:20;:47::i;:::-;7421:71;7443:6;7421:71;;;;;;;;;;;;;;;;;:9;:17;7431:6;7421:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7401:9;:17;7411:6;7401:17;;;;;;;;;;;;;;;:91;;;;7526:32;7551:6;7526:9;:20;7536:9;7526:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7503:9;:20;7513:9;7503:20;;;;;;;;;;;;;;;:55;;;;7591:9;7574:35;;7583:6;7574:35;;;7602:6;7574:35;;;;;;:::i;:::-;;;;;;;;7042:575;;;:::o;32618:1477::-;32657:23;32683:24;32701:4;32683:9;:24::i;:::-;32657:50;;32718:25;32767:12;;32746:18;;:33;;;;:::i;:::-;32718:61;;32790:12;32838:1;32819:15;:20;:46;;;;32864:1;32843:17;:22;32819:46;32816:60;;;32868:7;;;;;32816:60;32913:5;32892:26;;:17;;;;;;;;;;;:26;;;32889:254;;32978:2;32955:20;;:25;;;;:::i;:::-;32937:15;:43;32934:125;;;33041:2;33018:20;;:25;;;;:::i;:::-;33000:43;;32934:125;32889:254;;;33107:24;33125:4;33107:9;:24::i;:::-;33089:42;;32889:254;33215:23;33300:1;33280:17;33259:18;;33241:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;33215:86;;33312:26;33341:36;33361:15;33341;:19;;:36;;;;:::i;:::-;33312:65;;33391:25;33419:21;33391:49;;33454:36;33471:18;33454:16;:36::i;:::-;33505:18;33526:44;33552:17;33526:21;:25;;:44;;;;:::i;:::-;33505:65;;33584:17;33604:51;33637:17;33604:28;33619:12;;33604:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;33584:71;;33666:23;33705:9;33692:10;:22;;;;:::i;:::-;33666:48;;33752:1;33731:18;:22;;;;33779:1;33764:12;:16;;;;33815:1;33797:15;:19;:42;;;;;33838:1;33820:15;:19;33797:42;33794:210;;;33855:46;33868:15;33885;33855:12;:46::i;:::-;33921:71;33936:18;33956:15;33973:18;;33921:71;;;;;;;;:::i;:::-;;;;;;;;33794:210;34038:9;;;;;;;;;;;34030:23;;34061:21;34030:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34017:70;;;;;32646:1449;;;;;;;;;32618:1477;:::o;9530:254::-;9588:7;9619:1;9614;:6;9610:47;;9644:1;9637:8;;;;9610:47;9670:9;9686:1;9682;:5;;;;:::i;:::-;9670:17;;9715:1;9710;9706;:5;;;;:::i;:::-;:10;9698:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9775:1;9768:8;;;9530:254;;;;;:::o;9792:132::-;9850:7;9877:39;9881:1;9884;9877:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9870:46;;9792:132;;;;:::o;8830:125::-;;;;:::o;9185:136::-;9243:7;9270:43;9274:1;9277;9270:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9263:50;;9185:136;;;;:::o;31483:597::-;31612:21;31650:1;31636:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31612:40;;31681:4;31663;31668:1;31663:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31707:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31697:4;31702:1;31697:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31743:62;31760:4;31775:15;;;;;;;;;;;31793:11;31743:8;:62::i;:::-;31845:15;;;;;;;;;;;:66;;;31926:11;31952:1;31996:4;32023;32043:15;31845:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31538:542;31483:597;:::o;32089:520::-;32237:62;32254:4;32269:15;;;;;;;;;;;32287:11;32237:8;:62::i;:::-;32343:15;;;;;;;;;;;:31;;;32382:9;32415:4;32435:11;32461:1;32504;32555:4;32575:15;32343:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32089:520;;:::o;9932:279::-;10018:7;10050:1;10046;:5;10053:12;10038:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10077:9;10093:1;10089;:5;;;;:::i;:::-;10077:17;;10202:1;10195:8;;;9932:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:116::-;5181:21;5196:5;5181:21;:::i;:::-;5174:5;5171:32;5161:60;;5217:1;5214;5207:12;5161:60;5111:116;:::o;5233:133::-;5276:5;5314:6;5301:20;5292:29;;5330:30;5354:5;5330:30;:::i;:::-;5233:133;;;;:::o;5372:323::-;5428:6;5477:2;5465:9;5456:7;5452:23;5448:32;5445:119;;;5483:79;;:::i;:::-;5445:119;5603:1;5628:50;5670:7;5661:6;5650:9;5646:22;5628:50;:::i;:::-;5618:60;;5574:114;5372:323;;;;:::o;5701:619::-;5778:6;5786;5794;5843:2;5831:9;5822:7;5818:23;5814:32;5811:119;;;5849:79;;:::i;:::-;5811:119;5969:1;5994:53;6039:7;6030:6;6019:9;6015:22;5994:53;:::i;:::-;5984:63;;5940:117;6096:2;6122:53;6167:7;6158:6;6147:9;6143:22;6122:53;:::i;:::-;6112:63;;6067:118;6224:2;6250:53;6295:7;6286:6;6275:9;6271:22;6250:53;:::i;:::-;6240:63;;6195:118;5701:619;;;;;:::o;6326:86::-;6361:7;6401:4;6394:5;6390:16;6379:27;;6326:86;;;:::o;6418:112::-;6501:22;6517:5;6501:22;:::i;:::-;6496:3;6489:35;6418:112;;:::o;6536:214::-;6625:4;6663:2;6652:9;6648:18;6640:26;;6676:67;6740:1;6729:9;6725:17;6716:6;6676:67;:::i;:::-;6536:214;;;;:::o;6756:118::-;6843:24;6861:5;6843:24;:::i;:::-;6838:3;6831:37;6756:118;;:::o;6880:222::-;6973:4;7011:2;7000:9;6996:18;6988:26;;7024:71;7092:1;7081:9;7077:17;7068:6;7024:71;:::i;:::-;6880:222;;;;:::o;7108:765::-;7194:6;7202;7210;7218;7267:3;7255:9;7246:7;7242:23;7238:33;7235:120;;;7274:79;;:::i;:::-;7235:120;7394:1;7419:53;7464:7;7455:6;7444:9;7440:22;7419:53;:::i;:::-;7409:63;;7365:117;7521:2;7547:53;7592:7;7583:6;7572:9;7568:22;7547:53;:::i;:::-;7537:63;;7492:118;7649:2;7675:53;7720:7;7711:6;7700:9;7696:22;7675:53;:::i;:::-;7665:63;;7620:118;7777:2;7803:53;7848:7;7839:6;7828:9;7824:22;7803:53;:::i;:::-;7793:63;;7748:118;7108:765;;;;;;;:::o;7879:468::-;7944:6;7952;8001:2;7989:9;7980:7;7976:23;7972:32;7969:119;;;8007:79;;:::i;:::-;7969:119;8127:1;8152:53;8197:7;8188:6;8177:9;8173:22;8152:53;:::i;:::-;8142:63;;8098:117;8254:2;8280:50;8322:7;8313:6;8302:9;8298:22;8280:50;:::i;:::-;8270:60;;8225:115;7879:468;;;;;:::o;8353:474::-;8421:6;8429;8478:2;8466:9;8457:7;8453:23;8449:32;8446:119;;;8484:79;;:::i;:::-;8446:119;8604:1;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8575:117;8731:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;:::i;:::-;8747:63;;8702:118;8353:474;;;;;:::o;8833:180::-;8881:77;8878:1;8871:88;8978:4;8975:1;8968:15;9002:4;8999:1;8992:15;9019:320;9063:6;9100:1;9094:4;9090:12;9080:22;;9147:1;9141:4;9137:12;9168:18;9158:81;;9224:4;9216:6;9212:17;9202:27;;9158:81;9286:2;9278:6;9275:14;9255:18;9252:38;9249:84;;9305:18;;:::i;:::-;9249:84;9070:269;9019:320;;;:::o;9345:182::-;9485:34;9481:1;9473:6;9469:14;9462:58;9345:182;:::o;9533:366::-;9675:3;9696:67;9760:2;9755:3;9696:67;:::i;:::-;9689:74;;9772:93;9861:3;9772:93;:::i;:::-;9890:2;9885:3;9881:12;9874:19;;9533:366;;;:::o;9905:419::-;10071:4;10109:2;10098:9;10094:18;10086:26;;10158:9;10152:4;10148:20;10144:1;10133:9;10129:17;10122:47;10186:131;10312:4;10186:131;:::i;:::-;10178:139;;9905:419;;;:::o;10330:180::-;10378:77;10375:1;10368:88;10475:4;10472:1;10465:15;10499:4;10496:1;10489:15;10516:191;10556:3;10575:20;10593:1;10575:20;:::i;:::-;10570:25;;10609:20;10627:1;10609:20;:::i;:::-;10604:25;;10652:1;10649;10645:9;10638:16;;10673:3;10670:1;10667:10;10664:36;;;10680:18;;:::i;:::-;10664:36;10516:191;;;;:::o;10713:221::-;10853:34;10849:1;10841:6;10837:14;10830:58;10922:4;10917:2;10909:6;10905:15;10898:29;10713:221;:::o;10940:366::-;11082:3;11103:67;11167:2;11162:3;11103:67;:::i;:::-;11096:74;;11179:93;11268:3;11179:93;:::i;:::-;11297:2;11292:3;11288:12;11281:19;;10940:366;;;:::o;11312:419::-;11478:4;11516:2;11505:9;11501:18;11493:26;;11565:9;11559:4;11555:20;11551:1;11540:9;11536:17;11529:47;11593:131;11719:4;11593:131;:::i;:::-;11585:139;;11312:419;;;:::o;11737:147::-;11838:11;11875:3;11860:18;;11737:147;;;;:::o;11890:114::-;;:::o;12010:398::-;12169:3;12190:83;12271:1;12266:3;12190:83;:::i;:::-;12183:90;;12282:93;12371:3;12282:93;:::i;:::-;12400:1;12395:3;12391:11;12384:18;;12010:398;;;:::o;12414:379::-;12598:3;12620:147;12763:3;12620:147;:::i;:::-;12613:154;;12784:3;12777:10;;12414:379;;;:::o;12799:177::-;12939:29;12935:1;12927:6;12923:14;12916:53;12799:177;:::o;12982:366::-;13124:3;13145:67;13209:2;13204:3;13145:67;:::i;:::-;13138:74;;13221:93;13310:3;13221:93;:::i;:::-;13339:2;13334:3;13330:12;13323:19;;12982:366;;;:::o;13354:419::-;13520:4;13558:2;13547:9;13543:18;13535:26;;13607:9;13601:4;13597:20;13593:1;13582:9;13578:17;13571:47;13635:131;13761:4;13635:131;:::i;:::-;13627:139;;13354:419;;;:::o;13779:244::-;13919:34;13915:1;13907:6;13903:14;13896:58;13988:27;13983:2;13975:6;13971:15;13964:52;13779:244;:::o;14029:366::-;14171:3;14192:67;14256:2;14251:3;14192:67;:::i;:::-;14185:74;;14268:93;14357:3;14268:93;:::i;:::-;14386:2;14381:3;14377:12;14370:19;;14029:366;;;:::o;14401:419::-;14567:4;14605:2;14594:9;14590:18;14582:26;;14654:9;14648:4;14644:20;14640:1;14629:9;14625:17;14618:47;14682:131;14808:4;14682:131;:::i;:::-;14674:139;;14401:419;;;:::o;14826:223::-;14966:34;14962:1;14954:6;14950:14;14943:58;15035:6;15030:2;15022:6;15018:15;15011:31;14826:223;:::o;15055:366::-;15197:3;15218:67;15282:2;15277:3;15218:67;:::i;:::-;15211:74;;15294:93;15383:3;15294:93;:::i;:::-;15412:2;15407:3;15403:12;15396:19;;15055:366;;;:::o;15427:419::-;15593:4;15631:2;15620:9;15616:18;15608:26;;15680:9;15674:4;15670:20;15666:1;15655:9;15651:17;15644:47;15708:131;15834:4;15708:131;:::i;:::-;15700:139;;15427:419;;;:::o;15852:143::-;15909:5;15940:6;15934:13;15925:22;;15956:33;15983:5;15956:33;:::i;:::-;15852:143;;;;:::o;16001:351::-;16071:6;16120:2;16108:9;16099:7;16095:23;16091:32;16088:119;;;16126:79;;:::i;:::-;16088:119;16246:1;16271:64;16327:7;16318:6;16307:9;16303:22;16271:64;:::i;:::-;16261:74;;16217:128;16001:351;;;;:::o;16358:332::-;16479:4;16517:2;16506:9;16502:18;16494:26;;16530:71;16598:1;16587:9;16583:17;16574:6;16530:71;:::i;:::-;16611:72;16679:2;16668:9;16664:18;16655:6;16611:72;:::i;:::-;16358:332;;;;;:::o;16696:410::-;16736:7;16759:20;16777:1;16759:20;:::i;:::-;16754:25;;16793:20;16811:1;16793:20;:::i;:::-;16788:25;;16848:1;16845;16841:9;16870:30;16888:11;16870:30;:::i;:::-;16859:41;;17049:1;17040:7;17036:15;17033:1;17030:22;17010:1;17003:9;16983:83;16960:139;;17079:18;;:::i;:::-;16960:139;16744:362;16696:410;;;;:::o;17112:180::-;17160:77;17157:1;17150:88;17257:4;17254:1;17247:15;17281:4;17278:1;17271:15;17298:185;17338:1;17355:20;17373:1;17355:20;:::i;:::-;17350:25;;17389:20;17407:1;17389:20;:::i;:::-;17384:25;;17428:1;17418:35;;17433:18;;:::i;:::-;17418:35;17475:1;17472;17468:9;17463:14;;17298:185;;;;:::o;17489:85::-;17534:7;17563:5;17552:16;;17489:85;;;:::o;17580:158::-;17638:9;17671:61;17689:42;17698:32;17724:5;17698:32;:::i;:::-;17689:42;:::i;:::-;17671:61;:::i;:::-;17658:74;;17580:158;;;:::o;17744:147::-;17839:45;17878:5;17839:45;:::i;:::-;17834:3;17827:58;17744:147;;:::o;17897:807::-;18146:4;18184:3;18173:9;18169:19;18161:27;;18198:71;18266:1;18255:9;18251:17;18242:6;18198:71;:::i;:::-;18279:72;18347:2;18336:9;18332:18;18323:6;18279:72;:::i;:::-;18361:80;18437:2;18426:9;18422:18;18413:6;18361:80;:::i;:::-;18451;18527:2;18516:9;18512:18;18503:6;18451:80;:::i;:::-;18541:73;18609:3;18598:9;18594:19;18585:6;18541:73;:::i;:::-;18624;18692:3;18681:9;18677:19;18668:6;18624:73;:::i;:::-;17897:807;;;;;;;;;:::o;18710:143::-;18767:5;18798:6;18792:13;18783:22;;18814:33;18841:5;18814:33;:::i;:::-;18710:143;;;;:::o;18859:663::-;18947:6;18955;18963;19012:2;19000:9;18991:7;18987:23;18983:32;18980:119;;;19018:79;;:::i;:::-;18980:119;19138:1;19163:64;19219:7;19210:6;19199:9;19195:22;19163:64;:::i;:::-;19153:74;;19109:128;19276:2;19302:64;19358:7;19349:6;19338:9;19334:22;19302:64;:::i;:::-;19292:74;;19247:129;19415:2;19441:64;19497:7;19488:6;19477:9;19473:22;19441:64;:::i;:::-;19431:74;;19386:129;18859:663;;;;;:::o;19528:223::-;19668:34;19664:1;19656:6;19652:14;19645:58;19737:6;19732:2;19724:6;19720:15;19713:31;19528:223;:::o;19757:366::-;19899:3;19920:67;19984:2;19979:3;19920:67;:::i;:::-;19913:74;;19996:93;20085:3;19996:93;:::i;:::-;20114:2;20109:3;20105:12;20098:19;;19757:366;;;:::o;20129:419::-;20295:4;20333:2;20322:9;20318:18;20310:26;;20382:9;20376:4;20372:20;20368:1;20357:9;20353:17;20346:47;20410:131;20536:4;20410:131;:::i;:::-;20402:139;;20129:419;;;:::o;20554:221::-;20694:34;20690:1;20682:6;20678:14;20671:58;20763:4;20758:2;20750:6;20746:15;20739:29;20554:221;:::o;20781:366::-;20923:3;20944:67;21008:2;21003:3;20944:67;:::i;:::-;20937:74;;21020:93;21109:3;21020:93;:::i;:::-;21138:2;21133:3;21129:12;21122:19;;20781:366;;;:::o;21153:419::-;21319:4;21357:2;21346:9;21342:18;21334:26;;21406:9;21400:4;21396:20;21392:1;21381:9;21377:17;21370:47;21434:131;21560:4;21434:131;:::i;:::-;21426:139;;21153:419;;;:::o;21578:224::-;21718:34;21714:1;21706:6;21702:14;21695:58;21787:7;21782:2;21774:6;21770:15;21763:32;21578:224;:::o;21808:366::-;21950:3;21971:67;22035:2;22030:3;21971:67;:::i;:::-;21964:74;;22047:93;22136:3;22047:93;:::i;:::-;22165:2;22160:3;22156:12;22149:19;;21808:366;;;:::o;22180:419::-;22346:4;22384:2;22373:9;22369:18;22361:26;;22433:9;22427:4;22423:20;22419:1;22408:9;22404:17;22397:47;22461:131;22587:4;22461:131;:::i;:::-;22453:139;;22180:419;;;:::o;22605:222::-;22745:34;22741:1;22733:6;22729:14;22722:58;22814:5;22809:2;22801:6;22797:15;22790:30;22605:222;:::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:240::-;23770:34;23766:1;23758:6;23754:14;23747:58;23839:23;23834:2;23826:6;23822:15;23815:48;23630:240;:::o;23876:366::-;24018:3;24039:67;24103:2;24098:3;24039:67;:::i;:::-;24032:74;;24115:93;24204:3;24115:93;:::i;:::-;24233:2;24228:3;24224:12;24217:19;;23876:366;;;:::o;24248:419::-;24414:4;24452:2;24441:9;24437:18;24429:26;;24501:9;24495:4;24491:20;24487:1;24476:9;24472:17;24465:47;24529:131;24655:4;24529:131;:::i;:::-;24521:139;;24248:419;;;:::o;24673:169::-;24813:21;24809:1;24801:6;24797:14;24790:45;24673:169;:::o;24848:366::-;24990:3;25011:67;25075:2;25070:3;25011:67;:::i;:::-;25004:74;;25087:93;25176:3;25087:93;:::i;:::-;25205:2;25200:3;25196:12;25189:19;;24848:366;;;:::o;25220:419::-;25386:4;25424:2;25413:9;25409:18;25401:26;;25473:9;25467:4;25463:20;25459:1;25448:9;25444:17;25437:47;25501:131;25627:4;25501:131;:::i;:::-;25493:139;;25220:419;;;:::o;25645:241::-;25785:34;25781:1;25773:6;25769:14;25762:58;25854:24;25849:2;25841:6;25837:15;25830:49;25645:241;:::o;25892:366::-;26034:3;26055:67;26119:2;26114:3;26055:67;:::i;:::-;26048:74;;26131:93;26220:3;26131:93;:::i;:::-;26249:2;26244:3;26240:12;26233:19;;25892:366;;;:::o;26264:419::-;26430:4;26468:2;26457:9;26453:18;26445:26;;26517:9;26511:4;26507:20;26503:1;26492:9;26488:17;26481:47;26545:131;26671:4;26545:131;:::i;:::-;26537:139;;26264:419;;;:::o;26689:194::-;26729:4;26749:20;26767:1;26749:20;:::i;:::-;26744:25;;26783:20;26801:1;26783:20;:::i;:::-;26778:25;;26827:1;26824;26820:9;26812:17;;26851:1;26845:4;26842:11;26839:37;;;26856:18;;:::i;:::-;26839:37;26689:194;;;;:::o;26889:177::-;27029:29;27025:1;27017:6;27013:14;27006:53;26889:177;:::o;27072:366::-;27214:3;27235:67;27299:2;27294:3;27235:67;:::i;:::-;27228:74;;27311:93;27400:3;27311:93;:::i;:::-;27429:2;27424:3;27420:12;27413:19;;27072:366;;;:::o;27444:419::-;27610:4;27648:2;27637:9;27633:18;27625:26;;27697:9;27691:4;27687:20;27683:1;27672:9;27668:17;27661:47;27725:131;27851:4;27725:131;:::i;:::-;27717:139;;27444:419;;;:::o;27869:442::-;28018:4;28056:2;28045:9;28041:18;28033:26;;28069:71;28137:1;28126:9;28122:17;28113:6;28069:71;:::i;:::-;28150:72;28218:2;28207:9;28203:18;28194:6;28150:72;:::i;:::-;28232;28300:2;28289:9;28285:18;28276:6;28232:72;:::i;:::-;27869:442;;;;;;:::o;28317:220::-;28457:34;28453:1;28445:6;28441:14;28434:58;28526:3;28521:2;28513:6;28509:15;28502:28;28317:220;:::o;28543:366::-;28685:3;28706:67;28770:2;28765:3;28706:67;:::i;:::-;28699:74;;28782:93;28871:3;28782:93;:::i;:::-;28900:2;28895:3;28891:12;28884:19;;28543:366;;;:::o;28915:419::-;29081:4;29119:2;29108:9;29104:18;29096:26;;29168:9;29162:4;29158:20;29154:1;29143:9;29139:17;29132:47;29196:131;29322:4;29196:131;:::i;:::-;29188:139;;28915:419;;;:::o;29340:180::-;29388:77;29385:1;29378:88;29485:4;29482:1;29475:15;29509:4;29506:1;29499:15;29526:180;29574:77;29571:1;29564:88;29671:4;29668:1;29661:15;29695:4;29692:1;29685:15;29712:114;29779:6;29813:5;29807:12;29797:22;;29712:114;;;:::o;29832:184::-;29931:11;29965:6;29960:3;29953:19;30005:4;30000:3;29996:14;29981:29;;29832:184;;;;:::o;30022:132::-;30089:4;30112:3;30104:11;;30142:4;30137:3;30133:14;30125:22;;30022:132;;;:::o;30160:108::-;30237:24;30255:5;30237:24;:::i;:::-;30232:3;30225:37;30160:108;;:::o;30274:179::-;30343:10;30364:46;30406:3;30398:6;30364:46;:::i;:::-;30442:4;30437:3;30433:14;30419:28;;30274:179;;;;:::o;30459:113::-;30529:4;30561;30556:3;30552:14;30544:22;;30459:113;;;:::o;30608:732::-;30727:3;30756:54;30804:5;30756:54;:::i;:::-;30826:86;30905:6;30900:3;30826:86;:::i;:::-;30819:93;;30936:56;30986:5;30936:56;:::i;:::-;31015:7;31046:1;31031:284;31056:6;31053:1;31050:13;31031:284;;;31132:6;31126:13;31159:63;31218:3;31203:13;31159:63;:::i;:::-;31152:70;;31245:60;31298:6;31245:60;:::i;:::-;31235:70;;31091:224;31078:1;31075;31071:9;31066:14;;31031:284;;;31035:14;31331:3;31324:10;;30732:608;;;30608:732;;;;:::o;31346:831::-;31609:4;31647:3;31636:9;31632:19;31624:27;;31661:71;31729:1;31718:9;31714:17;31705:6;31661:71;:::i;:::-;31742:80;31818:2;31807:9;31803:18;31794:6;31742:80;:::i;:::-;31869:9;31863:4;31859:20;31854:2;31843:9;31839:18;31832:48;31897:108;32000:4;31991:6;31897:108;:::i;:::-;31889:116;;32015:72;32083:2;32072:9;32068:18;32059:6;32015:72;:::i;:::-;32097:73;32165:3;32154:9;32150:19;32141:6;32097:73;:::i;:::-;31346:831;;;;;;;;:::o
Swarm Source
ipfs://59c036f4aa50ab71198f4fed78d72fb24e405148bd44d14208e5c07f9947758b
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.