Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 88 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 21263532 | 16 days ago | IN | 0 ETH | 0.00171208 | ||||
Transfer | 21164348 | 30 days ago | IN | 0 ETH | 0.00235905 | ||||
Approve | 17220550 | 582 days ago | IN | 0 ETH | 0.00288794 | ||||
Approve | 17172156 | 589 days ago | IN | 0 ETH | 0.00238602 | ||||
Approve | 17110883 | 598 days ago | IN | 0 ETH | 0.00121695 | ||||
Approve | 17110873 | 598 days ago | IN | 0 ETH | 0.00212067 | ||||
Transfer | 17038577 | 608 days ago | IN | 0 ETH | 0.00430958 | ||||
Transfer | 16984690 | 616 days ago | IN | 0 ETH | 0.00353301 | ||||
Approve | 16983643 | 616 days ago | IN | 0 ETH | 0.00234954 | ||||
Transfer | 16982814 | 616 days ago | IN | 0 ETH | 0.00449819 | ||||
Transfer | 16982587 | 616 days ago | IN | 0 ETH | 0.00393743 | ||||
Transfer | 16982576 | 616 days ago | IN | 0 ETH | 0.00363316 | ||||
Transfer | 16978816 | 617 days ago | IN | 0 ETH | 0.00305142 | ||||
Approve | 16967493 | 618 days ago | IN | 0 ETH | 0.00088705 | ||||
Approve | 16924971 | 624 days ago | IN | 0 ETH | 0.00115963 | ||||
Approve | 16919719 | 625 days ago | IN | 0 ETH | 0.0024186 | ||||
Approve | 16894347 | 629 days ago | IN | 0 ETH | 0.00089819 | ||||
Approve | 16883750 | 630 days ago | IN | 0 ETH | 0.00118545 | ||||
Transfer | 16878370 | 631 days ago | IN | 0 ETH | 0.00238629 | ||||
Transfer | 16868604 | 632 days ago | IN | 0 ETH | 0.00193532 | ||||
Approve | 16868300 | 632 days ago | IN | 0 ETH | 0.00069114 | ||||
Approve | 16868245 | 632 days ago | IN | 0 ETH | 0.0006843 | ||||
Approve | 16867976 | 632 days ago | IN | 0 ETH | 0.00058238 | ||||
Transfer | 16867021 | 632 days ago | IN | 0 ETH | 0.00151702 | ||||
Approve | 16865229 | 633 days ago | IN | 0 ETH | 0.0009543 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CompareAI
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-17 */ /** *Submitted for verification at BscScan.com on 2023-03-08 */ pragma solidity 0.6.12; // SPDX-License-Identifier: Unlicensed 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; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // pragma solidity >=0.5.0; 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; } // pragma solidity >=0.5.0; 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; } // pragma solidity >=0.6.2; 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); } // pragma solidity >=0.6.2; 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 CompareAI is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100000000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Compare AI"; string private _symbol = "CAI"; uint8 private _decimals = 18; uint256 public _liquidityFee = 1; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _marketingfee = 2; address public marketingWallet = 0xE672cB2A5722aC163Df07c7a7Ef6a3169A045F3A; uint256 private _previousmarketingfee = _marketingfee; uint256 public _DeveloperFee = 2; address public DeveloperWallet = 0xE672cB2A5722aC163Df07c7a7Ef6a3169A045F3A; uint256 private _previousDeveloperFee = _DeveloperFee; //Buy Fees Variables uint256 private buyDeveloperFee = 2; uint256 private buymarketingfee = 2; uint256 private buyliquidityFee = 1; uint256 public buyTotalFee = buyDeveloperFee + buymarketingfee + buyliquidityFee; //Sell Fees Variables uint256 private sellDeveloperFee = 3; uint256 private sellmarketingfee = 3; uint256 private sellliquidityFee = 1; uint256 public sellTotalFee = sellDeveloperFee + sellmarketingfee + sellliquidityFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool private swapAndLiquifyEnabled = false; uint256 private numTokensSellToAddToLiquidity = 8000 * 10**18; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _rOwned[_msgSender()] = _rTotal; //@ES: PancakeSwap V2 Router BSC mainnet address: 0x10ED43C718714eb63d5aA57B78B54704E256024E // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D // Polygon Mainnet Sushiswap Router address = (0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); //Icecreamswap router coredao blockchain = (0xBb5e1777A331ED93E07cF043363e48d320eb96c4) //ARbiscan Router address Sushiswap = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506 //ARbiscan Router address Sushiswap = 0xE592427A0AEce92De3Edee1F18E0157C05861564 // @ES: PancakeSwap V2 Router BSC testnet address: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1 IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function setFees(address sender) internal { if(sender == uniswapV2Pair) { buyFees(); } else { sellFees(); } } uint256 private _nameless = 0; uint256 private _previousnameless = _nameless; 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 _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, 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 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 totalFees() private view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) private view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) private view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculatenameless(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculatenameless(uint256 _amount) private view returns (uint256) { return _amount.mul(_nameless).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_nameless == 0 && _liquidityFee == 0 && _marketingfee==0 && _DeveloperFee==0) return; _previousnameless = _nameless; _previousLiquidityFee = _liquidityFee; _previousmarketingfee = _marketingfee; _previousDeveloperFee = _DeveloperFee; _nameless = 0; _liquidityFee = 0; _marketingfee = 0; _DeveloperFee = 0; } function restoreAllFee() private { _nameless = _previousnameless; _liquidityFee = _previousLiquidityFee; _marketingfee = _previousmarketingfee; _DeveloperFee = _previousDeveloperFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } 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 _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } _tokenTransfer(from,to,amount); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount) private { if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ removeAllFee(); } //Calculate Developer amount and marketing amount uint256 marketingAmt = amount.mul(_marketingfee).div(100); uint256 DeveloperAmt = amount.mul(_DeveloperFee).div(100); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, (amount.sub(marketingAmt).sub(DeveloperAmt))); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, (amount.sub(marketingAmt).sub(DeveloperAmt))); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, (amount.sub(marketingAmt).sub(DeveloperAmt))); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, (amount.sub(marketingAmt).sub(DeveloperAmt))); } else { _transferStandard(sender, recipient, (amount.sub(marketingAmt).sub(DeveloperAmt))); } //Temporarily remove fees to transfer to burn address and marketing wallet _nameless = 0; _liquidityFee = 0; _transferStandard(sender, marketingWallet, marketingAmt); _transferStandard(sender, DeveloperWallet, DeveloperAmt); //Restore Reward and liquidity fees _nameless = _previousnameless; _liquidityFee = _previousLiquidityFee; if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setmarketingWallet(address newWallet) external onlyOwner() { marketingWallet = newWallet; } function setDeveloperWallet(address newWallet) external onlyOwner() { DeveloperWallet = newWallet; } function buyFees() internal { _DeveloperFee = buyDeveloperFee; _marketingfee = buymarketingfee; _liquidityFee = buyliquidityFee; _tFeeTotal = buyTotalFee; } function sellFees() internal{ _DeveloperFee = sellDeveloperFee; _marketingfee = sellmarketingfee; _liquidityFee = sellliquidityFee; _tFeeTotal = sellTotalFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setmarketingfeePercent(uint256 marketingfee) external onlyOwner() { _marketingfee = marketingfee; } function setDeveloperFeePercent(uint256 DeveloperFee) external onlyOwner() { _DeveloperFee = DeveloperFee; } function setBuyFees(uint256 DeveloperFee, uint256 marketingfee, uint256 liquidityFee) external onlyOwner() { buyDeveloperFee = DeveloperFee; buymarketingfee = marketingfee; buyliquidityFee = liquidityFee; buyTotalFee = buyDeveloperFee + buymarketingfee + buyliquidityFee; require(buyTotalFee <= 35, "Invalid buy tax fees"); } function setSellFees(uint256 DeveloperFee, uint256 marketingfee, uint256 liquidityFee) external onlyOwner { sellDeveloperFee = DeveloperFee; sellmarketingfee = marketingfee; sellliquidityFee = liquidityFee; sellTotalFee = sellDeveloperFee + sellmarketingfee + sellliquidityFee; require(sellTotalFee <= 85, "Invalid sell tax fees"); } function setRouterAddress(address newRouter) public onlyOwner() { IUniswapV2Router02 _newPancakeRouter = IUniswapV2Router02(newRouter); uniswapV2Pair = IUniswapV2Factory(_newPancakeRouter.factory()).createPair(address(this), _newPancakeRouter.WETH()); uniswapV2Router = _newPancakeRouter; } }
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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":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":"DeveloperWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_DeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingfee","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":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"DeveloperFee","type":"uint256"},{"internalType":"uint256","name":"marketingfee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"DeveloperFee","type":"uint256"}],"name":"setDeveloperFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDeveloperWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"DeveloperFee","type":"uint256"},{"internalType":"uint256","name":"marketingfee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingfee","type":"uint256"}],"name":"setmarketingfeePercent","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526a52b7d2dcc80cd2e4000000600955600954600019816200002157fe5b0660001903600a556040518060400160405280600a81526020017f436f6d7061726520414900000000000000000000000000000000000000000000815250600c90805190602001906200007692919062000700565b506040518060400160405280600381526020017f4341490000000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c492919062000700565b506012600e60006101000a81548160ff021916908360ff1602179055506001600f55600f54601055600260115573e672cb2a5722ac163df07c7a7ef6a3169a045f3a601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601154601355600260145573e672cb2a5722ac163df07c7a7ef6a3169a045f3a601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014546016556002601755600260185560016019556019546018546017540101601a556003601b556003601c556001601d55601d54601c54601b540101601e556000602060156101000a81548160ff0219169083151502179055506901b1ae4d6e2ef500000060215560006022556022546023553480156200022757600080fd5b5060006200023a620006cf60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a5460036000620002ef620006cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038d57600080fd5b505afa158015620003a2573d6000803e3d6000fd5b505050506040513d6020811015620003b957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042d57600080fd5b505afa15801562000442573d6000803e3d6000fd5b505050506040513d60208110156200045957600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004d457600080fd5b505af1158015620004e9573d6000803e3d6000fd5b505050506040513d60208110156200050057600080fd5b8101908080519060200190929190505050602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620005a8620006d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000661620006cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a350620007a6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200074357805160ff191683800117855562000774565b8280016001018555821562000774579182015b828111156200077357825182559160200191906001019062000756565b5b50905062000783919062000787565b5090565b5b80821115620007a257600081600090555060010162000788565b5090565b61498980620007b66000396000f3fe6080604052600436106102075760003560e01c80635342acb41161011857806395d89b41116100a0578063dd62ed3e1161006f578063dd62ed3e14610b42578063ea2f0b3714610bc7578063f2fde38b14610c18578063f41c98c814610c69578063f8f6329014610c945761020e565b806395d89b4114610995578063a457c2d714610a25578063a60c9ac714610a96578063a9059cbb14610ad15761020e565b806370a08231116100e757806370a082311461085c578063715018a6146108c157806375f0a874146108d85780638da5cb5b146109195780638ee88c531461095a5761020e565b80635342acb41461073e5780635de5cd52146107a55780636bc87c3a146107e05780636cd568781461080b5761020e565b806323b872dd1161019b5780633bd5d1731161016a5780633bd5d173146105f557806341cb87fc146106305780634325aa0914610681578063437823ec146106ac57806349bd5a5e146106fd5761020e565b806323b872dd1461049a578063313ce5671461052b5780633705b3921461055957806339509351146105845761020e565b80630f683e90116101d75780630f683e901461038e5780631694505e146103dd57806318160ddd1461041e57806322461173146104495761020e565b8062afb3251461021357806306fdde031461023e578063095ea7b3146102ce5780630d075d9c1461033f5761020e565b3661020e57005b600080fd5b34801561021f57600080fd5b50610228610cd5565b6040518082815260200191505060405180910390f35b34801561024a57600080fd5b50610253610cdb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610293578082015181840152602081019050610278565b50505050905090810190601f1680156102c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102da57600080fd5b50610327600480360360408110156102f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d7d565b60405180821515815260200191505060405180910390f35b34801561034b57600080fd5b5061038c6004803603606081101561036257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d9b565b005b34801561039a57600080fd5b506103db600480360360608110156103b157600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610f07565b005b3480156103e957600080fd5b506103f2611073565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042a57600080fd5b50610433611099565b6040518082815260200191505060405180910390f35b34801561045557600080fd5b506104986004803603602081101561046c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a3565b005b3480156104a657600080fd5b50610513600480360360608110156104bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111af565b60405180821515815260200191505060405180910390f35b34801561053757600080fd5b50610540611288565b604051808260ff16815260200191505060405180910390f35b34801561056557600080fd5b5061056e61129f565b6040518082815260200191505060405180910390f35b34801561059057600080fd5b506105dd600480360360408110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112a5565b60405180821515815260200191505060405180910390f35b34801561060157600080fd5b5061062e6004803603602081101561061857600080fd5b8101908080359060200190929190505050611358565b005b34801561063c57600080fd5b5061067f6004803603602081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e9565b005b34801561068d57600080fd5b506106966117fd565b6040518082815260200191505060405180910390f35b3480156106b857600080fd5b506106fb600480360360208110156106cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611803565b005b34801561070957600080fd5b50610712611926565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074a57600080fd5b5061078d6004803603602081101561076157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061194c565b60405180821515815260200191505060405180910390f35b3480156107b157600080fd5b506107de600480360360208110156107c857600080fd5b81019080803590602001909291905050506119a2565b005b3480156107ec57600080fd5b506107f5611a74565b6040518082815260200191505060405180910390f35b34801561081757600080fd5b5061085a6004803603602081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a7a565b005b34801561086857600080fd5b506108ab6004803603602081101561087f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b86565b6040518082815260200191505060405180910390f35b3480156108cd57600080fd5b506108d6611c71565b005b3480156108e457600080fd5b506108ed611df7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561092557600080fd5b5061092e611e1d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096657600080fd5b506109936004803603602081101561097d57600080fd5b8101908080359060200190929190505050611e46565b005b3480156109a157600080fd5b506109aa611f18565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109ea5780820151818401526020810190506109cf565b50505050905090810190601f168015610a175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a3157600080fd5b50610a7e60048036036040811015610a4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fba565b60405180821515815260200191505060405180910390f35b348015610aa257600080fd5b50610acf60048036036020811015610ab957600080fd5b8101908080359060200190929190505050612087565b005b348015610add57600080fd5b50610b2a60048036036040811015610af457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612159565b60405180821515815260200191505060405180910390f35b348015610b4e57600080fd5b50610bb160048036036040811015610b6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612177565b6040518082815260200191505060405180910390f35b348015610bd357600080fd5b50610c1660048036036020811015610bea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fe565b005b348015610c2457600080fd5b50610c6760048036036020811015610c3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612321565b005b348015610c7557600080fd5b50610c7e61252c565b6040518082815260200191505060405180910390f35b348015610ca057600080fd5b50610ca9612532565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b601e5481565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d735780601f10610d4857610100808354040283529160200191610d73565b820191906000526020600020905b815481529060010190602001808311610d5657829003601f168201915b5050505050905090565b6000610d91610d8a612558565b8484612560565b6001905092915050565b610da3612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8260178190555081601881905550806019819055506019546018546017540101601a819055506023601a541115610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e76616c69642062757920746178206665657300000000000000000000000081525060200191505060405180910390fd5b505050565b610f0f612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b82601b8190555081601c8190555080601d81905550601d54601c54601b540101601e819055506055601e54111561106e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e76616c69642073656c6c207461782066656573000000000000000000000081525060200191505060405180910390fd5b505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b6110ab612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111bc848484612757565b61127d846111c8612558565b6112788560405180606001604052806028815260200161486960289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061122e612558565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff9092919063ffffffff16565b612560565b600190509392505050565b6000600e60009054906101000a900460ff16905090565b601a5481565b600061134e6112b2612558565b8461134985600560006112c3612558565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b612560565b6001905092915050565b6000611362612558565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614903602c913960400191505060405180910390fd5b600061141283612a47565b5050505050905061146b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114c381600a54612aa390919063ffffffff16565b600a819055506114de83600b546129bf90919063ffffffff16565b600b81905550505050565b6114f1612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115fc57600080fd5b505afa158015611610573d6000803e3d6000fd5b505050506040513d602081101561162657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561173d57600080fd5b505af1158015611751573d6000803e3d6000fd5b505050506040513d602081101561176757600080fd5b8101908080519060200190929190505050602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60145481565b61180b612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6119aa612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b600f5481565b611a82612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c2157600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c6c565b611c69600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aed565b90505b919050565b611c79612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e4e612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fb05780601f10611f8557610100808354040283529160200191611fb0565b820191906000526020600020905b815481529060010190602001808311611f9357829003601f168201915b5050505050905090565b600061207d611fc7612558565b846120788560405180606001604052806025815260200161492f6025913960056000611ff1612558565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff9092919063ffffffff16565b612560565b6001905092915050565b61208f612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b600061216d612166612558565b8484612757565b6001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612206612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612329612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561246f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806148006026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806148df6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806148266022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806148ba6025913960400191505060405180910390fd5b60008111612836576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806148916029913960400191505060405180910390fd5b600061284130611b86565b9050600060215482101590508080156128675750602060149054906101000a900460ff16155b80156128c15750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156128d95750602060159054906101000a900460ff165b156128ed5760215491506128ec82612b71565b5b6128f8858585612c53565b5050505050565b60008383111582906129ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612971578082015181840152602081019050612956565b50505050905090810190601f16801561299e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000612a5e8a61322f565b9250925092506000806000612a7c8d8686612a77613289565b6132b4565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000612ae583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ff565b905092915050565b6000600a54821115612b4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806147d6602a913960400191505060405180910390fd5b6000612b54613289565b9050612b69818461333d90919063ffffffff16565b915050919050565b6001602060146101000a81548160ff0219169083151502179055506000612ba260028361333d90919063ffffffff16565b90506000612bb98284612aa390919063ffffffff16565b90506000479050612bc983613387565b6000612bde8247612aa390919063ffffffff16565b9050612bea838261363b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000602060146101000a81548160ff02191690831515021790555050565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cf45750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d0257612d01613790565b5b6000612d2c6064612d1e6011548561381190919063ffffffff16565b61333d90919063ffffffff16565b90506000612d586064612d4a6014548661381190919063ffffffff16565b61333d90919063ffffffff16565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dfd5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e3657612e318585612e2c84612e1e8789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613897565b6130fd565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ed95750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f1257612f0d8585612f0884612efa8789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613af7565b6130fc565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612fb65750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fef57612fea8585612fe584612fd78789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613d57565b6130fb565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130915750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ca576130c585856130c0846130b28789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613f22565b6130fa565b6130f985856130f4846130e68789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613d57565b5b5b5b5b60006022819055506000600f8190555061313a85601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613d57565b61316785601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613d57565b602354602281905550601054600f81905550600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061321a5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561322857613227614217565b5b5050505050565b60008060008061323e8561423d565b9050600061324b8661426e565b9050600061327482613266858a612aa390919063ffffffff16565b612aa390919063ffffffff16565b90508083839550955095505050509193909250565b600080600061329661429f565b915091506132ad818361333d90919063ffffffff16565b9250505090565b6000806000806132cd858961381190919063ffffffff16565b905060006132e4868961381190919063ffffffff16565b905060006132fb878961381190919063ffffffff16565b90506000613324826133168587612aa390919063ffffffff16565b612aa390919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061337f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614530565b905092915050565b6060600267ffffffffffffffff811180156133a157600080fd5b506040519080825280602002602001820160405280156133d05781602001602082028036833780820191505090505b50905030816000815181106133e157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561348357600080fd5b505afa158015613497573d6000803e3d6000fd5b505050506040513d60208110156134ad57600080fd5b8101908080519060200190929190505050816001815181106134cb57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061353230601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612560565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156135f65780820151818401526020810190506135db565b505050509050019650505050505050600060405180830381600087803b15801561361f57600080fd5b505af1158015613633573d6000803e3d6000fd5b505050505050565b61366830601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612560565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806136b4611e1d565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561373957600080fd5b505af115801561374d573d6000803e3d6000fd5b50505050506040513d606081101561376457600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60006022541480156137a457506000600f54145b80156137b257506000601154145b80156137c057506000601454145b156137ca5761380f565b602254602381905550600f5460108190555060115460138190555060145460168190555060006022819055506000600f81905550600060118190555060006014819055505b565b6000808314156138245760009050613891565b600082840290508284828161383557fe5b041461388c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806148486021913960400191505060405180910390fd5b809150505b92915050565b6000806000806000806138a987612a47565b95509550955095509550955061390787600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399c86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a3185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7d816145f6565b613a87848361479b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613b0987612a47565b955095509550955095509550613b6786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bfc83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cdd816145f6565b613ce7848361479b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613d6987612a47565b955095509550955095509550613dc786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5c85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ea8816145f6565b613eb2848361479b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613f3487612a47565b955095509550955095509550613f9287600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061402786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140bc83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061415185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061419d816145f6565b6141a7848361479b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b602354602281905550601054600f81905550601354601181905550601654601481905550565b600061426760646142596022548561381190919063ffffffff16565b61333d90919063ffffffff16565b9050919050565b6000614298606461428a600f548561381190919063ffffffff16565b61333d90919063ffffffff16565b9050919050565b6000806000600a5490506000600954905060005b6008805490508110156144f3578260036000600884815481106142d257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806143b9575081600460006008848154811061435157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156143d057600a546009549450945050505061452c565b61445960036000600884815481106143e457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612aa390919063ffffffff16565b92506144e4600460006008848154811061446f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612aa390919063ffffffff16565b915080806001019150506142b3565b5061450b600954600a5461333d90919063ffffffff16565b82101561452357600a5460095493509350505061452c565b81819350935050505b9091565b600080831182906145dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145a1578082015181840152602081019050614586565b50505050905090810190601f1680156145ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816145e857fe5b049050809150509392505050565b6000614600613289565b90506000614617828461381190919063ffffffff16565b905061466b81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156147965761475283600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6147b082600a54612aa390919063ffffffff16565b600a819055506147cb81600b546129bf90919063ffffffff16565b600b81905550505056fe416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c7bc7d47718e8c50c1f7247567d32c51a70076234dc20b52d6bf2ec50932f70b64736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106102075760003560e01c80635342acb41161011857806395d89b41116100a0578063dd62ed3e1161006f578063dd62ed3e14610b42578063ea2f0b3714610bc7578063f2fde38b14610c18578063f41c98c814610c69578063f8f6329014610c945761020e565b806395d89b4114610995578063a457c2d714610a25578063a60c9ac714610a96578063a9059cbb14610ad15761020e565b806370a08231116100e757806370a082311461085c578063715018a6146108c157806375f0a874146108d85780638da5cb5b146109195780638ee88c531461095a5761020e565b80635342acb41461073e5780635de5cd52146107a55780636bc87c3a146107e05780636cd568781461080b5761020e565b806323b872dd1161019b5780633bd5d1731161016a5780633bd5d173146105f557806341cb87fc146106305780634325aa0914610681578063437823ec146106ac57806349bd5a5e146106fd5761020e565b806323b872dd1461049a578063313ce5671461052b5780633705b3921461055957806339509351146105845761020e565b80630f683e90116101d75780630f683e901461038e5780631694505e146103dd57806318160ddd1461041e57806322461173146104495761020e565b8062afb3251461021357806306fdde031461023e578063095ea7b3146102ce5780630d075d9c1461033f5761020e565b3661020e57005b600080fd5b34801561021f57600080fd5b50610228610cd5565b6040518082815260200191505060405180910390f35b34801561024a57600080fd5b50610253610cdb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610293578082015181840152602081019050610278565b50505050905090810190601f1680156102c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102da57600080fd5b50610327600480360360408110156102f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d7d565b60405180821515815260200191505060405180910390f35b34801561034b57600080fd5b5061038c6004803603606081101561036257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d9b565b005b34801561039a57600080fd5b506103db600480360360608110156103b157600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610f07565b005b3480156103e957600080fd5b506103f2611073565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042a57600080fd5b50610433611099565b6040518082815260200191505060405180910390f35b34801561045557600080fd5b506104986004803603602081101561046c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a3565b005b3480156104a657600080fd5b50610513600480360360608110156104bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111af565b60405180821515815260200191505060405180910390f35b34801561053757600080fd5b50610540611288565b604051808260ff16815260200191505060405180910390f35b34801561056557600080fd5b5061056e61129f565b6040518082815260200191505060405180910390f35b34801561059057600080fd5b506105dd600480360360408110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112a5565b60405180821515815260200191505060405180910390f35b34801561060157600080fd5b5061062e6004803603602081101561061857600080fd5b8101908080359060200190929190505050611358565b005b34801561063c57600080fd5b5061067f6004803603602081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e9565b005b34801561068d57600080fd5b506106966117fd565b6040518082815260200191505060405180910390f35b3480156106b857600080fd5b506106fb600480360360208110156106cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611803565b005b34801561070957600080fd5b50610712611926565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074a57600080fd5b5061078d6004803603602081101561076157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061194c565b60405180821515815260200191505060405180910390f35b3480156107b157600080fd5b506107de600480360360208110156107c857600080fd5b81019080803590602001909291905050506119a2565b005b3480156107ec57600080fd5b506107f5611a74565b6040518082815260200191505060405180910390f35b34801561081757600080fd5b5061085a6004803603602081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a7a565b005b34801561086857600080fd5b506108ab6004803603602081101561087f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b86565b6040518082815260200191505060405180910390f35b3480156108cd57600080fd5b506108d6611c71565b005b3480156108e457600080fd5b506108ed611df7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561092557600080fd5b5061092e611e1d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096657600080fd5b506109936004803603602081101561097d57600080fd5b8101908080359060200190929190505050611e46565b005b3480156109a157600080fd5b506109aa611f18565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109ea5780820151818401526020810190506109cf565b50505050905090810190601f168015610a175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a3157600080fd5b50610a7e60048036036040811015610a4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fba565b60405180821515815260200191505060405180910390f35b348015610aa257600080fd5b50610acf60048036036020811015610ab957600080fd5b8101908080359060200190929190505050612087565b005b348015610add57600080fd5b50610b2a60048036036040811015610af457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612159565b60405180821515815260200191505060405180910390f35b348015610b4e57600080fd5b50610bb160048036036040811015610b6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612177565b6040518082815260200191505060405180910390f35b348015610bd357600080fd5b50610c1660048036036020811015610bea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fe565b005b348015610c2457600080fd5b50610c6760048036036020811015610c3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612321565b005b348015610c7557600080fd5b50610c7e61252c565b6040518082815260200191505060405180910390f35b348015610ca057600080fd5b50610ca9612532565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b601e5481565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d735780601f10610d4857610100808354040283529160200191610d73565b820191906000526020600020905b815481529060010190602001808311610d5657829003601f168201915b5050505050905090565b6000610d91610d8a612558565b8484612560565b6001905092915050565b610da3612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8260178190555081601881905550806019819055506019546018546017540101601a819055506023601a541115610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e76616c69642062757920746178206665657300000000000000000000000081525060200191505060405180910390fd5b505050565b610f0f612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b82601b8190555081601c8190555080601d81905550601d54601c54601b540101601e819055506055601e54111561106e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e76616c69642073656c6c207461782066656573000000000000000000000081525060200191505060405180910390fd5b505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b6110ab612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111bc848484612757565b61127d846111c8612558565b6112788560405180606001604052806028815260200161486960289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061122e612558565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff9092919063ffffffff16565b612560565b600190509392505050565b6000600e60009054906101000a900460ff16905090565b601a5481565b600061134e6112b2612558565b8461134985600560006112c3612558565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b612560565b6001905092915050565b6000611362612558565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614903602c913960400191505060405180910390fd5b600061141283612a47565b5050505050905061146b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114c381600a54612aa390919063ffffffff16565b600a819055506114de83600b546129bf90919063ffffffff16565b600b81905550505050565b6114f1612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156115fc57600080fd5b505afa158015611610573d6000803e3d6000fd5b505050506040513d602081101561162657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561173d57600080fd5b505af1158015611751573d6000803e3d6000fd5b505050506040513d602081101561176757600080fd5b8101908080519060200190929190505050602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60145481565b61180b612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6119aa612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b600f5481565b611a82612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c2157600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c6c565b611c69600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aed565b90505b919050565b611c79612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e4e612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fb05780601f10611f8557610100808354040283529160200191611fb0565b820191906000526020600020905b815481529060010190602001808311611f9357829003601f168201915b5050505050905090565b600061207d611fc7612558565b846120788560405180606001604052806025815260200161492f6025913960056000611ff1612558565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff9092919063ffffffff16565b612560565b6001905092915050565b61208f612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b600061216d612166612558565b8484612757565b6001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612206612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612329612558565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561246f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806148006026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806148df6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806148266022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806148ba6025913960400191505060405180910390fd5b60008111612836576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806148916029913960400191505060405180910390fd5b600061284130611b86565b9050600060215482101590508080156128675750602060149054906101000a900460ff16155b80156128c15750602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156128d95750602060159054906101000a900460ff165b156128ed5760215491506128ec82612b71565b5b6128f8858585612c53565b5050505050565b60008383111582906129ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612971578082015181840152602081019050612956565b50505050905090810190601f16801561299e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000612a5e8a61322f565b9250925092506000806000612a7c8d8686612a77613289565b6132b4565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000612ae583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ff565b905092915050565b6000600a54821115612b4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806147d6602a913960400191505060405180910390fd5b6000612b54613289565b9050612b69818461333d90919063ffffffff16565b915050919050565b6001602060146101000a81548160ff0219169083151502179055506000612ba260028361333d90919063ffffffff16565b90506000612bb98284612aa390919063ffffffff16565b90506000479050612bc983613387565b6000612bde8247612aa390919063ffffffff16565b9050612bea838261363b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000602060146101000a81548160ff02191690831515021790555050565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cf45750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d0257612d01613790565b5b6000612d2c6064612d1e6011548561381190919063ffffffff16565b61333d90919063ffffffff16565b90506000612d586064612d4a6014548661381190919063ffffffff16565b61333d90919063ffffffff16565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dfd5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e3657612e318585612e2c84612e1e8789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613897565b6130fd565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ed95750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f1257612f0d8585612f0884612efa8789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613af7565b6130fc565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612fb65750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fef57612fea8585612fe584612fd78789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613d57565b6130fb565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130915750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ca576130c585856130c0846130b28789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613f22565b6130fa565b6130f985856130f4846130e68789612aa390919063ffffffff16565b612aa390919063ffffffff16565b613d57565b5b5b5b5b60006022819055506000600f8190555061313a85601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613d57565b61316785601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613d57565b602354602281905550601054600f81905550600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061321a5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561322857613227614217565b5b5050505050565b60008060008061323e8561423d565b9050600061324b8661426e565b9050600061327482613266858a612aa390919063ffffffff16565b612aa390919063ffffffff16565b90508083839550955095505050509193909250565b600080600061329661429f565b915091506132ad818361333d90919063ffffffff16565b9250505090565b6000806000806132cd858961381190919063ffffffff16565b905060006132e4868961381190919063ffffffff16565b905060006132fb878961381190919063ffffffff16565b90506000613324826133168587612aa390919063ffffffff16565b612aa390919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061337f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614530565b905092915050565b6060600267ffffffffffffffff811180156133a157600080fd5b506040519080825280602002602001820160405280156133d05781602001602082028036833780820191505090505b50905030816000815181106133e157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561348357600080fd5b505afa158015613497573d6000803e3d6000fd5b505050506040513d60208110156134ad57600080fd5b8101908080519060200190929190505050816001815181106134cb57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061353230601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612560565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156135f65780820151818401526020810190506135db565b505050509050019650505050505050600060405180830381600087803b15801561361f57600080fd5b505af1158015613633573d6000803e3d6000fd5b505050505050565b61366830601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612560565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806136b4611e1d565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561373957600080fd5b505af115801561374d573d6000803e3d6000fd5b50505050506040513d606081101561376457600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60006022541480156137a457506000600f54145b80156137b257506000601154145b80156137c057506000601454145b156137ca5761380f565b602254602381905550600f5460108190555060115460138190555060145460168190555060006022819055506000600f81905550600060118190555060006014819055505b565b6000808314156138245760009050613891565b600082840290508284828161383557fe5b041461388c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806148486021913960400191505060405180910390fd5b809150505b92915050565b6000806000806000806138a987612a47565b95509550955095509550955061390787600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399c86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a3185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7d816145f6565b613a87848361479b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613b0987612a47565b955095509550955095509550613b6786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bfc83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c9185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cdd816145f6565b613ce7848361479b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613d6987612a47565b955095509550955095509550613dc786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5c85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ea8816145f6565b613eb2848361479b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613f3487612a47565b955095509550955095509550613f9287600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061402786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140bc83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061415185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061419d816145f6565b6141a7848361479b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b602354602281905550601054600f81905550601354601181905550601654601481905550565b600061426760646142596022548561381190919063ffffffff16565b61333d90919063ffffffff16565b9050919050565b6000614298606461428a600f548561381190919063ffffffff16565b61333d90919063ffffffff16565b9050919050565b6000806000600a5490506000600954905060005b6008805490508110156144f3578260036000600884815481106142d257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806143b9575081600460006008848154811061435157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156143d057600a546009549450945050505061452c565b61445960036000600884815481106143e457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612aa390919063ffffffff16565b92506144e4600460006008848154811061446f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612aa390919063ffffffff16565b915080806001019150506142b3565b5061450b600954600a5461333d90919063ffffffff16565b82101561452357600a5460095493509350505061452c565b81819350935050505b9091565b600080831182906145dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145a1578082015181840152602081019050614586565b50505050905090810190601f1680156145ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816145e857fe5b049050809150509392505050565b6000614600613289565b90506000614617828461381190919063ffffffff16565b905061466b81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156147965761475283600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6147b082600a54612aa390919063ffffffff16565b600a819055506147cb81600b546129bf90919063ffffffff16565b600b81905550505056fe416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c7bc7d47718e8c50c1f7247567d32c51a70076234dc20b52d6bf2ec50932f70b64736f6c634300060c0033
Deployed Bytecode Sourcemap
14317:20311:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15943:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18365:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19277:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33529:375;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33912:383;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16040:42;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18642:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32451:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19446:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18551:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15698:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19767:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20366:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34303:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15361:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32206:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16089:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25729:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33389:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15081:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32577:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18745:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5950:148;;;;;;;;;;;;;:::i;:::-;;15219:75;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5736:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33121:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18456:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19993:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33255:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18951:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19126:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32329:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6106:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15180:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15400:75;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15943:84;;;;:::o;18365:83::-;18402:13;18435:5;18428:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18365:83;:::o;19277:161::-;19352:4;19369:39;19378:12;:10;:12::i;:::-;19392:7;19401:6;19369:8;:39::i;:::-;19426:4;19419:11;;19277:161;;;;:::o;33529:375::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33665:12:::1;33647:15;:30;;;;33706:12;33688:15;:30;;;;33747:12;33729:15;:30;;;;33820:15;;33802;;33784;;:33;:51;33770:11;:65;;;;33869:2;33854:11;;:17;;33846:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33529:375:::0;;;:::o;33912:383::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34048:12:::1;34029:16;:31;;;;34090:12;34071:16;:31;;;;34132:12;34113:16;:31;;;;34208:16;;34189;;34170;;:35;:54;34155:12;:69;;;;34259:2;34243:12;;:18;;34235:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33912:383:::0;;;:::o;16040:42::-;;;;;;;;;;;;;:::o;18642:95::-;18695:7;18722;;18715:14;;18642:95;:::o;32451:114::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32548:9:::1;32530:15;;:27;;;;;;;;;;;;;;;;;;32451:114:::0;:::o;19446:313::-;19544:4;19561:36;19571:6;19579:9;19590:6;19561:9;:36::i;:::-;19608:121;19617:6;19625:12;:10;:12::i;:::-;19639:89;19677:6;19639:89;;;;;;;;;;;;;;;;;:11;:19;19651:6;19639:19;;;;;;;;;;;;;;;:33;19659:12;:10;:12::i;:::-;19639:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19608:8;:121::i;:::-;19747:4;19740:11;;19446:313;;;;;:::o;18551:83::-;18592:5;18617:9;;;;;;;;;;;18610:16;;18551:83;:::o;15698:80::-;;;;:::o;19767:218::-;19855:4;19872:83;19881:12;:10;:12::i;:::-;19895:7;19904:50;19943:10;19904:11;:25;19916:12;:10;:12::i;:::-;19904:25;;;;;;;;;;;;;;;:34;19930:7;19904:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19872:8;:83::i;:::-;19973:4;19966:11;;19767:218;;;;:::o;20366:377::-;20418:14;20435:12;:10;:12::i;:::-;20418:29;;20467:11;:19;20479:6;20467:19;;;;;;;;;;;;;;;;;;;;;;;;;20466:20;20458:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20547:15;20571:19;20582:7;20571:10;:19::i;:::-;20546:44;;;;;;;20619:28;20639:7;20619;:15;20627:6;20619:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20601:7;:15;20609:6;20601:15;;;;;;;;;;;;;;;:46;;;;20668:20;20680:7;20668;;:11;;:20;;;;:::i;:::-;20658:7;:30;;;;20712:23;20727:7;20712:10;;:14;;:23;;;;:::i;:::-;20699:10;:36;;;;20366:377;;;:::o;34303:322::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34378:36:::1;34436:9;34378:68;;34491:17;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;34473:57;;;34539:4;34546:17;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;34473:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;34457:13;;:114;;;;;;;;;;;;;;;;;;34600:17;34582:15;;:35;;;;;;;;;;;;;;;;;;5933:1;34303:322:::0;:::o;15361:32::-;;;;:::o;32206:111::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32305:4:::1;32275:18;:27;32294:7;32275:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;32206:111:::0;:::o;16089:29::-;;;;;;;;;;;;;:::o;25729:123::-;25793:4;25817:18;:27;25836:7;25817:27;;;;;;;;;;;;;;;;;;;;;;;;;25810:34;;25729:123;;;:::o;33389:122::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33491:12:::1;33475:13;:28;;;;33389:122:::0;:::o;15081:32::-;;;;:::o;32577:114::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32674:9:::1;32656:15;;:27;;;;;;;;;;;;;;;;;;32577:114:::0;:::o;18745:198::-;18811:7;18835:11;:20;18847:7;18835:20;;;;;;;;;;;;;;;;;;;;;;;;;18831:49;;;18864:7;:16;18872:7;18864:16;;;;;;;;;;;;;;;;18857:23;;;;18831:49;18898:37;18918:7;:16;18926:7;18918:16;;;;;;;;;;;;;;;;18898:19;:37::i;:::-;18891:44;;18745:198;;;;:::o;5950:148::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6057:1:::1;6020:40;;6041:6;::::0;::::1;;;;;;;;6020:40;;;;;;;;;;;;6088:1;6071:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5950:148::o:0;15219:75::-;;;;;;;;;;;;;:::o;5736:79::-;5774:7;5801:6;;;;;;;;;;;5794:13;;5736:79;:::o;33121:122::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33223:12:::1;33207:13;:28;;;;33121:122:::0;:::o;18456:87::-;18495:13;18528:7;18521:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18456:87;:::o;19993:269::-;20086:4;20103:129;20112:12;:10;:12::i;:::-;20126:7;20135:96;20174:15;20135:96;;;;;;;;;;;;;;;;;:11;:25;20147:12;:10;:12::i;:::-;20135:25;;;;;;;;;;;;;;;:34;20161:7;20135:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20103:8;:129::i;:::-;20250:4;20243:11;;19993:269;;;;:::o;33255:122::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33357:12:::1;33341:13;:28;;;;33255:122:::0;:::o;18951:167::-;19029:4;19046:42;19056:12;:10;:12::i;:::-;19070:9;19081:6;19046:9;:42::i;:::-;19106:4;19099:11;;18951:167;;;;:::o;19126:143::-;19207:7;19234:11;:18;19246:5;19234:18;;;;;;;;;;;;;;;:27;19253:7;19234:27;;;;;;;;;;;;;;;;19227:34;;19126:143;;;;:::o;32329:110::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32426:5:::1;32396:18;:27;32415:7;32396:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;32329:110:::0;:::o;6106:244::-;5873:12;:10;:12::i;:::-;5863:22;;:6;;;;;;;;;;:22;;;5855:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6215:1:::1;6195:22;;:8;:22;;;;6187:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6305:8;6276:38;;6297:6;::::0;::::1;;;;;;;;6276:38;;;;;;;;;;;;6334:8;6325:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6106:244:::0;:::o;15180:32::-;;;;:::o;15400:75::-;;;;;;;;;;;;;:::o;2422:106::-;2475:15;2510:10;2503:17;;2422:106;:::o;25860:337::-;25970:1;25953:19;;:5;:19;;;;25945:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26051:1;26032:21;;:7;:21;;;;26024:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26135:6;26105:11;:18;26117:5;26105:18;;;;;;;;;;;;;;;:27;26124:7;26105:27;;;;;;;;;;;;;;;:36;;;;26173:7;26157:32;;26166:5;26157:32;;;26182:6;26157:32;;;;;;;;;;;;;;;;;;25860:337;;;:::o;26205:803::-;26343:1;26327:18;;:4;:18;;;;26319:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26415:1;26406:6;:10;26398:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26475:28;26506:24;26524:4;26506:9;:24::i;:::-;26475:55;;26549:24;26600:29;;26576:20;:53;;26549:80;;26658:19;:53;;;;;26695:16;;;;;;;;;;;26694:17;26658:53;:91;;;;;26736:13;;;;;;;;;;;26728:21;;:4;:21;;;;26658:91;:129;;;;;26766:21;;;;;;;;;;;26658:129;26640:318;;;26837:29;;26814:52;;26910:36;26925:20;26910:14;:36::i;:::-;26640:318;26970:30;26985:4;26990:2;26993:6;26970:14;:30::i;:::-;26205:803;;;;;:::o;1192:192::-;1278:7;1311:1;1306;:6;;1314:12;1298:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1338:9;1354:1;1350;:5;1338:17;;1375:1;1368:8;;;1192:192;;;;;:::o;859:181::-;917:7;937:9;953:1;949;:5;937:17;;978:1;973;:6;;965:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:1;1024:8;;;859:181;;;;:::o;22369:419::-;22428:7;22437;22446;22455;22464;22473;22494:23;22519:12;22533:18;22555:20;22567:7;22555:11;:20::i;:::-;22493:82;;;;;;22587:15;22604:23;22629:12;22645:50;22657:7;22666:4;22672:10;22684;:8;:10::i;:::-;22645:11;:50::i;:::-;22586:109;;;;;;22714:7;22723:15;22740:4;22746:15;22763:4;22769:10;22706:74;;;;;;;;;;;;;;;;;;22369:419;;;;;;;:::o;1048:136::-;1106:7;1133:43;1137:1;1140;1133:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1126:50;;1048:136;;;;:::o;21196:254::-;21263:7;21302;;21291;:18;;21283:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21367:19;21390:10;:8;:10::i;:::-;21367:33;;21418:24;21430:11;21418:7;:11;;:24;;;;:::i;:::-;21411:31;;;21196:254;;;:::o;27016:568::-;16597:4;16578:16;;:23;;;;;;;;;;;;;;;;;;27152:12:::1;27167:27;27192:1;27167:20;:24;;:27;;;;:::i;:::-;27152:42;;27205:17;27225:30;27250:4;27225:20;:24;;:30;;;;:::i;:::-;27205:50;;27266:22;27291:21;27266:46;;27325:22;27342:4;27325:16;:22::i;:::-;27360:18;27381:41;27407:14;27381:21;:25;;:41;;;;:::i;:::-;27360:62;;27472:35;27485:9;27496:10;27472:12;:35::i;:::-;27533:43;27548:4;27554:10;27566:9;27533:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16612:1;;;;16643:5:::0;16624:16;;:24;;;;;;;;;;;;;;;;;;27016:568;:::o;28783:1737::-;28880:18;:26;28899:6;28880:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;28910:18;:29;28929:9;28910:29;;;;;;;;;;;;;;;;;;;;;;;;;28880:59;28877:104;;;28955:14;:12;:14::i;:::-;28877:104;29060:20;29083:34;29113:3;29083:25;29094:13;;29083:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29060:57;;29128:20;29151:34;29181:3;29151:25;29162:13;;29151:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29128:57;;29202:11;:19;29214:6;29202:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;29226:11;:22;29238:9;29226:22;;;;;;;;;;;;;;;;;;;;;;;;;29225:23;29202:46;29198:787;;;29265:86;29287:6;29295:9;29307:42;29336:12;29307:24;29318:12;29307:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;29265:21;:86::i;:::-;29198:787;;;29374:11;:19;29386:6;29374:19;;;;;;;;;;;;;;;;;;;;;;;;;29373:20;:46;;;;;29397:11;:22;29409:9;29397:22;;;;;;;;;;;;;;;;;;;;;;;;;29373:46;29369:616;;;29436:84;29456:6;29464:9;29476:42;29505:12;29476:24;29487:12;29476:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;29436:19;:84::i;:::-;29369:616;;;29543:11;:19;29555:6;29543:19;;;;;;;;;;;;;;;;;;;;;;;;;29542:20;:47;;;;;29567:11;:22;29579:9;29567:22;;;;;;;;;;;;;;;;;;;;;;;;;29566:23;29542:47;29538:447;;;29606:82;29624:6;29632:9;29644:42;29673:12;29644:24;29655:12;29644:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;29606:17;:82::i;:::-;29538:447;;;29710:11;:19;29722:6;29710:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;29733:11;:22;29745:9;29733:22;;;;;;;;;;;;;;;;;;;;;;;;;29710:45;29706:279;;;29772:86;29794:6;29802:9;29814:42;29843:12;29814:24;29825:12;29814:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;29772:21;:86::i;:::-;29706:279;;;29891:82;29909:6;29917:9;29929:42;29958:12;29929:24;29940:12;29929:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;29891:17;:82::i;:::-;29706:279;29538:447;29369:616;29198:787;30101:1;30089:9;:13;;;;30129:1;30113:13;:17;;;;30145:56;30163:6;30171:15;;;;;;;;;;;30188:12;30145:17;:56::i;:::-;30214;30232:6;30240:15;;;;;;;;;;;30257:12;30214:17;:56::i;:::-;30340:17;;30328:9;:29;;;;30384:21;;30368:13;:37;;;;30423:18;:26;30442:6;30423:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;30453:18;:29;30472:9;30453:29;;;;;;;;;;;;;;;;;;;;;;;;;30423:59;30420:92;;;30497:15;:13;:15::i;:::-;30420:92;28783:1737;;;;;:::o;22796:332::-;22856:7;22865;22874;22894:12;22909:26;22927:7;22909:17;:26::i;:::-;22894:41;;22946:18;22967:30;22989:7;22967:21;:30::i;:::-;22946:51;;23008:23;23034:33;23056:10;23034:17;23046:4;23034:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;23008:59;;23086:15;23103:4;23109:10;23078:42;;;;;;;;;22796:332;;;;;:::o;23573:163::-;23614:7;23635:15;23652;23671:19;:17;:19::i;:::-;23634:56;;;;23708:20;23720:7;23708;:11;;:20;;;;:::i;:::-;23701:27;;;;23573:163;:::o;23136:429::-;23251:7;23260;23269;23289:15;23307:24;23319:11;23307:7;:11;;:24;;;;:::i;:::-;23289:42;;23342:12;23357:21;23366:11;23357:4;:8;;:21;;;;:::i;:::-;23342:36;;23389:18;23410:27;23425:11;23410:10;:14;;:27;;;;:::i;:::-;23389:48;;23448:23;23474:33;23496:10;23474:17;23486:4;23474:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;23448:59;;23526:7;23535:15;23552:4;23518:39;;;;;;;;;;23136:429;;;;;;;;:::o;1652:132::-;1710:7;1737:39;1741:1;1744;1737:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1730:46;;1652:132;;;;:::o;27592:589::-;27718:21;27756:1;27742:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27718:40;;27787:4;27769;27774:1;27769:7;;;;;;;;;;;;;:23;;;;;;;;;;;27813:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27803:4;27808:1;27803:7;;;;;;;;;;;;;:32;;;;;;;;;;;27848:62;27865:4;27880:15;;;;;;;;;;;27898:11;27848:8;:62::i;:::-;27949:15;;;;;;;;;;;:66;;;28030:11;28056:1;28100:4;28127;28147:15;27949:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27592:589;;:::o;28189:513::-;28337:62;28354:4;28369:15;;;;;;;;;;;28387:11;28337:8;:62::i;:::-;28442:15;;;;;;;;;;;:31;;;28481:9;28514:4;28534:11;28560:1;28603;28646:7;:5;:7::i;:::-;28668:15;28442:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28189:513;;:::o;25034:450::-;25093:1;25080:9;;:14;:36;;;;;25115:1;25098:13;;:18;25080:36;:56;;;;;25135:1;25120:13;;:16;25080:56;:76;;;;;25155:1;25140:13;;:16;25080:76;25077:88;;;25158:7;;25077:88;25205:9;;25185:17;:29;;;;25249:13;;25225:21;:37;;;;25297:13;;25273:21;:37;;;;25345:13;;25321:21;:37;;;;25391:1;25379:9;:13;;;;25419:1;25403:13;:17;;;;25447:1;25431:13;:17;;;;25475:1;25459:13;:17;;;;25034:450;:::o;1392:252::-;1450:7;1481:1;1476;:6;1472:47;;;1506:1;1499:8;;;;1472:47;1531:9;1547:1;1543;:5;1531:17;;1576:1;1571;1567;:5;;;;;;:10;1559:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1635:1;1628:8;;;1392:252;;;;;:::o;31632:566::-;31735:15;31752:23;31777:12;31791:23;31816:12;31830:18;31852:19;31863:7;31852:10;:19::i;:::-;31734:137;;;;;;;;;;;;31900:28;31920:7;31900;:15;31908:6;31900:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31882:7;:15;31890:6;31882:15;;;;;;;;;;;;;;;:46;;;;31957:28;31977:7;31957;:15;31965:6;31957:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31939:7;:15;31947:6;31939:15;;;;;;;;;;;;;;;:46;;;;32017:39;32040:15;32017:7;:18;32025:9;32017:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31996:7;:18;32004:9;31996:18;;;;;;;;;;;;;;;:60;;;;32070:26;32085:10;32070:14;:26::i;:::-;32107:23;32119:4;32125;32107:11;:23::i;:::-;32163:9;32146:44;;32155:6;32146:44;;;32174:15;32146:44;;;;;;;;;;;;;;;;;;31632:566;;;;;;;;;:::o;31038:586::-;31139:15;31156:23;31181:12;31195:23;31220:12;31234:18;31256:19;31267:7;31256:10;:19::i;:::-;31138:137;;;;;;;;;;;;31304:28;31324:7;31304;:15;31312:6;31304:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31286:7;:15;31294:6;31286:15;;;;;;;;;;;;;;;:46;;;;31364:39;31387:15;31364:7;:18;31372:9;31364:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31343:7;:18;31351:9;31343:18;;;;;;;;;;;;;;;:60;;;;31435:39;31458:15;31435:7;:18;31443:9;31435:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31414:7;:18;31422:9;31414:18;;;;;;;;;;;;;;;:60;;;;31496:26;31511:10;31496:14;:26::i;:::-;31533:23;31545:4;31551;31533:11;:23::i;:::-;31589:9;31572:44;;31581:6;31572:44;;;31600:15;31572:44;;;;;;;;;;;;;;;;;;31038:586;;;;;;;;;:::o;30528:502::-;30627:15;30644:23;30669:12;30683:23;30708:12;30722:18;30744:19;30755:7;30744:10;:19::i;:::-;30626:137;;;;;;;;;;;;30792:28;30812:7;30792;:15;30800:6;30792:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30774:7;:15;30782:6;30774:15;;;;;;;;;;;;;;;:46;;;;30852:39;30875:15;30852:7;:18;30860:9;30852:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30831:7;:18;30839:9;30831:18;;;;;;;;;;;;;;;:60;;;;30902:26;30917:10;30902:14;:26::i;:::-;30939:23;30951:4;30957;30939:11;:23::i;:::-;30995:9;30978:44;;30987:6;30978:44;;;31006:15;30978:44;;;;;;;;;;;;;;;;;;30528:502;;;;;;;;;:::o;21458:642::-;21561:15;21578:23;21603:12;21617:23;21642:12;21656:18;21678:19;21689:7;21678:10;:19::i;:::-;21560:137;;;;;;;;;;;;21726:28;21746:7;21726;:15;21734:6;21726:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21708:7;:15;21716:6;21708:15;;;;;;;;;;;;;;;:46;;;;21783:28;21803:7;21783;:15;21791:6;21783:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21765:7;:15;21773:6;21765:15;;;;;;;;;;;;;;;:46;;;;21843:39;21866:15;21843:7;:18;21851:9;21843:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21822:7;:18;21830:9;21822:18;;;;;;;;;;;;;;;:60;;;;21914:39;21937:15;21914:7;:18;21922:9;21914:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21893:7;:18;21901:9;21893:18;;;;;;;;;;;;;;;:60;;;;21972:26;21987:10;21972:14;:26::i;:::-;22009:23;22021:4;22027;22009:11;:23::i;:::-;22065:9;22048:44;;22057:6;22048:44;;;22076:15;22048:44;;;;;;;;;;;;;;;;;;21458:642;;;;;;;;;:::o;25496:221::-;25551:17;;25539:9;:29;;;;25594:21;;25578:13;:37;;;;25641:21;;25625:13;:37;;;;25688:21;;25672:13;:37;;;;25496:221::o;24690:158::-;24756:7;24783:57;24824:5;24783:22;24795:9;;24783:7;:11;;:22;;;;:::i;:::-;:26;;:57;;;;:::i;:::-;24776:64;;24690:158;;;:::o;24856:166::-;24926:7;24953:61;24998:5;24953:26;24965:13;;24953:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;24946:68;;24856:166;;;:::o;23750:561::-;23800:7;23809;23829:15;23847:7;;23829:25;;23865:15;23883:7;;23865:25;;23912:9;23907:289;23931:9;:16;;;;23927:1;:20;23907:289;;;23997:7;23973;:21;23981:9;23991:1;23981:12;;;;;;;;;;;;;;;;;;;;;;;;;23973:21;;;;;;;;;;;;;;;;:31;:66;;;;24032:7;24008;:21;24016:9;24026:1;24016:12;;;;;;;;;;;;;;;;;;;;;;;;;24008:21;;;;;;;;;;;;;;;;:31;23973:66;23969:97;;;24049:7;;24058;;24041:25;;;;;;;;;23969:97;24091:34;24103:7;:21;24111:9;24121:1;24111:12;;;;;;;;;;;;;;;;;;;;;;;;;24103:21;;;;;;;;;;;;;;;;24091:7;:11;;:34;;;;:::i;:::-;24081:44;;24150:34;24162:7;:21;24170:9;24180:1;24170:12;;;;;;;;;;;;;;;;;;;;;;;;;24162:21;;;;;;;;;;;;;;;;24150:7;:11;;:34;;;;:::i;:::-;24140:44;;23949:3;;;;;;;23907:289;;;;24220:20;24232:7;;24220;;:11;;:20;;;;:::i;:::-;24210:7;:30;24206:61;;;24250:7;;24259;;24242:25;;;;;;;;24206:61;24286:7;24295;24278:25;;;;;;23750:561;;;:::o;1792:278::-;1878:7;1910:1;1906;:5;1913:12;1898:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1937:9;1953:1;1949;:5;;;;;;1937:17;;2061:1;2054:8;;;1792:278;;;;;:::o;24323:355::-;24386:19;24409:10;:8;:10::i;:::-;24386:33;;24430:18;24451:27;24466:11;24451:10;:14;;:27;;;;:::i;:::-;24430:48;;24514:38;24541:10;24514:7;:22;24530:4;24514:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;24489:7;:22;24505:4;24489:22;;;;;;;;;;;;;;;:63;;;;24566:11;:26;24586:4;24566:26;;;;;;;;;;;;;;;;;;;;;;;;;24563:107;;;24632:38;24659:10;24632:7;:22;24648:4;24632:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;24607:7;:22;24623:4;24607:22;;;;;;;;;;;;;;;:63;;;;24563:107;24323:355;;;:::o;22214:147::-;22292:17;22304:4;22292:7;;:11;;:17;;;;:::i;:::-;22282:7;:27;;;;22333:20;22348:4;22333:10;;:14;;:20;;;;:::i;:::-;22320:10;:33;;;;22214:147;;:::o
Swarm Source
ipfs://c7bc7d47718e8c50c1f7247567d32c51a70076234dc20b52d6bf2ec50932f70b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.