Overview
ETH Balance
0.076518212680702021 ETH
Eth Value
$254.99 (@ $3,332.43/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Multichain Info
Latest 25 from a total of 69 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 20608499 | 124 days ago | IN | 0 ETH | 0.00026896 | ||||
Approve | 15416887 | 854 days ago | IN | 0 ETH | 0.00081039 | ||||
Approve | 15245660 | 881 days ago | IN | 0 ETH | 0.00032738 | ||||
Approve | 15233879 | 883 days ago | IN | 0 ETH | 0.00090927 | ||||
Approve | 14956202 | 928 days ago | IN | 0 ETH | 0.0044734 | ||||
Approve | 14953233 | 929 days ago | IN | 0 ETH | 0.0033645 | ||||
Approve | 14951092 | 929 days ago | IN | 0 ETH | 0.00157747 | ||||
Approve | 14950098 | 929 days ago | IN | 0 ETH | 0.00077059 | ||||
Approve | 14949277 | 929 days ago | IN | 0 ETH | 0.00124079 | ||||
Approve | 14949030 | 929 days ago | IN | 0 ETH | 0.00158251 | ||||
Approve | 14948712 | 929 days ago | IN | 0 ETH | 0.00097589 | ||||
Approve | 14948432 | 929 days ago | IN | 0 ETH | 0.00096296 | ||||
Approve | 14948375 | 929 days ago | IN | 0 ETH | 0.00183967 | ||||
Approve | 14948354 | 929 days ago | IN | 0 ETH | 0.00103275 | ||||
Approve | 14948354 | 929 days ago | IN | 0 ETH | 0.00178326 | ||||
Approve | 14948347 | 929 days ago | IN | 0 ETH | 0.00145895 | ||||
Transfer | 14948343 | 929 days ago | IN | 0 ETH | 0.00777527 | ||||
Approve | 14948337 | 929 days ago | IN | 0 ETH | 0.00187854 | ||||
Approve | 14948315 | 929 days ago | IN | 0 ETH | 0.00109064 | ||||
Transfer | 14948282 | 929 days ago | IN | 0 ETH | 0.00611235 | ||||
Approve | 14948282 | 929 days ago | IN | 0 ETH | 0.00110272 | ||||
Transfer | 14948264 | 929 days ago | IN | 0 ETH | 0.00534822 | ||||
Approve | 14948261 | 929 days ago | IN | 0 ETH | 0.00094978 | ||||
Approve | 14948238 | 929 days ago | IN | 0 ETH | 0.00092367 | ||||
Approve | 14948203 | 929 days ago | IN | 0 ETH | 0.00093366 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20608499 | 124 days ago | 0.07651821 ETH | ||||
20608499 | 124 days ago | 0.12307967 ETH | ||||
20608499 | 124 days ago | 0.12307967 ETH | ||||
20608499 | 124 days ago | 0.24615935 ETH | ||||
15416892 | 854 days ago | 0.00058373 ETH | ||||
15416892 | 854 days ago | 0.00058373 ETH | ||||
15416892 | 854 days ago | 0.00116747 ETH | ||||
15348051 | 865 days ago | 0.00116527 ETH | ||||
15348051 | 865 days ago | 0.00116527 ETH | ||||
15348051 | 865 days ago | 0.00233054 ETH | ||||
15245666 | 881 days ago | 0.00377564 ETH | ||||
15245666 | 881 days ago | 0.00377564 ETH | ||||
15245666 | 881 days ago | 0.00755129 ETH | ||||
15233915 | 883 days ago | 0.00551838 ETH | ||||
15233915 | 883 days ago | 0.00551838 ETH | ||||
15233915 | 883 days ago | 0.01103676 ETH | ||||
14963197 | 927 days ago | 0.00494502 ETH | ||||
14963197 | 927 days ago | 0.00494502 ETH | ||||
14963197 | 927 days ago | 0.00989004 ETH | ||||
14961691 | 927 days ago | 0.00296466 ETH | ||||
14961691 | 927 days ago | 0.00296466 ETH | ||||
14961691 | 927 days ago | 0.00592932 ETH | ||||
14958411 | 928 days ago | 0.0032037 ETH | ||||
14958411 | 928 days ago | 0.0032037 ETH | ||||
14958411 | 928 days ago | 0.00640741 ETH |
Loading...
Loading
Contract Name:
ShaddaiToken
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-11 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { return msg.data; } } 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); } 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; address private asdasd; uint256 private _lockTime; 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 waiveOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD)); _owner = address(0x000000000000000000000000000000000000dEaD); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getTime() public view returns (uint256) { return block.timestamp; } } 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 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); 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 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 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 ShaddaiToken is Context, IERC20, Ownable { using SafeMath for uint256; string private _name = "Shaddai Token"; string private _symbol = "I AM"; uint8 private _decimals = 18; address payable public marketingWalletAddress = payable(0x0DBC567D408bA127B96e2b1CdD43b8e86157b477); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable zeroAddress = 0x0000000000000000000000000000000000000000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isMarketPair; mapping (address => bool) public blacklist; uint256 public _buyLiquidityFee = 5; uint256 public _buyMarketingFee = 3; uint256 public _sellLiquidityFee = 7; uint256 public _sellMarketingFee = 3; uint256 public _liquidityShare = 12; uint256 public _marketingShare = 6; uint256 public _totalTaxIfBuying; uint256 public _totalTaxIfSelling; uint256 public _totalDistributionShares; uint256 private _totalSupply = 5000000 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(5).div(1e3); //0.5% uint256 public _walletMax = _totalSupply.mul(2).div(1e2); //2% uint256 private minimumTokensBeforeSwap = _totalSupply.mul(1).div(1e4); //0.001% IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = true; bool public EnableTransactionLimit = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee); _totalDistributionShares = _liquidityShare.add(_marketingShare); isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[address(this)] = true; isMarketPair[address(uniswapPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } 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 minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { 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 setMarketPairStatus(address account, bool newValue) public onlyOwner { isMarketPair[account] = newValue; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner { isExcludedFromFee[account] = newValue; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function enableTxLimit(bool _status) external onlyOwner { EnableTransactionLimit = _status; } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner() { marketingWalletAddress = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress)); } function setBlacklist(address _adr, bool _status) external onlyOwner { require(isContract(_adr),"Enemy must be Contract Address!!"); blacklist[_adr] = _status; } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPairAddress == address(0)) //Create If Doesnt exist { newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPairAddress; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address isWalletLimitExempt[address(uniswapPair)] = true; isMarketPair[address(uniswapPair)] = true; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!."); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!"); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2); uint256 tokensForSwap = tAmount.sub(tokensForLP); swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance; uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2)); uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2); uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity); if(amountBNBMarketing > 0) transferToAddressETH(marketingWalletAddress, amountBNBMarketing); if(amountBNBLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountBNBLiquidity); } 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), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } 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 owner(), block.timestamp ); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_totalTaxIfSelling).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } }
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":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"uniswapPair","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":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280600d81526020017f5368616464616920546f6b656e00000000000000000000000000000000000000815250600390805190602001906200005192919062000cc1565b506040518060400160405280600481526020017f4920414d00000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000cc1565b506012600560006101000a81548160ff021916908360ff160217905550730dbc567d408ba127b96e2b1cdd43b8e86157b477600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506005600d556003600e556007600f556003601055600c6011556006601255600560009054906101000a900460ff16600a620001bc919062001023565b624c4b40620001cc919062001160565b601655620002076103e8620001f3600560165462000aef60201b6200280c1790919060201c565b62000b7360201b620028871790919060201c565b6017556200024160646200022d600260165462000aef60201b6200280c1790919060201c565b62000b7360201b620028871790919060201c565b6018556200027c61271062000268600160165462000aef60201b6200280c1790919060201c565b62000b7360201b620028871790919060201c565b6019556001601b60156101000a81548160ff0219169083151502179055506000601b60166101000a81548160ff0219169083151502179055506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff021916908315150217905550348015620002f857600080fd5b5060006200030b62000bc560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040957600080fd5b505afa1580156200041e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000444919062000d88565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004a757600080fd5b505afa158015620004bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e2919062000d88565b6040518363ffffffff1660e01b81526004016200050192919062000e65565b602060405180830381600087803b1580156200051c57600080fd5b505af115801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062000d88565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601654600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860006200069362000bcd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200075a600e54600d5462000bf660201b620028d11790919060201c565b6013819055506200077e601054600f5462000bf660201b620028d11790919060201c565b601481905550620007a260125460115462000bf660201b620028d11790919060201c565b601581905550600160096000620007be62000bcd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620008f762000bcd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506016546006600062000a3162000bc560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a7f62000bc560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60165460405162000ae0919062000efa565b60405180910390a350620013b5565b60008083141562000b04576000905062000b6d565b6000828462000b14919062001160565b905082848262000b25919062000f90565b1462000b68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b5f9062000ed8565b60405180910390fd5b809150505b92915050565b600062000bbd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c5960201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000c07919062000f33565b90508381101562000c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c469062000eb6565b60405180910390fd5b8091505092915050565b6000808311829062000ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c9a919062000e92565b60405180910390fd5b506000838562000cb4919062000f90565b9050809150509392505050565b82805462000ccf9062001242565b90600052602060002090601f01602090048101928262000cf3576000855562000d3f565b82601f1062000d0e57805160ff191683800117855562000d3f565b8280016001018555821562000d3f579182015b8281111562000d3e57825182559160200191906001019062000d21565b5b50905062000d4e919062000d52565b5090565b5b8082111562000d6d57600081600090555060010162000d53565b5090565b60008151905062000d82816200139b565b92915050565b60006020828403121562000d9b57600080fd5b600062000dab8482850162000d71565b91505092915050565b62000dbf81620011c1565b82525050565b600062000dd28262000f17565b62000dde818562000f22565b935062000df08185602086016200120c565b62000dfb8162001305565b840191505092915050565b600062000e15601b8362000f22565b915062000e228262001323565b602082019050919050565b600062000e3c60218362000f22565b915062000e49826200134c565b604082019050919050565b62000e5f81620011f5565b82525050565b600060408201905062000e7c600083018562000db4565b62000e8b602083018462000db4565b9392505050565b6000602082019050818103600083015262000eae818462000dc5565b905092915050565b6000602082019050818103600083015262000ed18162000e06565b9050919050565b6000602082019050818103600083015262000ef38162000e2d565b9050919050565b600060208201905062000f11600083018462000e54565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000f4082620011f5565b915062000f4d83620011f5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f855762000f8462001278565b5b828201905092915050565b600062000f9d82620011f5565b915062000faa83620011f5565b92508262000fbd5762000fbc620012a7565b5b828204905092915050565b6000808291508390505b60018511156200101a5780860481111562000ff25762000ff162001278565b5b6001851615620010025780820291505b8081029050620010128562001316565b945062000fd2565b94509492505050565b60006200103082620011f5565b91506200103d83620011ff565b92506200106c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001074565b905092915050565b60008262001086576001905062001159565b8162001096576000905062001159565b8160018114620010af5760028114620010ba57620010f0565b600191505062001159565b60ff841115620010cf57620010ce62001278565b5b8360020a915084821115620010e957620010e862001278565b5b5062001159565b5060208310610133831016604e8410600b84101617156200112a5782820a90508381111562001124576200112362001278565b5b62001159565b62001139848484600162000fc8565b9250905081840481111562001153576200115262001278565b5b81810290505b9392505050565b60006200116d82620011f5565b91506200117a83620011f5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011b657620011b562001278565b5b828202905092915050565b6000620011ce82620011d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200122c5780820151818401526020810190506200120f565b838111156200123c576000848401525b50505050565b600060028204905060018216806200125b57607f821691505b60208210811415620012725762001271620012d6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620013a681620011c1565b8114620013b257600080fd5b50565b60805160601c60a05160601c614c97620013ef60003960008181610e31015261128301526000818161125701526112af0152614c976000f3fe60806040526004361061036f5760003560e01c806388790a68116101c6578063c867d60b116100f7578063ef422a1811610095578063f2fde38b1161006f578063f2fde38b14610ce3578063f84ba65d14610d0c578063f872858a14610d35578063f9f92be414610d6057610376565b8063ef422a1814610c66578063f0cd1dac14610c8f578063f1d5f51714610cba57610376565b8063dc44b6a0116100d1578063dc44b6a014610bac578063dd62ed3e14610bd7578063ec28438a14610c14578063ee828db314610c3d57610376565b8063c867d60b14610b19578063d158272d14610b56578063da00097d14610b8157610376565b8063a457c2d711610164578063c49b9a801161013e578063c49b9a8014610a6f578063c5d2418914610a98578063c816841b14610ac3578063c860795214610aee57610376565b8063a457c2d7146109cc578063a5d69d1f14610a09578063a9059cbb14610a3257610376565b8063914eb66a116101a0578063914eb66a1461093457806395d89b411461094b578063a073d37f14610976578063a08e671f146109a157610376565b806388790a68146108a15780638b42507f146108cc5780638da5cb5b1461090957610376565b80633ecad271116102a057806361a23c691161023e578063807c2d9c11610218578063807c2d9c146107f757806382eefb4314610822578063844d591c1461084d578063852614851461087657610376565b806361a23c691461076457806370a082311461078f5780637d1db4a5146107cc57610376565b80635342acb41161027a5780635342acb414610694578063557ed1ba146106d157806357a5802f146106fc5780635881f3ef1461072757610376565b80633ecad271146106035780634a74bb02146106405780634cb80fd51461066b57610376565b806323b872dd1161030d5780632b112e49116102e75780632b112e4914610547578063313ce56714610572578063395093511461059d5780633b97084a146105da57610376565b806323b872dd146104b65780632563ae83146104f357806327c8f8351461051c57610376565b8063153b0d1e11610349578063153b0d1e1461040e5780631694505e1461043757806318160ddd146104625780632198cf6c1461048d57610376565b806306fdde031461037b5780630930907b146103a6578063095ea7b3146103d157610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d9d565b60405161039d9190614347565b60405180910390f35b3480156103b257600080fd5b506103bb610e2f565b6040516103c89190614251565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613ea9565b610e53565b6040516104059190614311565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190613e6d565b610e71565b005b34801561044357600080fd5b5061044c610fa9565b604051610459919061432c565b60405180910390f35b34801561046e57600080fd5b50610477610fcf565b60405161048491906144e9565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190613e6d565b610fd9565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190613e1e565b6110c9565b6040516104ea9190614311565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190613ee5565b6111a3565b005b34801561052857600080fd5b50610531611255565b60405161053e9190614251565b60405180910390f35b34801561055357600080fd5b5061055c611279565b60405161056991906144e9565b60405180910390f35b34801561057e57600080fd5b506105876112f7565b604051610594919061458e565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190613ea9565b61130e565b6040516105d19190614311565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190613f0e565b6113c1565b005b34801561060f57600080fd5b5061062a60048036038101906106259190613d90565b611460565b6040516106379190614311565b60405180910390f35b34801561064c57600080fd5b50610655611480565b6040516106629190614311565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613d90565b611493565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190613d90565b61156c565b6040516106c89190614311565b60405180910390f35b3480156106dd57600080fd5b506106e661158c565b6040516106f391906144e9565b60405180910390f35b34801561070857600080fd5b50610711611594565b60405161071e91906144e9565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190613d90565b61159a565b60405161075b9190614251565b60405180910390f35b34801561077057600080fd5b50610779611af8565b60405161078691906144e9565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190613d90565b611afe565b6040516107c391906144e9565b60405180910390f35b3480156107d857600080fd5b506107e1611b47565b6040516107ee91906144e9565b60405180910390f35b34801561080357600080fd5b5061080c611b4d565b60405161081991906144e9565b60405180910390f35b34801561082e57600080fd5b50610837611b53565b60405161084491906144e9565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190613e6d565b611b59565b005b34801561088257600080fd5b5061088b611c49565b6040516108989190614311565b60405180910390f35b3480156108ad57600080fd5b506108b6611c5c565b6040516108c391906144e9565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613d90565b611c62565b6040516109009190614311565b60405180910390f35b34801561091557600080fd5b5061091e611c82565b60405161092b9190614251565b60405180910390f35b34801561094057600080fd5b50610949611cab565b005b34801561095757600080fd5b50610960611e00565b60405161096d9190614347565b60405180910390f35b34801561098257600080fd5b5061098b611e92565b60405161099891906144e9565b60405180910390f35b3480156109ad57600080fd5b506109b6611e9c565b6040516109c391906144e9565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613ea9565b611ea2565b604051610a009190614311565b60405180910390f35b348015610a1557600080fd5b50610a306004803603810190610a2b9190613ee5565b611f6f565b005b348015610a3e57600080fd5b50610a596004803603810190610a549190613ea9565b612021565b604051610a669190614311565b60405180910390f35b348015610a7b57600080fd5b50610a966004803603810190610a919190613ee5565b612040565b005b348015610aa457600080fd5b50610aad612129565b604051610aba91906144e9565b60405180910390f35b348015610acf57600080fd5b50610ad861212f565b604051610ae59190614251565b60405180910390f35b348015610afa57600080fd5b50610b03612155565b604051610b1091906144e9565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190613d90565b61215b565b604051610b4d9190614311565b60405180910390f35b348015610b6257600080fd5b50610b6b61217b565b604051610b78919061426c565b60405180910390f35b348015610b8d57600080fd5b50610b966121a1565b604051610ba39190614311565b60405180910390f35b348015610bb857600080fd5b50610bc16121b4565b604051610bce91906144e9565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190613de2565b6121ba565b604051610c0b91906144e9565b60405180910390f35b348015610c2057600080fd5b50610c3b6004803603810190610c369190613f0e565b612241565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190613ee5565b6122e0565b005b348015610c7257600080fd5b50610c8d6004803603810190610c889190613e6d565b612392565b005b348015610c9b57600080fd5b50610ca4612482565b604051610cb191906144e9565b60405180910390f35b348015610cc657600080fd5b50610ce16004803603810190610cdc9190613f0e565b612488565b005b348015610cef57600080fd5b50610d0a6004803603810190610d059190613d90565b612527565b005b348015610d1857600080fd5b50610d336004803603810190610d2e9190613e6d565b6126e9565b005b348015610d4157600080fd5b50610d4a6127d9565b604051610d579190614311565b60405180910390f35b348015610d6c57600080fd5b50610d876004803603810190610d829190613d90565b6127ec565b604051610d949190614311565b60405180910390f35b606060038054610dac906147e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd8906147e3565b8015610e255780601f10610dfa57610100808354040283529160200191610e25565b820191906000526020600020905b815481529060010190602001808311610e0857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e67610e6061292f565b8484612937565b6001905092915050565b610e7961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90614449565b60405180910390fd5b610f0f82612b02565b610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590614489565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b610fe161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590614449565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110d6848484612b4d565b50611198846110e361292f565b61119385604051806060016040528060288152602001614c1560289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061114961292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b612937565b600190509392505050565b6111ab61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90614449565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006112f26112a77f0000000000000000000000000000000000000000000000000000000000000000611afe565b6112e46112d37f0000000000000000000000000000000000000000000000000000000000000000611afe565b6016546132c790919063ffffffff16565b6132c790919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b60006113b761131b61292f565b846113b2856007600061132c61292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b612937565b6001905092915050565b6113c961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90614449565b60405180910390fd5b8060198190555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b61149b61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90614449565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60115481565b60006115a461292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890614449565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167c57600080fd5b505afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613db9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561171657600080fd5b505afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e9190613db9565b6040518363ffffffff1660e01b815260040161176b929190614287565b60206040518083038186803b15801561178357600080fd5b505afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190613db9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561197c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561183857600080fd5b505afa15801561184c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118709190613db9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d257600080fd5b505afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190613db9565b6040518363ffffffff1660e01b8152600401611927929190614287565b602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190613db9565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60125481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60175481565b60185481565b60145481565b611b6161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590614449565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b600f5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cb361292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3790614449565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611e0f906147e3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3b906147e3565b8015611e885780601f10611e5d57610100808354040283529160200191611e88565b820191906000526020600020905b815481529060010190602001808311611e6b57829003601f168201915b5050505050905090565b6000601954905090565b60155481565b6000611f65611eaf61292f565b84611f6085604051806060016040528060258152602001614c3d6025913960076000611ed961292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b612937565b6001905092915050565b611f7761292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90614449565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061203561202e61292f565b8484612b4d565b506001905092915050565b61204861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90614449565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161211e9190614311565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60096020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61224961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614449565b60405180910390fd5b8060178190555050565b6122e861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614449565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b61239a61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90614449565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b61249061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490614449565b60405180910390fd5b8060188190555050565b61252f61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390614449565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390614389565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126f161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461277e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277590614449565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008083141561281f5760009050612881565b6000828461282d9190614685565b905082848261283c9190614654565b1461287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390614429565b60405180910390fd5b809150505b92915050565b60006128c983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613311565b905092915050565b60008082846128e091906145fe565b905083811015612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c906143c9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906144a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0e906143a9565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612af591906144e9565b60405180910390a3505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612b4457506000801b8214155b92505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb590614469565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2590614369565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cd25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d08906144c9565b60405180910390fd5b601b60149054906101000a900460ff1615612d3857612d31848484613374565b905061325c565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ddc5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612df45750601b60189054906101000a900460ff165b15612e3f57601754821115612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3590614409565b60405180910390fd5b5b6000612e4a30611afe565b905060006019548210159050808015612e705750601b60149054906101000a900460ff16155b8015612ec65750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ede5750601b60159054906101000a900460ff165b15612f0857601b60169054906101000a900460ff1615612efe5760195491505b612f0782613547565b5b612f91846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130775750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61308b576130868787876136c4565b61308d565b845b9050601b60179054906101000a900460ff1680156130f55750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315a576018546131188261310a89611afe565b6128d190919063ffffffff16565b1115613159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613150906143e9565b60405180910390fd5b5b6131ac81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161324c91906144e9565b60405180910390a3600193505050505b9392505050565b60008383111582906132ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a29190614347565b60405180910390fd5b50600083856132ba91906146df565b9050809150509392505050565b600061330983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613263565b905092915050565b60008083118290613358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334f9190614347565b60405180910390fd5b50600083856133679190614654565b9050809150509392505050565b60006133ff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061349482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161353491906144e9565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff02191690831515021790555060006135a060026135926015546135846011548761280c90919063ffffffff16565b61288790919063ffffffff16565b61288790919063ffffffff16565b905060006135b782846132c790919063ffffffff16565b90506135c2816138eb565b600047905060006135f36135e2600260115461288790919063ffffffff16565b6015546132c790919063ffffffff16565b905060006136316002613623846136156011548861280c90919063ffffffff16565b61288790919063ffffffff16565b61288790919063ffffffff16565b9050600061364882856132c790919063ffffffff16565b905060008111156136805761367f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613be8565b5b6000821180156136905750600086115b156136a05761369f8683613c33565b5b5050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561374c5761374560646137376013548661280c90919063ffffffff16565b61288790919063ffffffff16565b90506137ca565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137c9576137c660646137b86014548661280c90919063ffffffff16565b61288790919063ffffffff16565b90505b5b60008111156138ce5761382581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138c591906144e9565b60405180910390a35b6138e181846132c790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561392e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561395c5781602001602082028036833780820191505090505b509050308160008151811061399a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a3c57600080fd5b505afa158015613a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a749190613db9565b81600181518110613aae577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b1530601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b79959493929190614534565b600060405180830381600087803b158015613b9357600080fd5b505af1158015613ba7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613bdc929190614504565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c2e573d6000803e3d6000fd5b505050565b613c6030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613cac611c82565b426040518863ffffffff1660e01b8152600401613cce969594939291906142b0565b6060604051808303818588803b158015613ce757600080fd5b505af1158015613cfb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d209190613f37565b5050505050565b600081359050613d3681614bcf565b92915050565b600081519050613d4b81614bcf565b92915050565b600081359050613d6081614be6565b92915050565b600081359050613d7581614bfd565b92915050565b600081519050613d8a81614bfd565b92915050565b600060208284031215613da257600080fd5b6000613db084828501613d27565b91505092915050565b600060208284031215613dcb57600080fd5b6000613dd984828501613d3c565b91505092915050565b60008060408385031215613df557600080fd5b6000613e0385828601613d27565b9250506020613e1485828601613d27565b9150509250929050565b600080600060608486031215613e3357600080fd5b6000613e4186828701613d27565b9350506020613e5286828701613d27565b9250506040613e6386828701613d66565b9150509250925092565b60008060408385031215613e8057600080fd5b6000613e8e85828601613d27565b9250506020613e9f85828601613d51565b9150509250929050565b60008060408385031215613ebc57600080fd5b6000613eca85828601613d27565b9250506020613edb85828601613d66565b9150509250929050565b600060208284031215613ef757600080fd5b6000613f0584828501613d51565b91505092915050565b600060208284031215613f2057600080fd5b6000613f2e84828501613d66565b91505092915050565b600080600060608486031215613f4c57600080fd5b6000613f5a86828701613d7b565b9350506020613f6b86828701613d7b565b9250506040613f7c86828701613d7b565b9150509250925092565b6000613f928383613fad565b60208301905092915050565b613fa781614725565b82525050565b613fb681614713565b82525050565b613fc581614713565b82525050565b6000613fd6826145b9565b613fe081856145dc565b9350613feb836145a9565b8060005b8381101561401c5781516140038882613f86565b975061400e836145cf565b925050600181019050613fef565b5085935050505092915050565b61403281614737565b82525050565b6140418161477a565b82525050565b6140508161479e565b82525050565b6000614061826145c4565b61406b81856145ed565b935061407b8185602086016147b0565b614084816148a2565b840191505092915050565b600061409c6023836145ed565b91506140a7826148b3565b604082019050919050565b60006140bf6026836145ed565b91506140ca82614902565b604082019050919050565b60006140e26022836145ed565b91506140ed82614951565b604082019050919050565b6000614105601b836145ed565b9150614110826149a0565b602082019050919050565b60006141286025836145ed565b9150614133826149c9565b604082019050919050565b600061414b6028836145ed565b915061415682614a18565b604082019050919050565b600061416e6021836145ed565b915061417982614a67565b604082019050919050565b60006141916020836145ed565b915061419c82614ab6565b602082019050919050565b60006141b46025836145ed565b91506141bf82614adf565b604082019050919050565b60006141d76020836145ed565b91506141e282614b2e565b602082019050919050565b60006141fa6024836145ed565b915061420582614b57565b604082019050919050565b600061421d601e836145ed565b915061422882614ba6565b602082019050919050565b61423c81614763565b82525050565b61424b8161476d565b82525050565b60006020820190506142666000830184613fbc565b92915050565b60006020820190506142816000830184613f9e565b92915050565b600060408201905061429c6000830185613fbc565b6142a96020830184613fbc565b9392505050565b600060c0820190506142c56000830189613fbc565b6142d26020830188614233565b6142df6040830187614047565b6142ec6060830186614047565b6142f96080830185613fbc565b61430660a0830184614233565b979650505050505050565b60006020820190506143266000830184614029565b92915050565b60006020820190506143416000830184614038565b92915050565b600060208201905081810360008301526143618184614056565b905092915050565b600060208201905081810360008301526143828161408f565b9050919050565b600060208201905081810360008301526143a2816140b2565b9050919050565b600060208201905081810360008301526143c2816140d5565b9050919050565b600060208201905081810360008301526143e2816140f8565b9050919050565b600060208201905081810360008301526144028161411b565b9050919050565b600060208201905081810360008301526144228161413e565b9050919050565b6000602082019050818103600083015261444281614161565b9050919050565b6000602082019050818103600083015261446281614184565b9050919050565b60006020820190508181036000830152614482816141a7565b9050919050565b600060208201905081810360008301526144a2816141ca565b9050919050565b600060208201905081810360008301526144c2816141ed565b9050919050565b600060208201905081810360008301526144e281614210565b9050919050565b60006020820190506144fe6000830184614233565b92915050565b60006040820190506145196000830185614233565b818103602083015261452b8184613fcb565b90509392505050565b600060a0820190506145496000830188614233565b6145566020830187614047565b81810360408301526145688186613fcb565b90506145776060830185613fbc565b6145846080830184614233565b9695505050505050565b60006020820190506145a36000830184614242565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061460982614763565b915061461483614763565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561464957614648614815565b5b828201905092915050565b600061465f82614763565b915061466a83614763565b92508261467a57614679614844565b5b828204905092915050565b600061469082614763565b915061469b83614763565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146d4576146d3614815565b5b828202905092915050565b60006146ea82614763565b91506146f583614763565b92508282101561470857614707614815565b5b828203905092915050565b600061471e82614743565b9050919050565b600061473082614743565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147858261478c565b9050919050565b600061479782614743565b9050919050565b60006147a982614763565b9050919050565b60005b838110156147ce5780820151818401526020810190506147b3565b838111156147dd576000848401525b50505050565b600060028204905060018216806147fb57607f821691505b6020821081141561480f5761480e614873565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f456e656d79206d75737420626520436f6e747261637420416464726573732121600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d7920616464726573732052657374726963746564212e0000600082015250565b614bd881614713565b8114614be357600080fd5b50565b614bef81614737565b8114614bfa57600080fd5b50565b614c0681614763565b8114614c1157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205118199fff58333a44e722f2b57a565e7d61cf0415be949f99b9cc9bb8944cd464736f6c63430008040033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806388790a68116101c6578063c867d60b116100f7578063ef422a1811610095578063f2fde38b1161006f578063f2fde38b14610ce3578063f84ba65d14610d0c578063f872858a14610d35578063f9f92be414610d6057610376565b8063ef422a1814610c66578063f0cd1dac14610c8f578063f1d5f51714610cba57610376565b8063dc44b6a0116100d1578063dc44b6a014610bac578063dd62ed3e14610bd7578063ec28438a14610c14578063ee828db314610c3d57610376565b8063c867d60b14610b19578063d158272d14610b56578063da00097d14610b8157610376565b8063a457c2d711610164578063c49b9a801161013e578063c49b9a8014610a6f578063c5d2418914610a98578063c816841b14610ac3578063c860795214610aee57610376565b8063a457c2d7146109cc578063a5d69d1f14610a09578063a9059cbb14610a3257610376565b8063914eb66a116101a0578063914eb66a1461093457806395d89b411461094b578063a073d37f14610976578063a08e671f146109a157610376565b806388790a68146108a15780638b42507f146108cc5780638da5cb5b1461090957610376565b80633ecad271116102a057806361a23c691161023e578063807c2d9c11610218578063807c2d9c146107f757806382eefb4314610822578063844d591c1461084d578063852614851461087657610376565b806361a23c691461076457806370a082311461078f5780637d1db4a5146107cc57610376565b80635342acb41161027a5780635342acb414610694578063557ed1ba146106d157806357a5802f146106fc5780635881f3ef1461072757610376565b80633ecad271146106035780634a74bb02146106405780634cb80fd51461066b57610376565b806323b872dd1161030d5780632b112e49116102e75780632b112e4914610547578063313ce56714610572578063395093511461059d5780633b97084a146105da57610376565b806323b872dd146104b65780632563ae83146104f357806327c8f8351461051c57610376565b8063153b0d1e11610349578063153b0d1e1461040e5780631694505e1461043757806318160ddd146104625780632198cf6c1461048d57610376565b806306fdde031461037b5780630930907b146103a6578063095ea7b3146103d157610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d9d565b60405161039d9190614347565b60405180910390f35b3480156103b257600080fd5b506103bb610e2f565b6040516103c89190614251565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613ea9565b610e53565b6040516104059190614311565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190613e6d565b610e71565b005b34801561044357600080fd5b5061044c610fa9565b604051610459919061432c565b60405180910390f35b34801561046e57600080fd5b50610477610fcf565b60405161048491906144e9565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190613e6d565b610fd9565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190613e1e565b6110c9565b6040516104ea9190614311565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190613ee5565b6111a3565b005b34801561052857600080fd5b50610531611255565b60405161053e9190614251565b60405180910390f35b34801561055357600080fd5b5061055c611279565b60405161056991906144e9565b60405180910390f35b34801561057e57600080fd5b506105876112f7565b604051610594919061458e565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190613ea9565b61130e565b6040516105d19190614311565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190613f0e565b6113c1565b005b34801561060f57600080fd5b5061062a60048036038101906106259190613d90565b611460565b6040516106379190614311565b60405180910390f35b34801561064c57600080fd5b50610655611480565b6040516106629190614311565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613d90565b611493565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190613d90565b61156c565b6040516106c89190614311565b60405180910390f35b3480156106dd57600080fd5b506106e661158c565b6040516106f391906144e9565b60405180910390f35b34801561070857600080fd5b50610711611594565b60405161071e91906144e9565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190613d90565b61159a565b60405161075b9190614251565b60405180910390f35b34801561077057600080fd5b50610779611af8565b60405161078691906144e9565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190613d90565b611afe565b6040516107c391906144e9565b60405180910390f35b3480156107d857600080fd5b506107e1611b47565b6040516107ee91906144e9565b60405180910390f35b34801561080357600080fd5b5061080c611b4d565b60405161081991906144e9565b60405180910390f35b34801561082e57600080fd5b50610837611b53565b60405161084491906144e9565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190613e6d565b611b59565b005b34801561088257600080fd5b5061088b611c49565b6040516108989190614311565b60405180910390f35b3480156108ad57600080fd5b506108b6611c5c565b6040516108c391906144e9565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613d90565b611c62565b6040516109009190614311565b60405180910390f35b34801561091557600080fd5b5061091e611c82565b60405161092b9190614251565b60405180910390f35b34801561094057600080fd5b50610949611cab565b005b34801561095757600080fd5b50610960611e00565b60405161096d9190614347565b60405180910390f35b34801561098257600080fd5b5061098b611e92565b60405161099891906144e9565b60405180910390f35b3480156109ad57600080fd5b506109b6611e9c565b6040516109c391906144e9565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613ea9565b611ea2565b604051610a009190614311565b60405180910390f35b348015610a1557600080fd5b50610a306004803603810190610a2b9190613ee5565b611f6f565b005b348015610a3e57600080fd5b50610a596004803603810190610a549190613ea9565b612021565b604051610a669190614311565b60405180910390f35b348015610a7b57600080fd5b50610a966004803603810190610a919190613ee5565b612040565b005b348015610aa457600080fd5b50610aad612129565b604051610aba91906144e9565b60405180910390f35b348015610acf57600080fd5b50610ad861212f565b604051610ae59190614251565b60405180910390f35b348015610afa57600080fd5b50610b03612155565b604051610b1091906144e9565b60405180910390f35b348015610b2557600080fd5b50610b406004803603810190610b3b9190613d90565b61215b565b604051610b4d9190614311565b60405180910390f35b348015610b6257600080fd5b50610b6b61217b565b604051610b78919061426c565b60405180910390f35b348015610b8d57600080fd5b50610b966121a1565b604051610ba39190614311565b60405180910390f35b348015610bb857600080fd5b50610bc16121b4565b604051610bce91906144e9565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190613de2565b6121ba565b604051610c0b91906144e9565b60405180910390f35b348015610c2057600080fd5b50610c3b6004803603810190610c369190613f0e565b612241565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190613ee5565b6122e0565b005b348015610c7257600080fd5b50610c8d6004803603810190610c889190613e6d565b612392565b005b348015610c9b57600080fd5b50610ca4612482565b604051610cb191906144e9565b60405180910390f35b348015610cc657600080fd5b50610ce16004803603810190610cdc9190613f0e565b612488565b005b348015610cef57600080fd5b50610d0a6004803603810190610d059190613d90565b612527565b005b348015610d1857600080fd5b50610d336004803603810190610d2e9190613e6d565b6126e9565b005b348015610d4157600080fd5b50610d4a6127d9565b604051610d579190614311565b60405180910390f35b348015610d6c57600080fd5b50610d876004803603810190610d829190613d90565b6127ec565b604051610d949190614311565b60405180910390f35b606060038054610dac906147e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd8906147e3565b8015610e255780601f10610dfa57610100808354040283529160200191610e25565b820191906000526020600020905b815481529060010190602001808311610e0857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610e67610e6061292f565b8484612937565b6001905092915050565b610e7961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90614449565b60405180910390fd5b610f0f82612b02565b610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590614489565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601654905090565b610fe161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590614449565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110d6848484612b4d565b50611198846110e361292f565b61119385604051806060016040528060288152602001614c1560289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061114961292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b612937565b600190509392505050565b6111ab61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90614449565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006112f26112a77f0000000000000000000000000000000000000000000000000000000000000000611afe565b6112e46112d37f000000000000000000000000000000000000000000000000000000000000dead611afe565b6016546132c790919063ffffffff16565b6132c790919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b60006113b761131b61292f565b846113b2856007600061132c61292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b612937565b6001905092915050565b6113c961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90614449565b60405180910390fd5b8060198190555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b601b60159054906101000a900460ff1681565b61149b61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90614449565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60115481565b60006115a461292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890614449565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167c57600080fd5b505afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613db9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561171657600080fd5b505afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e9190613db9565b6040518363ffffffff1660e01b815260040161176b929190614287565b60206040518083038186803b15801561178357600080fd5b505afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190613db9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561197c578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561183857600080fd5b505afa15801561184c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118709190613db9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d257600080fd5b505afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190613db9565b6040518363ffffffff1660e01b8152600401611927929190614287565b602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119799190613db9565b91505b81601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60125481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60175481565b60185481565b60145481565b611b6161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be590614449565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60189054906101000a900460ff1681565b600f5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cb361292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3790614449565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060048054611e0f906147e3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3b906147e3565b8015611e885780601f10611e5d57610100808354040283529160200191611e88565b820191906000526020600020905b815481529060010190602001808311611e6b57829003601f168201915b5050505050905090565b6000601954905090565b60155481565b6000611f65611eaf61292f565b84611f6085604051806060016040528060258152602001614c3d6025913960076000611ed961292f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b612937565b6001905092915050565b611f7761292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90614449565b60405180910390fd5b80601b60166101000a81548160ff02191690831515021790555050565b600061203561202e61292f565b8484612b4d565b506001905092915050565b61204861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90614449565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161211e9190614311565b60405180910390a150565b600e5481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60096020528060005260406000206000915054906101000a900460ff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60169054906101000a900460ff1681565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61224961292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614449565b60405180910390fd5b8060178190555050565b6122e861292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90614449565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b61239a61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90614449565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b61249061292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490614449565b60405180910390fd5b8060188190555050565b61252f61292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390614449565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390614389565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126f161292f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461277e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277590614449565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60179054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008083141561281f5760009050612881565b6000828461282d9190614685565b905082848261283c9190614654565b1461287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390614429565b60405180910390fd5b809150505b92915050565b60006128c983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613311565b905092915050565b60008082846128e091906145fe565b905083811015612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c906143c9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e906144a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0e906143a9565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612af591906144e9565b60405180910390a3505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612b4457506000801b8214155b92505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb590614469565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2590614369565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cd25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d08906144c9565b60405180910390fd5b601b60149054906101000a900460ff1615612d3857612d31848484613374565b905061325c565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ddc5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612df45750601b60189054906101000a900460ff165b15612e3f57601754821115612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3590614409565b60405180910390fd5b5b6000612e4a30611afe565b905060006019548210159050808015612e705750601b60149054906101000a900460ff16155b8015612ec65750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ede5750601b60159054906101000a900460ff165b15612f0857601b60169054906101000a900460ff1615612efe5760195491505b612f0782613547565b5b612f91846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130775750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61308b576130868787876136c4565b61308d565b845b9050601b60179054906101000a900460ff1680156130f55750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561315a576018546131188261310a89611afe565b6128d190919063ffffffff16565b1115613159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613150906143e9565b60405180910390fd5b5b6131ac81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161324c91906144e9565b60405180910390a3600193505050505b9392505050565b60008383111582906132ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a29190614347565b60405180910390fd5b50600083856132ba91906146df565b9050809150509392505050565b600061330983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613263565b905092915050565b60008083118290613358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334f9190614347565b60405180910390fd5b50600083856133679190614654565b9050809150509392505050565b60006133ff826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132639092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061349482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161353491906144e9565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff02191690831515021790555060006135a060026135926015546135846011548761280c90919063ffffffff16565b61288790919063ffffffff16565b61288790919063ffffffff16565b905060006135b782846132c790919063ffffffff16565b90506135c2816138eb565b600047905060006135f36135e2600260115461288790919063ffffffff16565b6015546132c790919063ffffffff16565b905060006136316002613623846136156011548861280c90919063ffffffff16565b61288790919063ffffffff16565b61288790919063ffffffff16565b9050600061364882856132c790919063ffffffff16565b905060008111156136805761367f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613be8565b5b6000821180156136905750600086115b156136a05761369f8683613c33565b5b5050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561374c5761374560646137376013548661280c90919063ffffffff16565b61288790919063ffffffff16565b90506137ca565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137c9576137c660646137b86014548661280c90919063ffffffff16565b61288790919063ffffffff16565b90505b5b60008111156138ce5761382581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138c591906144e9565b60405180910390a35b6138e181846132c790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561392e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561395c5781602001602082028036833780820191505090505b509050308160008151811061399a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a3c57600080fd5b505afa158015613a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a749190613db9565b81600181518110613aae577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b1530601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b79959493929190614534565b600060405180830381600087803b158015613b9357600080fd5b505af1158015613ba7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613bdc929190614504565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c2e573d6000803e3d6000fd5b505050565b613c6030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612937565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613cac611c82565b426040518863ffffffff1660e01b8152600401613cce969594939291906142b0565b6060604051808303818588803b158015613ce757600080fd5b505af1158015613cfb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d209190613f37565b5050505050565b600081359050613d3681614bcf565b92915050565b600081519050613d4b81614bcf565b92915050565b600081359050613d6081614be6565b92915050565b600081359050613d7581614bfd565b92915050565b600081519050613d8a81614bfd565b92915050565b600060208284031215613da257600080fd5b6000613db084828501613d27565b91505092915050565b600060208284031215613dcb57600080fd5b6000613dd984828501613d3c565b91505092915050565b60008060408385031215613df557600080fd5b6000613e0385828601613d27565b9250506020613e1485828601613d27565b9150509250929050565b600080600060608486031215613e3357600080fd5b6000613e4186828701613d27565b9350506020613e5286828701613d27565b9250506040613e6386828701613d66565b9150509250925092565b60008060408385031215613e8057600080fd5b6000613e8e85828601613d27565b9250506020613e9f85828601613d51565b9150509250929050565b60008060408385031215613ebc57600080fd5b6000613eca85828601613d27565b9250506020613edb85828601613d66565b9150509250929050565b600060208284031215613ef757600080fd5b6000613f0584828501613d51565b91505092915050565b600060208284031215613f2057600080fd5b6000613f2e84828501613d66565b91505092915050565b600080600060608486031215613f4c57600080fd5b6000613f5a86828701613d7b565b9350506020613f6b86828701613d7b565b9250506040613f7c86828701613d7b565b9150509250925092565b6000613f928383613fad565b60208301905092915050565b613fa781614725565b82525050565b613fb681614713565b82525050565b613fc581614713565b82525050565b6000613fd6826145b9565b613fe081856145dc565b9350613feb836145a9565b8060005b8381101561401c5781516140038882613f86565b975061400e836145cf565b925050600181019050613fef565b5085935050505092915050565b61403281614737565b82525050565b6140418161477a565b82525050565b6140508161479e565b82525050565b6000614061826145c4565b61406b81856145ed565b935061407b8185602086016147b0565b614084816148a2565b840191505092915050565b600061409c6023836145ed565b91506140a7826148b3565b604082019050919050565b60006140bf6026836145ed565b91506140ca82614902565b604082019050919050565b60006140e26022836145ed565b91506140ed82614951565b604082019050919050565b6000614105601b836145ed565b9150614110826149a0565b602082019050919050565b60006141286025836145ed565b9150614133826149c9565b604082019050919050565b600061414b6028836145ed565b915061415682614a18565b604082019050919050565b600061416e6021836145ed565b915061417982614a67565b604082019050919050565b60006141916020836145ed565b915061419c82614ab6565b602082019050919050565b60006141b46025836145ed565b91506141bf82614adf565b604082019050919050565b60006141d76020836145ed565b91506141e282614b2e565b602082019050919050565b60006141fa6024836145ed565b915061420582614b57565b604082019050919050565b600061421d601e836145ed565b915061422882614ba6565b602082019050919050565b61423c81614763565b82525050565b61424b8161476d565b82525050565b60006020820190506142666000830184613fbc565b92915050565b60006020820190506142816000830184613f9e565b92915050565b600060408201905061429c6000830185613fbc565b6142a96020830184613fbc565b9392505050565b600060c0820190506142c56000830189613fbc565b6142d26020830188614233565b6142df6040830187614047565b6142ec6060830186614047565b6142f96080830185613fbc565b61430660a0830184614233565b979650505050505050565b60006020820190506143266000830184614029565b92915050565b60006020820190506143416000830184614038565b92915050565b600060208201905081810360008301526143618184614056565b905092915050565b600060208201905081810360008301526143828161408f565b9050919050565b600060208201905081810360008301526143a2816140b2565b9050919050565b600060208201905081810360008301526143c2816140d5565b9050919050565b600060208201905081810360008301526143e2816140f8565b9050919050565b600060208201905081810360008301526144028161411b565b9050919050565b600060208201905081810360008301526144228161413e565b9050919050565b6000602082019050818103600083015261444281614161565b9050919050565b6000602082019050818103600083015261446281614184565b9050919050565b60006020820190508181036000830152614482816141a7565b9050919050565b600060208201905081810360008301526144a2816141ca565b9050919050565b600060208201905081810360008301526144c2816141ed565b9050919050565b600060208201905081810360008301526144e281614210565b9050919050565b60006020820190506144fe6000830184614233565b92915050565b60006040820190506145196000830185614233565b818103602083015261452b8184613fcb565b90509392505050565b600060a0820190506145496000830188614233565b6145566020830187614047565b81810360408301526145688186613fcb565b90506145776060830185613fbc565b6145846080830184614233565b9695505050505050565b60006020820190506145a36000830184614242565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061460982614763565b915061461483614763565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561464957614648614815565b5b828201905092915050565b600061465f82614763565b915061466a83614763565b92508261467a57614679614844565b5b828204905092915050565b600061469082614763565b915061469b83614763565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146d4576146d3614815565b5b828202905092915050565b60006146ea82614763565b91506146f583614763565b92508282101561470857614707614815565b5b828203905092915050565b600061471e82614743565b9050919050565b600061473082614743565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147858261478c565b9050919050565b600061479782614743565b9050919050565b60006147a982614763565b9050919050565b60005b838110156147ce5780820151818401526020810190506147b3565b838111156147dd576000848401525b50505050565b600060028204905060018216806147fb57607f821691505b6020821081141561480f5761480e614873565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f456e656d79206d75737420626520436f6e747261637420416464726573732121600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d7920616464726573732052657374726963746564212e0000600082015250565b614bd881614713565b8114614be357600080fd5b50565b614bef81614737565b8114614bfa57600080fd5b50565b614c0681614763565b8114614c1157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205118199fff58333a44e722f2b57a565e7d61cf0415be949f99b9cc9bb8944cd464736f6c63430008040033
Deployed Bytecode Sourcemap
11595:14175:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15201:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12017:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16495:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18795:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13215:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15478:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17428:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20209:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17805:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11929:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18631:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15387:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15864:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18036:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12411:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13330:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18168:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12240:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12692:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19125:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12734:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15586:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12974:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13049;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12816:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17009:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13473:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12604:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12356:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2948:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3173:227;;;;;;;;;;;;;:::i;:::-;;15292:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16367:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12862:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16090:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18494:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20034:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18315:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12556:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13263:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12647:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12297:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11817:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13377:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12514:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15713:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17686:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17571:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17285:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12777:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17926:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3408:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17146:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13431:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12463:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15201:83;15238:13;15271:5;15264:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15201:83;:::o;12017:81::-;;;:::o;16495:161::-;16570:4;16587:39;16596:12;:10;:12::i;:::-;16610:7;16619:6;16587:8;:39::i;:::-;16644:4;16637:11;;16495:161;;;;:::o;18795:184::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18883:16:::1;18894:4;18883:10;:16::i;:::-;18875:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18964:7;18946:9;:15;18956:4;18946:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;18795:184:::0;;:::o;13215:41::-;;;;;;;;;;;;;:::o;15478:100::-;15531:7;15558:12;;15551:19;;15478:100;:::o;17428:135::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17549:6:::1;17519:19;:27;17539:6;17519:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17428:135:::0;;:::o;20209:313::-;20307:4;20324:36;20334:6;20342:9;20353:6;20324:9;:36::i;:::-;;20371:121;20380:6;20388:12;:10;:12::i;:::-;20402:89;20440:6;20402:89;;;;;;;;;;;;;;;;;:11;:19;20414:6;20402:19;;;;;;;;;;;;;;;:33;20422:12;:10;:12::i;:::-;20402:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20371:8;:121::i;:::-;20510:4;20503:11;;20209:313;;;;;:::o;17805:113::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17902:8:::1;17883:16;;:27;;;;;;;;;;;;;;;;;;17805:113:::0;:::o;11929:81::-;;;:::o;18631:156::-;18684:7;18711:68;18756:22;18766:11;18756:9;:22::i;:::-;18711:40;18728:22;18738:11;18728:9;:22::i;:::-;18711:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;18704:75;;18631:156;:::o;15387:83::-;15428:5;15453:9;;;;;;;;;;;15446:16;;15387:83;:::o;15864:218::-;15952:4;15969:83;15978:12;:10;:12::i;:::-;15992:7;16001:50;16040:10;16001:11;:25;16013:12;:10;:12::i;:::-;16001:25;;;;;;;;;;;;;;;:34;16027:7;16001:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15969:8;:83::i;:::-;16070:4;16063:11;;15864:218;;;;:::o;18036:124::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18144:8:::1;18118:23;:34;;;;18036:124:::0;:::o;12411:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13330:40::-;;;;;;;;;;;;;:::o;18168:139::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18288:10:::1;18255:22;;:44;;;;;;;;;;;;;;;;;;18168:139:::0;:::o;12240:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;3664:90::-;3704:7;3731:15;3724:22;;3664:90;:::o;12692:35::-;;;;:::o;19125:807::-;19205:22;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19242:35:::1;19299:16;19242:74;;19365:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19347:53;;;19409:4;19416:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19347:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19330:110;;19482:1;19456:28;;:14;:28;;;19453:225;;;19570:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19552:74;;;19635:4;19642:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19552:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19535:131;;19453:225;19704:14;19690:11;;:28;;;;;;;;;;;;;;;;;;19770:16;19752:15;;:34;;;;;;;;;;;;;;;;;;19868:4;19824:19;:41;19852:11;;;;;;;;;;;19824:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;19920:4;19883:12;:34;19904:11;;;;;;;;;;;19883:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;3152:1;19125:807:::0;;;:::o;12734:34::-;;;;:::o;15586:119::-;15652:7;15679:9;:18;15689:7;15679:18;;;;;;;;;;;;;;;;15672:25;;15586:119;;;:::o;12974:60::-;;;;:::o;13049:::-;;;;:::o;12816:33::-;;;;:::o;17009:129::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17122:8:::1;17098:12;:21;17111:7;17098:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17009:129:::0;;:::o;13473:41::-;;;;;;;;;;;;;:::o;12604:36::-;;;;:::o;12356:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2948:79::-;2986:7;3013:6;;;;;;;;;;;3006:13;;2948:79;:::o;3173:227::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3277:42:::1;3240:81;;3261:6;::::0;::::1;;;;;;;;3240:81;;;;;;;;;;;;3349:42;3332:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3173:227::o:0;15292:87::-;15331:13;15364:7;15357:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15292:87;:::o;16367:120::-;16429:7;16456:23;;16449:30;;16367:120;:::o;12862:39::-;;;;:::o;16090:269::-;16183:4;16200:129;16209:12;:10;:12::i;:::-;16223:7;16232:96;16271:15;16232:96;;;;;;;;;;;;;;;;;:11;:25;16244:12;:10;:12::i;:::-;16232:25;;;;;;;;;;;;;;;:34;16258:7;16232:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16200:8;:129::i;:::-;16347:4;16340:11;;16090:269;;;;:::o;18494:125::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18603:8:::1;18575:25;;:36;;;;;;;;;;;;;;;;;;18494:125:::0;:::o;20034:167::-;20112:4;20129:42;20139:12;:10;:12::i;:::-;20153:9;20164:6;20129:9;:42::i;:::-;;20189:4;20182:11;;20034:167;;;;:::o;18315:171::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18416:8:::1;18392:21;;:32;;;;;;;;;;;;;;;;;;18440:38;18469:8;18440:38;;;;;;:::i;:::-;;;;;;;;18315:171:::0;:::o;12556:35::-;;;;:::o;13263:26::-;;;;;;;;;;;;;:::o;12647:36::-;;;;:::o;12297:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;11817:99::-;;;;;;;;;;;;;:::o;13377:45::-;;;;;;;;;;;;;:::o;12514:35::-;;;;:::o;15713:143::-;15794:7;15821:11;:18;15833:5;15821:18;;;;;;;;;;;;;;;:27;15840:7;15821:27;;;;;;;;;;;;;;;;15814:34;;15713:143;;;;:::o;17686:111::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17778:11:::1;17763:12;:26;;;;17686:111:::0;:::o;17571:107::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17663:7:::1;17638:22;;:32;;;;;;;;;;;;;;;;;;17571:107:::0;:::o;17285:135::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17404:8:::1;17375:17;:26;17393:7;17375:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17285:135:::0;;:::o;12777:32::-;;;;:::o;17926:102::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18012:8:::1;17998:10;:22;;;;17926:102:::0;:::o;3408:244::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3517:1:::1;3497:22;;:8;:22;;;;3489:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3607:8;3578:38;;3599:6;::::0;::::1;;;;;;;;3578:38;;;;;;;;;;;;3636:8;3627:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3408:244:::0;:::o;17146:127::-;3092:12;:10;:12::i;:::-;3082:22;;:6;;;;;;;;;;:22;;;3074:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17259:6:::1;17233:15;:23;17249:6;17233:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17146:127:::0;;:::o;13431:35::-;;;;;;;;;;;;;:::o;12463:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;1572:250::-;1630:7;1659:1;1654;:6;1650:47;;;1684:1;1677:8;;;;1650:47;1709:9;1725:1;1721;:5;;;;:::i;:::-;1709:17;;1754:1;1749;1745;:5;;;;:::i;:::-;:10;1737:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1813:1;1806:8;;;1572:250;;;;;:::o;1830:132::-;1888:7;1915:39;1919:1;1922;1915:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1908:46;;1830:132;;;;:::o;1039:181::-;1097:7;1117:9;1133:1;1129;:5;;;;:::i;:::-;1117:17;;1158:1;1153;:6;;1145:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1211:1;1204:8;;;1039:181;;;;:::o;97:115::-;150:15;193:10;178:26;;97:115;:::o;16664:337::-;16774:1;16757:19;;:5;:19;;;;16749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16855:1;16836:21;;:7;:21;;;;16828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16939:6;16909:11;:18;16921:5;16909:18;;;;;;;;;;;;;;;:27;16928:7;16909:27;;;;;;;;;;;;;;;:36;;;;16977:7;16961:32;;16970:5;16961:32;;;16986:6;16961:32;;;;;;:::i;:::-;;;;;;;;16664:337;;;:::o;25436:325::-;25496:4;25513:16;25540:19;25562:66;25540:88;;;;25682:7;25670:20;25658:32;;25722:11;25710:8;:23;;:42;;;;;25749:3;25737:15;;:8;:15;;25710:42;25702:51;;;;25436:325;;;:::o;20534:1870::-;20621:4;20666:1;20648:20;;:6;:20;;;;20640:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20750:1;20729:23;;:9;:23;;;;20721:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20812:9;:17;20822:6;20812:17;;;;;;;;;;;;;;;;;;;;;;;;;20811:18;:43;;;;;20834:9;:20;20844:9;20834:20;;;;;;;;;;;;;;;;;;;;;;;;;20833:21;20811:43;20803:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20905:16;;;;;;;;;;;20902:1495;;;20955:41;20970:6;20978:9;20989:6;20955:14;:41::i;:::-;20948:48;;;;20902:1495;21052:15;:23;21068:6;21052:23;;;;;;;;;;;;;;;;;;;;;;;;;21051:24;:55;;;;;21080:15;:26;21096:9;21080:26;;;;;;;;;;;;;;;;;;;;;;;;;21079:27;21051:55;:81;;;;;21110:22;;;;;;;;;;;21051:81;21048:196;;;21171:12;;21161:6;:22;;21153:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21048:196;21272:28;21303:24;21321:4;21303:9;:24::i;:::-;21272:55;;21342:28;21397:23;;21373:20;:47;;21342:78;;21453:23;:44;;;;;21481:16;;;;;;;;;;;21480:17;21453:44;:69;;;;;21502:12;:20;21515:6;21502:20;;;;;;;;;;;;;;;;;;;;;;;;;21501:21;21453:69;:94;;;;;21526:21;;;;;;;;;;;21453:94;21449:305;;;21585:25;;;;;;;;;;;21582:97;;;21656:23;;21633:46;;21582:97;21698:36;21713:20;21698:14;:36::i;:::-;21449:305;21790:53;21812:6;21790:53;;;;;;;;;;;;;;;;;:9;:17;21800:6;21790:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;21770:9;:17;21780:6;21770:17;;;;;;;;;;;;;;;:73;;;;21860:19;21883:17;:25;21901:6;21883:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;21912:17;:28;21930:9;21912:28;;;;;;;;;;;;;;;;;;;;;;;;;21883:57;21882:148;;21996:34;22004:6;22012:9;22023:6;21996:7;:34::i;:::-;21882:148;;;21987:6;21882:148;21860:170;;22050:16;;;;;;;;;;;:51;;;;;22071:19;:30;22091:9;22071:30;;;;;;;;;;;;;;;;;;;;;;;;;22070:31;22050:51;22047:173;;;22169:10;;22128:37;22153:11;22128:20;22138:9;22128;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22120:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22047:173;22260:37;22285:11;22260:9;:20;22270:9;22260:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22237:9;:20;22247:9;22237:20;;;;;;;;;;;;;;;:60;;;;22336:9;22319:40;;22328:6;22319:40;;;22347:11;22319:40;;;;;;:::i;:::-;;;;;;;;22381:4;22374:11;;;;;20534:1870;;;;;;:::o;1372:192::-;1458:7;1491:1;1486;:6;;1494:12;1478:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1518:9;1534:1;1530;:5;;;;:::i;:::-;1518:17;;1555:1;1548:8;;;1372:192;;;;;:::o;1228:136::-;1286:7;1313:43;1317:1;1320;1313:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1306:50;;1228:136;;;;:::o;1970:278::-;2056:7;2088:1;2084;:5;2091:12;2076:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2115:9;2131:1;2127;:5;;;;:::i;:::-;2115:17;;2239:1;2232:8;;;1970:278;;;;;:::o;22412:330::-;22505:4;22542:53;22564:6;22542:53;;;;;;;;;;;;;;;;;:9;:17;22552:6;22542:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22522:9;:17;22532:6;22522:17;;;;;;;;;;;;;;;:73;;;;22629:32;22654:6;22629:9;:20;22639:9;22629:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22606:9;:20;22616:9;22606:20;;;;;;;;;;;;;;;:55;;;;22694:9;22677:35;;22686:6;22677:35;;;22705:6;22677:35;;;;;;:::i;:::-;;;;;;;;22730:4;22723:11;;22412:330;;;;;:::o;22750:849::-;13958:4;13939:16;;:23;;;;;;;;;;;;;;;;;;22832:19:::1;22854:65;22917:1;22854:58;22887:24;;22854:28;22866:15;;22854:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;22832:87;;22932:21;22956:24;22968:11;22956:7;:11;;:24;;;;:::i;:::-;22932:48;;22993:31;23010:13;22993:16;:31::i;:::-;23037:22;23062:21;23037:46;;23096:19;23118:52;23147:22;23167:1;23147:15;;:19;;:22;;;;:::i;:::-;23118:24;;:28;;:52;;;;:::i;:::-;23096:74;;23191:26;23220:59;23277:1;23220:52;23260:11;23220:35;23239:15;;23220:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;23191:88;;23290:26;23319:38;23338:18;23319:14;:18;;:38;;;;:::i;:::-;23290:67;;23394:1;23373:18;:22;23370:104;;;23410:64;23431:22;;;;;;;;;;;23455:18;23410:20;:64::i;:::-;23370:104;23511:1;23490:18;:22;:41;;;;;23530:1;23516:11;:15;23490:41;23487:104;;;23546:45;23559:11;23572:18;23546:12;:45::i;:::-;23487:104;13973:1;;;;;;14004:5:::0;13985:16;;:24;;;;;;;;;;;;;;;;;;22750:849;:::o;24806:622::-;24892:7;24922:17;24942:1;24922:21;;24967:12;:20;24980:6;24967:20;;;;;;;;;;;;;;;;;;;;;;;;;24964:223;;;25016:38;25050:3;25016:29;25027:17;;25016:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;25004:50;;24964:223;;;25084:12;:23;25097:9;25084:23;;;;;;;;;;;;;;;;;;;;;;;;;25081:106;;;25136:39;25171:3;25136:30;25147:18;;25136:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;25124:51;;25081:106;24964:223;25222:1;25210:9;:13;25207:173;;;25267:39;25296:9;25267;:24;25285:4;25267:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;25240:9;:24;25258:4;25240:24;;;;;;;;;;;;;;;:66;;;;25351:4;25326:42;;25335:6;25326:42;;;25358:9;25326:42;;;;;;:::i;:::-;;;;;;;;25207:173;25399:21;25410:9;25399:6;:10;;:21;;;;:::i;:::-;25392:28;;;24806:622;;;;;:::o;23611:666::-;23737:21;23775:1;23761:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23737:40;;23806:4;23788;23793:1;23788:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;23832:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23822:4;23827:1;23822:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;23867:62;23884:4;23899:15;;;;;;;;;;;23917:11;23867:8;:62::i;:::-;23968:15;;;;;;;;;;;:66;;;24049:11;24075:1;24119:4;24146;24182:15;23968:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24234:35;24251:11;24264:4;24234:35;;;;;;;:::i;:::-;;;;;;;;23611:666;;:::o;18987:126::-;19079:9;:18;;:26;19098:6;19079:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18987:126;;:::o;24285:513::-;24433:62;24450:4;24465:15;;;;;;;;;;;24483:11;24433:8;:62::i;:::-;24538:15;;;;;;;;;;;:31;;;24577:9;24610:4;24630:11;24656:1;24699;24742:7;:5;:7::i;:::-;24764:15;24538:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24285:513;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:596::-;3701:6;3709;3717;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3825:1;3850:64;3906:7;3897:6;3886:9;3882:22;3850:64;:::i;:::-;3840:74;;3796:128;3963:2;3989:64;4045:7;4036:6;4025:9;4021:22;3989:64;:::i;:::-;3979:74;;3934:129;4102:2;4128:64;4184:7;4175:6;4164:9;4160:22;4128:64;:::i;:::-;4118:74;;4073:129;3724:485;;;;;:::o;4215:179::-;4284:10;4305:46;4347:3;4339:6;4305:46;:::i;:::-;4383:4;4378:3;4374:14;4360:28;;4295:99;;;;:::o;4400:142::-;4503:32;4529:5;4503:32;:::i;:::-;4498:3;4491:45;4481:61;;:::o;4548:108::-;4625:24;4643:5;4625:24;:::i;:::-;4620:3;4613:37;4603:53;;:::o;4662:118::-;4749:24;4767:5;4749:24;:::i;:::-;4744:3;4737:37;4727:53;;:::o;4816:732::-;4935:3;4964:54;5012:5;4964:54;:::i;:::-;5034:86;5113:6;5108:3;5034:86;:::i;:::-;5027:93;;5144:56;5194:5;5144:56;:::i;:::-;5223:7;5254:1;5239:284;5264:6;5261:1;5258:13;5239:284;;;5340:6;5334:13;5367:63;5426:3;5411:13;5367:63;:::i;:::-;5360:70;;5453:60;5506:6;5453:60;:::i;:::-;5443:70;;5299:224;5286:1;5283;5279:9;5274:14;;5239:284;;;5243:14;5539:3;5532:10;;4940:608;;;;;;;:::o;5554:109::-;5635:21;5650:5;5635:21;:::i;:::-;5630:3;5623:34;5613:50;;:::o;5669:185::-;5783:64;5841:5;5783:64;:::i;:::-;5778:3;5771:77;5761:93;;:::o;5860:147::-;5955:45;5994:5;5955:45;:::i;:::-;5950:3;5943:58;5933:74;;:::o;6013:364::-;6101:3;6129:39;6162:5;6129:39;:::i;:::-;6184:71;6248:6;6243:3;6184:71;:::i;:::-;6177:78;;6264:52;6309:6;6304:3;6297:4;6290:5;6286:16;6264:52;:::i;:::-;6341:29;6363:6;6341:29;:::i;:::-;6336:3;6332:39;6325:46;;6105:272;;;;;:::o;6383:366::-;6525:3;6546:67;6610:2;6605:3;6546:67;:::i;:::-;6539:74;;6622:93;6711:3;6622:93;:::i;:::-;6740:2;6735:3;6731:12;6724:19;;6529:220;;;:::o;6755:366::-;6897:3;6918:67;6982:2;6977:3;6918:67;:::i;:::-;6911:74;;6994:93;7083:3;6994:93;:::i;:::-;7112:2;7107:3;7103:12;7096:19;;6901:220;;;:::o;7127:366::-;7269:3;7290:67;7354:2;7349:3;7290:67;:::i;:::-;7283:74;;7366:93;7455:3;7366:93;:::i;:::-;7484:2;7479:3;7475:12;7468:19;;7273:220;;;:::o;7499:366::-;7641:3;7662:67;7726:2;7721:3;7662:67;:::i;:::-;7655:74;;7738:93;7827:3;7738:93;:::i;:::-;7856:2;7851:3;7847:12;7840:19;;7645:220;;;:::o;7871:366::-;8013:3;8034:67;8098:2;8093:3;8034:67;:::i;:::-;8027:74;;8110:93;8199:3;8110:93;:::i;:::-;8228:2;8223:3;8219:12;8212:19;;8017:220;;;:::o;8243:366::-;8385:3;8406:67;8470:2;8465:3;8406:67;:::i;:::-;8399:74;;8482:93;8571:3;8482:93;:::i;:::-;8600:2;8595:3;8591:12;8584:19;;8389:220;;;:::o;8615:366::-;8757:3;8778:67;8842:2;8837:3;8778:67;:::i;:::-;8771:74;;8854:93;8943:3;8854:93;:::i;:::-;8972:2;8967:3;8963:12;8956:19;;8761:220;;;:::o;8987:366::-;9129:3;9150:67;9214:2;9209:3;9150:67;:::i;:::-;9143:74;;9226:93;9315:3;9226:93;:::i;:::-;9344:2;9339:3;9335:12;9328:19;;9133:220;;;:::o;9359:366::-;9501:3;9522:67;9586:2;9581:3;9522:67;:::i;:::-;9515:74;;9598:93;9687:3;9598:93;:::i;:::-;9716:2;9711:3;9707:12;9700:19;;9505:220;;;:::o;9731:366::-;9873:3;9894:67;9958:2;9953:3;9894:67;:::i;:::-;9887:74;;9970:93;10059:3;9970:93;:::i;:::-;10088:2;10083:3;10079:12;10072:19;;9877:220;;;:::o;10103:366::-;10245:3;10266:67;10330:2;10325:3;10266:67;:::i;:::-;10259:74;;10342:93;10431:3;10342:93;:::i;:::-;10460:2;10455:3;10451:12;10444:19;;10249:220;;;:::o;10475:366::-;10617:3;10638:67;10702:2;10697:3;10638:67;:::i;:::-;10631:74;;10714:93;10803:3;10714:93;:::i;:::-;10832:2;10827:3;10823:12;10816:19;;10621:220;;;:::o;10847:118::-;10934:24;10952:5;10934:24;:::i;:::-;10929:3;10922:37;10912:53;;:::o;10971:112::-;11054:22;11070:5;11054:22;:::i;:::-;11049:3;11042:35;11032:51;;:::o;11089:222::-;11182:4;11220:2;11209:9;11205:18;11197:26;;11233:71;11301:1;11290:9;11286:17;11277:6;11233:71;:::i;:::-;11187:124;;;;:::o;11317:254::-;11426:4;11464:2;11453:9;11449:18;11441:26;;11477:87;11561:1;11550:9;11546:17;11537:6;11477:87;:::i;:::-;11431:140;;;;:::o;11577:332::-;11698:4;11736:2;11725:9;11721:18;11713:26;;11749:71;11817:1;11806:9;11802:17;11793:6;11749:71;:::i;:::-;11830:72;11898:2;11887:9;11883:18;11874:6;11830:72;:::i;:::-;11703:206;;;;;:::o;11915:807::-;12164:4;12202:3;12191:9;12187:19;12179:27;;12216:71;12284:1;12273:9;12269:17;12260:6;12216:71;:::i;:::-;12297:72;12365:2;12354:9;12350:18;12341:6;12297:72;:::i;:::-;12379:80;12455:2;12444:9;12440:18;12431:6;12379:80;:::i;:::-;12469;12545:2;12534:9;12530:18;12521:6;12469:80;:::i;:::-;12559:73;12627:3;12616:9;12612:19;12603:6;12559:73;:::i;:::-;12642;12710:3;12699:9;12695:19;12686:6;12642:73;:::i;:::-;12169:553;;;;;;;;;:::o;12728:210::-;12815:4;12853:2;12842:9;12838:18;12830:26;;12866:65;12928:1;12917:9;12913:17;12904:6;12866:65;:::i;:::-;12820:118;;;;:::o;12944:276::-;13064:4;13102:2;13091:9;13087:18;13079:26;;13115:98;13210:1;13199:9;13195:17;13186:6;13115:98;:::i;:::-;13069:151;;;;:::o;13226:313::-;13339:4;13377:2;13366:9;13362:18;13354:26;;13426:9;13420:4;13416:20;13412:1;13401:9;13397:17;13390:47;13454:78;13527:4;13518:6;13454:78;:::i;:::-;13446:86;;13344:195;;;;:::o;13545:419::-;13711:4;13749:2;13738:9;13734:18;13726:26;;13798:9;13792:4;13788:20;13784:1;13773:9;13769:17;13762:47;13826:131;13952:4;13826:131;:::i;:::-;13818:139;;13716:248;;;:::o;13970:419::-;14136:4;14174:2;14163:9;14159:18;14151:26;;14223:9;14217:4;14213:20;14209:1;14198:9;14194:17;14187:47;14251:131;14377:4;14251:131;:::i;:::-;14243:139;;14141:248;;;:::o;14395:419::-;14561:4;14599:2;14588:9;14584:18;14576:26;;14648:9;14642:4;14638:20;14634:1;14623:9;14619:17;14612:47;14676:131;14802:4;14676:131;:::i;:::-;14668:139;;14566:248;;;:::o;14820:419::-;14986:4;15024:2;15013:9;15009:18;15001:26;;15073:9;15067:4;15063:20;15059:1;15048:9;15044:17;15037:47;15101:131;15227:4;15101:131;:::i;:::-;15093:139;;14991:248;;;:::o;15245:419::-;15411:4;15449:2;15438:9;15434:18;15426:26;;15498:9;15492:4;15488:20;15484:1;15473:9;15469:17;15462:47;15526:131;15652:4;15526:131;:::i;:::-;15518:139;;15416:248;;;:::o;15670:419::-;15836:4;15874:2;15863:9;15859:18;15851:26;;15923:9;15917:4;15913:20;15909:1;15898:9;15894:17;15887:47;15951:131;16077:4;15951:131;:::i;:::-;15943:139;;15841:248;;;:::o;16095:419::-;16261:4;16299:2;16288:9;16284:18;16276:26;;16348:9;16342:4;16338:20;16334:1;16323:9;16319:17;16312:47;16376:131;16502:4;16376:131;:::i;:::-;16368:139;;16266:248;;;:::o;16520:419::-;16686:4;16724:2;16713:9;16709:18;16701:26;;16773:9;16767:4;16763:20;16759:1;16748:9;16744:17;16737:47;16801:131;16927:4;16801:131;:::i;:::-;16793:139;;16691:248;;;:::o;16945:419::-;17111:4;17149:2;17138:9;17134:18;17126:26;;17198:9;17192:4;17188:20;17184:1;17173:9;17169:17;17162:47;17226:131;17352:4;17226:131;:::i;:::-;17218:139;;17116:248;;;:::o;17370:419::-;17536:4;17574:2;17563:9;17559:18;17551:26;;17623:9;17617:4;17613:20;17609:1;17598:9;17594:17;17587:47;17651:131;17777:4;17651:131;:::i;:::-;17643:139;;17541:248;;;:::o;17795:419::-;17961:4;17999:2;17988:9;17984:18;17976:26;;18048:9;18042:4;18038:20;18034:1;18023:9;18019:17;18012:47;18076:131;18202:4;18076:131;:::i;:::-;18068:139;;17966:248;;;:::o;18220:419::-;18386:4;18424:2;18413:9;18409:18;18401:26;;18473:9;18467:4;18463:20;18459:1;18448:9;18444:17;18437:47;18501:131;18627:4;18501:131;:::i;:::-;18493:139;;18391:248;;;:::o;18645:222::-;18738:4;18776:2;18765:9;18761:18;18753:26;;18789:71;18857:1;18846:9;18842:17;18833:6;18789:71;:::i;:::-;18743:124;;;;:::o;18873:483::-;19044:4;19082:2;19071:9;19067:18;19059:26;;19095:71;19163:1;19152:9;19148:17;19139:6;19095:71;:::i;:::-;19213:9;19207:4;19203:20;19198:2;19187:9;19183:18;19176:48;19241:108;19344:4;19335:6;19241:108;:::i;:::-;19233:116;;19049:307;;;;;:::o;19362:831::-;19625:4;19663:3;19652:9;19648:19;19640:27;;19677:71;19745:1;19734:9;19730:17;19721:6;19677:71;:::i;:::-;19758:80;19834:2;19823:9;19819:18;19810:6;19758:80;:::i;:::-;19885:9;19879:4;19875:20;19870:2;19859:9;19855:18;19848:48;19913:108;20016:4;20007:6;19913:108;:::i;:::-;19905:116;;20031:72;20099:2;20088:9;20084:18;20075:6;20031:72;:::i;:::-;20113:73;20181:3;20170:9;20166:19;20157:6;20113:73;:::i;:::-;19630:563;;;;;;;;:::o;20199:214::-;20288:4;20326:2;20315:9;20311:18;20303:26;;20339:67;20403:1;20392:9;20388:17;20379:6;20339:67;:::i;:::-;20293:120;;;;:::o;20419:132::-;20486:4;20509:3;20501:11;;20539:4;20534:3;20530:14;20522:22;;20491:60;;;:::o;20557:114::-;20624:6;20658:5;20652:12;20642:22;;20631:40;;;:::o;20677:99::-;20729:6;20763:5;20757:12;20747:22;;20736:40;;;:::o;20782:113::-;20852:4;20884;20879:3;20875:14;20867:22;;20857:38;;;:::o;20901:184::-;21000:11;21034:6;21029:3;21022:19;21074:4;21069:3;21065:14;21050:29;;21012:73;;;;:::o;21091:169::-;21175:11;21209:6;21204:3;21197:19;21249:4;21244:3;21240:14;21225:29;;21187:73;;;;:::o;21266:305::-;21306:3;21325:20;21343:1;21325:20;:::i;:::-;21320:25;;21359:20;21377:1;21359:20;:::i;:::-;21354:25;;21513:1;21445:66;21441:74;21438:1;21435:81;21432:2;;;21519:18;;:::i;:::-;21432:2;21563:1;21560;21556:9;21549:16;;21310:261;;;;:::o;21577:185::-;21617:1;21634:20;21652:1;21634:20;:::i;:::-;21629:25;;21668:20;21686:1;21668:20;:::i;:::-;21663:25;;21707:1;21697:2;;21712:18;;:::i;:::-;21697:2;21754:1;21751;21747:9;21742:14;;21619:143;;;;:::o;21768:348::-;21808:7;21831:20;21849:1;21831:20;:::i;:::-;21826:25;;21865:20;21883:1;21865:20;:::i;:::-;21860:25;;22053:1;21985:66;21981:74;21978:1;21975:81;21970:1;21963:9;21956:17;21952:105;21949:2;;;22060:18;;:::i;:::-;21949:2;22108:1;22105;22101:9;22090:20;;21816:300;;;;:::o;22122:191::-;22162:4;22182:20;22200:1;22182:20;:::i;:::-;22177:25;;22216:20;22234:1;22216:20;:::i;:::-;22211:25;;22255:1;22252;22249:8;22246:2;;;22260:18;;:::i;:::-;22246:2;22305:1;22302;22298:9;22290:17;;22167:146;;;;:::o;22319:96::-;22356:7;22385:24;22403:5;22385:24;:::i;:::-;22374:35;;22364:51;;;:::o;22421:104::-;22466:7;22495:24;22513:5;22495:24;:::i;:::-;22484:35;;22474:51;;;:::o;22531:90::-;22565:7;22608:5;22601:13;22594:21;22583:32;;22573:48;;;:::o;22627:126::-;22664:7;22704:42;22697:5;22693:54;22682:65;;22672:81;;;:::o;22759:77::-;22796:7;22825:5;22814:16;;22804:32;;;:::o;22842:86::-;22877:7;22917:4;22910:5;22906:16;22895:27;;22885:43;;;:::o;22934:180::-;23011:9;23044:64;23102:5;23044:64;:::i;:::-;23031:77;;23021:93;;;:::o;23120:140::-;23197:9;23230:24;23248:5;23230:24;:::i;:::-;23217:37;;23207:53;;;:::o;23266:121::-;23324:9;23357:24;23375:5;23357:24;:::i;:::-;23344:37;;23334:53;;;:::o;23393:307::-;23461:1;23471:113;23485:6;23482:1;23479:13;23471:113;;;23570:1;23565:3;23561:11;23555:18;23551:1;23546:3;23542:11;23535:39;23507:2;23504:1;23500:10;23495:15;;23471:113;;;23602:6;23599:1;23596:13;23593:2;;;23682:1;23673:6;23668:3;23664:16;23657:27;23593:2;23442:258;;;;:::o;23706:320::-;23750:6;23787:1;23781:4;23777:12;23767:22;;23834:1;23828:4;23824:12;23855:18;23845:2;;23911:4;23903:6;23899:17;23889:27;;23845:2;23973;23965:6;23962:14;23942:18;23939:38;23936:2;;;23992:18;;:::i;:::-;23936:2;23757:269;;;;:::o;24032:180::-;24080:77;24077:1;24070:88;24177:4;24174:1;24167:15;24201:4;24198:1;24191:15;24218:180;24266:77;24263:1;24256:88;24363:4;24360:1;24353:15;24387:4;24384:1;24377:15;24404:180;24452:77;24449:1;24442:88;24549:4;24546:1;24539:15;24573:4;24570:1;24563:15;24590:102;24631:6;24682:2;24678:7;24673:2;24666:5;24662:14;24658:28;24648:38;;24638:54;;;:::o;24698:222::-;24838:34;24834:1;24826:6;24822:14;24815:58;24907:5;24902:2;24894:6;24890:15;24883:30;24804:116;:::o;24926:225::-;25066:34;25062:1;25054:6;25050:14;25043:58;25135:8;25130:2;25122:6;25118:15;25111:33;25032:119;:::o;25157:221::-;25297:34;25293:1;25285:6;25281:14;25274:58;25366:4;25361:2;25353:6;25349:15;25342:29;25263:115;:::o;25384:177::-;25524:29;25520:1;25512:6;25508:14;25501:53;25490:71;:::o;25567:224::-;25707:34;25703:1;25695:6;25691:14;25684:58;25776:7;25771:2;25763:6;25759:15;25752:32;25673:118;:::o;25797:227::-;25937:34;25933:1;25925:6;25921:14;25914:58;26006:10;26001:2;25993:6;25989:15;25982:35;25903:121;:::o;26030:220::-;26170:34;26166:1;26158:6;26154:14;26147:58;26239:3;26234:2;26226:6;26222:15;26215:28;26136:114;:::o;26256:182::-;26396:34;26392:1;26384:6;26380:14;26373:58;26362:76;:::o;26444:224::-;26584:34;26580:1;26572:6;26568:14;26561:58;26653:7;26648:2;26640:6;26636:15;26629:32;26550:118;:::o;26674:182::-;26814:34;26810:1;26802:6;26798:14;26791:58;26780:76;:::o;26862:223::-;27002:34;26998:1;26990:6;26986:14;26979:58;27071:6;27066:2;27058:6;27054:15;27047:31;26968:117;:::o;27091:180::-;27231:32;27227:1;27219:6;27215:14;27208:56;27197:74;:::o;27277:122::-;27350:24;27368:5;27350:24;:::i;:::-;27343:5;27340:35;27330:2;;27389:1;27386;27379:12;27330:2;27320:79;:::o;27405:116::-;27475:21;27490:5;27475:21;:::i;:::-;27468:5;27465:32;27455:2;;27511:1;27508;27501:12;27455:2;27445:76;:::o;27527:122::-;27600:24;27618:5;27600:24;:::i;:::-;27593:5;27590:35;27580:2;;27639:1;27636;27629:12;27580:2;27570:79;:::o
Swarm Source
ipfs://5118199fff58333a44e722f2b57a565e7d61cf0415be949f99b9cc9bb8944cd4
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.