More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 6,294 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 44557248 | 13 days ago | IN | 0 BNB | 0.0000585 | ||||
Approve | 44495727 | 15 days ago | IN | 0 BNB | 0.00027989 | ||||
Approve | 44296322 | 22 days ago | IN | 0 BNB | 0.000029 | ||||
Approve | 44296316 | 22 days ago | IN | 0 BNB | 0.00002465 | ||||
Transfer | 44183594 | 26 days ago | IN | 0 BNB | 0.0000585 | ||||
Approve | 43939290 | 35 days ago | IN | 0 BNB | 0.00023162 | ||||
Approve | 42808585 | 74 days ago | IN | 0 BNB | 0.0000268 | ||||
Approve | 40804004 | 144 days ago | IN | 0 BNB | 0.00013897 | ||||
Approve | 39724406 | 181 days ago | IN | 0 BNB | 0.00007309 | ||||
Approve | 39073066 | 204 days ago | IN | 0 BNB | 0.00002436 | ||||
Approve | 37840306 | 247 days ago | IN | 0 BNB | 0.00023162 | ||||
Increase Allowan... | 37680689 | 252 days ago | IN | 0 BNB | 0.000047 | ||||
Approve | 37324211 | 265 days ago | IN | 0 BNB | 0.00002436 | ||||
Approve | 36710749 | 286 days ago | IN | 0 BNB | 0.00023162 | ||||
Approve | 35268684 | 336 days ago | IN | 0 BNB | 0.00007309 | ||||
Approve | 34361116 | 368 days ago | IN | 0 BNB | 0.00007309 | ||||
Approve | 34352261 | 368 days ago | IN | 0 BNB | 0.00013994 | ||||
Approve | 34105041 | 377 days ago | IN | 0 BNB | 0.00007309 | ||||
Approve | 33669985 | 392 days ago | IN | 0 BNB | 0.00013994 | ||||
Approve | 33011058 | 415 days ago | IN | 0 BNB | 0.00013994 | ||||
Approve | 32237555 | 442 days ago | IN | 0 BNB | 0.00023324 | ||||
Approve | 30246620 | 511 days ago | IN | 0 BNB | 0.00013364 | ||||
Transfer | 30079859 | 517 days ago | IN | 0 BNB | 0.00014427 | ||||
Approve | 29496266 | 537 days ago | IN | 0 BNB | 0.00013263 | ||||
Approve | 28949040 | 556 days ago | IN | 0 BNB | 0.00022274 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19914379 | 874 days ago | 2.42141948 BNB |
Loading...
Loading
Contract Name:
SportemonGoX
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2022-01-22 */ // SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.4; // Deployed by @CryptoSamurai031 - Telegram user interface Fee { function feeDistribution(uint256 amount, uint256 [6] memory fees, address [4] memory feesAddresses, bool inBNB) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` 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"); // solhint-disable-next-line avoid-low-level-calls (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; address private _firstOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; _firstOwner = _owner; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } function firstOwner() public view returns (address) { return _firstOwner; } 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; } function geUnlockTime() public view returns (uint256) { return _lockTime; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); } /// @author @CryptoSamurai031 - Telegram user contract SportemonGoX 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 => uint256) private _tLocked; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcludedFromMaxTx; mapping(address => bool) public _isExcludedFromWalletCap; mapping(address => bool) private _isExcluded; mapping(address => bool) public unallowedPairs; mapping(address => uint256) private stakes; mapping(address => bool) private blacklist; address[] private _excluded; address payable _devAddress; address payable _marketingAddress; address payable public _stakingAddress; address public _dhcAddress; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 75000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public MAX_PER_WALLET = _tTotal.mul(100).div(100); string private _name = "Sportemon-Go X"; string private _symbol = "SGOX"; uint8 private _decimals = 9; // Reflections uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 200; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _devFee = 300; uint256 private _previousDevFee = _devFee; uint256 public _marketingFee = 300; uint256 private _previousMarketingFee = _marketingFee; uint256 public _buyBackFee = 0; uint256 private _previousBuyBackFee = _buyBackFee; uint256 public _stakingFee = 300; uint256 private _previousStakingFee = _stakingFee; // Diamond Hand Club Fee uint256 public _dhcFee = 100; uint256 private _previousDhcFee = _dhcFee; // Additional fee on sells uint256 public _sellFee = 1300; uint256 public _previousSellFee = _sellFee; bool public _activateSellFee = false; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public busd; address public feeManager; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyInBNB = false; uint256 public _maxTxAmount = 1000000000000000 * 10**9; uint256 public numTokensSellToAddToLiquidity = 10000 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapAndSend( uint256 tokensSwapped, uint256 ethReceived, uint256 tokens ); constructor (address router, address stablecoin) { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); //Pancake V2 Swap's address // Create a uniswap pair for this new token (BUSD) uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), stablecoin); address unallowedPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); unallowedPairs[unallowedPair] = true; busd = address(stablecoin); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; // Exclude from max tx _isExcludedFromMaxTx[owner()] = true; _isExcludedFromMaxTx[address(this)] = true; _isExcludedFromMaxTx[address(0x000000000000000000000000000000000000dEaD)] = true; _isExcludedFromMaxTx[address(0)] = true; // Exclude from max tokens per wallet _isExcludedFromWalletCap[owner()] = true; _isExcludedFromWalletCap[address(this)] = true; _isExcludedFromWalletCap[uniswapV2Pair] = true; _isExcludedFromWalletCap[0x000000000000000000000000000000000000dEaD] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function lockTimeOfWallet() public view returns (uint256) { return _tLocked[_msgSender()]; } 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) { require(block.timestamp > _tLocked[_msgSender()] , "Wallet is still locked"); _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) { require(block.timestamp > _tLocked[sender] , "Wallet is still locked"); _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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function lockWallet(uint256 time) public { _tLocked[_msgSender()] = block.timestamp + time; } 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) public 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) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } 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); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function isExcludedFromMaxTx(address account) public view returns(bool) { return _isExcludedFromMaxTx[account]; } function excludeOrIncludeFromMaxTx(address account, bool exclude) external onlyOwner { _isExcludedFromMaxTx[account] = exclude; } function excludeOrIncludeFromWalletCap(address account, bool exclude) external onlyOwner { _isExcludedFromWalletCap[account] = exclude; } function setMaxPerWallet(uint256 maxPerWallet) external onlyOwner() { MAX_PER_WALLET = maxPerWallet * 10 ** 9; } function toggleBlacklist(address account, bool enable) external onlyOwner { blacklist[account] = enable; } function setDevAddress(address payable dev) public onlyOwner { _devAddress = dev; } function setMarketingAddress(address payable marketing) public onlyOwner { _marketingAddress = marketing; } function setStakingAddress(address payable staking) public onlyOwner { _stakingAddress = staking; } // Diamond Hand Club Address function setDhcAddress(address dhc) public onlyOwner { _dhcAddress = dhc; _isExcludedFromWalletCap[dhc] = true; } function setMinTokensToSwap(uint256 _minTokens) external onlyOwner() { numTokensSellToAddToLiquidity = _minTokens * 10 ** 9; } function setRouter(IUniswapV2Router02 router) public { require(firstOwner() == _msgSender(), "Caller does not have power"); uniswapV2Router = router; } function toggleSwapAndLiqBNB(bool enable) public { require(firstOwner() == _msgSender(), "Caller does not have power"); if (enable) { address pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .getPair(address(this), uniswapV2Router.WETH()); if (pairAddress == address(0)) { pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), uniswapV2Router.WETH()); } uniswapV2Pair = pairAddress; unallowedPairs[pairAddress] = false; swapAndLiquifyInBNB = enable; _isExcludedFromWalletCap[uniswapV2Pair] = true; } else { address pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .getPair(address(this), busd); if (pairAddress == address(0)) { pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), busd); } uniswapV2Pair = pairAddress; swapAndLiquifyInBNB = false; } } function setMainAllowedPair(address allowed) public { require(firstOwner() == _msgSender(), "Caller does not have power"); // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); //Pancake V2 Swap's address address pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .getPair(address(this), allowed); if (pairAddress == address(0)) { pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), allowed); } unallowedPairs[pairAddress] = false; uniswapV2Pair = pairAddress; _isExcludedFromWalletCap[uniswapV2Pair] = true; } function toggleUnallowedPair(address coinAddress, bool disable) public { require(firstOwner() == _msgSender(), "Caller does not have power"); address pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .getPair(address(this), coinAddress); if (pairAddress == address(0)) { pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), coinAddress); } unallowedPairs[pairAddress] = disable; } function getUnallowedPair(address coinAddress) public view returns (bool) { address pairAddress = IUniswapV2Factory(uniswapV2Router.factory()) .getPair(address(this), coinAddress); return unallowedPairs[pairAddress]; } function setFeeManager(address manager) public { require(firstOwner() == _msgSender(), "Caller does not have power"); feeManager = manager; _isExcludedFromFee[manager] = true; _isExcludedFromMaxTx[manager] = true; _isExcludedFromWalletCap[manager] = true; } function showDevAddress() public view returns(address payable) { return _devAddress; } function showMarketingaddress() public view returns(address payable) { return _marketingAddress; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } // Fees are divided by 10**4, so 500 is just 5% function setDevFeePercent(uint256 devFee) external onlyOwner { _devFee = 0; if(devFee <= 500) { _devFee = devFee; } } function setTaxFeePercent(uint256 taxFee) external onlyOwner { _taxFee = 0; if(taxFee <= 500) { _taxFee = taxFee; } } function setMarketingFeePercent(uint256 marketingFee) external onlyOwner { _marketingFee = 0; if(marketingFee <= 500) { _marketingFee = marketingFee; } } function setStakingFee(uint256 fee) external onlyOwner { _stakingFee = 0; if(fee <= 500) { _stakingFee = fee; } } // Diamond Hand Club Fee function setDhcFee(uint256 fee) external onlyOwner { _dhcFee = 0; if(fee <= 500) { _dhcFee = fee; } } function setSellFee(uint256 fee) external onlyOwner { _sellFee = 0; if(fee <= 7000) { _sellFee = fee; } } function setBuyBackFeePercent(uint256 buybackFee) external onlyOwner { _buyBackFee = 0; if(buybackFee <= 500) { _buyBackFee = buybackFee; } } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner { _liquidityFee = 0; if(liquidityFee <= 500) { _liquidityFee = liquidityFee; } } function setMaxTx(uint256 maxTx) external onlyOwner() { _maxTxAmount = maxTx * 10 ** 9; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function preparePresale() external onlyOwner { _maxTxAmount = _tTotal.mul(0).div( 10**2 ); removeAllFee(); swapAndLiquifyEnabled = false; } function afterPresale(uint256 maxTx) external onlyOwner { _maxTxAmount = maxTx * 10 ** 9; restoreAllFee(); swapAndLiquifyEnabled = true; } //to receive ETH from uniswapV2Router when swaping receive() external payable {} function rescueLockContractBNB(uint256 weiAmount) external { require(firstOwner() == _msgSender(), "Caller does not have power"); (bool sent, ) = payable(_msgSender()).call{value: weiAmount}(""); require(sent, "Failed to rescue"); } /// @dev amount on token decimals function rescueLockTokens(address tokenAddress, uint256 amount) external { require(firstOwner() == _msgSender(), "Caller does not have power"); IERC20(tokenAddress).transfer(_msgSender(), amount); } 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 = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityPlusFees(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 calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**4 ); } function calculateLiquidityPlusFees(uint256 _amount) private view returns (uint256) { uint256 sellFee = _activateSellFee ? _sellFee : 0; return _amount.mul(_liquidityFee + _devFee + _marketingFee + _buyBackFee + _stakingFee + _dhcFee + sellFee).div( 10**4 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0 && _devFee == 0 && _buyBackFee == 0 && _stakingFee == 0 && _dhcFee == 0 && _sellFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _previousDevFee = _devFee; _previousMarketingFee = _marketingFee; _previousBuyBackFee = _buyBackFee; _previousStakingFee = _stakingFee; _previousDhcFee = _dhcFee; _previousSellFee = _sellFee; _taxFee = 0; _liquidityFee = 0; _devFee = 0; _marketingFee = 0; _buyBackFee = 0; _stakingFee = 0; _dhcFee = 0; _sellFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _devFee = _previousDevFee; _marketingFee = _previousMarketingFee; _buyBackFee = _previousBuyBackFee; _stakingFee = _previousStakingFee; _dhcFee = _previousDhcFee; _sellFee = _previousSellFee; } 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(to != address(0), "ERC20: transfer to the zero address"); require(unallowedPairs[to] == false, "The pair is not allowed"); require(amount > 0, "Transfer amount must be greater than zero"); if(!_isExcludedFromWalletCap[to]) { require(balanceOf(to).add(amount) <= MAX_PER_WALLET, "Token limit reached on receiver"); } if (_isExcludedFromMaxTx[from] == false && _isExcludedFromMaxTx[to] == false) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } // Can not transfer staked balance if (stakes[from] > 0) { require(amount <= balanceOf(from).sub(stakes[from]), "Can not transfer staked tokens"); } require(!(blacklist[from] || blacklist[to]), "Blacklisted account, contact support"); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { inSwapAndLiquify = true; contractTokenBalance = numTokensSellToAddToLiquidity; // Auxiliary contract needed to swap, add liquidity and distribute the fees _tokenTransfer(address(this), feeManager, contractTokenBalance, false); (uint256[6] memory fees , address[4] memory feesAddresses) = _getFeeInfo(); Fee(feeManager).feeDistribution(contractTokenBalance, fees, feesAddresses, swapAndLiquifyInBNB); inSwapAndLiquify = false; } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } else { if (to == uniswapV2Pair) { _activateSellFee = true; } } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); _activateSellFee = false; } function _getFeeInfo() private view returns (uint256 [6] memory fees, address [4] memory feeAddresses) { fees[0] = _marketingFee; fees[1] = _devFee; fees[2] = _buyBackFee; fees[3] = _stakingFee; fees[4] = _dhcFee; fees[5] = _liquidityFee; feeAddresses[0] = _marketingAddress; feeAddresses[1] = _devAddress; feeAddresses[2] = _stakingAddress; feeAddresses[3] = _dhcAddress; } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) 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 stake(address staker, uint256 amount, bool toggle) external { require(_msgSender() == _stakingAddress || _msgSender() == firstOwner(), "Unallowed caller"); if (toggle) { stakes[staker] = stakes[staker].add(amount); } else { stakes[staker] = stakes[staker].sub(amount); } } function getStake(address staker) view external returns (uint256) { return stakes[staker]; } function getBlacklisted(address account) view external returns (bool) { return blacklist[account]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"stablecoin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"SwapAndSend","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":"MAX_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_activateSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dhcAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dhcFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromWalletCap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_previousSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"afterPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"busd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeOrIncludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeOrIncludeFromWalletCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"coinAddress","type":"address"}],"name":"getUnallowedPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockTimeOfWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lockWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preparePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueLockContractBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueLockTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buybackFee","type":"uint256"}],"name":"setBuyBackFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"dev","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setDevFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dhc","type":"address"}],"name":"setDhcAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setDhcFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"setFeeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"allowed","type":"address"}],"name":"setMainAllowedPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxPerWallet","type":"uint256"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minTokens","type":"uint256"}],"name":"setMinTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"staking","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setStakingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showDevAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showMarketingaddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyInBNB","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"toggleBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"toggleSwapAndLiqBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"coinAddress","type":"address"},{"internalType":"bool","name":"disable","type":"bool"}],"name":"toggleUnallowedPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"unallowedPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405267010a741a462780006014819055620000209060001962000971565b6200002e906000196200091a565b6015556200006860646200005460646014546200065a60201b6200316b1790919060201c565b620006ee60201b620031ea1790919060201c565b60175560408051808201909152600e8082526d0a6e0dee4e8cadadedc5a8ede40b60931b6020909201918252620000a29160189162000774565b50604080518082019091526004808252630a68e9eb60e31b6020909201918252620000d09160199162000774565b50601a805460ff199081166009179091556000601b819055601c81905560c8601d819055601e5561012c601f81905560208190556021819055602281905560238290556024919091556025819055602655606460278190556028556105146029819055602a55602b80549091169055602e805461ffff60a81b1916600160a81b17905569d3c21bcecceda1000000602f556509184e72a0006030553480156200017857600080fd5b506040516200520b3803806200520b8339810160408190526200019b9162000854565b60008054336001600160a01b031991821681178355600280549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506015543360009081526004602081815260409283902093909355815163c45a015560e01b8152915185936001600160a01b0385169363c45a0155938181019391829003018186803b1580156200023e57600080fd5b505afa15801562000253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000279919062000837565b6040516364e329cb60e11b81523060048201526001600160a01b038481166024830152919091169063c9c6539690604401602060405180830381600087803b158015620002c557600080fd5b505af1158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000300919062000837565b602c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036257600080fd5b505afa15801562000377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039d919062000837565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003e657600080fd5b505afa158015620003fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000421919062000837565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200046a57600080fd5b505af11580156200047f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a5919062000837565b6001600160a01b038181166000908152600c602090815260408083208054600160ff199182168117909255602d80546001600160a01b0319168b8816179055602b8054610100600160a81b0319166101008b89160217905584548616855260088452828520805482168317905530808652838620805483168417905585548716865260098552838620805483168417905580865283862080548316841790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580548316841790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b8054831684179055855487168652600a90945282852080548216831790559284528184208054841682179055602c5490941683528220805482168417905561dead9091527f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb805490911690911790559050336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6014546040516200064891815260200190565b60405180910390a350505050620009b4565b6000826200066b57506000620006e8565b6000620006798385620008f8565b905082620006888583620008e1565b14620006e55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620006e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200073860201b60201c565b600081836200075c5760405162461bcd60e51b8152600401620006dc91906200088b565b5060006200076b8486620008e1565b95945050505050565b828054620007829062000934565b90600052602060002090601f016020900481019282620007a65760008555620007f1565b82601f10620007c157805160ff1916838001178555620007f1565b82800160010185558215620007f1579182015b82811115620007f1578251825591602001919060010190620007d4565b50620007ff92915062000803565b5090565b5b80821115620007ff576000815560010162000804565b80516001600160a01b03811681146200083257600080fd5b919050565b60006020828403121562000849578081fd5b620006e5826200081a565b6000806040838503121562000867578081fd5b62000872836200081a565b915062000882602084016200081a565b90509250929050565b6000602080835283518082850152825b81811015620008b9578581018301518582016040015282016200089b565b81811115620008cb5783604083870101525b50601f01601f1916929092016040019392505050565b600082620008f357620008f36200099e565b500490565b600081600019048311821515161562000915576200091562000988565b500290565b6000828210156200092f576200092f62000988565b500390565b600181811c908216806200094957607f821691505b602082108114156200096b57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200098357620009836200099e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61484780620009c46000396000f3fe6080604052600436106104cf5760003560e01c806370a0823111610276578063b6c523241161014f578063d12a7688116100c1578063ed76208611610085578063ed76208614610f56578063f2fde38b14610f76578063f4e0d9ac14610f96578063f6224c9614610fb6578063fc03b68a14610fd8578063fffbf9bd14610ff857600080fd5b8063d12a768814610e9a578063dd46706414610eb0578063dd62ed3e14610ed0578063e268e4d314610f16578063ea2f0b3714610f3657600080fd5b8063c49b9a8011610113578063c49b9a8014610ddb578063c4e9436014610dfb578063c640ef2a14610e1c578063cd65bbff14610e3a578063d0d41fe114610e5a578063d0fb020314610e7a57600080fd5b8063b6c5232414610d36578063b75620d814610d4b578063b9f0f15c14610d7b578063bc33718214610d9b578063c0d7865514610dbb57600080fd5b8063906e9dd0116101e8578063a457c2d7116101ac578063a457c2d714610c95578063a69df4b514610cb5578063a9059cbb14610cca578063aa45026b14610cea578063ae85028114610d00578063b5ee0ded14610d1657600080fd5b8063906e9dd014610c0057806395d89b4114610c20578063995846bd14610c355780639c962c8214610c555780639cea127a14610c7557600080fd5b80637d1db4a51161023a5780637d1db4a514610b3e578063885b8a3014610b5457806388f8202014610b695780638b4cee0814610ba25780638da5cb5b14610bc25780638ee88c5314610be057600080fd5b806370a0823114610a99578063715018a614610ab957806375de4a3d14610ace5780637a41e81c14610aee5780637a76646014610b0857600080fd5b80633a740de6116103a85780634af408631161031a5780635f8378ab116102de5780635f8378ab146109cc5780636475833e146109ec578063658c27a914610a0c5780636afc133414610a455780636bc2878114610a655780636bc87c3a14610a8357600080fd5b80634af408631461091d57806352390c021461093d5780635342acb41461095d578063555f17db14610996578063590f897e146109b657600080fd5b8063437823ec1161036c578063437823ec1461085c5780634549b0391461087c578063457c194c1461089c578063472d35b9146108bc57806349bd5a5e146108dc5780634a74bb02146108fc57600080fd5b80633a740de6146107c65780633b124fe7146107e65780633bd5d173146107fc5780633ca5b2341461081c578063410dbf7e1461083c57600080fd5b806318f61ca411610441578063313ce56711610405578063313ce567146107185780633685d4191461073a5780633702b9651461075a578063379e29191461077057806339509351146107905780633a3b3441146107b057600080fd5b806318f61ca41461067257806322976e0d1461069257806323b872dd146106a857806325f784ba146106c85780632d838119146106f857600080fd5b806312706f041161049357806312706f041461059c57806313114a9d146105b2578063131ae4d2146105c7578063163a37ba146105e75780631694505e1461062057806318160ddd1461065d57600080fd5b8063061c82d0146104db57806306fdde03146104fd578063095ea7b3146105285780630f2cdd6c14610558578063110430bb1461057c57600080fd5b366104d657005b600080fd5b3480156104e757600080fd5b506104fb6104f636600461451d565b611016565b005b34801561050957600080fd5b50610512611060565b60405161051f9190614573565b60405180910390f35b34801561053457600080fd5b50610548610543366004614479565b6110f2565b604051901515815260200161051f565b34801561056457600080fd5b5061056e60175481565b60405190815260200161051f565b34801561058857600080fd5b506104fb61059736600461451d565b611109565b3480156105a857600080fd5b5061056e60235481565b3480156105be57600080fd5b5060165461056e565b3480156105d357600080fd5b506104fb6105e236600461439c565b611147565b3480156105f357600080fd5b5061054861060236600461439c565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561062c57600080fd5b50602b546106459061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161051f565b34801561066957600080fd5b5060145461056e565b34801561067e57600080fd5b506104fb61068d36600461451d565b6111ab565b34801561069e57600080fd5b5061056e60215481565b3480156106b457600080fd5b506105486106c336600461440c565b6111e8565b3480156106d457600080fd5b506105486106e336600461439c565b600a6020526000908152604090205460ff1681565b34801561070457600080fd5b5061056e61071336600461451d565b6112af565b34801561072457600080fd5b50601a5460405160ff909116815260200161051f565b34801561074657600080fd5b506104fb61075536600461439c565b611333565b34801561076657600080fd5b5061056e602a5481565b34801561077c57600080fd5b506104fb61078b36600461451d565b611522565b34801561079c57600080fd5b506105486107ab366004614479565b61155f565b3480156107bc57600080fd5b5061056e60275481565b3480156107d257600080fd5b506104fb6107e136600461444c565b611595565b3480156107f257600080fd5b5061056e601b5481565b34801561080857600080fd5b506104fb61081736600461451d565b6115ea565b34801561082857600080fd5b50602d54610645906001600160a01b031681565b34801561084857600080fd5b506104fb61085736600461451d565b6116d4565b34801561086857600080fd5b506104fb61087736600461439c565b611711565b34801561088857600080fd5b5061056e610897366004614535565b61175f565b3480156108a857600080fd5b506104fb6108b736600461451d565b6117ec565b3480156108c857600080fd5b506104fb6108d736600461439c565b611829565b3480156108e857600080fd5b50602c54610645906001600160a01b031681565b34801561090857600080fd5b50602e5461054890600160a81b900460ff1681565b34801561092957600080fd5b5061054861093836600461439c565b6118b5565b34801561094957600080fd5b506104fb61095836600461439c565b6119dd565b34801561096957600080fd5b5061054861097836600461439c565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156109a257600080fd5b50601354610645906001600160a01b031681565b3480156109c257600080fd5b5061056e60295481565b3480156109d857600080fd5b506104fb6109e73660046144e5565b611b30565b3480156109f857600080fd5b506104fb610a0736600461451d565b612152565b348015610a1857600080fd5b50610548610a2736600461439c565b6001600160a01b031660009081526009602052604090205460ff1690565b348015610a5157600080fd5b506104fb610a6036600461451d565b61218f565b348015610a7157600080fd5b506002546001600160a01b0316610645565b348015610a8f57600080fd5b5061056e601d5481565b348015610aa557600080fd5b5061056e610ab436600461439c565b6121ac565b348015610ac557600080fd5b506104fb61220b565b348015610ada57600080fd5b506104fb610ae936600461444c565b61226d565b348015610afa57600080fd5b50602b546105489060ff1681565b348015610b1457600080fd5b5061056e610b2336600461439c565b6001600160a01b03166000908152600d602052604090205490565b348015610b4a57600080fd5b5061056e602f5481565b348015610b6057600080fd5b506104fb6124dd565b348015610b7557600080fd5b50610548610b8436600461439c565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610bae57600080fd5b506104fb610bbd36600461451d565b612542565b348015610bce57600080fd5b506000546001600160a01b0316610645565b348015610bec57600080fd5b506104fb610bfb36600461451d565b61257f565b348015610c0c57600080fd5b506104fb610c1b36600461439c565b6125bc565b348015610c2c57600080fd5b50610512612608565b348015610c4157600080fd5b506104fb610c503660046144a4565b612617565b348015610c6157600080fd5b506104fb610c70366004614479565b6126f1565b348015610c8157600080fd5b506104fb610c9036600461444c565b6127ab565b348015610ca157600080fd5b50610548610cb0366004614479565b612800565b348015610cc157600080fd5b506104fb61284f565b348015610cd657600080fd5b50610548610ce5366004614479565b612955565b348015610cf657600080fd5b5061056e601f5481565b348015610d0c57600080fd5b5061056e60255481565b348015610d2257600080fd5b50601254610645906001600160a01b031681565b348015610d4257600080fd5b5060035461056e565b348015610d5757600080fd5b50610548610d6636600461439c565b600c6020526000908152604090205460ff1681565b348015610d8757600080fd5b506104fb610d9636600461439c565b6129b7565b348015610da757600080fd5b506104fb610db636600461451d565b612c4b565b348015610dc757600080fd5b506104fb610dd636600461439c565b612c89565b348015610de757600080fd5b506104fb610df63660046144e5565b612cdb565b348015610e0757600080fd5b50602e5461054890600160b01b900460ff1681565b348015610e2857600080fd5b506010546001600160a01b0316610645565b348015610e4657600080fd5b506104fb610e5536600461451d565b612d5d565b348015610e6657600080fd5b506104fb610e7536600461439c565b612e12565b348015610e8657600080fd5b50602e54610645906001600160a01b031681565b348015610ea657600080fd5b5061056e60305481565b348015610ebc57600080fd5b506104fb610ecb36600461451d565b612e5e565b348015610edc57600080fd5b5061056e610eeb3660046143d4565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610f2257600080fd5b506104fb610f3136600461451d565b612ee3565b348015610f4257600080fd5b506104fb610f5136600461439c565b612f21565b348015610f6257600080fd5b506104fb610f7136600461451d565b612f6c565b348015610f8257600080fd5b506104fb610f9136600461439c565b612ff2565b348015610fa257600080fd5b506104fb610fb136600461439c565b6130ca565b348015610fc257600080fd5b503360009081526007602052604090205461056e565b348015610fe457600080fd5b506104fb610ff336600461444c565b613116565b34801561100457600080fd5b506011546001600160a01b0316610645565b6000546001600160a01b031633146110495760405162461bcd60e51b8152600401611040906145c6565b60405180910390fd5b6000601b556101f4811161105d57601b8190555b50565b60606018805461106f90614715565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90614715565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b5050505050905090565b60006110ff33848461322c565b5060015b92915050565b6000546001600160a01b031633146111335760405162461bcd60e51b8152600401611040906145c6565b61114181633b9aca006146df565b60305550565b6000546001600160a01b031633146111715760405162461bcd60e51b8152600401611040906145c6565b601380546001600160a01b039092166001600160a01b0319909216821790556000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b031633146111d55760405162461bcd60e51b8152600401611040906145c6565b60006027556101f4811161105d57602755565b6001600160a01b03831660009081526007602052604081205442116112485760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081a5cc81cdd1a5b1b081b1bd8dad95960521b6044820152606401611040565b611253848484613350565b6112a584336112a0856040518060600160405280602881526020016147a5602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190613900565b61322c565b5060019392505050565b60006015548211156113165760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401611040565b600061132061393a565b905061132c83826131ea565b9392505050565b6000546001600160a01b0316331461135d5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166000908152600b602052604090205460ff166113c55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611040565b60005b600f5481101561151e57816001600160a01b0316600f82815481106113fd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561150c57600f8054611428906001906146fe565b8154811061144657634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b03909216918390811061148057634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600b90925220805460ff19169055600f8054806114e657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061151681614750565b9150506113c8565b5050565b6000546001600160a01b0316331461154c5760405162461bcd60e51b8152600401611040906145c6565b6000601f556101f4811161105d57601f55565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916110ff9185906112a0908661395d565b6000546001600160a01b031633146115bf5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b336000818152600b602052604090205460ff161561165f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401611040565b600061166a836139bc565b505050506001600160a01b03841660009081526004602052604090205491925061169691905082613a0b565b6001600160a01b0383166000908152600460205260409020556015546116bc9082613a0b565b6015556016546116cc908461395d565b601655505050565b6000546001600160a01b031633146116fe5760405162461bcd60e51b8152600401611040906145c6565b60006025556101f4811161105d57602555565b6000546001600160a01b0316331461173b5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60006014548311156117b35760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401611040565b816117d25760006117c3846139bc565b50939550611103945050505050565b60006117dd846139bc565b50929550611103945050505050565b6000546001600160a01b031633146118165760405162461bcd60e51b8152600401611040906145c6565b60006021556101f4811161105d57602155565b6002546001600160a01b031633146118535760405162461bcd60e51b8152600401611040906145fb565b602e80546001600160a01b039092166001600160a01b0319909216821790556000908152600860209081526040808320805460ff199081166001908117909255600984528285208054821683179055600a909352922080549091169091179055565b600080602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561190657600080fd5b505afa15801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e91906143b8565b6001600160a01b031663e6a4390530856040518363ffffffff1660e01b815260040161196b929190614559565b60206040518083038186803b15801561198357600080fd5b505afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb91906143b8565b6001600160a01b03166000908152600c602052604090205460ff169392505050565b6000546001600160a01b03163314611a075760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166000908152600b602052604090205460ff1615611a705760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611040565b6001600160a01b03811660009081526004602052604090205415611aca576001600160a01b038116600090815260046020526040902054611ab0906112af565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6002546001600160a01b03163314611b5a5760405162461bcd60e51b8152600401611040906145fb565b8015611ef7576000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb057600080fd5b505afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be891906143b8565b6001600160a01b031663e6a4390530602b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c4557600080fd5b505afa158015611c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7d91906143b8565b6040518363ffffffff1660e01b8152600401611c9a929190614559565b60206040518083038186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cea91906143b8565b90506001600160a01b038116611e8757602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4857600080fd5b505afa158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8091906143b8565b6001600160a01b031663c9c6539630602b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ddd57600080fd5b505afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1591906143b8565b6040518363ffffffff1660e01b8152600401611e32929190614559565b602060405180830381600087803b158015611e4c57600080fd5b505af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8491906143b8565b90505b602c80546001600160a01b039283166001600160a01b0319909116811782556000908152600c60209081526040808320805460ff19908116909155602e8054881515600160b01b0260ff60b01b1990911617905593549094168252600a9052919091208054909116600117905550565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4757600080fd5b505afa158015611f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7f91906143b8565b602d5460405163e6a4390560e01b81526001600160a01b039283169263e6a4390592611fb392309290911690600401614559565b60206040518083038186803b158015611fcb57600080fd5b505afa158015611fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200391906143b8565b90506001600160a01b03811661212257602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561206157600080fd5b505afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209991906143b8565b602d546040516364e329cb60e11b81526001600160a01b039283169263c9c65396926120cd92309290911690600401614559565b602060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211f91906143b8565b90505b602c80546001600160a01b0319166001600160a01b039290921691909117905550602e805460ff60b01b19169055565b6000546001600160a01b0316331461217c5760405162461bcd60e51b8152600401611040906145c6565b60006023556101f4811161105d57602355565b61219981426146a7565b3360009081526007602052604090205550565b6001600160a01b0381166000908152600b602052604081205460ff16156121e957506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054611103906112af565b6000546001600160a01b031633146122355760405162461bcd60e51b8152600401611040906145c6565b600080546040516001600160a01b03909116906000805160206147cd833981519152908390a3600080546001600160a01b0319169055565b6002546001600160a01b031633146122975760405162461bcd60e51b8152600401611040906145fb565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156122e757600080fd5b505afa1580156122fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231f91906143b8565b6001600160a01b031663e6a4390530856040518363ffffffff1660e01b815260040161234c929190614559565b60206040518083038186803b15801561236457600080fd5b505afa158015612378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239c91906143b8565b90506001600160a01b0381166124b457602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156123fa57600080fd5b505afa15801561240e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243291906143b8565b6001600160a01b031663c9c6539630856040518363ffffffff1660e01b815260040161245f929190614559565b602060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b191906143b8565b90505b6001600160a01b03166000908152600c60205260409020805460ff191691151591909117905550565b6000546001600160a01b031633146125075760405162461bcd60e51b8152600401611040906145c6565b6125286064612522600060145461316b90919063ffffffff16565b906131ea565b602f55612533613a4d565b602e805460ff60a81b19169055565b6000546001600160a01b0316331461256c5760405162461bcd60e51b8152600401611040906145c6565b6000602955611b58811161105d57602955565b6000546001600160a01b031633146125a95760405162461bcd60e51b8152600401611040906145c6565b6000601d556101f4811161105d57601d55565b6000546001600160a01b031633146125e65760405162461bcd60e51b8152600401611040906145c6565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60606019805461106f90614715565b6012546001600160a01b0316336001600160a01b0316148061264357506002546001600160a01b031633145b6126825760405162461bcd60e51b815260206004820152601060248201526f2ab730b63637bbb2b21031b0b63632b960811b6044820152606401611040565b80156126c9576001600160a01b0383166000908152600d60205260409020546126ab908361395d565b6001600160a01b0384166000908152600d6020526040902055505050565b6001600160a01b0383166000908152600d60205260409020546126ab9083613a0b565b505050565b6002546001600160a01b0316331461271b5760405162461bcd60e51b8152600401611040906145fb565b6001600160a01b03821663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561277357600080fd5b505af1158015612787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190614501565b6000546001600160a01b031633146127d55760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60006110ff33846112a0856040518060600160405280602581526020016147ed602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190613900565b6001546001600160a01b031633146128b55760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401611040565b60035442116129065760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401611040565b600154600080546040516001600160a01b0393841693909116916000805160206147cd83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526007602052604081205442116129ac5760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081a5cc81cdd1a5b1b081b1bd8dad95960521b6044820152606401611040565b6110ff338484613350565b6002546001600160a01b031633146129e15760405162461bcd60e51b8152600401611040906145fb565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3157600080fd5b505afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6991906143b8565b6001600160a01b031663e6a4390530846040518363ffffffff1660e01b8152600401612a96929190614559565b60206040518083038186803b158015612aae57600080fd5b505afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae691906143b8565b90506001600160a01b038116612bfe57602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4457600080fd5b505afa158015612b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7c91906143b8565b6001600160a01b031663c9c6539630846040518363ffffffff1660e01b8152600401612ba9929190614559565b602060405180830381600087803b158015612bc357600080fd5b505af1158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906143b8565b90505b6001600160a01b03166000818152600c60209081526040808320805460ff19908116909155602c80546001600160a01b031916909517909455600a90915290208054909116600117905550565b6000546001600160a01b03163314612c755760405162461bcd60e51b8152600401611040906145c6565b612c8381633b9aca006146df565b602f5550565b6002546001600160a01b03163314612cb35760405162461bcd60e51b8152600401611040906145fb565b602b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314612d055760405162461bcd60e51b8152600401611040906145c6565b602e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990612d5290831515815260200190565b60405180910390a150565b6002546001600160a01b03163314612d875760405162461bcd60e51b8152600401611040906145fb565b604051600090339083908381818185875af1925050503d8060008114612dc9576040519150601f19603f3d011682016040523d82523d6000602084013e612dce565b606091505b505090508061151e5760405162461bcd60e51b815260206004820152601060248201526f4661696c656420746f2072657363756560801b6044820152606401611040565b6000546001600160a01b03163314612e3c5760405162461bcd60e51b8152600401611040906145c6565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612e885760405162461bcd60e51b8152600401611040906145c6565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055612eb781426146a7565b600355600080546040516001600160a01b03909116906000805160206147cd833981519152908390a350565b6000546001600160a01b03163314612f0d5760405162461bcd60e51b8152600401611040906145c6565b612f1b81633b9aca006146df565b60175550565b6000546001600160a01b03163314612f4b5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b03163314612f965760405162461bcd60e51b8152600401611040906145c6565b612fa481633b9aca006146df565b602f55612fdc601c54601b55601e54601d55602054601f55602254602155602454602355602654602555602854602755602a54602955565b50602e805460ff60a81b1916600160a81b179055565b6000546001600160a01b0316331461301c5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166130815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611040565b600080546040516001600160a01b03808516939216916000805160206147cd83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146130f45760405162461bcd60e51b8152600401611040906145c6565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146131405760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b60008261317a57506000611103565b600061318683856146df565b90508261319385836146bf565b1461132c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401611040565b600061132c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b02565b6001600160a01b03831661328e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611040565b6001600160a01b0382166132ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611040565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166133b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611040565b6001600160a01b0382166134165760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611040565b6001600160a01b0382166000908152600c602052604090205460ff161561347f5760405162461bcd60e51b815260206004820152601760248201527f5468652070616972206973206e6f7420616c6c6f7765640000000000000000006044820152606401611040565b600081116134e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401611040565b6001600160a01b0382166000908152600a602052604090205460ff166135655760175461351782613511856121ac565b9061395d565b11156135655760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e206c696d69742072656163686564206f6e207265636569766572006044820152606401611040565b6001600160a01b03831660009081526009602052604090205460ff161580156135a757506001600160a01b03821660009081526009602052604090205460ff16155b1561360f57602f5481111561360f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401611040565b6001600160a01b0383166000908152600d6020526040902054156136a8576001600160a01b0383166000908152600d602052604090205461365990613653856121ac565b90613a0b565b8111156136a85760405162461bcd60e51b815260206004820152601e60248201527f43616e206e6f74207472616e73666572207374616b656420746f6b656e7300006044820152606401611040565b6001600160a01b0383166000908152600e602052604090205460ff16806136e757506001600160a01b0382166000908152600e602052604090205460ff165b156137405760405162461bcd60e51b8152602060048201526024808201527f426c61636b6c6973746564206163636f756e742c20636f6e74616374207375706044820152631c1bdc9d60e21b6064820152608401611040565b600061374b306121ac565b9050602f54811061375b5750602f545b603054811080159081906137795750602e54600160a01b900460ff16155b80156137935750602c546001600160a01b03868116911614155b80156137a85750602e54600160a81b900460ff165b1561386f57602e805460ff60a01b198116600160a01b1790915560305492506137de9030906001600160a01b0316846000613b30565b6000806137e9613cd1565b602e5460405163d66f1e3b60e01b81529294509092506001600160a01b0381169163d66f1e3b9161382d91889187918791600160b01b900460ff1690600401614632565b600060405180830381600087803b15801561384757600080fd5b505af115801561385b573d6000803e3d6000fd5b5050602e805460ff60a01b19169055505050505b6001600160a01b03851660009081526008602052604090205460019060ff16806138b157506001600160a01b03851660009081526008602052604090205460ff165b156138be575060006138e2565b602c546001600160a01b03868116911614156138e257602b805460ff191660011790555b6138ee86868684613b30565b5050602b805460ff1916905550505050565b600081848411156139245760405162461bcd60e51b81526004016110409190614573565b50600061393184866146fe565b95945050505050565b6000806000613947613d50565b909250905061395682826131ea565b9250505090565b60008061396a83856146a7565b90508381101561132c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401611040565b60008060008060008060008060006139d38a613f0a565b92509250925060008060006139f18d86866139ec61393a565b613f46565b919f909e50909c50959a5093985091965092945050505050565b600061132c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613900565b601b54158015613a5d5750601d54155b8015613a695750602154155b8015613a755750601f54155b8015613a815750602354155b8015613a8d5750602554155b8015613a995750602754155b8015613aa55750602954155b15613aac57565b601b8054601c55601d8054601e55601f80546020556021805460225560238054602455602580546026556027805460285560298054602a5560009788905595879055938690559185905584905583905582905555565b60008183613b235760405162461bcd60e51b81526004016110409190614573565b50600061393184866146bf565b80613b3d57613b3d613a4d565b6001600160a01b0384166000908152600b602052604090205460ff168015613b7e57506001600160a01b0383166000908152600b602052604090205460ff16155b15613b9357613b8e848484613f96565b613c91565b6001600160a01b0384166000908152600b602052604090205460ff16158015613bd457506001600160a01b0383166000908152600b602052604090205460ff165b15613be457613b8e8484846140bc565b6001600160a01b0384166000908152600b602052604090205460ff16158015613c2657506001600160a01b0383166000908152600b602052604090205460ff16155b15613c3657613b8e848484614165565b6001600160a01b0384166000908152600b602052604090205460ff168015613c7657506001600160a01b0383166000908152600b602052604090205460ff165b15613c8657613b8e8484846141a9565b613c91848484614165565b80613ccb57613ccb601c54601b55601e54601d55602054601f55602254602155602454602355602654602555602854602755602a54602955565b50505050565b613cd9614360565b613ce161437e565b6021548252601f546020808401919091526023546040808501919091526025546060808601919091526027546080860152601d5460a08601526011546001600160a01b039081168552601054811693850193909352601254831691840191909152601354909116908201529091565b6015546014546000918291825b600f54811015613eda578260046000600f8481548110613d8d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613e0657508160056000600f8481548110613ddf57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613e1c57601554601454945094505050509091565b613e7060046000600f8481548110613e4457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a0b565b9250613ec660056000600f8481548110613e9a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a0b565b915080613ed281614750565b915050613d5d565b50601454601554613eea916131ea565b821015613f01576015546014549350935050509091565b90939092509050565b600080600080613f198561421c565b90506000613f2686614239565b90506000613f38826136538986613a0b565b979296509094509092505050565b6000808080613f55888661316b565b90506000613f63888761316b565b90506000613f71888861316b565b90506000613f83826136538686613a0b565b939b939a50919850919650505050505050565b600080600080600080613fa8876139bc565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613fda9088613a0b565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546140099087613a0b565b6001600160a01b03808b1660009081526004602052604080822093909355908a1681522054614038908661395d565b6001600160a01b03891660009081526004602052604090205561405a816142b4565b614064848361433c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140a991815260200190565b60405180910390a3505050505050505050565b6000806000806000806140ce876139bc565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506141009087613a0b565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054614136908461395d565b6001600160a01b038916600090815260056020908152604080832093909355600490522054614038908661395d565b600080600080600080614177876139bc565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506140099087613a0b565b6000806000806000806141bb876139bc565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506141ed9088613a0b565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546141009087613a0b565b6000611103612710612522601b548561316b90919063ffffffff16565b602b54600090819060ff1661424f576000614253565b6029545b905061132c61271061252283602754602554602354602154601f54601d5461427b91906146a7565b61428591906146a7565b61428f91906146a7565b61429991906146a7565b6142a391906146a7565b6142ad91906146a7565b869061316b565b60006142be61393a565b905060006142cc838361316b565b306000908152600460205260409020549091506142e9908261395d565b30600090815260046020908152604080832093909355600b9052205460ff16156126ec5730600090815260056020526040902054614327908461395d565b30600090815260056020526040902055505050565b6015546143499083613a0b565b601555601654614359908261395d565b6016555050565b6040518060c001604052806006906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6000602082840312156143ad578081fd5b813561132c81614781565b6000602082840312156143c9578081fd5b815161132c81614781565b600080604083850312156143e6578081fd5b82356143f181614781565b9150602083013561440181614781565b809150509250929050565b600080600060608486031215614420578081fd5b833561442b81614781565b9250602084013561443b81614781565b929592945050506040919091013590565b6000806040838503121561445e578182fd5b823561446981614781565b9150602083013561440181614796565b6000806040838503121561448b578182fd5b823561449681614781565b946020939093013593505050565b6000806000606084860312156144b8578283fd5b83356144c381614781565b92506020840135915060408401356144da81614796565b809150509250925092565b6000602082840312156144f6578081fd5b813561132c81614796565b600060208284031215614512578081fd5b815161132c81614796565b60006020828403121561452e578081fd5b5035919050565b60008060408385031215614547578182fd5b82359150602083013561440181614796565b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b8181101561459f57858101830151858201604001528201614583565b818111156145b05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f43616c6c657220646f6573206e6f74206861766520706f776572000000000000604082015260600190565b848152610180810160208083018660005b600681101561466057815183529183019190830190600101614643565b50505060e083018560005b60048110156146915781516001600160a01b03168352918301919083019060010161466b565b5050505082151561016083015295945050505050565b600082198211156146ba576146ba61476b565b500190565b6000826146da57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156146f9576146f961476b565b500290565b6000828210156147105761471061476b565b500390565b600181811c9082168061472957607f821691505b6020821081141561474a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156147645761476461476b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461105d57600080fd5b801515811461105d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9562b30fbfffd4450edc236ec48e9dc17a2c83933fd6d4d5862da10a1bc42d764736f6c6343000804003300000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56
Deployed Bytecode
0x6080604052600436106104cf5760003560e01c806370a0823111610276578063b6c523241161014f578063d12a7688116100c1578063ed76208611610085578063ed76208614610f56578063f2fde38b14610f76578063f4e0d9ac14610f96578063f6224c9614610fb6578063fc03b68a14610fd8578063fffbf9bd14610ff857600080fd5b8063d12a768814610e9a578063dd46706414610eb0578063dd62ed3e14610ed0578063e268e4d314610f16578063ea2f0b3714610f3657600080fd5b8063c49b9a8011610113578063c49b9a8014610ddb578063c4e9436014610dfb578063c640ef2a14610e1c578063cd65bbff14610e3a578063d0d41fe114610e5a578063d0fb020314610e7a57600080fd5b8063b6c5232414610d36578063b75620d814610d4b578063b9f0f15c14610d7b578063bc33718214610d9b578063c0d7865514610dbb57600080fd5b8063906e9dd0116101e8578063a457c2d7116101ac578063a457c2d714610c95578063a69df4b514610cb5578063a9059cbb14610cca578063aa45026b14610cea578063ae85028114610d00578063b5ee0ded14610d1657600080fd5b8063906e9dd014610c0057806395d89b4114610c20578063995846bd14610c355780639c962c8214610c555780639cea127a14610c7557600080fd5b80637d1db4a51161023a5780637d1db4a514610b3e578063885b8a3014610b5457806388f8202014610b695780638b4cee0814610ba25780638da5cb5b14610bc25780638ee88c5314610be057600080fd5b806370a0823114610a99578063715018a614610ab957806375de4a3d14610ace5780637a41e81c14610aee5780637a76646014610b0857600080fd5b80633a740de6116103a85780634af408631161031a5780635f8378ab116102de5780635f8378ab146109cc5780636475833e146109ec578063658c27a914610a0c5780636afc133414610a455780636bc2878114610a655780636bc87c3a14610a8357600080fd5b80634af408631461091d57806352390c021461093d5780635342acb41461095d578063555f17db14610996578063590f897e146109b657600080fd5b8063437823ec1161036c578063437823ec1461085c5780634549b0391461087c578063457c194c1461089c578063472d35b9146108bc57806349bd5a5e146108dc5780634a74bb02146108fc57600080fd5b80633a740de6146107c65780633b124fe7146107e65780633bd5d173146107fc5780633ca5b2341461081c578063410dbf7e1461083c57600080fd5b806318f61ca411610441578063313ce56711610405578063313ce567146107185780633685d4191461073a5780633702b9651461075a578063379e29191461077057806339509351146107905780633a3b3441146107b057600080fd5b806318f61ca41461067257806322976e0d1461069257806323b872dd146106a857806325f784ba146106c85780632d838119146106f857600080fd5b806312706f041161049357806312706f041461059c57806313114a9d146105b2578063131ae4d2146105c7578063163a37ba146105e75780631694505e1461062057806318160ddd1461065d57600080fd5b8063061c82d0146104db57806306fdde03146104fd578063095ea7b3146105285780630f2cdd6c14610558578063110430bb1461057c57600080fd5b366104d657005b600080fd5b3480156104e757600080fd5b506104fb6104f636600461451d565b611016565b005b34801561050957600080fd5b50610512611060565b60405161051f9190614573565b60405180910390f35b34801561053457600080fd5b50610548610543366004614479565b6110f2565b604051901515815260200161051f565b34801561056457600080fd5b5061056e60175481565b60405190815260200161051f565b34801561058857600080fd5b506104fb61059736600461451d565b611109565b3480156105a857600080fd5b5061056e60235481565b3480156105be57600080fd5b5060165461056e565b3480156105d357600080fd5b506104fb6105e236600461439c565b611147565b3480156105f357600080fd5b5061054861060236600461439c565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561062c57600080fd5b50602b546106459061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161051f565b34801561066957600080fd5b5060145461056e565b34801561067e57600080fd5b506104fb61068d36600461451d565b6111ab565b34801561069e57600080fd5b5061056e60215481565b3480156106b457600080fd5b506105486106c336600461440c565b6111e8565b3480156106d457600080fd5b506105486106e336600461439c565b600a6020526000908152604090205460ff1681565b34801561070457600080fd5b5061056e61071336600461451d565b6112af565b34801561072457600080fd5b50601a5460405160ff909116815260200161051f565b34801561074657600080fd5b506104fb61075536600461439c565b611333565b34801561076657600080fd5b5061056e602a5481565b34801561077c57600080fd5b506104fb61078b36600461451d565b611522565b34801561079c57600080fd5b506105486107ab366004614479565b61155f565b3480156107bc57600080fd5b5061056e60275481565b3480156107d257600080fd5b506104fb6107e136600461444c565b611595565b3480156107f257600080fd5b5061056e601b5481565b34801561080857600080fd5b506104fb61081736600461451d565b6115ea565b34801561082857600080fd5b50602d54610645906001600160a01b031681565b34801561084857600080fd5b506104fb61085736600461451d565b6116d4565b34801561086857600080fd5b506104fb61087736600461439c565b611711565b34801561088857600080fd5b5061056e610897366004614535565b61175f565b3480156108a857600080fd5b506104fb6108b736600461451d565b6117ec565b3480156108c857600080fd5b506104fb6108d736600461439c565b611829565b3480156108e857600080fd5b50602c54610645906001600160a01b031681565b34801561090857600080fd5b50602e5461054890600160a81b900460ff1681565b34801561092957600080fd5b5061054861093836600461439c565b6118b5565b34801561094957600080fd5b506104fb61095836600461439c565b6119dd565b34801561096957600080fd5b5061054861097836600461439c565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156109a257600080fd5b50601354610645906001600160a01b031681565b3480156109c257600080fd5b5061056e60295481565b3480156109d857600080fd5b506104fb6109e73660046144e5565b611b30565b3480156109f857600080fd5b506104fb610a0736600461451d565b612152565b348015610a1857600080fd5b50610548610a2736600461439c565b6001600160a01b031660009081526009602052604090205460ff1690565b348015610a5157600080fd5b506104fb610a6036600461451d565b61218f565b348015610a7157600080fd5b506002546001600160a01b0316610645565b348015610a8f57600080fd5b5061056e601d5481565b348015610aa557600080fd5b5061056e610ab436600461439c565b6121ac565b348015610ac557600080fd5b506104fb61220b565b348015610ada57600080fd5b506104fb610ae936600461444c565b61226d565b348015610afa57600080fd5b50602b546105489060ff1681565b348015610b1457600080fd5b5061056e610b2336600461439c565b6001600160a01b03166000908152600d602052604090205490565b348015610b4a57600080fd5b5061056e602f5481565b348015610b6057600080fd5b506104fb6124dd565b348015610b7557600080fd5b50610548610b8436600461439c565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610bae57600080fd5b506104fb610bbd36600461451d565b612542565b348015610bce57600080fd5b506000546001600160a01b0316610645565b348015610bec57600080fd5b506104fb610bfb36600461451d565b61257f565b348015610c0c57600080fd5b506104fb610c1b36600461439c565b6125bc565b348015610c2c57600080fd5b50610512612608565b348015610c4157600080fd5b506104fb610c503660046144a4565b612617565b348015610c6157600080fd5b506104fb610c70366004614479565b6126f1565b348015610c8157600080fd5b506104fb610c9036600461444c565b6127ab565b348015610ca157600080fd5b50610548610cb0366004614479565b612800565b348015610cc157600080fd5b506104fb61284f565b348015610cd657600080fd5b50610548610ce5366004614479565b612955565b348015610cf657600080fd5b5061056e601f5481565b348015610d0c57600080fd5b5061056e60255481565b348015610d2257600080fd5b50601254610645906001600160a01b031681565b348015610d4257600080fd5b5060035461056e565b348015610d5757600080fd5b50610548610d6636600461439c565b600c6020526000908152604090205460ff1681565b348015610d8757600080fd5b506104fb610d9636600461439c565b6129b7565b348015610da757600080fd5b506104fb610db636600461451d565b612c4b565b348015610dc757600080fd5b506104fb610dd636600461439c565b612c89565b348015610de757600080fd5b506104fb610df63660046144e5565b612cdb565b348015610e0757600080fd5b50602e5461054890600160b01b900460ff1681565b348015610e2857600080fd5b506010546001600160a01b0316610645565b348015610e4657600080fd5b506104fb610e5536600461451d565b612d5d565b348015610e6657600080fd5b506104fb610e7536600461439c565b612e12565b348015610e8657600080fd5b50602e54610645906001600160a01b031681565b348015610ea657600080fd5b5061056e60305481565b348015610ebc57600080fd5b506104fb610ecb36600461451d565b612e5e565b348015610edc57600080fd5b5061056e610eeb3660046143d4565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610f2257600080fd5b506104fb610f3136600461451d565b612ee3565b348015610f4257600080fd5b506104fb610f5136600461439c565b612f21565b348015610f6257600080fd5b506104fb610f7136600461451d565b612f6c565b348015610f8257600080fd5b506104fb610f9136600461439c565b612ff2565b348015610fa257600080fd5b506104fb610fb136600461439c565b6130ca565b348015610fc257600080fd5b503360009081526007602052604090205461056e565b348015610fe457600080fd5b506104fb610ff336600461444c565b613116565b34801561100457600080fd5b506011546001600160a01b0316610645565b6000546001600160a01b031633146110495760405162461bcd60e51b8152600401611040906145c6565b60405180910390fd5b6000601b556101f4811161105d57601b8190555b50565b60606018805461106f90614715565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90614715565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b5050505050905090565b60006110ff33848461322c565b5060015b92915050565b6000546001600160a01b031633146111335760405162461bcd60e51b8152600401611040906145c6565b61114181633b9aca006146df565b60305550565b6000546001600160a01b031633146111715760405162461bcd60e51b8152600401611040906145c6565b601380546001600160a01b039092166001600160a01b0319909216821790556000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b031633146111d55760405162461bcd60e51b8152600401611040906145c6565b60006027556101f4811161105d57602755565b6001600160a01b03831660009081526007602052604081205442116112485760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081a5cc81cdd1a5b1b081b1bd8dad95960521b6044820152606401611040565b611253848484613350565b6112a584336112a0856040518060600160405280602881526020016147a5602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190613900565b61322c565b5060019392505050565b60006015548211156113165760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401611040565b600061132061393a565b905061132c83826131ea565b9392505050565b6000546001600160a01b0316331461135d5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166000908152600b602052604090205460ff166113c55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611040565b60005b600f5481101561151e57816001600160a01b0316600f82815481106113fd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561150c57600f8054611428906001906146fe565b8154811061144657634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600f80546001600160a01b03909216918390811061148057634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600b90925220805460ff19169055600f8054806114e657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061151681614750565b9150506113c8565b5050565b6000546001600160a01b0316331461154c5760405162461bcd60e51b8152600401611040906145c6565b6000601f556101f4811161105d57601f55565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916110ff9185906112a0908661395d565b6000546001600160a01b031633146115bf5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b336000818152600b602052604090205460ff161561165f5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401611040565b600061166a836139bc565b505050506001600160a01b03841660009081526004602052604090205491925061169691905082613a0b565b6001600160a01b0383166000908152600460205260409020556015546116bc9082613a0b565b6015556016546116cc908461395d565b601655505050565b6000546001600160a01b031633146116fe5760405162461bcd60e51b8152600401611040906145c6565b60006025556101f4811161105d57602555565b6000546001600160a01b0316331461173b5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60006014548311156117b35760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401611040565b816117d25760006117c3846139bc565b50939550611103945050505050565b60006117dd846139bc565b50929550611103945050505050565b6000546001600160a01b031633146118165760405162461bcd60e51b8152600401611040906145c6565b60006021556101f4811161105d57602155565b6002546001600160a01b031633146118535760405162461bcd60e51b8152600401611040906145fb565b602e80546001600160a01b039092166001600160a01b0319909216821790556000908152600860209081526040808320805460ff199081166001908117909255600984528285208054821683179055600a909352922080549091169091179055565b600080602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561190657600080fd5b505afa15801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e91906143b8565b6001600160a01b031663e6a4390530856040518363ffffffff1660e01b815260040161196b929190614559565b60206040518083038186803b15801561198357600080fd5b505afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb91906143b8565b6001600160a01b03166000908152600c602052604090205460ff169392505050565b6000546001600160a01b03163314611a075760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166000908152600b602052604090205460ff1615611a705760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611040565b6001600160a01b03811660009081526004602052604090205415611aca576001600160a01b038116600090815260046020526040902054611ab0906112af565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6002546001600160a01b03163314611b5a5760405162461bcd60e51b8152600401611040906145fb565b8015611ef7576000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb057600080fd5b505afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be891906143b8565b6001600160a01b031663e6a4390530602b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c4557600080fd5b505afa158015611c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7d91906143b8565b6040518363ffffffff1660e01b8152600401611c9a929190614559565b60206040518083038186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cea91906143b8565b90506001600160a01b038116611e8757602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4857600080fd5b505afa158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8091906143b8565b6001600160a01b031663c9c6539630602b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ddd57600080fd5b505afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1591906143b8565b6040518363ffffffff1660e01b8152600401611e32929190614559565b602060405180830381600087803b158015611e4c57600080fd5b505af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8491906143b8565b90505b602c80546001600160a01b039283166001600160a01b0319909116811782556000908152600c60209081526040808320805460ff19908116909155602e8054881515600160b01b0260ff60b01b1990911617905593549094168252600a9052919091208054909116600117905550565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4757600080fd5b505afa158015611f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7f91906143b8565b602d5460405163e6a4390560e01b81526001600160a01b039283169263e6a4390592611fb392309290911690600401614559565b60206040518083038186803b158015611fcb57600080fd5b505afa158015611fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200391906143b8565b90506001600160a01b03811661212257602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561206157600080fd5b505afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209991906143b8565b602d546040516364e329cb60e11b81526001600160a01b039283169263c9c65396926120cd92309290911690600401614559565b602060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211f91906143b8565b90505b602c80546001600160a01b0319166001600160a01b039290921691909117905550602e805460ff60b01b19169055565b6000546001600160a01b0316331461217c5760405162461bcd60e51b8152600401611040906145c6565b60006023556101f4811161105d57602355565b61219981426146a7565b3360009081526007602052604090205550565b6001600160a01b0381166000908152600b602052604081205460ff16156121e957506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054611103906112af565b6000546001600160a01b031633146122355760405162461bcd60e51b8152600401611040906145c6565b600080546040516001600160a01b03909116906000805160206147cd833981519152908390a3600080546001600160a01b0319169055565b6002546001600160a01b031633146122975760405162461bcd60e51b8152600401611040906145fb565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156122e757600080fd5b505afa1580156122fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231f91906143b8565b6001600160a01b031663e6a4390530856040518363ffffffff1660e01b815260040161234c929190614559565b60206040518083038186803b15801561236457600080fd5b505afa158015612378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239c91906143b8565b90506001600160a01b0381166124b457602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156123fa57600080fd5b505afa15801561240e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243291906143b8565b6001600160a01b031663c9c6539630856040518363ffffffff1660e01b815260040161245f929190614559565b602060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b191906143b8565b90505b6001600160a01b03166000908152600c60205260409020805460ff191691151591909117905550565b6000546001600160a01b031633146125075760405162461bcd60e51b8152600401611040906145c6565b6125286064612522600060145461316b90919063ffffffff16565b906131ea565b602f55612533613a4d565b602e805460ff60a81b19169055565b6000546001600160a01b0316331461256c5760405162461bcd60e51b8152600401611040906145c6565b6000602955611b58811161105d57602955565b6000546001600160a01b031633146125a95760405162461bcd60e51b8152600401611040906145c6565b6000601d556101f4811161105d57601d55565b6000546001600160a01b031633146125e65760405162461bcd60e51b8152600401611040906145c6565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60606019805461106f90614715565b6012546001600160a01b0316336001600160a01b0316148061264357506002546001600160a01b031633145b6126825760405162461bcd60e51b815260206004820152601060248201526f2ab730b63637bbb2b21031b0b63632b960811b6044820152606401611040565b80156126c9576001600160a01b0383166000908152600d60205260409020546126ab908361395d565b6001600160a01b0384166000908152600d6020526040902055505050565b6001600160a01b0383166000908152600d60205260409020546126ab9083613a0b565b505050565b6002546001600160a01b0316331461271b5760405162461bcd60e51b8152600401611040906145fb565b6001600160a01b03821663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561277357600080fd5b505af1158015612787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190614501565b6000546001600160a01b031633146127d55760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60006110ff33846112a0856040518060600160405280602581526020016147ed602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190613900565b6001546001600160a01b031633146128b55760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401611040565b60035442116129065760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401611040565b600154600080546040516001600160a01b0393841693909116916000805160206147cd83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526007602052604081205442116129ac5760405162461bcd60e51b815260206004820152601660248201527515d85b1b195d081a5cc81cdd1a5b1b081b1bd8dad95960521b6044820152606401611040565b6110ff338484613350565b6002546001600160a01b031633146129e15760405162461bcd60e51b8152600401611040906145fb565b6000602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3157600080fd5b505afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6991906143b8565b6001600160a01b031663e6a4390530846040518363ffffffff1660e01b8152600401612a96929190614559565b60206040518083038186803b158015612aae57600080fd5b505afa158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae691906143b8565b90506001600160a01b038116612bfe57602b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4457600080fd5b505afa158015612b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7c91906143b8565b6001600160a01b031663c9c6539630846040518363ffffffff1660e01b8152600401612ba9929190614559565b602060405180830381600087803b158015612bc357600080fd5b505af1158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906143b8565b90505b6001600160a01b03166000818152600c60209081526040808320805460ff19908116909155602c80546001600160a01b031916909517909455600a90915290208054909116600117905550565b6000546001600160a01b03163314612c755760405162461bcd60e51b8152600401611040906145c6565b612c8381633b9aca006146df565b602f5550565b6002546001600160a01b03163314612cb35760405162461bcd60e51b8152600401611040906145fb565b602b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314612d055760405162461bcd60e51b8152600401611040906145c6565b602e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990612d5290831515815260200190565b60405180910390a150565b6002546001600160a01b03163314612d875760405162461bcd60e51b8152600401611040906145fb565b604051600090339083908381818185875af1925050503d8060008114612dc9576040519150601f19603f3d011682016040523d82523d6000602084013e612dce565b606091505b505090508061151e5760405162461bcd60e51b815260206004820152601060248201526f4661696c656420746f2072657363756560801b6044820152606401611040565b6000546001600160a01b03163314612e3c5760405162461bcd60e51b8152600401611040906145c6565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612e885760405162461bcd60e51b8152600401611040906145c6565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055612eb781426146a7565b600355600080546040516001600160a01b03909116906000805160206147cd833981519152908390a350565b6000546001600160a01b03163314612f0d5760405162461bcd60e51b8152600401611040906145c6565b612f1b81633b9aca006146df565b60175550565b6000546001600160a01b03163314612f4b5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b03163314612f965760405162461bcd60e51b8152600401611040906145c6565b612fa481633b9aca006146df565b602f55612fdc601c54601b55601e54601d55602054601f55602254602155602454602355602654602555602854602755602a54602955565b50602e805460ff60a81b1916600160a81b179055565b6000546001600160a01b0316331461301c5760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b0381166130815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611040565b600080546040516001600160a01b03808516939216916000805160206147cd83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146130f45760405162461bcd60e51b8152600401611040906145c6565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146131405760405162461bcd60e51b8152600401611040906145c6565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b60008261317a57506000611103565b600061318683856146df565b90508261319385836146bf565b1461132c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401611040565b600061132c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b02565b6001600160a01b03831661328e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611040565b6001600160a01b0382166132ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611040565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166133b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611040565b6001600160a01b0382166134165760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611040565b6001600160a01b0382166000908152600c602052604090205460ff161561347f5760405162461bcd60e51b815260206004820152601760248201527f5468652070616972206973206e6f7420616c6c6f7765640000000000000000006044820152606401611040565b600081116134e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401611040565b6001600160a01b0382166000908152600a602052604090205460ff166135655760175461351782613511856121ac565b9061395d565b11156135655760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e206c696d69742072656163686564206f6e207265636569766572006044820152606401611040565b6001600160a01b03831660009081526009602052604090205460ff161580156135a757506001600160a01b03821660009081526009602052604090205460ff16155b1561360f57602f5481111561360f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401611040565b6001600160a01b0383166000908152600d6020526040902054156136a8576001600160a01b0383166000908152600d602052604090205461365990613653856121ac565b90613a0b565b8111156136a85760405162461bcd60e51b815260206004820152601e60248201527f43616e206e6f74207472616e73666572207374616b656420746f6b656e7300006044820152606401611040565b6001600160a01b0383166000908152600e602052604090205460ff16806136e757506001600160a01b0382166000908152600e602052604090205460ff165b156137405760405162461bcd60e51b8152602060048201526024808201527f426c61636b6c6973746564206163636f756e742c20636f6e74616374207375706044820152631c1bdc9d60e21b6064820152608401611040565b600061374b306121ac565b9050602f54811061375b5750602f545b603054811080159081906137795750602e54600160a01b900460ff16155b80156137935750602c546001600160a01b03868116911614155b80156137a85750602e54600160a81b900460ff165b1561386f57602e805460ff60a01b198116600160a01b1790915560305492506137de9030906001600160a01b0316846000613b30565b6000806137e9613cd1565b602e5460405163d66f1e3b60e01b81529294509092506001600160a01b0381169163d66f1e3b9161382d91889187918791600160b01b900460ff1690600401614632565b600060405180830381600087803b15801561384757600080fd5b505af115801561385b573d6000803e3d6000fd5b5050602e805460ff60a01b19169055505050505b6001600160a01b03851660009081526008602052604090205460019060ff16806138b157506001600160a01b03851660009081526008602052604090205460ff165b156138be575060006138e2565b602c546001600160a01b03868116911614156138e257602b805460ff191660011790555b6138ee86868684613b30565b5050602b805460ff1916905550505050565b600081848411156139245760405162461bcd60e51b81526004016110409190614573565b50600061393184866146fe565b95945050505050565b6000806000613947613d50565b909250905061395682826131ea565b9250505090565b60008061396a83856146a7565b90508381101561132c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401611040565b60008060008060008060008060006139d38a613f0a565b92509250925060008060006139f18d86866139ec61393a565b613f46565b919f909e50909c50959a5093985091965092945050505050565b600061132c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613900565b601b54158015613a5d5750601d54155b8015613a695750602154155b8015613a755750601f54155b8015613a815750602354155b8015613a8d5750602554155b8015613a995750602754155b8015613aa55750602954155b15613aac57565b601b8054601c55601d8054601e55601f80546020556021805460225560238054602455602580546026556027805460285560298054602a5560009788905595879055938690559185905584905583905582905555565b60008183613b235760405162461bcd60e51b81526004016110409190614573565b50600061393184866146bf565b80613b3d57613b3d613a4d565b6001600160a01b0384166000908152600b602052604090205460ff168015613b7e57506001600160a01b0383166000908152600b602052604090205460ff16155b15613b9357613b8e848484613f96565b613c91565b6001600160a01b0384166000908152600b602052604090205460ff16158015613bd457506001600160a01b0383166000908152600b602052604090205460ff165b15613be457613b8e8484846140bc565b6001600160a01b0384166000908152600b602052604090205460ff16158015613c2657506001600160a01b0383166000908152600b602052604090205460ff16155b15613c3657613b8e848484614165565b6001600160a01b0384166000908152600b602052604090205460ff168015613c7657506001600160a01b0383166000908152600b602052604090205460ff165b15613c8657613b8e8484846141a9565b613c91848484614165565b80613ccb57613ccb601c54601b55601e54601d55602054601f55602254602155602454602355602654602555602854602755602a54602955565b50505050565b613cd9614360565b613ce161437e565b6021548252601f546020808401919091526023546040808501919091526025546060808601919091526027546080860152601d5460a08601526011546001600160a01b039081168552601054811693850193909352601254831691840191909152601354909116908201529091565b6015546014546000918291825b600f54811015613eda578260046000600f8481548110613d8d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613e0657508160056000600f8481548110613ddf57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613e1c57601554601454945094505050509091565b613e7060046000600f8481548110613e4457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a0b565b9250613ec660056000600f8481548110613e9a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a0b565b915080613ed281614750565b915050613d5d565b50601454601554613eea916131ea565b821015613f01576015546014549350935050509091565b90939092509050565b600080600080613f198561421c565b90506000613f2686614239565b90506000613f38826136538986613a0b565b979296509094509092505050565b6000808080613f55888661316b565b90506000613f63888761316b565b90506000613f71888861316b565b90506000613f83826136538686613a0b565b939b939a50919850919650505050505050565b600080600080600080613fa8876139bc565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150613fda9088613a0b565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546140099087613a0b565b6001600160a01b03808b1660009081526004602052604080822093909355908a1681522054614038908661395d565b6001600160a01b03891660009081526004602052604090205561405a816142b4565b614064848361433c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516140a991815260200190565b60405180910390a3505050505050505050565b6000806000806000806140ce876139bc565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506141009087613a0b565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054614136908461395d565b6001600160a01b038916600090815260056020908152604080832093909355600490522054614038908661395d565b600080600080600080614177876139bc565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506140099087613a0b565b6000806000806000806141bb876139bc565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506141ed9088613a0b565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546141009087613a0b565b6000611103612710612522601b548561316b90919063ffffffff16565b602b54600090819060ff1661424f576000614253565b6029545b905061132c61271061252283602754602554602354602154601f54601d5461427b91906146a7565b61428591906146a7565b61428f91906146a7565b61429991906146a7565b6142a391906146a7565b6142ad91906146a7565b869061316b565b60006142be61393a565b905060006142cc838361316b565b306000908152600460205260409020549091506142e9908261395d565b30600090815260046020908152604080832093909355600b9052205460ff16156126ec5730600090815260056020526040902054614327908461395d565b30600090815260056020526040902055505050565b6015546143499083613a0b565b601555601654614359908261395d565b6016555050565b6040518060c001604052806006906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6000602082840312156143ad578081fd5b813561132c81614781565b6000602082840312156143c9578081fd5b815161132c81614781565b600080604083850312156143e6578081fd5b82356143f181614781565b9150602083013561440181614781565b809150509250929050565b600080600060608486031215614420578081fd5b833561442b81614781565b9250602084013561443b81614781565b929592945050506040919091013590565b6000806040838503121561445e578182fd5b823561446981614781565b9150602083013561440181614796565b6000806040838503121561448b578182fd5b823561449681614781565b946020939093013593505050565b6000806000606084860312156144b8578283fd5b83356144c381614781565b92506020840135915060408401356144da81614796565b809150509250925092565b6000602082840312156144f6578081fd5b813561132c81614796565b600060208284031215614512578081fd5b815161132c81614796565b60006020828403121561452e578081fd5b5035919050565b60008060408385031215614547578182fd5b82359150602083013561440181614796565b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b8181101561459f57858101830151858201604001528201614583565b818111156145b05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f43616c6c657220646f6573206e6f74206861766520706f776572000000000000604082015260600190565b848152610180810160208083018660005b600681101561466057815183529183019190830190600101614643565b50505060e083018560005b60048110156146915781516001600160a01b03168352918301919083019060010161466b565b5050505082151561016083015295945050505050565b600082198211156146ba576146ba61476b565b500190565b6000826146da57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156146f9576146f961476b565b500290565b6000828210156147105761471061476b565b500390565b600181811c9082168061472957607f821691505b6020821081141561474a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156147645761476461476b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461105d57600080fd5b801515811461105d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9562b30fbfffd4450edc236ec48e9dc17a2c83933fd6d4d5862da10a1bc42d764736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56
-----Decoded View---------------
Arg [0] : router (address): 0x10ED43C718714eb63d5aA57B78B54704E256024E
Arg [1] : stablecoin (address): 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e
Arg [1] : 000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56
Deployed Bytecode Sourcemap
8066:28788:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23108:158;;;;;;;;;;-1:-1:-1;23108:158:0;;;;;:::i;:::-;;:::i;:::-;;12704:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13707:161;;;;;;;;;;-1:-1:-1;13707:161:0;;;;;:::i;:::-;;:::i;:::-;;;5692:14:1;;5685:22;5667:41;;5655:2;5640:18;13707:161:0;5622:92:1;9188:57:0;;;;;;;;;;;;;;;;;;;15846:25:1;;;15834:2;15819:18;9188:57:0;15801:76:1;19189:140:0;;;;;;;;;;-1:-1:-1;19189:140:0;;;;;:::i;:::-;;:::i;9784:30::-;;;;;;;;;;;;;;;;14909:87;;;;;;;;;;-1:-1:-1;14978:10:0;;14909:87;;19041:136;;;;;;;;;;-1:-1:-1;19041:136:0;;;;;:::i;:::-;;:::i;36737:114::-;;;;;;;;;;-1:-1:-1;36737:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;36825:18:0;36801:4;36825:18;;;:9;:18;;;;;;;;;36737:114;10260:41;;;;;;;;;;-1:-1:-1;10260:41:0;;;;;;;-1:-1:-1;;;;;10260:41:0;;;;;;-1:-1:-1;;;;;4671:32:1;;;4653:51;;4641:2;4626:18;10260:41:0;4608:102:1;12981:95:0;;;;;;;;;;-1:-1:-1;13061:7:0;;12981:95;;23670:140;;;;;;;;;;-1:-1:-1;23670:140:0;;;;;:::i;:::-;;:::i;9681:34::-;;;;;;;;;;;;;;;;13876:394;;;;;;;;;;-1:-1:-1;13876:394:0;;;;;:::i;:::-;;:::i;8540:56::-;;;;;;;;;;-1:-1:-1;8540:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15959:253;;;;;;;;;;-1:-1:-1;15959:253:0;;;;;:::i;:::-;;:::i;12890:83::-;;;;;;;;;;-1:-1:-1;12956:9:0;;12890:83;;12956:9;;;;17068:36:1;;17056:2;17041:18;12890:83:0;17023:87:1;16675:479:0;;;;;;;;;;-1:-1:-1;16675:479:0;;;;;:::i;:::-;;:::i;10160:42::-;;;;;;;;;;;;;;;;22938:158;;;;;;;;;;-1:-1:-1;22938:158:0;;;;;:::i;:::-;;:::i;14278:218::-;;;;;;;;;;-1:-1:-1;14278:218:0;;;;;:::i;:::-;;:::i;10006:28::-;;;;;;;;;;;;;;;;18078:143;;;;;;;;;;-1:-1:-1;18078:143:0;;;;;:::i;:::-;;:::i;9398:26::-;;;;;;;;;;;;;;;;15130:377;;;;;;;;;;-1:-1:-1;15130:377:0;;;;;:::i;:::-;;:::i;10343:19::-;;;;;;;;;;-1:-1:-1;10343:19:0;;;;-1:-1:-1;;;;;10343:19:0;;;23480:152;;;;;;;;;;-1:-1:-1;23480:152:0;;;;;:::i;:::-;;:::i;17820:111::-;;;;;;;;;;-1:-1:-1;17820:111:0;;;;;:::i;:::-;;:::i;15515:436::-;;;;;;;;;;-1:-1:-1;15515:436:0;;;;;:::i;:::-;;:::i;23278:194::-;;;;;;;;;;-1:-1:-1;23278:194:0;;;;;:::i;:::-;;:::i;22212:307::-;;;;;;;;;;-1:-1:-1;22212:307:0;;;;;:::i;:::-;;:::i;10308:28::-;;;;;;;;;;-1:-1:-1;10308:28:0;;;;-1:-1:-1;;;;;10308:28:0;;;10435:40;;;;;;;;;;-1:-1:-1;10435:40:0;;;;-1:-1:-1;;;10435:40:0;;;;;;21950:254;;;;;;;;;;-1:-1:-1;21950:254:0;;;;;:::i;:::-;;:::i;16220:447::-;;;;;;;;;;-1:-1:-1;16220:447:0;;;;;:::i;:::-;;:::i;29803:123::-;;;;;;;;;;-1:-1:-1;29803:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;29891:27:0;29867:4;29891:27;;;:18;:27;;;;;;;;;29803:123;8962:26;;;;;;;;;;-1:-1:-1;8962:26:0;;;;-1:-1:-1;;;;;8962:26:0;;;10123:30;;;;;;;;;;;;;;;;19519:1153;;;;;;;;;;-1:-1:-1;19519:1153:0;;;;;:::i;:::-;;:::i;23968:180::-;;;;;;;;;;-1:-1:-1;23968:180:0;;;;;:::i;:::-;;:::i;17943:127::-;;;;;;;;;;-1:-1:-1;17943:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;18033:29:0;18009:4;18033:29;;;:20;:29;;;;;;;;;17943:127;15008:108;;;;;;;;;;-1:-1:-1;15008:108:0;;;;;:::i;:::-;;:::i;6275:90::-;;;;;;;;;;-1:-1:-1;6346:11:0;;-1:-1:-1;;;;;6346:11:0;6275:90;;9485:34;;;;;;;;;;;;;;;;13084:198;;;;;;;;;;-1:-1:-1;13084:198:0;;;;;:::i;:::-;;:::i;6500:148::-;;;;;;;;;;;;;:::i;21413:529::-;;;;;;;;;;-1:-1:-1;21413:529:0;;;;;:::i;:::-;;:::i;10211:36::-;;;;;;;;;;-1:-1:-1;10211:36:0;;;;;;;;36622:107;;;;;;;;;;-1:-1:-1;36622:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;36706:14:0;36679:7;36706:14;;;:6;:14;;;;;;;36622:107;10534:54;;;;;;;;;;;;;;;;24670:193;;;;;;;;;;;;;:::i;14781:120::-;;;;;;;;;;-1:-1:-1;14781:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;14873:20:0;14849:4;14873:20;;;:11;:20;;;;;;;;;14781:120;23816:144;;;;;;;;;;-1:-1:-1;23816:144:0;;;;;:::i;:::-;;:::i;6184:79::-;;;;;;;;;;-1:-1:-1;6222:7:0;6249:6;-1:-1:-1;;;;;6249:6:0;6184:79;;24160:194;;;;;;;;;;-1:-1:-1;24160:194:0;;;;;:::i;:::-;;:::i;18757:121::-;;;;;;;;;;-1:-1:-1;18757:121:0;;;;;:::i;:::-;;:::i;12795:87::-;;;;;;;;;;;;;:::i;36266:348::-;;;;;;;;;;-1:-1:-1;36266:348:0;;;;;:::i;:::-;;:::i;25463:221::-;;;;;;;;;;-1:-1:-1;25463:221:0;;;;;:::i;:::-;;:::i;18229:151::-;;;;;;;;;;-1:-1:-1;18229:151:0;;;;;:::i;:::-;;:::i;14504:269::-;;;;;;;;;;-1:-1:-1;14504:269:0;;;;;:::i;:::-;;:::i;7243:305::-;;;;;;;;;;;;;:::i;13294:254::-;;;;;;;;;;-1:-1:-1;13294:254:0;;;;;:::i;:::-;;:::i;9592:28::-;;;;;;;;;;;;;;;;9879:32;;;;;;;;;;;;;;;;8917:38;;;;;;;;;;-1:-1:-1;8917:38:0;;;;-1:-1:-1;;;;;8917:38:0;;;6908:89;;;;;;;;;;-1:-1:-1;6980:9:0;;6908:89;;8654:46;;;;;;;;;;-1:-1:-1;8654:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20680:725;;;;;;;;;;-1:-1:-1;20680:725:0;;;;;:::i;:::-;;:::i;24366:103::-;;;;;;;;;;-1:-1:-1;24366:103:0;;;;;:::i;:::-;;:::i;19337:174::-;;;;;;;;;;-1:-1:-1;19337:174:0;;;;;:::i;:::-;;:::i;24477:171::-;;;;;;;;;;-1:-1:-1;24477:171:0;;;;;:::i;:::-;;:::i;10482:39::-;;;;;;;;;;-1:-1:-1;10482:39:0;;;;-1:-1:-1;;;10482:39:0;;;;;;22527:100;;;;;;;;;;-1:-1:-1;22608:11:0;;-1:-1:-1;;;;;22608:11:0;22527:100;;25152:264;;;;;;;;;;-1:-1:-1;25152:264:0;;;;;:::i;:::-;;:::i;18648:97::-;;;;;;;;;;-1:-1:-1;18648:97:0;;;;;:::i;:::-;;:::i;10369:25::-;;;;;;;;;;-1:-1:-1;10369:25:0;;;;-1:-1:-1;;;;;10369:25:0;;;10595:60;;;;;;;;;;;;;;;;7005:226;;;;;;;;;;-1:-1:-1;7005:226:0;;;;;:::i;:::-;;:::i;13556:143::-;;;;;;;;;;-1:-1:-1;13556:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13664:18:0;;;13637:7;13664:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13556:143;18386:126;;;;;;;;;;-1:-1:-1;18386:126:0;;;;;:::i;:::-;;:::i;22763:110::-;;;;;;;;;;-1:-1:-1;22763:110:0;;;;;:::i;:::-;;:::i;24877:170::-;;;;;;;;;;-1:-1:-1;24877:170:0;;;;;:::i;:::-;;:::i;6656:244::-;;;;;;;;;;-1:-1:-1;6656:244:0;;;;;:::i;:::-;;:::i;18886:113::-;;;;;;;;;;-1:-1:-1;18886:113:0;;;;;:::i;:::-;;:::i;12590:106::-;;;;;;;;;;-1:-1:-1;2610:10:0;12639:7;12666:22;;;:8;:22;;;;;;12590:106;;18520:120;;;;;;;;;;-1:-1:-1;18520:120:0;;;;;:::i;:::-;;:::i;22639:112::-;;;;;;;;;;-1:-1:-1;22726:17:0;;-1:-1:-1;;;;;22726:17:0;22639:112;;23108:158;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;;;;;;;;;23190:1:::1;23180:7;:11:::0;23215:3:::1;23205:13:::0;::::1;23202:55;;23232:7;:16:::0;;;23202:55:::1;23108:158:::0;:::o;12704:83::-;12741:13;12774:5;12767:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12704:83;:::o;13707:161::-;13782:4;13799:39;2610:10;13822:7;13831:6;13799:8;:39::i;:::-;-1:-1:-1;13856:4:0;13707:161;;;;;:::o;19189:140::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;19301:20:::1;:10:::0;19314:7:::1;19301:20;:::i;:::-;19269:29;:52:::0;-1:-1:-1;19189:140:0:o;19041:136::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;19105:11:::1;:17:::0;;-1:-1:-1;;;;;19105:17:0;;::::1;-1:-1:-1::0;;;;;;19105:17:0;;::::1;::::0;::::1;::::0;;:11:::1;19133:29:::0;;;:24:::1;:29;::::0;;;;:36;;-1:-1:-1;;19133:36:0::1;19105:17:::0;19133:36:::1;::::0;;19041:136::o;23670:140::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23742:1:::1;23732:7;:11:::0;23764:3:::1;23757:10:::0;::::1;23754:49;;23781:7;:13:::0;23670:140::o;13876:394::-;-1:-1:-1;;;;;14017:16:0;;13974:4;14017:16;;;:8;:16;;;;;;13999:15;:34;13991:70;;;;-1:-1:-1;;;13991:70:0;;13969:2:1;13991:70:0;;;13951:21:1;14008:2;13988:18;;;13981:30;-1:-1:-1;;;14027:18:1;;;14020:52;14089:18;;13991:70:0;13941:172:1;13991:70:0;14072:36;14082:6;14090:9;14101:6;14072:9;:36::i;:::-;14119:121;14128:6;2610:10;14150:89;14188:6;14150:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14150:19:0;;;;;;:11;:19;;;;;;;;2610:10;14150:33;;;;;;;;;;:37;:89::i;:::-;14119:8;:121::i;:::-;-1:-1:-1;14258:4:0;13876:394;;;;;:::o;15959:253::-;16025:7;16064;;16053;:18;;16045:73;;;;-1:-1:-1;;;16045:73:0;;7167:2:1;16045:73:0;;;7149:21:1;7206:2;7186:18;;;7179:30;7245:34;7225:18;;;7218:62;-1:-1:-1;;;7296:18:1;;;7289:40;7346:19;;16045:73:0;7139:232:1;16045:73:0;16129:19;16152:10;:8;:10::i;:::-;16129:33;-1:-1:-1;16180:24:0;:7;16129:33;16180:11;:24::i;:::-;16173:31;15959:253;-1:-1:-1;;;15959:253:0:o;16675:479::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16757:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16749:60;;;::::0;-1:-1:-1;;;16749:60:0;;8744:2:1;16749:60:0::1;::::0;::::1;8726:21:1::0;8783:2;8763:18;;;8756:30;8822:29;8802:18;;;8795:57;8869:18;;16749:60:0::1;8716:177:1::0;16749:60:0::1;16825:9;16820:327;16844:9;:16:::0;16840:20;::::1;16820:327;;;16902:7;-1:-1:-1::0;;;;;16886:23:0::1;:9;16896:1;16886:12;;;;;;-1:-1:-1::0;;;16886:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;16886:12:0::1;:23;16882:254;;;16945:9;16955:16:::0;;:20:::1;::::0;16974:1:::1;::::0;16955:20:::1;:::i;:::-;16945:31;;;;;;-1:-1:-1::0;;;16945:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;16930:9:::1;:12:::0;;-1:-1:-1;;;;;16945:31:0;;::::1;::::0;16940:1;;16930:12;::::1;;;-1:-1:-1::0;;;16930:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;16930:46:0::1;-1:-1:-1::0;;;;;16930:46:0;;::::1;;::::0;;16995:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;17034:11:::1;:20:::0;;;;:28;;-1:-1:-1;;17034:28:0::1;::::0;;17081:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;17081:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;17081:15:0;;;;;-1:-1:-1;;;;;;17081:15:0::1;::::0;;;;;16820:327:::1;16675:479:::0;:::o;16882:254::-:1;16862:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16820:327;;;;16675:479:::0;:::o;22938:158::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23020:1:::1;23010:7;:11:::0;23045:3:::1;23035:13:::0;::::1;23032:55;;23062:7;:16:::0;22938:158::o;14278:218::-;2610:10;14366:4;14415:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14415:34:0;;;;;;;;;;14366:4;;14383:83;;14406:7;;14415:50;;14454:10;14415:38;:50::i;18078:143::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18174:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:39;;-1:-1:-1;;18174:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18078:143::o;15130:377::-;2610:10;15182:14;15231:19;;;:11;:19;;;;;;;;15230:20;15222:77;;;;-1:-1:-1;;;15222:77:0;;15085:2:1;15222:77:0;;;15067:21:1;15124:2;15104:18;;;15097:30;15163:34;15143:18;;;15136:62;-1:-1:-1;;;15214:18:1;;;15207:42;15266:19;;15222:77:0;15057:234:1;15222:77:0;15311:15;15335:19;15346:7;15335:10;:19::i;:::-;-1:-1:-1;;;;;;;;;15383:15:0;;;;;;:7;:15;;;;;;15310:44;;-1:-1:-1;15383:28:0;;:15;-1:-1:-1;15310:44:0;15383:19;:28::i;:::-;-1:-1:-1;;;;;15365:15:0;;;;;;:7;:15;;;;;:46;15432:7;;:20;;15444:7;15432:11;:20::i;:::-;15422:7;:30;15476:10;;:23;;15491:7;15476:14;:23::i;:::-;15463:10;:36;-1:-1:-1;;;15130:377:0:o;23480:152::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23560:1:::1;23546:11;:15:::0;23582:3:::1;23575:10:::0;::::1;23572:53;;23599:11;:17:::0;23480:152::o;17820:111::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17889:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;17889:34:0::1;17919:4;17889:34;::::0;;17820:111::o;15515:436::-;15605:7;15644;;15633;:18;;15625:62;;;;-1:-1:-1;;;15625:62:0;;9811:2:1;15625:62:0;;;9793:21:1;9850:2;9830:18;;;9823:30;9889:33;9869:18;;;9862:61;9940:18;;15625:62:0;9783:181:1;15625:62:0;15703:17;15698:246;;15738:15;15762:19;15773:7;15762:10;:19::i;:::-;-1:-1:-1;15737:44:0;;-1:-1:-1;15796:14:0;;-1:-1:-1;;;;;15796:14:0;15698:246;15845:23;15876:19;15887:7;15876:10;:19::i;:::-;-1:-1:-1;15843:52:0;;-1:-1:-1;15910:22:0;;-1:-1:-1;;;;;15910:22:0;23278:194;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23378:1:::1;23362:13;:17:::0;23409:3:::1;23393:19:::0;::::1;23390:73;;23426:13;:28:::0;23278:194::o;22212:307::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;22278:28;22270:67;;;;-1:-1:-1;;;22270:67:0;;;;;;;:::i;:::-;22348:10;:20;;-1:-1:-1;;;;;22348:20:0;;;-1:-1:-1;;;;;;22348:20:0;;;;;;;:10;22379:27;;;:18;:27;;;;;;;;:34;;-1:-1:-1;;22379:34:0;;;22348:20;22379:34;;;;;;22424:20;:29;;;;;:36;;;;;;;;22471:24;:33;;;;;:40;;;;;;;;;;22212:307::o;21950:254::-;22018:4;22035:19;22075:15;;;;;;;;;-1:-1:-1;;;;;22075:15:0;-1:-1:-1;;;;;22075:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22057:66:0;;22132:4;22139:11;22057:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22169:27:0;;;;;:14;:27;;;;;;;;;21950:254;-1:-1:-1;;;21950:254:0:o;16220:447::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16417:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16416:21;16408:61;;;::::0;-1:-1:-1;;;16408:61:0;;8744:2:1;16408:61:0::1;::::0;::::1;8726:21:1::0;8783:2;8763:18;;;8756:30;8822:29;8802:18;;;8795:57;8869:18;;16408:61:0::1;8716:177:1::0;16408:61:0::1;-1:-1:-1::0;;;;;16483:16:0;::::1;16502:1;16483:16:::0;;;:7:::1;:16;::::0;;;;;:20;16480:108:::1;;-1:-1:-1::0;;;;;16559:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;16539:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;16520:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;16480:108:::1;-1:-1:-1::0;;;;;16598:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;16598:27:0::1;16621:4;16598:27:::0;;::::1;::::0;;;16636:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;16636:23:0::1;::::0;;::::1;::::0;;16220:447::o;19519:1153::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;19587:28;19579:67;;;;-1:-1:-1;;;19579:67:0;;;;;;;:::i;:::-;19661:6;19657:1008;;;19684:19;19724:15;;;;;;;;;-1:-1:-1;;;;;19724:15:0;-1:-1:-1;;;;;19724:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19706:70:0;;19785:4;19792:15;;;;;;;;;-1:-1:-1;;;;;19792:15:0;-1:-1:-1;;;;;19792:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19706:109;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19684:131;-1:-1:-1;;;;;;19836:25:0;;19832:196;;19914:15;;;;;;;;;-1:-1:-1;;;;;19914:15:0;-1:-1:-1;;;;;19914:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19896:77:0;;19982:4;19989:15;;;;;;;;;-1:-1:-1;;;;;19989:15:0;-1:-1:-1;;;;;19989:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19896:116;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19882:130;;19832:196;20044:13;:27;;-1:-1:-1;;;;;20044:27:0;;;-1:-1:-1;;;;;;20044:27:0;;;;;;;:13;20086:27;;;:14;:27;;;;;;;;:35;;-1:-1:-1;;20086:35:0;;;;;;20136:19;:28;;;;;-1:-1:-1;;;20136:28:0;-1:-1:-1;;;;20136:28:0;;;;;;20204:13;;;;;20179:39;;:24;:39;;;;;;:46;;;;;20044:27;20179:46;;;23108:158;:::o;19657:1008::-;20260:19;20300:15;;;;;;;;;-1:-1:-1;;;;;20300:15:0;-1:-1:-1;;;;;20300:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20368:4;;20282:91;;-1:-1:-1;;;20282:91:0;;-1:-1:-1;;;;;20282:70:0;;;;;;:91;;20361:4;;20368;;;;20282:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20260:113;-1:-1:-1;;;;;;20394:25:0;;20390:178;;20472:15;;;;;;;;;-1:-1:-1;;;;;20472:15:0;-1:-1:-1;;;;;20472:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20547:4;;20454:98;;-1:-1:-1;;;20454:98:0;;-1:-1:-1;;;;;20454:77:0;;;;;;:98;;20540:4;;20547;;;;20454:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20440:112;;20390:178;20584:13;:27;;-1:-1:-1;;;;;;20584:27:0;-1:-1:-1;;;;;20584:27:0;;;;;;;;;;-1:-1:-1;20626:19:0;:27;;-1:-1:-1;;;;20626:27:0;;;19519:1153::o;23968:180::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24062:1:::1;24048:11;:15:::0;24091:3:::1;24077:17:::0;::::1;24074:67;;24108:11;:24:::0;23968:180::o;15008:108::-;15086:22;15104:4;15086:15;:22;:::i;:::-;2610:10;15061:22;;;;:8;:22;;;;;:47;-1:-1:-1;15008:108:0:o;13084:198::-;-1:-1:-1;;;;;13174:20:0;;13150:7;13174:20;;;:11;:20;;;;;;;;13170:49;;;-1:-1:-1;;;;;;13203:16:0;;;;;:7;:16;;;;;;;13084:198::o;13170:49::-;-1:-1:-1;;;;;13257:16:0;;;;;;:7;:16;;;;;;13237:37;;:19;:37::i;6500:148::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;6607:1:::1;6591:6:::0;;6570:40:::1;::::0;-1:-1:-1;;;;;6591:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6570:40:0;6607:1;;6570:40:::1;6638:1;6621:19:::0;;-1:-1:-1;;;;;;6621:19:0::1;::::0;;6500:148::o;21413:529::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;21503:28;21495:67;;;;-1:-1:-1;;;21495:67:0;;;;;;;:::i;:::-;21573:19;21613:15;;;;;;;;;-1:-1:-1;;;;;21613:15:0;-1:-1:-1;;;;;21613:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21595:66:0;;21670:4;21677:11;21595:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21573:116;-1:-1:-1;;;;;;21710:25:0;;21706:181;;21788:15;;;;;;;;;-1:-1:-1;;;;;21788:15:0;-1:-1:-1;;;;;21788:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21770:73:0;;21852:4;21859:11;21770:101;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21756:115;;21706:181;-1:-1:-1;;;;;21897:27:0;;;;;:14;:27;;;;;:37;;-1:-1:-1;;21897:37:0;;;;;;;;;;-1:-1:-1;21413:529:0:o;24670:193::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24741:49:::1;24774:5;24741:14;24753:1;24741:7;;:11;;:14;;;;:::i;:::-;:18:::0;::::1;:49::i;:::-;24726:12;:64:::0;24801:14:::1;:12;:14::i;:::-;24826:21;:29:::0;;-1:-1:-1;;;;24826:29:0::1;::::0;;24670:193::o;23816:144::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;23890:1:::1;23879:8;:12:::0;23912:4:::1;23905:11:::0;::::1;23902:51;;23930:8;:14:::0;23816:144::o;24160:194::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24260:1:::1;24244:13;:17:::0;24291:3:::1;24275:19:::0;::::1;24272:73;;24308:13;:28:::0;24160:194::o;18757:121::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;18841:17:::1;:29:::0;;-1:-1:-1;;;;;;18841:29:0::1;-1:-1:-1::0;;;;;18841:29:0;;;::::1;::::0;;;::::1;::::0;;18757:121::o;12795:87::-;12834:13;12867:7;12860:14;;;;;:::i;36266:348::-;36370:15;;-1:-1:-1;;;;;36370:15:0;2610:10;-1:-1:-1;;;;;36354:31:0;;:63;;;-1:-1:-1;6346:11:0;;-1:-1:-1;;;;;6346:11:0;2610:10;36389:28;36354:63;36346:92;;;;-1:-1:-1;;;36346:92:0;;11753:2:1;36346:92:0;;;11735:21:1;11792:2;11772:18;;;11765:30;-1:-1:-1;;;11811:18:1;;;11804:46;11867:18;;36346:92:0;11725:166:1;36346:92:0;36453:6;36449:158;;;-1:-1:-1;;;;;36493:14:0;;;;;;:6;:14;;;;;;:26;;36512:6;36493:18;:26::i;:::-;-1:-1:-1;;;;;36476:14:0;;;;;;:6;:14;;;;;:43;36266:348;;;:::o;36449:158::-;-1:-1:-1;;;;;36569:14:0;;;;;;:6;:14;;;;;;:26;;36588:6;36569:18;:26::i;36449:158::-;36266:348;;;:::o;25463:221::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;25555:28;25547:67;;;;-1:-1:-1;;;25547:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25625:29:0;;;2610:10;25625:51;;-1:-1:-1;;;;;;25625:51:0;;;;;;;-1:-1:-1;;;;;5440:32:1;;;25625:51:0;;;5422::1;5489:18;;;5482:34;;;5395:18;;25625:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18229:151::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18329:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;18329:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18229:151::o;14504:269::-;14597:4;14614:129;2610:10;14637:7;14646:96;14685:15;14646:96;;;;;;;;;;;;;;;;;2610:10;14646:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14646:34:0;;;;;;;;;;;;:38;:96::i;7243:305::-;7295:14;;-1:-1:-1;;;;;7295:14:0;7313:10;7295:28;7287:76;;;;-1:-1:-1;;;7287:76:0;;15498:2:1;7287:76:0;;;15480:21:1;15537:2;15517:18;;;15510:30;15576:34;15556:18;;;15549:62;-1:-1:-1;;;15627:18:1;;;15620:33;15670:19;;7287:76:0;15470:225:1;7287:76:0;7400:9;;7382:15;:27;7374:72;;;;-1:-1:-1;;;7374:72:0;;13609:2:1;7374:72:0;;;13591:21:1;13648:2;13628:18;;;13621:30;13687:33;13667:18;;;13660:61;13738:18;;7374:72:0;13581:181:1;7374:72:0;7491:14;;;7483:6;;7462:44;;-1:-1:-1;;;;;7491:14:0;;;;7483:6;;;;-1:-1:-1;;;;;;;;;;;7462:44:0;;7526:14;;;7517:23;;-1:-1:-1;;;;;;7517:23:0;-1:-1:-1;;;;;7526:14:0;;;7517:23;;;;;;7243:305::o;13294:254::-;2610:10;13372:4;13415:22;;;:8;:22;;;;;;13397:15;:40;13389:76;;;;-1:-1:-1;;;13389:76:0;;13969:2:1;13389:76:0;;;13951:21:1;14008:2;13988:18;;;13981:30;-1:-1:-1;;;14027:18:1;;;14020:52;14089:18;;13389:76:0;13941:172:1;13389:76:0;13476:42;2610:10;13500:9;13511:6;13476:9;:42::i;20680:725::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;20751:28;20743:67;;;;-1:-1:-1;;;20743:67:0;;;;;;;:::i;:::-;20927:19;20967:15;;;;;;;;;-1:-1:-1;;;;;20967:15:0;-1:-1:-1;;;;;20967:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20949:66:0;;21024:4;21031:7;20949:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20927:112;-1:-1:-1;;;;;;21058:25:0;;21054:191;;21136:15;;;;;;;;;-1:-1:-1;;;;;21136:15:0;-1:-1:-1;;;;;21136:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21118:73:0;;21200:4;21207:7;21118:97;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21104:111;;21054:191;-1:-1:-1;;;;;21259:27:0;21289:5;21259:27;;;:14;:27;;;;;;;;:35;;-1:-1:-1;;21259:35:0;;;;;;21309:13;:27;;-1:-1:-1;;;;;;21309:27:0;;;;;;;21351:24;:39;;;;;:46;;;;;21259:35;21351:46;;;-1:-1:-1;20680:725:0:o;24366:103::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24446:15:::1;:5:::0;24454:7:::1;24446:15;:::i;:::-;24431:12;:30:::0;-1:-1:-1;24366:103:0:o;19337:174::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;19409:28;19401:67;;;;-1:-1:-1;;;19401:67:0;;;;;;;:::i;:::-;19479:15;:24;;-1:-1:-1;;;;;19479:24:0;;;;;-1:-1:-1;;;;;;19479:24:0;;;;;;;;;19337:174::o;24477:171::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24554:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;24554:32:0::1;-1:-1:-1::0;;;;24554:32:0;;::::1;;::::0;;24602:38:::1;::::0;::::1;::::0;::::1;::::0;24578:8;5692:14:1;5685:22;5667:41;;5655:2;5640:18;;5622:92;24602:38:0::1;;;;;;;;24477:171:::0;:::o;25152:264::-;6346:11;;-1:-1:-1;;;;;6346:11:0;2610:10;25230:28;25222:67;;;;-1:-1:-1;;;25222:67:0;;;;;;;:::i;:::-;25316:48;;25301:9;;2610:10;;25350:9;;25301;25316:48;25301:9;25316:48;25350:9;2610:10;25316:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25300:64;;;25383:4;25375:33;;;;-1:-1:-1;;;25375:33:0;;13264:2:1;25375:33:0;;;13246:21:1;13303:2;13283:18;;;13276:30;-1:-1:-1;;;13322:18:1;;;13315:46;13378:18;;25375:33:0;13236:166:1;18648:97:0;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;18720:11:::1;:17:::0;;-1:-1:-1;;;;;;18720:17:0::1;-1:-1:-1::0;;;;;18720:17:0;;;::::1;::::0;;;::::1;::::0;;18648:97::o;7005:226::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;7086:6:::1;::::0;;;7069:23;;-1:-1:-1;;;;;;7069:23:0;;::::1;-1:-1:-1::0;;;;;7086:6:0;::::1;7069:23;::::0;;;7103:19:::1;::::0;;7145:22:::1;7163:4:::0;7145:15:::1;:22;:::i;:::-;7133:9;:34:::0;7220:1:::1;7204:6:::0;;7183:40:::1;::::0;-1:-1:-1;;;;;7204:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7183:40:0;7220:1;;7183:40:::1;7005:226:::0;:::o;18386:126::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;18482:22:::1;:12:::0;18497:7:::1;18482:22;:::i;:::-;18465:14;:39:::0;-1:-1:-1;18386:126:0:o;22763:110::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22830:27:0::1;22860:5;22830:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;22830:35:0::1;::::0;;22763:110::o;24877:170::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;24959:15:::1;:5:::0;24967:7:::1;24959:15;:::i;:::-;24944:12;:30:::0;24985:15:::1;29474::::0;;29464:7;:25;29516:21;;29500:13;:37;29558:15;;29548:7;:25;29600:21;;29584:13;:37;29646:19;;29632:11;:33;29690:19;;29676:11;:33;29730:15;;29720:7;:25;29767:16;;29756:8;:27;29420:371;24985:15:::1;-1:-1:-1::0;25011:21:0::1;:28:::0;;-1:-1:-1;;;;25011:28:0::1;-1:-1:-1::0;;;25011:28:0::1;::::0;;24877:170::o;6656:244::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6745:22:0;::::1;6737:73;;;::::0;-1:-1:-1;;;6737:73:0;;7578:2:1;6737:73:0::1;::::0;::::1;7560:21:1::0;7617:2;7597:18;;;7590:30;7656:34;7636:18;;;7629:62;-1:-1:-1;;;7707:18:1;;;7700:36;7753:19;;6737:73:0::1;7550:228:1::0;6737:73:0::1;6847:6;::::0;;6826:38:::1;::::0;-1:-1:-1;;;;;6826:38:0;;::::1;::::0;6847:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6826:38:0;::::1;6875:6;:17:::0;;-1:-1:-1;;;;;;6875:17:0::1;-1:-1:-1::0;;;;;6875:17:0;;;::::1;::::0;;;::::1;::::0;;6656:244::o;18886:113::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;18966:15:::1;:25:::0;;-1:-1:-1;;;;;;18966:25:0::1;-1:-1:-1::0;;;;;18966:25:0;;;::::1;::::0;;;::::1;::::0;;18886:113::o;18520:120::-;6413:6;;-1:-1:-1;;;;;6413:6:0;2610:10;6413:22;6405:67;;;;-1:-1:-1;;;6405:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18605:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:27;;-1:-1:-1;;18605:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18520:120::o;1502:250::-;1560:7;1584:6;1580:47;;-1:-1:-1;1614:1:0;1607:8;;1580:47;1639:9;1651:5;1655:1;1651;:5;:::i;:::-;1639:17;-1:-1:-1;1684:1:0;1675:5;1679:1;1639:17;1675:5;:::i;:::-;:10;1667:56;;;;-1:-1:-1;;;1667:56:0;;10580:2:1;1667:56:0;;;10562:21:1;10619:2;10599:18;;;10592:30;10658:34;10638:18;;;10631:62;-1:-1:-1;;;10709:18:1;;;10702:31;10750:19;;1667:56:0;10552:223:1;1760:132:0;1818:7;1845:39;1849:1;1852;1845:39;;;;;;;;;;;;;;;;;:3;:39::i;29934:337::-;-1:-1:-1;;;;;30027:19:0;;30019:68;;;;-1:-1:-1;;;30019:68:0;;12859:2:1;30019:68:0;;;12841:21:1;12898:2;12878:18;;;12871:30;12937:34;12917:18;;;12910:62;-1:-1:-1;;;12988:18:1;;;12981:34;13032:19;;30019:68:0;12831:226:1;30019:68:0;-1:-1:-1;;;;;30106:21:0;;30098:68;;;;-1:-1:-1;;;30098:68:0;;7985:2:1;30098:68:0;;;7967:21:1;8024:2;8004:18;;;7997:30;8063:34;8043:18;;;8036:62;-1:-1:-1;;;8114:18:1;;;8107:32;8156:19;;30098:68:0;7957:224:1;30098:68:0;-1:-1:-1;;;;;30179:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30231:32;;15846:25:1;;;30231:32:0;;15819:18:1;30231:32:0;;;;;;;29934:337;;;:::o;30279:2907::-;-1:-1:-1;;;;;30401:18:0;;30393:68;;;;-1:-1:-1;;;30393:68:0;;12098:2:1;30393:68:0;;;12080:21:1;12137:2;12117:18;;;12110:30;12176:34;12156:18;;;12149:62;-1:-1:-1;;;12227:18:1;;;12220:35;12272:19;;30393:68:0;12070:227:1;30393:68:0;-1:-1:-1;;;;;30480:16:0;;30472:64;;;;-1:-1:-1;;;30472:64:0;;6763:2:1;30472:64:0;;;6745:21:1;6802:2;6782:18;;;6775:30;6841:34;6821:18;;;6814:62;-1:-1:-1;;;6892:18:1;;;6885:33;6935:19;;30472:64:0;6735:225:1;30472:64:0;-1:-1:-1;;;;;30555:18:0;;;;;;:14;:18;;;;;;;;:27;30547:63;;;;-1:-1:-1;;;30547:63:0;;9100:2:1;30547:63:0;;;9082:21:1;9139:2;9119:18;;;9112:30;9178:25;9158:18;;;9151:53;9221:18;;30547:63:0;9072:173:1;30547:63:0;30638:1;30629:6;:10;30621:64;;;;-1:-1:-1;;;30621:64:0;;11343:2:1;30621:64:0;;;11325:21:1;11382:2;11362:18;;;11355:30;11421:34;11401:18;;;11394:62;-1:-1:-1;;;11472:18:1;;;11465:39;11521:19;;30621:64:0;11315:231:1;30621:64:0;-1:-1:-1;;;;;30700:28:0;;;;;;:24;:28;;;;;;;;30696:148;;30782:14;;30753:25;30771:6;30753:13;30763:2;30753:9;:13::i;:::-;:17;;:25::i;:::-;:43;;30745:87;;;;-1:-1:-1;;;30745:87:0;;14725:2:1;30745:87:0;;;14707:21:1;14764:2;14744:18;;;14737:30;14803:33;14783:18;;;14776:61;14854:18;;30745:87:0;14697:181:1;30745:87:0;-1:-1:-1;;;;;30858:26:0;;;;;;:20;:26;;;;;;;;:35;;;:72;;-1:-1:-1;;;;;;30897:24:0;;;;;;:20;:24;;;;;;;;:33;30858:72;30854:180;;;30965:12;;30955:6;:22;;30947:75;;;;-1:-1:-1;;;30947:75:0;;10171:2:1;30947:75:0;;;10153:21:1;10210:2;10190:18;;;10183:30;10249:34;10229:18;;;10222:62;-1:-1:-1;;;10300:18:1;;;10293:38;10348:19;;30947:75:0;10143:230:1;30947:75:0;-1:-1:-1;;;;;31094:12:0;;31109:1;31094:12;;;:6;:12;;;;;;:16;31090:135;;-1:-1:-1;;;;;31165:12:0;;;;;;:6;:12;;;;;;31145:33;;:15;31172:4;31145:9;:15::i;:::-;:19;;:33::i;:::-;31135:6;:43;;31127:86;;;;-1:-1:-1;;;31127:86:0;;9452:2:1;31127:86:0;;;9434:21:1;9491:2;9471:18;;;9464:30;9530:32;9510:18;;;9503:60;9580:18;;31127:86:0;9424:180:1;31127:86:0;-1:-1:-1;;;;;31245:15:0;;;;;;:9;:15;;;;;;;;;:32;;-1:-1:-1;;;;;;31264:13:0;;;;;;:9;:13;;;;;;;;31245:32;31243:35;31235:84;;;;-1:-1:-1;;;31235:84:0;;14320:2:1;31235:84:0;;;14302:21:1;14359:2;14339:18;;;14332:30;14398:34;14378:18;;;14371:62;-1:-1:-1;;;14449:18:1;;;14442:34;14493:19;;31235:84:0;14292:226:1;31235:84:0;31614:28;31645:24;31663:4;31645:9;:24::i;:::-;31614:55;;31717:12;;31693:20;:36;31690:112;;-1:-1:-1;31778:12:0;;31690:112;31873:29;;31849:53;;;;;;;31931;;-1:-1:-1;31968:16:0;;-1:-1:-1;;;31968:16:0;;;;31967:17;31931:53;:91;;;;-1:-1:-1;32009:13:0;;-1:-1:-1;;;;;32001:21:0;;;32009:13;;32001:21;;31931:91;:129;;;;-1:-1:-1;32039:21:0;;-1:-1:-1;;;32039:21:0;;;;31931:129;31913:690;;;32087:16;:23;;-1:-1:-1;;;;32087:23:0;;-1:-1:-1;;;32087:23:0;;;;32148:29;;;-1:-1:-1;32283:70:0;;32306:4;;-1:-1:-1;;;;;32313:10:0;32148:29;32087:23;32283:14;:70::i;:::-;32369:22;32394:31;32429:13;:11;:13::i;:::-;32461:10;;32457:95;;-1:-1:-1;;;32457:95:0;;32368:74;;-1:-1:-1;32368:74:0;;-1:-1:-1;;;;;;32461:10:0;;;32457:31;;:95;;32489:20;;32368:74;;;;-1:-1:-1;;;32532:19:0;;;;;32457:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32567:16:0;:24;;-1:-1:-1;;;;32567:24:0;;;-1:-1:-1;;;;31913:690:0;-1:-1:-1;;;;;32811:24:0;;32684:12;32811:24;;;:18;:24;;;;;;32699:4;;32811:24;;;:50;;-1:-1:-1;;;;;;32839:22:0;;;;;;:18;:22;;;;;;;;32811:50;32808:211;;;-1:-1:-1;32887:5:0;32808:211;;;32935:13;;-1:-1:-1;;;;;32929:19:0;;;32935:13;;32929:19;32925:83;;;32969:16;:23;;-1:-1:-1;;32969:23:0;32988:4;32969:23;;;32925:83;33105:38;33120:4;33125:2;33128:6;33135:7;33105:14;:38::i;:::-;-1:-1:-1;;33154:16:0;:24;;-1:-1:-1;;33154:24:0;;;-1:-1:-1;;;;30279:2907:0:o;1302:192::-;1388:7;1424:12;1416:6;;;;1408:29;;;;-1:-1:-1;;;1408:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1448:9:0;1460:5;1464:1;1460;:5;:::i;:::-;1448:17;1302:192;-1:-1:-1;;;;;1302:192:0:o;27058:163::-;27099:7;27120:15;27137;27156:19;:17;:19::i;:::-;27119:56;;-1:-1:-1;27119:56:0;-1:-1:-1;27193:20:0;27119:56;;27193:11;:20::i;:::-;27186:27;;;;27058:163;:::o;969:181::-;1027:7;;1059:5;1063:1;1059;:5;:::i;:::-;1047:17;;1088:1;1083;:6;;1075:46;;;;-1:-1:-1;;;1075:46:0;;8388:2:1;1075:46:0;;;8370:21:1;8427:2;8407:18;;;8400:30;8466:29;8446:18;;;8439:57;8513:18;;1075:46:0;8360:177:1;25851:419:0;25910:7;25919;25928;25937;25946;25955;25976:23;26001:12;26015:18;26037:20;26049:7;26037:11;:20::i;:::-;25975:82;;;;;;26069:15;26086:23;26111:12;26127:50;26139:7;26148:4;26154:10;26166;:8;:10::i;:::-;26127:11;:50::i;:::-;26068:109;;;;-1:-1:-1;26068:109:0;;-1:-1:-1;26228:15:0;;-1:-1:-1;26245:4:0;;-1:-1:-1;26251:10:0;;-1:-1:-1;25851:419:0;;-1:-1:-1;;;;;25851:419:0:o;1158:136::-;1216:7;1243:43;1247:1;1250;1243:43;;;;;;;;;;;;;;;;;:3;:43::i;28654:754::-;28700:7;;:12;:34;;;;-1:-1:-1;28716:13:0;;:18;28700:34;:56;;;;-1:-1:-1;28738:13:0;;:18;28700:56;:72;;;;-1:-1:-1;28760:7:0;;:12;28700:72;:92;;;;-1:-1:-1;28776:11:0;;:16;28700:92;:112;;;;-1:-1:-1;28796:11:0;;:16;28700:112;:128;;;;-1:-1:-1;28816:7:0;;:12;28700:128;:145;;;;-1:-1:-1;28832:8:0;;:13;28700:145;28697:157;;;28654:754::o;28697:157::-;28892:7;;;28874:15;:25;28934:13;;;28910:21;:37;28976:7;;;28958:15;:25;29018:13;;;28994:21;:37;29064:11;;;29042:19;:33;29108:11;;;29086:19;:33;29148:7;;;29130:15;:25;29185:8;;;29166:16;:27;-1:-1:-1;29214:11:0;;;;29236:17;;;;29264:11;;;;29286:17;;;;29314:15;;;29340;;;29366:11;;;29388:12;28654:754::o;1900:278::-;1986:7;2021:12;2014:5;2006:28;;;;-1:-1:-1;;;2006:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2045:9:0;2057:5;2061:1;2057;:5;:::i;33746:834::-;33857:7;33853:40;;33879:14;:12;:14::i;:::-;-1:-1:-1;;;;;33918:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;33942:22:0;;;;;;:11;:22;;;;;;;;33941:23;33918:46;33914:597;;;33981:48;34003:6;34011:9;34022:6;33981:21;:48::i;:::-;33914:597;;;-1:-1:-1;;;;;34052:19:0;;;;;;:11;:19;;;;;;;;34051:20;:46;;;;-1:-1:-1;;;;;;34075:22:0;;;;;;:11;:22;;;;;;;;34051:46;34047:464;;;34114:46;34134:6;34142:9;34153:6;34114:19;:46::i;34047:464::-;-1:-1:-1;;;;;34183:19:0;;;;;;:11;:19;;;;;;;;34182:20;:47;;;;-1:-1:-1;;;;;;34207:22:0;;;;;;:11;:22;;;;;;;;34206:23;34182:47;34178:333;;;34246:44;34264:6;34272:9;34283:6;34246:17;:44::i;34178:333::-;-1:-1:-1;;;;;34312:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;34335:22:0;;;;;;:11;:22;;;;;;;;34312:45;34308:203;;;34374:48;34396:6;34404:9;34415:6;34374:21;:48::i;34308:203::-;34455:44;34473:6;34481:9;34492:6;34455:17;:44::i;:::-;34535:7;34531:41;;34557:15;29474;;29464:7;:25;29516:21;;29500:13;:37;29558:15;;29548:7;:25;29600:21;;29584:13;:37;29646:19;;29632:11;:33;29690:19;;29676:11;:33;29730:15;;29720:7;:25;29767:16;;29756:8;:27;29420:371;34557:15;33746:834;;;;:::o;33194:471::-;33239:23;;:::i;:::-;33264:31;;:::i;:::-;33318:13;;33308:23;;33352:7;;33308;33342;;;:17;;;;33380:11;;33370:7;;;;:21;;;;33412:11;;33402:7;;;;:21;;;;33444:7;;33434;;;:17;33472:13;;33462:7;;;:23;33516:17;;-1:-1:-1;;;;;33516:17:0;;;33498:35;;33562:11;;;;33544:15;;;:29;;;;33602:15;;;;33584;;;:33;;;;33646:11;;;;;33628:15;;;:29;33308:4;;33194:471::o;27229:561::-;27326:7;;27362;;27279;;;;;27386:289;27410:9;:16;27406:20;;27386:289;;;27476:7;27452;:21;27460:9;27470:1;27460:12;;;;;;-1:-1:-1;;;27460:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27460:12:0;27452:21;;;;;;;;;;;;;:31;;:66;;;27511:7;27487;:21;27495:9;27505:1;27495:12;;;;;;-1:-1:-1;;;27495:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27495:12:0;27487:21;;;;;;;;;;;;;:31;27452:66;27448:97;;;27528:7;;27537;;27520:25;;;;;;;27229:561;;:::o;27448:97::-;27570:34;27582:7;:21;27590:9;27600:1;27590:12;;;;;;-1:-1:-1;;;27590:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27590:12:0;27582:21;;;;;;;;;;;;;27570:7;;:11;:34::i;:::-;27560:44;;27629:34;27641:7;:21;27649:9;27659:1;27649:12;;;;;;-1:-1:-1;;;27649:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27649:12:0;27641:21;;;;;;;;;;;;;27629:7;;:11;:34::i;:::-;27619:44;-1:-1:-1;27428:3:0;;;;:::i;:::-;;;;27386:289;;;-1:-1:-1;27711:7:0;;27699;;:20;;:11;:20::i;:::-;27689:7;:30;27685:61;;;27729:7;;27738;;27721:25;;;;;;27229:561;;:::o;27685:61::-;27765:7;;27774;;-1:-1:-1;27229:561:0;-1:-1:-1;27229:561:0:o;26278:335::-;26338:7;26347;26356;26376:12;26391:24;26407:7;26391:15;:24::i;:::-;26376:39;;26426:18;26447:35;26474:7;26447:26;:35::i;:::-;26426:56;-1:-1:-1;26493:23:0;26519:33;26426:56;26519:17;:7;26531:4;26519:11;:17::i;:33::-;26493:59;26588:4;;-1:-1:-1;26594:10:0;;-1:-1:-1;26278:335:0;;-1:-1:-1;;;26278:335:0:o;26621:429::-;26736:7;;;;26792:24;:7;26804:11;26792;:24::i;:::-;26774:42;-1:-1:-1;26827:12:0;26842:21;:4;26851:11;26842:8;:21::i;:::-;26827:36;-1:-1:-1;26874:18:0;26895:27;:10;26910:11;26895:14;:27::i;:::-;26874:48;-1:-1:-1;26933:23:0;26959:33;26874:48;26959:17;:7;26971:4;26959:11;:17::i;:33::-;27011:7;;;;-1:-1:-1;27037:4:0;;-1:-1:-1;26621:429:0;;-1:-1:-1;;;;;;;26621:429:0:o;35692:566::-;35795:15;35812:23;35837:12;35851:23;35876:12;35890:18;35912:19;35923:7;35912:10;:19::i;:::-;-1:-1:-1;;;;;35960:15:0;;;;;;:7;:15;;;;;;35794:137;;-1:-1:-1;35794:137:0;;-1:-1:-1;35794:137:0;;-1:-1:-1;35794:137:0;-1:-1:-1;35794:137:0;-1:-1:-1;35794:137:0;-1:-1:-1;35960:28:0;;35980:7;35960:19;:28::i;:::-;-1:-1:-1;;;;;35942:15:0;;;;;;:7;:15;;;;;;;;:46;;;;36017:7;:15;;;;:28;;36037:7;36017:19;:28::i;:::-;-1:-1:-1;;;;;35999:15:0;;;;;;;:7;:15;;;;;;:46;;;;36077:18;;;;;;;:39;;36100:15;36077:22;:39::i;:::-;-1:-1:-1;;;;;36056:18:0;;;;;;:7;:18;;;;;:60;36130:26;36145:10;36130:14;:26::i;:::-;36167:23;36179:4;36185;36167:11;:23::i;:::-;36223:9;-1:-1:-1;;;;;36206:44:0;36215:6;-1:-1:-1;;;;;36206:44:0;;36234:15;36206:44;;;;15846:25:1;;15834:2;15819:18;;15801:76;36206:44:0;;;;;;;;35692:566;;;;;;;;;:::o;35098:586::-;35199:15;35216:23;35241:12;35255:23;35280:12;35294:18;35316:19;35327:7;35316:10;:19::i;:::-;-1:-1:-1;;;;;35364:15:0;;;;;;:7;:15;;;;;;35198:137;;-1:-1:-1;35198:137:0;;-1:-1:-1;35198:137:0;;-1:-1:-1;35198:137:0;-1:-1:-1;35198:137:0;-1:-1:-1;35198:137:0;-1:-1:-1;35364:28:0;;35198:137;35364:19;:28::i;:::-;-1:-1:-1;;;;;35346:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;35424:18;;;;;:7;:18;;;;;:39;;35447:15;35424:22;:39::i;:::-;-1:-1:-1;;;;;35403:18:0;;;;;;:7;:18;;;;;;;;:60;;;;35495:7;:18;;;;:39;;35518:15;35495:22;:39::i;34588:502::-;34687:15;34704:23;34729:12;34743:23;34768:12;34782:18;34804:19;34815:7;34804:10;:19::i;:::-;-1:-1:-1;;;;;34852:15:0;;;;;;:7;:15;;;;;;34686:137;;-1:-1:-1;34686:137:0;;-1:-1:-1;34686:137:0;;-1:-1:-1;34686:137:0;-1:-1:-1;34686:137:0;-1:-1:-1;34686:137:0;-1:-1:-1;34852:28:0;;34686:137;34852:19;:28::i;17166:642::-;17269:15;17286:23;17311:12;17325:23;17350:12;17364:18;17386:19;17397:7;17386:10;:19::i;:::-;-1:-1:-1;;;;;17434:15:0;;;;;;:7;:15;;;;;;17268:137;;-1:-1:-1;17268:137:0;;-1:-1:-1;17268:137:0;;-1:-1:-1;17268:137:0;-1:-1:-1;17268:137:0;-1:-1:-1;17268:137:0;-1:-1:-1;17434:28:0;;17454:7;17434:19;:28::i;:::-;-1:-1:-1;;;;;17416:15:0;;;;;;:7;:15;;;;;;;;:46;;;;17491:7;:15;;;;:28;;17511:7;17491:19;:28::i;28169:154::-;28233:7;28260:55;28299:5;28260:20;28272:7;;28260;:11;;:20;;;;:::i;28331:305::-;28444:16;;28406:7;;;;28444:16;;:31;;28474:1;28444:31;;;28463:8;;28444:31;28426:49;;28493:135;28612:5;28493:100;28585:7;28575;;28561:11;;28547;;28531:13;;28521:7;;28505:13;;:23;;;;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;:77;;;;:::i;:::-;:87;;;;:::i;:::-;28493:7;;:11;:100::i;27802:355::-;27865:19;27888:10;:8;:10::i;:::-;27865:33;-1:-1:-1;27909:18:0;27930:27;:10;27865:33;27930:14;:27::i;:::-;28009:4;27993:22;;;;:7;:22;;;;;;27909:48;;-1:-1:-1;27993:38:0;;27909:48;27993:26;:38::i;:::-;27984:4;27968:22;;;;:7;:22;;;;;;;;:63;;;;28045:11;:26;;;;;;28042:107;;;28127:4;28111:22;;;;:7;:22;;;;;;:38;;28138:10;28111:26;:38::i;:::-;28102:4;28086:22;;;;:7;:22;;;;;:63;27802:355;;;:::o;25696:147::-;25774:7;;:17;;25786:4;25774:11;:17::i;:::-;25764:7;:27;25815:10;;:20;;25830:4;25815:14;:20::i;:::-;25802:10;:33;-1:-1:-1;;25696:147:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;812:398::-;880:6;888;941:2;929:9;920:7;916:23;912:32;909:2;;;962:6;954;947:22;909:2;1006:9;993:23;1025:31;1050:5;1025:31;:::i;:::-;1075:5;-1:-1:-1;1132:2:1;1117:18;;1104:32;1145:33;1104:32;1145:33;:::i;:::-;1197:7;1187:17;;;899:311;;;;;:::o;1215:466::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:2;;;1382:6;1374;1367:22;1329:2;1426:9;1413:23;1445:31;1470:5;1445:31;:::i;:::-;1495:5;-1:-1:-1;1552:2:1;1537:18;;1524:32;1565:33;1524:32;1565:33;:::i;:::-;1319:362;;1617:7;;-1:-1:-1;;;1671:2:1;1656:18;;;;1643:32;;1319:362::o;1686:392::-;1751:6;1759;1812:2;1800:9;1791:7;1787:23;1783:32;1780:2;;;1833:6;1825;1818:22;1780:2;1877:9;1864:23;1896:31;1921:5;1896:31;:::i;:::-;1946:5;-1:-1:-1;2003:2:1;1988:18;;1975:32;2016:30;1975:32;2016:30;:::i;2083:325::-;2151:6;2159;2212:2;2200:9;2191:7;2187:23;2183:32;2180:2;;;2233:6;2225;2218:22;2180:2;2277:9;2264:23;2296:31;2321:5;2296:31;:::i;:::-;2346:5;2398:2;2383:18;;;;2370:32;;-1:-1:-1;;;2170:238:1:o;2413:460::-;2487:6;2495;2503;2556:2;2544:9;2535:7;2531:23;2527:32;2524:2;;;2577:6;2569;2562:22;2524:2;2621:9;2608:23;2640:31;2665:5;2640:31;:::i;:::-;2690:5;-1:-1:-1;2742:2:1;2727:18;;2714:32;;-1:-1:-1;2798:2:1;2783:18;;2770:32;2811:30;2770:32;2811:30;:::i;:::-;2860:7;2850:17;;;2514:359;;;;;:::o;2878:251::-;2934:6;2987:2;2975:9;2966:7;2962:23;2958:32;2955:2;;;3008:6;3000;2993:22;2955:2;3052:9;3039:23;3071:28;3093:5;3071:28;:::i;3134:255::-;3201:6;3254:2;3242:9;3233:7;3229:23;3225:32;3222:2;;;3275:6;3267;3260:22;3222:2;3312:9;3306:16;3331:28;3353:5;3331:28;:::i;3682:190::-;3741:6;3794:2;3782:9;3773:7;3769:23;3765:32;3762:2;;;3815:6;3807;3800:22;3762:2;-1:-1:-1;3843:23:1;;3752:120;-1:-1:-1;3752:120:1:o;3877:319::-;3942:6;3950;4003:2;3991:9;3982:7;3978:23;3974:32;3971:2;;;4024:6;4016;4009:22;3971:2;4065:9;4052:23;4042:33;;4125:2;4114:9;4110:18;4097:32;4138:28;4160:5;4138:28;:::i;4939:304::-;-1:-1:-1;;;;;5169:15:1;;;5151:34;;5221:15;;5216:2;5201:18;;5194:43;5101:2;5086:18;;5068:175::o;5953:603::-;6065:4;6094:2;6123;6112:9;6105:21;6155:6;6149:13;6198:6;6193:2;6182:9;6178:18;6171:34;6223:4;6236:140;6250:6;6247:1;6244:13;6236:140;;;6345:14;;;6341:23;;6335:30;6311:17;;;6330:2;6307:26;6300:66;6265:10;;6236:140;;;6394:6;6391:1;6388:13;6385:2;;;6464:4;6459:2;6450:6;6439:9;6435:22;6431:31;6424:45;6385:2;-1:-1:-1;6540:2:1;6519:15;-1:-1:-1;;6515:29:1;6500:45;;;;6547:2;6496:54;;6074:482;-1:-1:-1;;;6074:482:1:o;10780:356::-;10982:2;10964:21;;;11001:18;;;10994:30;11060:34;11055:2;11040:18;;11033:62;11127:2;11112:18;;10954:182::o;12302:350::-;12504:2;12486:21;;;12543:2;12523:18;;;12516:30;12582:28;12577:2;12562:18;;12555:56;12643:2;12628:18;;12476:176::o;15882:1039::-;16199:25;;;16186:3;16171:19;;16243:2;16265:18;;;16325:6;16144:4;16359:167;16373:4;16370:1;16367:11;16359:167;;;16432:13;;16420:26;;16466:12;;;;16501:15;;;;16393:1;16386:9;16359:167;;;16363:3;;;16563;16552:9;16548:19;16615:6;16641:1;16651:211;16667:4;16662:3;16659:13;16651:211;;;16736:15;;-1:-1:-1;;;;;16732:41:1;16718:56;;16796:14;;;;16835:17;;;;16770:1;16682:11;16651:211;;;-1:-1:-1;;;;4271:13:1;;4264:21;16910:3;16895:19;;4252:34;16153:768;;;;;;;:::o;17115:128::-;17155:3;17186:1;17182:6;17179:1;17176:13;17173:2;;;17192:18;;:::i;:::-;-1:-1:-1;17228:9:1;;17163:80::o;17248:217::-;17288:1;17314;17304:2;;-1:-1:-1;;;17339:31:1;;17393:4;17390:1;17383:15;17421:4;17346:1;17411:15;17304:2;-1:-1:-1;17450:9:1;;17294:171::o;17470:168::-;17510:7;17576:1;17572;17568:6;17564:14;17561:1;17558:21;17553:1;17546:9;17539:17;17535:45;17532:2;;;17583:18;;:::i;:::-;-1:-1:-1;17623:9:1;;17522:116::o;17643:125::-;17683:4;17711:1;17708;17705:8;17702:2;;;17716:18;;:::i;:::-;-1:-1:-1;17753:9:1;;17692:76::o;17773:380::-;17852:1;17848:12;;;;17895;;;17916:2;;17970:4;17962:6;17958:17;17948:27;;17916:2;18023;18015:6;18012:14;17992:18;17989:38;17986:2;;;18069:10;18064:3;18060:20;18057:1;18050:31;18104:4;18101:1;18094:15;18132:4;18129:1;18122:15;17986:2;;17828:325;;;:::o;18158:135::-;18197:3;-1:-1:-1;;18218:17:1;;18215:2;;;18238:18;;:::i;:::-;-1:-1:-1;18285:1:1;18274:13;;18205:88::o;18298:127::-;18359:10;18354:3;18350:20;18347:1;18340:31;18390:4;18387:1;18380:15;18414:4;18411:1;18404:15;18430:131;-1:-1:-1;;;;;18505:31:1;;18495:42;;18485:2;;18551:1;18548;18541:12;18566:118;18652:5;18645:13;18638:21;18631:5;18628:32;18618:2;;18674:1;18671;18664:12
Swarm Source
ipfs://b9562b30fbfffd4450edc236ec48e9dc17a2c83933fd6d4d5862da10a1bc42d7
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.