ETH Price: $2,669.80 (+1.73%)

Token

DeepDefiCapital (DDC)
 

Overview

Max Total Supply

1,000,000,000,000 DDC

Holders

98

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,590,466,267.002524822 DDC

Value
$0.00
0x94C59fE77E984fd5E87C1b68c665274594fD02f0
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DeepDefiCapital

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-01
*/

/**
 
DeepDefiCapital.com
 
t.me/DeepDefiCapital

https://twitter.com/DeepDefiCapital

https://medium.com/@deepdeficapital/deep-defi-capital-634bffd1299c

Deep Defi Capital is an alternative investment firm with a key focus in decentralised investments. 
By operating within the defi space, all investors can partake within the protocol with anonymity, 
flexibility and accessibility.

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;

    abstract contract Context {
        function _msgSender() internal view virtual returns (address payable) {
            return msg.sender;
        }

        function _msgData() internal view virtual returns (bytes memory) {
            this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
            return msg.data;
        }
    }

    interface IERC20 {
        
        function totalSupply() external view returns (uint256);

        function balanceOf(address account) external view returns (uint256);

        function transfer(address recipient, uint256 amount) external returns (bool);

        function allowance(address owner, address spender) external view returns (uint256);

        function approve(address spender, uint256 amount) external returns (bool);

        function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

        event Transfer(address indexed from, address indexed to, uint256 value);

        event Approval(address indexed owner, address indexed spender, uint256 value);
    }

    library SafeMath {
        
        function add(uint256 a, uint256 b) internal pure returns (uint256) {
            uint256 c = a + b;
            require(c >= a, "SafeMath: addition overflow");

            return c;
        }

        
        function sub(uint256 a, uint256 b) internal pure returns (uint256) {
            return sub(a, b, "SafeMath: subtraction overflow");
        }

        
        function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b <= a, errorMessage);
            uint256 c = a - b;

            return c;
        }


        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) {
                return 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;
        }
    }

    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;
        uint256 private _lockTime;

        event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

        
        constructor () internal {
            address msgSender = _msgSender();
            _owner = msgSender;
            emit OwnershipTransferred(address(0), msgSender);
        }

        
        function owner() public view returns (address) {
            return _owner;
        }

        
        modifier onlyOwner() {
            require(_owner == _msgSender(), "Ownable: caller is not the owner");
            _;
        }

       
        function renounceOwnership() public virtual onlyOwner {
            emit OwnershipTransferred(_owner, address(0));
            _owner = address(0);
        }

        
        function transferOwnership(address newOwner) public virtual onlyOwner {
            require(newOwner != address(0), "Ownable: new owner is the zero address");
            emit OwnershipTransferred(_owner, newOwner);
            _owner = newOwner;
        }

        function geUnlockTime() public view returns (uint256) {
            return _lockTime;
        }

        //Locks the contract for owner for the amount of time provided
        function lock(uint256 time) public virtual onlyOwner {
            _previousOwner = _owner;
            _owner = address(0);
            _lockTime = now + time;
            emit OwnershipTransferred(_owner, address(0));
        }

        //Unlocks the contract for owner when _lockTime is exceeds
        function unlock() public virtual {
            require(_previousOwner == msg.sender, "You don't have permission to unlock");
            require(now > _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 feeTo() external view returns (address);
        function feeToSetter() external view returns (address);

        function getPair(address tokenA, address tokenB) external view returns (address pair);
        function allPairs(uint) external view returns (address pair);
        function allPairsLength() external view returns (uint);

        function createPair(address tokenA, address tokenB) external returns (address pair);

        function setFeeTo(address) external;
        function setFeeToSetter(address) external;
    }

    interface IUniswapV2Pair {
        event Approval(address indexed owner, address indexed spender, uint value);
        event Transfer(address indexed from, address indexed to, uint value);

        function name() external pure returns (string memory);
        function symbol() external pure returns (string memory);
        function decimals() external pure returns (uint8);
        function totalSupply() external view returns (uint);
        function balanceOf(address owner) external view returns (uint);
        function allowance(address owner, address spender) external view returns (uint);

        function approve(address spender, uint value) external returns (bool);
        function transfer(address to, uint value) external returns (bool);
        function transferFrom(address from, address to, uint value) external returns (bool);

        function DOMAIN_SEPARATOR() external view returns (bytes32);
        function PERMIT_TYPEHASH() external pure returns (bytes32);
        function nonces(address owner) external view returns (uint);

        function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

        event Mint(address indexed sender, uint amount0, uint amount1);
        event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
        event Swap(
            address indexed sender,
            uint amount0In,
            uint amount1In,
            uint amount0Out,
            uint amount1Out,
            address indexed to
        );
        event Sync(uint112 reserve0, uint112 reserve1);

        function MINIMUM_LIQUIDITY() external pure returns (uint);
        function factory() external view returns (address);
        function token0() external view returns (address);
        function token1() external view returns (address);
        function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
        function price0CumulativeLast() external view returns (uint);
        function price1CumulativeLast() external view returns (uint);
        function kLast() external view returns (uint);

        function mint(address to) external returns (uint liquidity);
        function burn(address to) external returns (uint amount0, uint amount1);
        function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
        function skim(address to) external;
        function sync() external;

        function initialize(address, address) external;
    }

    interface IUniswapV2Router01 {
        function factory() external pure returns (address);
        function WETH() external pure returns (address);

        function addLiquidity(
            address tokenA,
            address tokenB,
            uint amountADesired,
            uint amountBDesired,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB, uint liquidity);
        function addLiquidityETH(
            address token,
            uint amountTokenDesired,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
        function removeLiquidity(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETH(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external returns (uint amountToken, uint amountETH);
        function removeLiquidityWithPermit(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETHWithPermit(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountToken, uint amountETH);
        function swapExactTokensForTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapTokensForExactTokens(
            uint amountOut,
            uint amountInMax,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);
        function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);

        function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
        function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
        function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
        function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
        function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
    }

    interface IUniswapV2Router02 is IUniswapV2Router01 {
        function removeLiquidityETHSupportingFeeOnTransferTokens(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external returns (uint amountETH);
        function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountETH);

        function swapExactTokensForTokensSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
        function swapExactETHForTokensSupportingFeeOnTransferTokens(
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external payable;
        function swapExactTokensForETHSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
    }

 
    contract DeepDefiCapital is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

        mapping (address => uint256) private _rOwned;
        mapping (address => uint256) private _tOwned;
        mapping (address => mapping (address => uint256)) private _allowances;

        mapping (address => bool) private _isExcludedFromFee;

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;

        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 1000000000000 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'DeepDefiCapital';
        string private _symbol = 'DDC';
        uint8 private _decimals = 9;

        uint256 private _taxFee = 10;
        uint256 private _teamFee = 10;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousTeamFee = _teamFee;

        address payable public _PrincipalProtectionWalletAddress;
        address payable public _YieldFarmingWalletAddress;

        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 1000000000000 * 10**9;
        
        uint256 private _numOfTokensToExchangeForTeam = 5 * 10**3 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

        modifier lockTheSwap {
            inSwap = true;
            _;
            inSwap = false;
        }

        constructor (address payable PrincipalProtectionWalletAddress, address payable YieldFarmingWalletAddress) public {
            _PrincipalProtectionWalletAddress = PrincipalProtectionWalletAddress;
            _YieldFarmingWalletAddress = YieldFarmingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network
            
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());

            
            uniswapV2Router = _uniswapV2Router;

            
            _isExcludedFromFee[owner()] = true;
            _isExcludedFromFee[address(this)] = true;

            emit Transfer(address(0), _msgSender(), _tTotal);
        }

        function name() public view returns (string memory) {
            return _name;
        }

        function symbol() public view returns (string memory) {
            return _symbol;
        }

        function decimals() public view returns (uint8) {
            return _decimals;
        }

        function totalSupply() public view override returns (uint256) {
            return _tTotal;
        }

        function balanceOf(address account) public view override returns (uint256) {
            if (_isExcluded[account]) return _tOwned[account];
            return tokenFromReflection(_rOwned[account]);
        }

        function transfer(address recipient, uint256 amount) public override returns (bool) {
            _transfer(_msgSender(), recipient, amount);
            return true;
        }

        function allowance(address owner, address spender) public view override returns (uint256) {
            return _allowances[owner][spender];
        }

        function approve(address spender, uint256 amount) public override returns (bool) {
            _approve(_msgSender(), spender, amount);
            return true;
        }

        function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
            _transfer(sender, recipient, amount);
            _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
            return true;
        }

        function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
            _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
            return true;
        }

        function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
            _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
            return true;
        }

        function isExcluded(address account) public view returns (bool) {
            return _isExcluded[account];
        }

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

        function totalFees() public view returns (uint256) {
            return _tFeeTotal;
        }

        function deliver(uint256 tAmount) public {
            address sender = _msgSender();
            require(!_isExcluded[sender], "Excluded addresses cannot call this function");
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rTotal = _rTotal.sub(rAmount);
            _tFeeTotal = _tFeeTotal.add(tAmount);
        }

        function reflectionFromToken(uint256 tAmount, bool deductTransferFee) 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 excludeAccount(address account) external 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 includeAccount(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 removeAllFee() private {
            if(_taxFee == 0 && _teamFee == 0) return;

            _previousTaxFee = _taxFee;
            _previousTeamFee = _teamFee;

            _taxFee = 0;
            _teamFee = 0;
        }

        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _teamFee = _previousTeamFee;
        }

        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 sender, address recipient, uint256 amount) private {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");

            if(sender != owner() && recipient != owner())
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

            
            uint256 contractTokenBalance = balanceOf(address(this));

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                
                swapTokensForEth(contractTokenBalance);

                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToTeam(address(this).balance);
                }
            }

            
            bool takeFee = true;

            
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }

            
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

        function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniswapV2Router.WETH();

            _approve(address(this), address(uniswapV2Router), tokenAmount);

            
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0, 
                path,
                address(this),
                block.timestamp
            );
        }

        function sendETHToTeam(uint256 amount) private {
            _PrincipalProtectionWalletAddress.transfer(amount.div(2));
            _YieldFarmingWalletAddress.transfer(amount.div(2));
        }

        
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }

        function manualSend() external onlyOwner() {
            uint256 contractETHBalance = address(this).balance;
            sendETHToTeam(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }

        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 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _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 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _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 tTeam) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _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);
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _takeTeam(uint256 tTeam) private {
            uint256 currentRate =  _getRate();
            uint256 rTeam = tTeam.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tTeam);
        }

        function _reflectFee(uint256 rFee, uint256 tFee) private {
            _rTotal = _rTotal.sub(rFee);
            _tFeeTotal = _tFeeTotal.add(tFee);
        }

         
         receive() external payable {}

        function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
            (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
            uint256 currentRate =  _getRate();
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
            return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
        }

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tTeam = tAmount.mul(teamFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
            return (tTransferAmount, tFee, tTeam);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee);
            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 _getTaxFee() private view returns(uint256) {
            return _taxFee;
        }

        function _getMaxTxAmount() private view returns(uint256) {
            return _maxTxAmount;
        }

        function _getETHBalance() public view returns(uint256 balance) {
            return address(this).balance;
        }

        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 1 && taxFee <= 25, 'taxFee should be in 1 - 25');
            _taxFee = taxFee;
        }

        function _setTeamFee(uint256 teamFee) external onlyOwner() {
            require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25');
            _teamFee = teamFee;
        }

        function BridgingSetMaxTx(uint256 maxTxAmount) external onlyOwner() {
            require(maxTxAmount <= 1000000000000 * 10**9, 'maxTxAmount should be greater than 100000000000000e9');
            _maxTxAmount = maxTxAmount;
        }
        
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"PrincipalProtectionWalletAddress","type":"address"},{"internalType":"address payable","name":"YieldFarmingWalletAddress","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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"BridgingSetMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_PrincipalProtectionWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_YieldFarmingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","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":"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":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","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":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":"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":[],"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"}]

60c0604052683635c9adc5dea00000600955600954600019816200001f57fe5b0660001903600a556040518060400160405280600f81526020017f44656570446566694361706974616c0000000000000000000000000000000000815250600c908051906020019062000074929190620006d7565b506040518060400160405280600381526020017f4444430000000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c2929190620006d7565b506009600e60006101000a81548160ff021916908360ff160217905550600a600f55600a601055600f5460115560105460125560006014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff021916908315150217905550683635c9adc5dea0000060155565048c273950006016553480156200014e57600080fd5b50604051620057a2380380620057a2833981810160405260408110156200017457600080fd5b8101908080519060200190929190805190602001909291905050506000620001a1620006a660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5460036000620002d8620006a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037657600080fd5b505afa1580156200038b573d6000803e3d6000fd5b505050506040513d6020811015620003a257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041657600080fd5b505afa1580156200042b573d6000803e3d6000fd5b505050506040513d60208110156200044257600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004bd57600080fd5b505af1158015620004d2573d6000803e3d6000fd5b505050506040513d6020811015620004e957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200057d620006ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000636620006a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a35050506200077d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200071a57805160ff19168380011785556200074b565b828001600101855582156200074b579182015b828111156200074a5782518255916020019190600101906200072d565b5b5090506200075a91906200075e565b5090565b5b80821115620007795760008160009055506001016200075f565b5090565b60805160601c60a05160601c614fe7620007bb6000398061144d5280613250525080610e3452806136aa528061379652806137bd5250614fe76000f3fe6080604052600436106102295760003560e01c8063715018a611610123578063cba0e996116100ab578063f2cc0c181161006f578063f2cc0c1814610c33578063f2fde38b14610c84578063f429389014610cd5578063f815a84214610cec578063f84354f114610d1757610230565b8063cba0e99614610a8e578063dd46706414610af5578063dd62ed3e14610b30578063e01af92c14610bb5578063e9673a8114610bf257610230565b8063a457c2d7116100f2578063a457c2d71461090d578063a69df4b51461097e578063a9059cbb14610995578063af9549e014610a06578063b6c5232414610a6357610230565b8063715018a6146107ea5780637b4ee87f146108015780638da5cb5b1461083c57806395d89b411461087d57610230565b806339509351116101b157806351bc3c851161017557806351bc3c851461069f5780635342acb4146106b65780635880b8731461071d5780636ddd17131461075857806370a082311461078557610230565b806339509351146105165780633bd5d173146105875780633c1ae633146105c25780634549b0391461060357806349bd5a5e1461065e57610230565b806318160ddd116101f857806318160ddd146103a257806323b872dd146103cd578063286671621461045e5780632d83811914610499578063313ce567146104e857610230565b806306fdde0314610235578063095ea7b3146102c557806313114a9d146103365780631694505e1461036157610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610d68565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028a57808201518184015260208101905061026f565b50505050905090810190601f1680156102b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d157600080fd5b5061031e600480360360408110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e0a565b60405180821515815260200191505060405180910390f35b34801561034257600080fd5b5061034b610e28565b6040518082815260200191505060405180910390f35b34801561036d57600080fd5b50610376610e32565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103ae57600080fd5b506103b7610e56565b6040518082815260200191505060405180910390f35b3480156103d957600080fd5b50610446600480360360608110156103f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e60565b60405180821515815260200191505060405180910390f35b34801561046a57600080fd5b506104976004803603602081101561048157600080fd5b8101908080359060200190929190505050610f39565b005b3480156104a557600080fd5b506104d2600480360360208110156104bc57600080fd5b810190808035906020019092919050505061108f565b6040518082815260200191505060405180910390f35b3480156104f457600080fd5b506104fd611113565b604051808260ff16815260200191505060405180910390f35b34801561052257600080fd5b5061056f6004803603604081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061112a565b60405180821515815260200191505060405180910390f35b34801561059357600080fd5b506105c0600480360360208110156105aa57600080fd5b81019080803590602001909291905050506111dd565b005b3480156105ce57600080fd5b506105d761136e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060f57600080fd5b506106486004803603604081101561062657600080fd5b8101908080359060200190929190803515159060200190929190505050611394565b6040518082815260200191505060405180910390f35b34801561066a57600080fd5b5061067361144b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106ab57600080fd5b506106b461146f565b005b3480156106c257600080fd5b50610705600480360360208110156106d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611550565b60405180821515815260200191505060405180910390f35b34801561072957600080fd5b506107566004803603602081101561074057600080fd5b81019080803590602001909291905050506115a6565b005b34801561076457600080fd5b5061076d6116fc565b60405180821515815260200191505060405180910390f35b34801561079157600080fd5b506107d4600480360360208110156107a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170f565b6040518082815260200191505060405180910390f35b3480156107f657600080fd5b506107ff6117fa565b005b34801561080d57600080fd5b5061083a6004803603602081101561082457600080fd5b8101908080359060200190929190505050611980565b005b34801561084857600080fd5b50610851611ab4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561088957600080fd5b50610892611add565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d25780820151818401526020810190506108b7565b50505050905090810190601f1680156108ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561091957600080fd5b506109666004803603604081101561093057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b7f565b60405180821515815260200191505060405180910390f35b34801561098a57600080fd5b50610993611c4c565b005b3480156109a157600080fd5b506109ee600480360360408110156109b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e69565b60405180821515815260200191505060405180910390f35b348015610a1257600080fd5b50610a6160048036036040811015610a2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611e87565b005b348015610a6f57600080fd5b50610a78611faa565b6040518082815260200191505060405180910390f35b348015610a9a57600080fd5b50610add60048036036020811015610ab157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fb4565b60405180821515815260200191505060405180910390f35b348015610b0157600080fd5b50610b2e60048036036020811015610b1857600080fd5b810190808035906020019092919050505061200a565b005b348015610b3c57600080fd5b50610b9f60048036036040811015610b5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fb565b6040518082815260200191505060405180910390f35b348015610bc157600080fd5b50610bf060048036036020811015610bd857600080fd5b81019080803515159060200190929190505050612282565b005b348015610bfe57600080fd5b50610c07612367565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3f57600080fd5b50610c8260048036036020811015610c5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061238d565b005b348015610c9057600080fd5b50610cd360048036036020811015610ca757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612740565b005b348015610ce157600080fd5b50610cea61294b565b005b348015610cf857600080fd5b50610d01612a24565b6040518082815260200191505060405180910390f35b348015610d2357600080fd5b50610d6660048036036020811015610d3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a2c565b005b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e005780601f10610dd557610100808354040283529160200191610e00565b820191906000526020600020905b815481529060010190602001808311610de357829003601f168201915b5050505050905090565b6000610e1e610e17612db6565b8484612dbe565b6001905092915050565b6000600b54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b6000610e6d848484612fb5565b610f2e84610e79612db6565b610f2985604051806060016040528060288152602001614e8260289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610edf612db6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461338c9092919063ffffffff16565b612dbe565b600190509392505050565b610f41612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611001576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611013575060198111155b611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7465616d4665652073686f756c6420626520696e2031202d203235000000000081525060200191505060405180910390fd5b8060108190555050565b6000600a548211156110ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614d93602a913960400191505060405180910390fd5b60006110f661344c565b905061110b818461347790919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b60006111d3611137612db6565b846111ce8560056000611148612db6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b612dbe565b6001905092915050565b60006111e7612db6565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614f3e602c913960400191505060405180910390fd5b600061129783613549565b505050505090506112f081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061134881600a546135b090919063ffffffff16565b600a8190555061136383600b546134c190919063ffffffff16565b600b81905550505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060095483111561140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161142e57600061141e84613549565b5050505050905080915050611445565b600061143984613549565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611477612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611537576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006115423061170f565b905061154d816135fa565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6115ae612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611680575060198111155b6116f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2031202d20323500000000000081525060200191505060405180910390fd5b80600f8190555050565b601460159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117aa57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506117f5565b6117f2600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461108f565b90505b919050565b611802612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611988612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b683635c9adc5dea00000811115611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180614e056034913960400191505060405180910390fd5b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b755780601f10611b4a57610100808354040283529160200191611b75565b820191906000526020600020905b815481529060010190602001808311611b5857829003601f168201915b5050505050905090565b6000611c42611b8c612db6565b84611c3d85604051806060016040528060258152602001614f8d6025913960056000611bb6612db6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461338c9092919063ffffffff16565b612dbe565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614f6a6023913960400191505060405180910390fd5b6002544211611d69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611e7d611e76612db6565b8484612fb5565b6001905092915050565b611e8f612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b612012612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61228a612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461234a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612395612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612455576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614f1c6022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156126825761263e600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461108f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612748612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561288e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614dbd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612953612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612a21816138dc565b50565b600047905090565b612a34612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015612db2578173ffffffffffffffffffffffffffffffffffffffff1660088281548110612be757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612da557600860016008805490500381548110612c4357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110612c7b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480612d6b57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612db2565b8080600101915050612bb6565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614ef86024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614de36022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561303b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614ed36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614d706023913960400191505060405180910390fd5b6000811161311a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614eaa6029913960400191505060405180910390fd5b613122611ab4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131905750613160611ab4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156131f1576015548111156131f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614e396028913960400191505060405180910390fd5b5b60006131fc3061170f565b9050601554811061320d5760155490505b6000601654821015905060148054906101000a900460ff1615801561323e5750601460159054906101000a900460ff165b80156132475750805b801561329f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156132c7576132ad826135fa565b600047905060008111156132c5576132c4476138dc565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061336e5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337857600090505b613384868686846139d7565b505050505050565b6000838311158290613439576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133fe5780820151818401526020810190506133e3565b50505050905090810190601f16801561342b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613459613ce8565b91509150613470818361347790919063ffffffff16565b9250505090565b60006134b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f79565b905092915050565b60008082840190508381101561353f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006135668a600f5460105461403f565b925092509250600061357661344c565b905060008060006135888e87866140d5565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006135f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061338c565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561362e57600080fd5b5060405190808252806020026020018201604052801561365d5781602001602082028036833780820191505090505b509050308160008151811061366e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561370e57600080fd5b505afa158015613722573d6000803e3d6000fd5b505050506040513d602081101561373857600080fd5b81019080805190602001909291905050508160018151811061375657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137bb307f000000000000000000000000000000000000000000000000000000000000000084612dbe565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561387d578082015181840152602081019050613862565b505050509050019650505050505050600060405180830381600087803b1580156138a657600080fd5b505af11580156138ba573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61392c60028461347790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613957573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6139a860028461347790919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156139d3573d6000803e3d6000fd5b5050565b806139e5576139e4614133565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a885750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9d57613a98848484614176565b613cd4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b405750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b5557613b508484846143d6565b613cd3565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613bf95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c0e57613c09848484614636565b613cd2565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613cb05750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613cc557613cc0848484614801565b613cd1565b613cd0848484614636565b5b5b5b5b80613ce257613ce1614af6565b5b50505050565b6000806000600a5490506000600954905060005b600880549050811015613f3c57826003600060088481548110613d1b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613e025750816004600060088481548110613d9a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613e1957600a5460095494509450505050613f75565b613ea26003600060088481548110613e2d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846135b090919063ffffffff16565b9250613f2d6004600060088481548110613eb857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836135b090919063ffffffff16565b91508080600101915050613cfc565b50613f54600954600a5461347790919063ffffffff16565b821015613f6c57600a54600954935093505050613f75565b81819350935050505b9091565b60008083118290614025576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613fea578082015181840152602081019050613fcf565b50505050905090810190601f1680156140175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161403157fe5b049050809150509392505050565b60008060008061406b606461405d888a614b0a90919063ffffffff16565b61347790919063ffffffff16565b905060006140956064614087888b614b0a90919063ffffffff16565b61347790919063ffffffff16565b905060006140be826140b0858c6135b090919063ffffffff16565b6135b090919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806140ee8588614b0a90919063ffffffff16565b905060006141058688614b0a90919063ffffffff16565b9050600061411c82846135b090919063ffffffff16565b905082818395509550955050505093509350939050565b6000600f5414801561414757506000601054145b1561415157614174565b600f546011819055506010546012819055506000600f8190555060006010819055505b565b60008060008060008061418887613549565b9550955095509550955095506141e687600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061427b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061431085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435c81614b90565b6143668483614d35565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806143e887613549565b95509550955095509550955061444686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144db83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061457085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145bc81614b90565b6145c68483614d35565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061464887613549565b9550955095509550955095506146a686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061473b85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061478781614b90565b6147918483614d35565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061481387613549565b95509550955095509550955061487187600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061490686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061499b83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a3085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a7c81614b90565b614a868483614d35565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601154600f81905550601254601081905550565b600080831415614b1d5760009050614b8a565b6000828402905082848281614b2e57fe5b0414614b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614e616021913960400191505060405180910390fd5b809150505b92915050565b6000614b9a61344c565b90506000614bb18284614b0a90919063ffffffff16565b9050614c0581600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614d3057614cec83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614d4a82600a546135b090919063ffffffff16565b600a81905550614d6581600b546134c190919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e2031303030303030303030303030303065395472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bbbb81751275aee1ba9e9ddc0b4ca463bac3d540da05495e6832d216aa7e5e7e64736f6c634300060c0033000000000000000000000000a05a9521caffc11e15cd016b76b16f41cecde70f000000000000000000000000cef3d3f33951dfc90f87dd953a66f3b8fc08f1d3

Deployed Bytecode

0x6080604052600436106102295760003560e01c8063715018a611610123578063cba0e996116100ab578063f2cc0c181161006f578063f2cc0c1814610c33578063f2fde38b14610c84578063f429389014610cd5578063f815a84214610cec578063f84354f114610d1757610230565b8063cba0e99614610a8e578063dd46706414610af5578063dd62ed3e14610b30578063e01af92c14610bb5578063e9673a8114610bf257610230565b8063a457c2d7116100f2578063a457c2d71461090d578063a69df4b51461097e578063a9059cbb14610995578063af9549e014610a06578063b6c5232414610a6357610230565b8063715018a6146107ea5780637b4ee87f146108015780638da5cb5b1461083c57806395d89b411461087d57610230565b806339509351116101b157806351bc3c851161017557806351bc3c851461069f5780635342acb4146106b65780635880b8731461071d5780636ddd17131461075857806370a082311461078557610230565b806339509351146105165780633bd5d173146105875780633c1ae633146105c25780634549b0391461060357806349bd5a5e1461065e57610230565b806318160ddd116101f857806318160ddd146103a257806323b872dd146103cd578063286671621461045e5780632d83811914610499578063313ce567146104e857610230565b806306fdde0314610235578063095ea7b3146102c557806313114a9d146103365780631694505e1461036157610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610d68565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028a57808201518184015260208101905061026f565b50505050905090810190601f1680156102b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d157600080fd5b5061031e600480360360408110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e0a565b60405180821515815260200191505060405180910390f35b34801561034257600080fd5b5061034b610e28565b6040518082815260200191505060405180910390f35b34801561036d57600080fd5b50610376610e32565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103ae57600080fd5b506103b7610e56565b6040518082815260200191505060405180910390f35b3480156103d957600080fd5b50610446600480360360608110156103f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e60565b60405180821515815260200191505060405180910390f35b34801561046a57600080fd5b506104976004803603602081101561048157600080fd5b8101908080359060200190929190505050610f39565b005b3480156104a557600080fd5b506104d2600480360360208110156104bc57600080fd5b810190808035906020019092919050505061108f565b6040518082815260200191505060405180910390f35b3480156104f457600080fd5b506104fd611113565b604051808260ff16815260200191505060405180910390f35b34801561052257600080fd5b5061056f6004803603604081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061112a565b60405180821515815260200191505060405180910390f35b34801561059357600080fd5b506105c0600480360360208110156105aa57600080fd5b81019080803590602001909291905050506111dd565b005b3480156105ce57600080fd5b506105d761136e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060f57600080fd5b506106486004803603604081101561062657600080fd5b8101908080359060200190929190803515159060200190929190505050611394565b6040518082815260200191505060405180910390f35b34801561066a57600080fd5b5061067361144b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106ab57600080fd5b506106b461146f565b005b3480156106c257600080fd5b50610705600480360360208110156106d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611550565b60405180821515815260200191505060405180910390f35b34801561072957600080fd5b506107566004803603602081101561074057600080fd5b81019080803590602001909291905050506115a6565b005b34801561076457600080fd5b5061076d6116fc565b60405180821515815260200191505060405180910390f35b34801561079157600080fd5b506107d4600480360360208110156107a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170f565b6040518082815260200191505060405180910390f35b3480156107f657600080fd5b506107ff6117fa565b005b34801561080d57600080fd5b5061083a6004803603602081101561082457600080fd5b8101908080359060200190929190505050611980565b005b34801561084857600080fd5b50610851611ab4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561088957600080fd5b50610892611add565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d25780820151818401526020810190506108b7565b50505050905090810190601f1680156108ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561091957600080fd5b506109666004803603604081101561093057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b7f565b60405180821515815260200191505060405180910390f35b34801561098a57600080fd5b50610993611c4c565b005b3480156109a157600080fd5b506109ee600480360360408110156109b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e69565b60405180821515815260200191505060405180910390f35b348015610a1257600080fd5b50610a6160048036036040811015610a2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611e87565b005b348015610a6f57600080fd5b50610a78611faa565b6040518082815260200191505060405180910390f35b348015610a9a57600080fd5b50610add60048036036020811015610ab157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fb4565b60405180821515815260200191505060405180910390f35b348015610b0157600080fd5b50610b2e60048036036020811015610b1857600080fd5b810190808035906020019092919050505061200a565b005b348015610b3c57600080fd5b50610b9f60048036036040811015610b5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121fb565b6040518082815260200191505060405180910390f35b348015610bc157600080fd5b50610bf060048036036020811015610bd857600080fd5b81019080803515159060200190929190505050612282565b005b348015610bfe57600080fd5b50610c07612367565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3f57600080fd5b50610c8260048036036020811015610c5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061238d565b005b348015610c9057600080fd5b50610cd360048036036020811015610ca757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612740565b005b348015610ce157600080fd5b50610cea61294b565b005b348015610cf857600080fd5b50610d01612a24565b6040518082815260200191505060405180910390f35b348015610d2357600080fd5b50610d6660048036036020811015610d3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a2c565b005b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e005780601f10610dd557610100808354040283529160200191610e00565b820191906000526020600020905b815481529060010190602001808311610de357829003601f168201915b5050505050905090565b6000610e1e610e17612db6565b8484612dbe565b6001905092915050565b6000600b54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b6000610e6d848484612fb5565b610f2e84610e79612db6565b610f2985604051806060016040528060288152602001614e8260289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610edf612db6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461338c9092919063ffffffff16565b612dbe565b600190509392505050565b610f41612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611001576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611013575060198111155b611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7465616d4665652073686f756c6420626520696e2031202d203235000000000081525060200191505060405180910390fd5b8060108190555050565b6000600a548211156110ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614d93602a913960400191505060405180910390fd5b60006110f661344c565b905061110b818461347790919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b60006111d3611137612db6565b846111ce8560056000611148612db6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b612dbe565b6001905092915050565b60006111e7612db6565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614f3e602c913960400191505060405180910390fd5b600061129783613549565b505050505090506112f081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061134881600a546135b090919063ffffffff16565b600a8190555061136383600b546134c190919063ffffffff16565b600b81905550505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060095483111561140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161142e57600061141e84613549565b5050505050905080915050611445565b600061143984613549565b50505050915050809150505b92915050565b7f000000000000000000000000bcf57f79b92dc12ed555452888160a216e535d6e81565b611477612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611537576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006115423061170f565b905061154d816135fa565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6115ae612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611680575060198111155b6116f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2031202d20323500000000000081525060200191505060405180910390fd5b80600f8190555050565b601460159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117aa57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506117f5565b6117f2600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461108f565b90505b919050565b611802612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611988612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b683635c9adc5dea00000811115611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180614e056034913960400191505060405180910390fd5b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b755780601f10611b4a57610100808354040283529160200191611b75565b820191906000526020600020905b815481529060010190602001808311611b5857829003601f168201915b5050505050905090565b6000611c42611b8c612db6565b84611c3d85604051806060016040528060258152602001614f8d6025913960056000611bb6612db6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461338c9092919063ffffffff16565b612dbe565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614f6a6023913960400191505060405180910390fd5b6002544211611d69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611e7d611e76612db6565b8484612fb5565b6001905092915050565b611e8f612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b612012612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61228a612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461234a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612395612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612455576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614f1c6022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156126825761263e600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461108f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612748612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561288e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614dbd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612953612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612a21816138dc565b50565b600047905090565b612a34612db6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015612db2578173ffffffffffffffffffffffffffffffffffffffff1660088281548110612be757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612da557600860016008805490500381548110612c4357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110612c7b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480612d6b57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612db2565b8080600101915050612bb6565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614ef86024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614de36022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561303b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614ed36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614d706023913960400191505060405180910390fd5b6000811161311a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614eaa6029913960400191505060405180910390fd5b613122611ab4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131905750613160611ab4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156131f1576015548111156131f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614e396028913960400191505060405180910390fd5b5b60006131fc3061170f565b9050601554811061320d5760155490505b6000601654821015905060148054906101000a900460ff1615801561323e5750601460159054906101000a900460ff165b80156132475750805b801561329f57507f000000000000000000000000bcf57f79b92dc12ed555452888160a216e535d6e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156132c7576132ad826135fa565b600047905060008111156132c5576132c4476138dc565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061336e5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337857600090505b613384868686846139d7565b505050505050565b6000838311158290613439576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133fe5780820151818401526020810190506133e3565b50505050905090810190601f16801561342b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613459613ce8565b91509150613470818361347790919063ffffffff16565b9250505090565b60006134b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f79565b905092915050565b60008082840190508381101561353f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006135668a600f5460105461403f565b925092509250600061357661344c565b905060008060006135888e87866140d5565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006135f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061338c565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561362e57600080fd5b5060405190808252806020026020018201604052801561365d5781602001602082028036833780820191505090505b509050308160008151811061366e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561370e57600080fd5b505afa158015613722573d6000803e3d6000fd5b505050506040513d602081101561373857600080fd5b81019080805190602001909291905050508160018151811061375657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137bb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612dbe565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561387d578082015181840152602081019050613862565b505050509050019650505050505050600060405180830381600087803b1580156138a657600080fd5b505af11580156138ba573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61392c60028461347790919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613957573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6139a860028461347790919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156139d3573d6000803e3d6000fd5b5050565b806139e5576139e4614133565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a885750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9d57613a98848484614176565b613cd4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b405750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b5557613b508484846143d6565b613cd3565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613bf95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c0e57613c09848484614636565b613cd2565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613cb05750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613cc557613cc0848484614801565b613cd1565b613cd0848484614636565b5b5b5b5b80613ce257613ce1614af6565b5b50505050565b6000806000600a5490506000600954905060005b600880549050811015613f3c57826003600060088481548110613d1b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613e025750816004600060088481548110613d9a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613e1957600a5460095494509450505050613f75565b613ea26003600060088481548110613e2d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846135b090919063ffffffff16565b9250613f2d6004600060088481548110613eb857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836135b090919063ffffffff16565b91508080600101915050613cfc565b50613f54600954600a5461347790919063ffffffff16565b821015613f6c57600a54600954935093505050613f75565b81819350935050505b9091565b60008083118290614025576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613fea578082015181840152602081019050613fcf565b50505050905090810190601f1680156140175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161403157fe5b049050809150509392505050565b60008060008061406b606461405d888a614b0a90919063ffffffff16565b61347790919063ffffffff16565b905060006140956064614087888b614b0a90919063ffffffff16565b61347790919063ffffffff16565b905060006140be826140b0858c6135b090919063ffffffff16565b6135b090919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806140ee8588614b0a90919063ffffffff16565b905060006141058688614b0a90919063ffffffff16565b9050600061411c82846135b090919063ffffffff16565b905082818395509550955050505093509350939050565b6000600f5414801561414757506000601054145b1561415157614174565b600f546011819055506010546012819055506000600f8190555060006010819055505b565b60008060008060008061418887613549565b9550955095509550955095506141e687600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061427b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061431085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435c81614b90565b6143668483614d35565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806143e887613549565b95509550955095509550955061444686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144db83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061457085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145bc81614b90565b6145c68483614d35565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061464887613549565b9550955095509550955095506146a686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061473b85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061478781614b90565b6147918483614d35565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061481387613549565b95509550955095509550955061487187600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061490686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135b090919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061499b83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a3085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a7c81614b90565b614a868483614d35565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601154600f81905550601254601081905550565b600080831415614b1d5760009050614b8a565b6000828402905082848281614b2e57fe5b0414614b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614e616021913960400191505060405180910390fd5b809150505b92915050565b6000614b9a61344c565b90506000614bb18284614b0a90919063ffffffff16565b9050614c0581600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614d3057614cec83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c190919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614d4a82600a546135b090919063ffffffff16565b600a81905550614d6581600b546134c190919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e2031303030303030303030303030303065395472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bbbb81751275aee1ba9e9ddc0b4ca463bac3d540da05495e6832d216aa7e5e7e64736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a05a9521caffc11e15cd016b76b16f41cecde70f000000000000000000000000cef3d3f33951dfc90f87dd953a66f3b8fc08f1d3

-----Decoded View---------------
Arg [0] : PrincipalProtectionWalletAddress (address): 0xA05A9521CAFfC11e15CD016B76b16F41CECde70F
Arg [1] : YieldFarmingWalletAddress (address): 0xceF3d3F33951dFC90f87Dd953a66f3B8fC08f1d3

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a05a9521caffc11e15cd016b76b16f41cecde70f
Arg [1] : 000000000000000000000000cef3d3f33951dfc90f87dd953a66f3b8fc08f1d3


Deployed Bytecode Sourcemap

17595:17839:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20218:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21222:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22570:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18745:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20531:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21407:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34980:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23578:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20428:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21748:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22677:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18616:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23094:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18807:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28053:168;;;;;;;;;;;;;:::i;:::-;;25269:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34787:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18888:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20646:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7620:160;;;;;;;;;;;;;:::i;:::-;;35180:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7359:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20321:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21990:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8569:313;;;;;;;;;;;;;:::i;:::-;;20868:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22413:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8074:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22283:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8255:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21059:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28413:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18683:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23859:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7802:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28233:168;;;;;;;;;;;;;:::i;:::-;;34657:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24346:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20218:91;20255:13;20292:5;20285:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20218:91;:::o;21222:173::-;21297:4;21318:39;21327:12;:10;:12::i;:::-;21341:7;21350:6;21318:8;:39::i;:::-;21379:4;21372:11;;21222:173;;;;:::o;22570:95::-;22612:7;22643:10;;22636:17;;22570:95;:::o;18745:51::-;;;:::o;20531:103::-;20584:7;20615;;20608:14;;20531:103;:::o;21407:329::-;21505:4;21526:36;21536:6;21544:9;21555:6;21526:9;:36::i;:::-;21577:121;21586:6;21594:12;:10;:12::i;:::-;21608:89;21646:6;21608:89;;;;;;;;;;;;;;;;;:11;:19;21620:6;21608:19;;;;;;;;;;;;;;;:33;21628:12;:10;:12::i;:::-;21608:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21577:8;:121::i;:::-;21720:4;21713:11;;21407:329;;;;;:::o;34980:188::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35073:1:::1;35062:7;:12;;:29;;;;;35089:2;35078:7;:13;;35062:29;35054:69;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;35149:7;35138:8;:18;;;;34980:188:::0;:::o;23578:269::-;23644:7;23687;;23676;:18;;23668:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23756:19;23779:10;:8;:10::i;:::-;23756:33;;23811:24;23823:11;23811:7;:11;;:24;;;;:::i;:::-;23804:31;;;23578:269;;;:::o;20428:91::-;20469:5;20498:9;;;;;;;;;;;20491:16;;20428:91;:::o;21748:230::-;21836:4;21857:83;21866:12;:10;:12::i;:::-;21880:7;21889:50;21928:10;21889:11;:25;21901:12;:10;:12::i;:::-;21889:25;;;;;;;;;;;;;;;:34;21915:7;21889:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;21857:8;:83::i;:::-;21962:4;21955:11;;21748:230;;;;:::o;22677:405::-;22733:14;22750:12;:10;:12::i;:::-;22733:29;;22786:11;:19;22798:6;22786:19;;;;;;;;;;;;;;;;;;;;;;;;;22785:20;22777:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22870:15;22894:19;22905:7;22894:10;:19::i;:::-;22869:44;;;;;;;22946:28;22966:7;22946;:15;22954:6;22946:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22928:7;:15;22936:6;22928:15;;;;;;;;;;;;;;;:46;;;;22999:20;23011:7;22999;;:11;;:20;;;;:::i;:::-;22989:7;:30;;;;23047:23;23062:7;23047:10;;:14;;:23;;;;:::i;:::-;23034:10;:36;;;;22677:405;;;:::o;18616:56::-;;;;;;;;;;;;;:::o;23094:472::-;23184:7;23227;;23216;:18;;23208:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23290:17;23285:270;;23329:15;23353:19;23364:7;23353:10;:19::i;:::-;23328:44;;;;;;;23398:7;23391:14;;;;;23285:270;23448:23;23479:19;23490:7;23479:10;:19::i;:::-;23446:52;;;;;;;23524:15;23517:22;;;23094:472;;;;;:::o;18807:38::-;;;:::o;28053:168::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28111:23:::1;28137:24;28155:4;28137:9;:24::i;:::-;28111:50;;28176:33;28193:15;28176:16;:33::i;:::-;7586:1;28053:168::o:0;25269:131::-;25333:4;25361:18;:27;25380:7;25361:27;;;;;;;;;;;;;;;;;;;;;;;;;25354:34;;25269:131;;;:::o;34787:181::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34877:1:::1;34867:6;:11;;:27;;;;;34892:2;34882:6;:12;;34867:27;34859:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;34950:6;34940:7;:16;;;;34787:181:::0;:::o;18888:30::-;;;;;;;;;;;;;:::o;20646:210::-;20712:7;20740:11;:20;20752:7;20740:20;;;;;;;;;;;;;;;;;;;;;;;;;20736:49;;;20769:7;:16;20777:7;20769:16;;;;;;;;;;;;;;;;20762:23;;;;20736:49;20807:37;20827:7;:16;20835:7;20827:16;;;;;;;;;;;;;;;;20807:19;:37::i;:::-;20800:44;;20646:210;;;;:::o;7620:160::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7731:1:::1;7694:40;;7715:6;::::0;::::1;;;;;;;;7694:40;;;;;;;;;;;;7766:1;7749:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7620:160::o:0;35180:237::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35286:21:::1;35271:11;:36;;35263:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35394:11;35379:12;:26;;;;35180:237:::0;:::o;7359:87::-;7397:7;7428:6;;;;;;;;;;;7421:13;;7359:87;:::o;20321:95::-;20360:13;20397:7;20390:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20321:95;:::o;21990:281::-;22083:4;22104:129;22113:12;:10;:12::i;:::-;22127:7;22136:96;22175:15;22136:96;;;;;;;;;;;;;;;;;:11;:25;22148:12;:10;:12::i;:::-;22136:25;;;;;;;;;;;;;;;:34;22162:7;22136:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;22104:8;:129::i;:::-;22255:4;22248:11;;21990:281;;;;:::o;8569:313::-;8643:10;8625:28;;:14;;;;;;;;;;;:28;;;8617:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8722:9;;8716:3;:15;8708:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8817:14;;;;;;;;;;;8788:44;;8809:6;;;;;;;;;;8788:44;;;;;;;;;;;;8856:14;;;;;;;;;;;8847:6;;:23;;;;;;;;;;;;;;;;;;8569:313::o;20868:179::-;20946:4;20967:42;20977:12;:10;:12::i;:::-;20991:9;21002:6;20967:9;:42::i;:::-;21031:4;21024:11;;20868:179;;;;:::o;22413:145::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22538:8:::1;22508:18;:27;22527:7;22508:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22413:145:::0;;:::o;8074:97::-;8119:7;8150:9;;8143:16;;8074:97;:::o;22283:118::-;22341:4;22369:11;:20;22381:7;22369:20;;;;;;;;;;;;;;;;;;;;;;;;;22362:27;;22283:118;;;:::o;8255:234::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8340:6:::1;::::0;::::1;;;;;;;;8323:14;;:23;;;;;;;;;;;;;;;;;;8378:1;8361:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8413:4;8407:3;:10;8395:9;:22;;;;8474:1;8437:40;;8458:6;::::0;::::1;;;;;;;;8437:40;;;;;;;;;;;;8255:234:::0;:::o;21059:151::-;21140:7;21171:11;:18;21183:5;21171:18;;;;;;;;;;;;;;;:27;21190:7;21171:27;;;;;;;;;;;;;;;;21164:34;;21059:151;;;;:::o;28413:106::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28500:7:::1;28486:11;;:21;;;;;;;;;;;;;;;;;;28413:106:::0;:::o;18683:49::-;;;;;;;;;;;;;:::o;23859:475::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23955:42:::1;23944:53;;:7;:53;;;;23936:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24060:11;:20;24072:7;24060:20;;;;;;;;;;;;;;;;;;;;;;;;;24059:21;24051:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24149:1;24130:7;:16;24138:7;24130:16;;;;;;;;;;;;;;;;:20;24127:116;;;24190:37;24210:7;:16;24218:7;24210:16;;;;;;;;;;;;;;;;24190:19;:37::i;:::-;24171:7;:16;24179:7;24171:16;;;;;;;;;;;;;;;:56;;;;24127:116;24280:4;24257:11;:20;24269:7;24257:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;24299:9;24314:7;24299:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23859:475:::0;:::o;7802:260::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7915:1:::1;7895:22;;:8;:22;;;;7887:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8009:8;7980:38;;8001:6;::::0;::::1;;;;;;;;7980:38;;;;;;;;;;;;8042:8;8033:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7802:260:::0;:::o;28233:168::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28291:26:::1;28320:21;28291:50;;28356:33;28370:18;28356:13;:33::i;:::-;7586:1;28233:168::o:0;34657:118::-;34703:15;34742:21;34735:28;;34657:118;:::o;24346:522::-;7522:12;:10;:12::i;:::-;7512:22;;:6;;;;;;;;;;:22;;;7504:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24431:11:::1;:20;24443:7;24431:20;;;;;;;;;;;;;;;;;;;;;;;;;24423:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24503:9;24498:359;24522:9;:16;;;;24518:1;:20;24498:359;;;24584:7;24568:23;;:9;24578:1;24568:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;24564:278;;;24631:9;24660:1;24641:9;:16;;;;:20;24631:31;;;;;;;;;;;;;;;;;;;;;;;;;24616:9;24626:1;24616:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24704:1;24685:7;:16;24693:7;24685:16;;;;;;;;;;;;;;;:20;;;;24751:5;24728:11;:20;24740:7;24728:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24779:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24817:5;;24564:278;24540:3;;;;;;;24498:359;;;;24346:522:::0;:::o;515:114::-;568:15;607:10;600:17;;515:114;:::o;25412:357::-;25526:1;25509:19;;:5;:19;;;;25501:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25611:1;25592:21;;:7;:21;;;;25584:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25699:6;25669:11;:18;25681:5;25669:18;;;;;;;;;;;;;;;:27;25688:7;25669:27;;;;;;;;;;;;;;;:36;;;;25741:7;25725:32;;25734:5;25725:32;;;25750:6;25725:32;;;;;;;;;;;;;;;;;;25412:357;;;:::o;25781:1467::-;25900:1;25882:20;;:6;:20;;;;25874:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25988:1;25967:23;;:9;:23;;;;25959:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26062:1;26053:6;:10;26045:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26139:7;:5;:7::i;:::-;26129:17;;:6;:17;;;;:41;;;;;26163:7;:5;:7::i;:::-;26150:20;;:9;:20;;;;26129:41;26126:138;;;26207:12;;26197:6;:22;;26189:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26126:138;26295:28;26326:24;26344:4;26326:9;:24::i;:::-;26295:55;;26394:12;;26370:20;:36;26367:124;;26463:12;;26440:35;;26367:124;26507:24;26558:29;;26534:20;:53;;26507:80;;26607:6;;;;;;;;;;26606:7;:22;;;;;26617:11;;;;;;;;;;;26606:22;:45;;;;;26632:19;26606:45;:72;;;;;26665:13;26655:23;;:6;:23;;;;26606:72;26602:364;;;26717:38;26734:20;26717:16;:38::i;:::-;26776:26;26805:21;26776:50;;26869:1;26848:18;:22;26845:106;;;26895:36;26909:21;26895:13;:36::i;:::-;26845:106;26602:364;;26996:12;27011:4;26996:19;;27049:18;:26;27068:6;27049:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;27079:18;:29;27098:9;27079:29;;;;;;;;;;;;;;;;;;;;;;;;;27049:59;27046:113;;;27138:5;27128:15;;27046:113;27189:47;27204:6;27211:9;27221:6;27228:7;27189:14;:47::i;:::-;25781:1467;;;;;;:::o;2065:208::-;2151:7;2188:1;2183;:6;;2191:12;2175:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:9;2235:1;2231;:5;2219:17;;2260:1;2253:8;;;2065:208;;;;;:::o;33643:175::-;33684:7;33709:15;33726;33745:19;:17;:19::i;:::-;33708:56;;;;33786:20;33798:7;33786;:11;;:20;;;;:::i;:::-;33779:27;;;;33643:175;:::o;2820:140::-;2878:7;2909:39;2913:1;2916;2909:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2902:46;;2820:140;;;;:::o;1680:197::-;1738:7;1762:9;1778:1;1774;:5;1762:17;;1807:1;1802;:6;;1794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:1;1857:8;;;1680:197;;;;:::o;32401:481::-;32460:7;32469;32478;32487;32496;32505;32530:23;32555:12;32569:13;32586:39;32598:7;32607;;32616:8;;32586:11;:39::i;:::-;32529:96;;;;;;32640:19;32663:10;:8;:10::i;:::-;32640:33;;32689:15;32706:23;32731:12;32747:39;32759:7;32768:4;32774:11;32747;:39::i;:::-;32688:98;;;;;;32809:7;32818:15;32835:4;32841:15;32858:4;32864:5;32801:69;;;;;;;;;;;;;;;;;;;32401:481;;;;;;;:::o;1899:144::-;1957:7;1988:43;1992:1;1995;1988:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1981:50;;1899:144;;;;:::o;27260:563::-;19250:4;19241:6;;:13;;;;;;;;;;;;;;;;;;27355:21:::1;27393:1;27379:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27355:40;;27428:4;27410;27415:1;27410:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;27458:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;27448:4;27453:1;27448:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;27497:62;27514:4;27529:15;27547:11;27497:8;:62::i;:::-;27590:15;:66;;;27675:11;27705:1;27726:4;27757;27781:15;27590:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19269:1;19294:5:::0;19285:6;;:14;;;;;;;;;;;;;;;;;;27260:563;:::o;27835:196::-;27897:33;;;;;;;;;;;:42;;:57;27940:13;27951:1;27940:6;:10;;:13;;;;:::i;:::-;27897:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27969:26;;;;;;;;;;;:35;;:50;28005:13;28016:1;28005:6;:10;;:13;;;;:::i;:::-;27969:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27835:196;:::o;28531:883::-;28647:7;28643:44;;28673:14;:12;:14::i;:::-;28643:44;28708:11;:19;28720:6;28708:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;28732:11;:22;28744:9;28732:22;;;;;;;;;;;;;;;;;;;;;;;;;28731:23;28708:46;28704:637;;;28775:48;28797:6;28805:9;28816:6;28775:21;:48::i;:::-;28704:637;;;28850:11;:19;28862:6;28850:19;;;;;;;;;;;;;;;;;;;;;;;;;28849:20;:46;;;;;28873:11;:22;28885:9;28873:22;;;;;;;;;;;;;;;;;;;;;;;;;28849:46;28845:496;;;28916:46;28936:6;28944:9;28955:6;28916:19;:46::i;:::-;28845:496;;;28989:11;:19;29001:6;28989:19;;;;;;;;;;;;;;;;;;;;;;;;;28988:20;:47;;;;;29013:11;:22;29025:9;29013:22;;;;;;;;;;;;;;;;;;;;;;;;;29012:23;28988:47;28984:357;;;29056:44;29074:6;29082:9;29093:6;29056:17;:44::i;:::-;28984:357;;;29126:11;:19;29138:6;29126:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;29149:11;:22;29161:9;29149:22;;;;;;;;;;;;;;;;;;;;;;;;;29126:45;29122:219;;;29192:48;29214:6;29222:9;29233:6;29192:21;:48::i;:::-;29122:219;;;29281:44;29299:6;29307:9;29318:6;29281:17;:44::i;:::-;29122:219;28984:357;28845:496;28704:637;29361:7;29357:45;;29387:15;:13;:15::i;:::-;29357:45;28531:883;;;;:::o;33830:595::-;33880:7;33889;33913:15;33931:7;;33913:25;;33953:15;33971:7;;33953:25;;33998:9;33993:305;34017:9;:16;;;;34013:1;:20;33993:305;;;34087:7;34063;:21;34071:9;34081:1;34071:12;;;;;;;;;;;;;;;;;;;;;;;;;34063:21;;;;;;;;;;;;;;;;:31;:66;;;;34122:7;34098;:21;34106:9;34116:1;34106:12;;;;;;;;;;;;;;;;;;;;;;;;;34098:21;;;;;;;;;;;;;;;;:31;34063:66;34059:97;;;34139:7;;34148;;34131:25;;;;;;;;;34059:97;34185:34;34197:7;:21;34205:9;34215:1;34205:12;;;;;;;;;;;;;;;;;;;;;;;;;34197:21;;;;;;;;;;;;;;;;34185:7;:11;;:34;;;;:::i;:::-;34175:44;;34248:34;34260:7;:21;34268:9;34278:1;34268:12;;;;;;;;;;;;;;;;;;;;;;;;;34260:21;;;;;;;;;;;;;;;;34248:7;:11;;:34;;;;:::i;:::-;34238:44;;34035:3;;;;;;;33993:305;;;;34326:20;34338:7;;34326;;:11;;:20;;;;:::i;:::-;34316:7;:30;34312:61;;;34356:7;;34365;;34348:25;;;;;;;;34312:61;34396:7;34405;34388:25;;;;;;33830:595;;;:::o;2982:298::-;3068:7;3104:1;3100;:5;3107:12;3092:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3135:9;3151:1;3147;:5;;;;;;3135:17;;3267:1;3260:8;;;2982:298;;;;;:::o;32894:371::-;32987:7;32996;33005;33029:12;33044:28;33068:3;33044:19;33056:6;33044:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;33029:43;;33087:13;33103:29;33128:3;33103:20;33115:7;33103;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;33087:45;;33147:23;33173:28;33195:5;33173:17;33185:4;33173:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;33147:54;;33224:15;33241:4;33247:5;33216:37;;;;;;;;;32894:371;;;;;;;:::o;33277:354::-;33372:7;33381;33390;33414:15;33432:24;33444:11;33432:7;:11;;:24;;;;:::i;:::-;33414:42;;33471:12;33486:21;33495:11;33486:4;:8;;:21;;;;:::i;:::-;33471:36;;33522:23;33548:17;33560:4;33548:7;:11;;:17;;;;:::i;:::-;33522:43;;33588:7;33597:15;33614:4;33580:39;;;;;;;;;33277:354;;;;;;;:::o;24880:238::-;24941:1;24930:7;;:12;:29;;;;;24958:1;24946:8;;:13;24930:29;24927:41;;;24961:7;;24927:41;25002:7;;24984:15;:25;;;;25043:8;;25024:16;:27;;;;25078:1;25068:7;:11;;;;25105:1;25094:8;:12;;;;24880:238;:::o;30557:580::-;30664:15;30681:23;30706:12;30720:23;30745:12;30759:13;30776:19;30787:7;30776:10;:19::i;:::-;30663:132;;;;;;;;;;;;30828:28;30848:7;30828;:15;30836:6;30828:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30810:7;:15;30818:6;30810:15;;;;;;;;;;;;;;;:46;;;;30889:28;30909:7;30889;:15;30897:6;30889:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30871:7;:15;30879:6;30871:15;;;;;;;;;;;;;;;:46;;;;30953:39;30976:15;30953:7;:18;30961:9;30953:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30932:7;:18;30940:9;30932:18;;;;;;;;;;;;;;;:60;;;;31007:16;31017:5;31007:9;:16::i;:::-;31038:23;31050:4;31056;31038:11;:23::i;:::-;31098:9;31081:44;;31090:6;31081:44;;;31109:15;31081:44;;;;;;;;;;;;;;;;;;30557:580;;;;;;;;;:::o;29953:592::-;30058:15;30075:23;30100:12;30114:23;30139:12;30153:13;30170:19;30181:7;30170:10;:19::i;:::-;30057:132;;;;;;;;;;;;30222:28;30242:7;30222;:15;30230:6;30222:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30204:7;:15;30212:6;30204:15;;;;;;;;;;;;;;;:46;;;;30286:39;30309:15;30286:7;:18;30294:9;30286:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30265:7;:18;30273:9;30265:18;;;;;;;;;;;;;;;:60;;;;30361:39;30384:15;30361:7;:18;30369:9;30361:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30340:7;:18;30348:9;30340:18;;;;;;;;;;;;;;;:60;;;;30415:16;30425:5;30415:9;:16::i;:::-;30446:23;30458:4;30464;30446:11;:23::i;:::-;30506:9;30489:44;;30498:6;30489:44;;;30517:15;30489:44;;;;;;;;;;;;;;;;;;29953:592;;;;;;;;;:::o;29426:515::-;29529:15;29546:23;29571:12;29585:23;29610:12;29624:13;29641:19;29652:7;29641:10;:19::i;:::-;29528:132;;;;;;;;;;;;29693:28;29713:7;29693;:15;29701:6;29693:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29675:7;:15;29683:6;29675:15;;;;;;;;;;;;;;;:46;;;;29757:39;29780:15;29757:7;:18;29765:9;29757:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29736:7;:18;29744:9;29736:18;;;;;;;;;;;;;;;:60;;;;29811:16;29821:5;29811:9;:16::i;:::-;29842:23;29854:4;29860;29842:11;:23::i;:::-;29902:9;29885:44;;29894:6;29885:44;;;29913:15;29885:44;;;;;;;;;;;;;;;;;;29426:515;;;;;;;;;:::o;31149:655::-;31256:15;31273:23;31298:12;31312:23;31337:12;31351:13;31368:19;31379:7;31368:10;:19::i;:::-;31255:132;;;;;;;;;;;;31420:28;31440:7;31420;:15;31428:6;31420:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31402:7;:15;31410:6;31402:15;;;;;;;;;;;;;;;:46;;;;31481:28;31501:7;31481;:15;31489:6;31481:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31463:7;:15;31471:6;31463:15;;;;;;;;;;;;;;;:46;;;;31545:39;31568:15;31545:7;:18;31553:9;31545:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31524:7;:18;31532:9;31524:18;;;;;;;;;;;;;;;:60;;;;31620:39;31643:15;31620:7;:18;31628:9;31620:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31599:7;:18;31607:9;31599:18;;;;;;;;;;;;;;;:60;;;;31674:16;31684:5;31674:9;:16::i;:::-;31705:23;31717:4;31723;31705:11;:23::i;:::-;31765:9;31748:44;;31757:6;31748:44;;;31776:15;31748:44;;;;;;;;;;;;;;;;;;31149:655;;;;;;;;;:::o;25130:127::-;25188:15;;25178:7;:25;;;;25229:16;;25218:8;:27;;;;25130:127::o;2287:511::-;2345:7;2611:1;2606;:6;2602:55;;;2640:1;2633:8;;;;2602:55;2673:9;2689:1;2685;:5;2673:17;;2722:1;2717;2713;:5;;;;;;:10;2705:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2785:1;2778:8;;;2287:511;;;;;:::o;31816:349::-;31873:19;31896:10;:8;:10::i;:::-;31873:33;;31921:13;31937:22;31947:11;31937:5;:9;;:22;;;;:::i;:::-;31921:38;;31999:33;32026:5;31999:7;:22;32015:4;31999:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;31974:7;:22;31990:4;31974:22;;;;;;;;;;;;;;;:58;;;;32050:11;:26;32070:4;32050:26;;;;;;;;;;;;;;;;;;;;;;;;;32047:106;;;32120:33;32147:5;32120:7;:22;32136:4;32120:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;32095:7;:22;32111:4;32095:22;;;;;;;;;;;;;;;:58;;;;32047:106;31816:349;;;:::o;32177:159::-;32259:17;32271:4;32259:7;;:11;;:17;;;;:::i;:::-;32249:7;:27;;;;32304:20;32319:4;32304:10;;:14;;:20;;;;:::i;:::-;32291:10;:33;;;;32177:159;;:::o

Swarm Source

ipfs://bbbb81751275aee1ba9e9ddc0b4ca463bac3d540da05495e6832d216aa7e5e7e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.