ETH Price: $3,267.06 (-0.88%)

Token

Saiyan Shiba Inu (SAIYANSHIB)
 

Overview

Max Total Supply

27,000,000 SAIYANSHIB

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
pk79.eth
Balance
86,168.566384839659188927 SAIYANSHIB

Value
$0.00
0xf591db9dccd5d3aaf8508da2cffedd5ef5bb920f
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:
SaiyanShibaInu

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-06-04
*/

// Shiba Super Saiyan
// “It’s Not An Overseer That The Earth Needs Right Now. It Needs A Warrior.”
// t.me/shibasupersaiyan


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 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);
    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);
    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);
    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);
    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    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;
    }
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    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);
    }
    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    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");
    }
    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }
    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract SaiyanShibaInu 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 _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 27000000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tBurnTotal;

    string private _name = 'Saiyan Shiba Inu';
    string private _symbol = 'SAIYANSHIB';
    uint8 private _decimals = 18;

    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        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 totalBurn() public view returns (uint256) {
        return _tBurnTotal;
    }

    function reflect(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);
        _tBurnTotal = _tBurnTotal.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(!_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 included");
        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 _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 (_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);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee,uint256 tBurnValue,uint256 tTax,uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _reflectFee(rFee, tFee, tBurnValue,tTax,tLiquidity);
        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 tBurnValue,uint256 tTax,uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _reflectFee(rFee, tFee, tBurnValue,tTax,tLiquidity);
        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 tBurnValue,uint256 tTax,uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
       _reflectFee(rFee, tFee, tBurnValue,tTax,tLiquidity);
        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 tBurnValue,uint256 tTax,uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _reflectFee(rFee, tFee, tBurnValue,tTax,tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee, uint256 tBurnValue,uint256 tTax,uint256 tLiquidity) private {
        _rTotal = _rTotal.sub(rFee);
        _tBurnTotal = _tBurnTotal.add(tFee).add(tBurnValue).add(tTax).add(tLiquidity);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256,uint256,uint256,uint256) {
        uint256[12] memory _localVal;
        (_localVal[0]/**tTransferAmount*/, _localVal[1]  /**tFee*/, _localVal[2] /**tBurnValue*/,_localVal[8]/*tTAx*/,_localVal[10]/**tLiquidity*/) = _getTValues(tAmount);
        _localVal[3] /**currentRate*/ =  _getRate();
        ( _localVal[4] /**rAmount*/,  _localVal[5] /**rTransferAmount*/, _localVal[6] /**rFee*/, _localVal[7] /**rBurnValue*/,_localVal[9]/*rTax*/,_localVal[11]/**rLiquidity*/) = _getRValues(tAmount, _localVal[1], _localVal[3], _localVal[2],_localVal[8],_localVal[10]);
        return (_localVal[4], _localVal[5], _localVal[6], _localVal[0], _localVal[1], _localVal[2],_localVal[8],_localVal[10]);
    }
    
    function _getTValues(uint256 tAmount) private pure returns (uint256, uint256, uint256,uint256,uint256) {
        uint256[5] memory _localVal;
        
        _localVal[0]/**supply*/ = tAmount.div(100).mul(0);
        _localVal[1]/**tBurnValue*/ = tAmount.div(100).mul(0);
        _localVal[2]/**tholder*/ = tAmount.div(100).mul(0);
        _localVal[3]/**tLiquidity*/ = tAmount.div(100).mul(0);
        _localVal[4]/**tTransferAmount*/ = tAmount.sub(_localVal[2]).sub(_localVal[1]).sub(_localVal[0]).sub(_localVal[3]);
        return (_localVal[4], _localVal[2], _localVal[1],_localVal[0], _localVal[3]);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate, uint256 tBurnValue,uint256 tTax,uint tLiquidity) private pure returns (uint256, uint256, uint256,uint256,uint256,uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurnValue = tBurnValue.mul(currentRate);
        uint256 rLiqidity = tLiquidity.mul(currentRate);
        uint256 rTax = tTax.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurnValue).sub(rTax).sub(rLiqidity);
        return (rAmount, rTransferAmount, rFee, rBurnValue,rTax,rLiqidity);
    }

    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);
        
    }    
        
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"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":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","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":[],"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"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"totalBurn","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"}]

60806040526a165578eecf9d0ffb000000600019816200001b57fe5b06600019036006556040518060400160405280601081526020017f53616979616e20536869626120496e750000000000000000000000000000000081525060089080519060200190620000709291906200027c565b506040518060400160405280600a81526020017f53414959414e534849420000000000000000000000000000000000000000000081525060099080519060200190620000be9291906200027c565b506012600a60006101000a81548160ff021916908360ff160217905550348015620000e857600080fd5b506000620000fb6200027460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460016000620001b06200027460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001fe6200027460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a165578eecf9d0ffb0000006040518082815260200191505060405180910390a362000322565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002bf57805160ff1916838001178555620002f0565b82800160010185558215620002f0579182015b82811115620002ef578251825591602001919060010190620002d2565b5b509050620002ff919062000303565b5090565b5b808211156200031e57600081600090555060010162000304565b5090565b61386f80620003326000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb146105a3578063cba0e99614610607578063dd62ed3e14610661578063f2cc0c18146106d9578063f2fde38b1461071d578063f84354f11461076157610137565b806370a0823114610426578063715018a61461047e5780638da5cb5b1461048857806395d89b41146104bc578063a457c2d71461053f57610137565b80632d838119116100ff5780632d838119146102f3578063313ce5671461033557806339509351146103565780633c9f861d146103ba5780634549b039146103d857610137565b8063053ab1821461013c57806306fdde031461016a578063095ea7b3146101ed57806318160ddd1461025157806323b872dd1461026f575b600080fd5b6101686004803603602081101561015257600080fd5b81019080803590602001909291905050506107a5565b005b610172610938565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b2578082015181840152602081019050610197565b50505050905090810190601f1680156101df5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102396004803603604081101561020357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109da565b60405180821515815260200191505060405180910390f35b6102596109f8565b6040518082815260200191505060405180910390f35b6102db6004803603606081101561028557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a0b565b60405180821515815260200191505060405180910390f35b61031f6004803603602081101561030957600080fd5b8101908080359060200190929190505050610ae4565b6040518082815260200191505060405180910390f35b61033d610b68565b604051808260ff16815260200191505060405180910390f35b6103a26004803603604081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7f565b60405180821515815260200191505060405180910390f35b6103c2610c32565b6040518082815260200191505060405180910390f35b610410600480360360408110156103ee57600080fd5b8101908080359060200190929190803515159060200190929190505050610c3c565b6040518082815260200191505060405180910390f35b6104686004803603602081101561043c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b6040518082815260200191505060405180910390f35b610486610deb565b005b610490610f71565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c4610f9a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105045780820151818401526020810190506104e9565b50505050905090810190601f1680156105315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61058b6004803603604081101561055557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061103c565b60405180821515815260200191505060405180910390f35b6105ef600480360360408110156105b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611109565b60405180821515815260200191505060405180910390f35b6106496004803603602081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611127565b60405180821515815260200191505060405180910390f35b6106c36004803603604081101561067757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117d565b6040518082815260200191505060405180910390f35b61071b600480360360208110156106ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611204565b005b61075f6004803603602081101561073357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b005b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611729565b005b60006107af611ab3565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806137e9602c913960400191505060405180910390fd5b600061085f83611abb565b5050505050505090506108ba81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061091281600654611cf790919063ffffffff16565b60068190555061092d83600754611d4190919063ffffffff16565b600781905550505050565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109d05780601f106109a5576101008083540402835291602001916109d0565b820191906000526020600020905b8154815290600101906020018083116109b357829003601f168201915b5050505050905090565b60006109ee6109e7611ab3565b8484611dc9565b6001905092915050565b60006a165578eecf9d0ffb000000905090565b6000610a18848484611fc0565b610ad984610a24611ab3565b610ad48560405180606001604052806028815260200161374f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a8a611ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124199092919063ffffffff16565b611dc9565b600190509392505050565b6000600654821115610b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806136bc602a913960400191505060405180910390fd5b6000610b4b6124d9565b9050610b60818461250490919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b6000610c28610b8c611ab3565b84610c238560036000610b9d611ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b611dc9565b6001905092915050565b6000600754905090565b60006a165578eecf9d0ffb000000831115610cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81610ce1576000610ccf84611abb565b50505050505050905080915050610cfa565b6000610cec84611abb565b505050505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d9b57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610de6565b610de3600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ae4565b90505b919050565b610df3611ab3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110325780601f1061100757610100808354040283529160200191611032565b820191906000526020600020905b81548152906001019060200180831161101557829003601f168201915b5050505050905090565b60006110ff611049611ab3565b846110fa856040518060600160405280602581526020016138156025913960036000611073611ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124199092919063ffffffff16565b611dc9565b6001905092915050565b600061111d611116611ab3565b8484611fc0565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61120c611ab3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114605761141c600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ae4565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611526611ab3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561166c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806136e66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611731611ab3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c726561647920696e636c75646564000000000081525060200191505060405180910390fd5b60005b600580549050811015611aaf578173ffffffffffffffffffffffffffffffffffffffff16600582815481106118e457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611aa25760056001600580549050038154811061194057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061197857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480611a6857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611aaf565b80806001019150506118b3565b5050565b600033905090565b600080600080600080600080611acf613653565b611ad88a61254e565b856000600c8110611ae557fe5b60200201866001600c8110611af657fe5b60200201876002600c8110611b0757fe5b60200201886008600c8110611b1857fe5b6020020189600a600c8110611b2957fe5b6020020185815250858152508581525085815250858152505050505050611b4e6124d9565b816003600c8110611b5b57fe5b602002018181525050611bc78a826001600c8110611b7557fe5b6020020151836003600c8110611b8757fe5b6020020151846002600c8110611b9957fe5b6020020151856008600c8110611bab57fe5b602002015186600a600c8110611bbd57fe5b6020020151612763565b866004600c8110611bd457fe5b60200201876005600c8110611be557fe5b60200201886006600c8110611bf657fe5b60200201896007600c8110611c0757fe5b602002018a6009600c8110611c1857fe5b602002018b600b600c8110611c2957fe5b60200201868152508681525086815250868152508681525086815250505050505050806004600c8110611c5857fe5b6020020151816005600c8110611c6a57fe5b6020020151826006600c8110611c7c57fe5b6020020151836000600c8110611c8e57fe5b6020020151846001600c8110611ca057fe5b6020020151856002600c8110611cb257fe5b6020020151866008600c8110611cc457fe5b602002015187600a600c8110611cd657fe5b60200201519850985098509850985098509850985050919395975091939597565b6000611d3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612419565b905092915050565b600080828401905083811015611dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137c56024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061370c6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612046576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806137a06025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806136996023913960400191505060405180910390fd5b60008111612125576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806137776029913960400191505060405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121c85750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121dd576121d8838383612853565b612414565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122805750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561229557612290838383612ab6565b612413565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123395750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234e57612349838383612d19565b612412565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123f05750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561240557612400838383612ee7565b612411565b612410838383612d19565b5b5b5b5b505050565b60008383111582906124c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561248b578082015181840152602081019050612470565b50505050905090810190601f1680156124b85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006124e66131df565b915091506124fd818361250490919063ffffffff16565b9250505090565b600061254683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613494565b905092915050565b600080600080600061255e613676565b612585600061257760648a61250490919063ffffffff16565b61355a90919063ffffffff16565b8160006005811061259257fe5b6020020181815250506125c260006125b460648a61250490919063ffffffff16565b61355a90919063ffffffff16565b816001600581106125cf57fe5b6020020181815250506125ff60006125f160648a61250490919063ffffffff16565b61355a90919063ffffffff16565b8160026005811061260c57fe5b60200201818152505061263c600061262e60648a61250490919063ffffffff16565b61355a90919063ffffffff16565b8160036005811061264957fe5b6020020181815250506126df8160036005811061266257fe5b60200201516126d18360006005811061267757fe5b60200201516126c38560016005811061268c57fe5b60200201516126b5876002600581106126a157fe5b60200201518e611cf790919063ffffffff16565b611cf790919063ffffffff16565b611cf790919063ffffffff16565b611cf790919063ffffffff16565b816004600581106126ec57fe5b6020020181815250508060046005811061270257fe5b60200201518160026005811061271457fe5b60200201518260016005811061272657fe5b60200201518360006005811061273857fe5b60200201518460036005811061274a57fe5b6020020151955095509550955095505091939590929450565b60008060008060008060006127818b8e61355a90919063ffffffff16565b905060006127988c8e61355a90919063ffffffff16565b905060006127af8d8d61355a90919063ffffffff16565b905060006127c68e8c61355a90919063ffffffff16565b905060006127dd8f8e61355a90919063ffffffff16565b9050600061282a8361281c8461280e886128008b8d611cf790919063ffffffff16565b611cf790919063ffffffff16565b611cf790919063ffffffff16565b611cf790919063ffffffff16565b90508581868685879b509b509b509b509b509b5050505050505096509650965096509650969050565b60008060008060008060008061286889611abb565b975097509750975097509750975097506128ca89600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061295f88600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129f487600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a4486858585856135e0565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050505050565b600080600080600080600080612acb89611abb565b97509750975097509750975097509750612b2d88600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bc285600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c5787600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ca786858585856135e0565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050505050565b600080600080600080600080612d2e89611abb565b97509750975097509750975097509750612d9088600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2587600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e7586858585856135e0565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050505050565b600080600080600080600080612efc89611abb565b97509750975097509750975097509750612f5e89600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ff388600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061308885600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311d87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061316d86858585856135e0565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050505050565b6000806000600654905060006a165578eecf9d0ffb000000905060005b6005805490508110156134455782600160006005848154811061321b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613302575081600260006005848154811061329a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613322576006546a165578eecf9d0ffb00000094509450505050613490565b6133ab600160006005848154811061333657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611cf790919063ffffffff16565b925061343660026000600584815481106133c157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611cf790919063ffffffff16565b915080806001019150506131fc565b506134666a165578eecf9d0ffb00000060065461250490919063ffffffff16565b821015613487576006546a165578eecf9d0ffb000000935093505050613490565b81819350935050505b9091565b60008083118290613540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135055780820151818401526020810190506134ea565b50505050905090810190601f1680156135325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161354c57fe5b049050809150509392505050565b60008083141561356d57600090506135da565b600082840290508284828161357e57fe5b04146135d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061372e6021913960400191505060405180910390fd5b809150505b92915050565b6135f585600654611cf790919063ffffffff16565b600681905550613646816136388461362a8761361c8a600754611d4190919063ffffffff16565b611d4190919063ffffffff16565b611d4190919063ffffffff16565b611d4190919063ffffffff16565b6007819055505050505050565b604051806101800160405280600c90602082028036833780820191505090505090565b6040518060a0016040528060059060208202803683378082019150509050509056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bf8fb85f4bbcaae6ca544987a912d3d8b4a2191b8041fc1b9348d66810726e9464736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb146105a3578063cba0e99614610607578063dd62ed3e14610661578063f2cc0c18146106d9578063f2fde38b1461071d578063f84354f11461076157610137565b806370a0823114610426578063715018a61461047e5780638da5cb5b1461048857806395d89b41146104bc578063a457c2d71461053f57610137565b80632d838119116100ff5780632d838119146102f3578063313ce5671461033557806339509351146103565780633c9f861d146103ba5780634549b039146103d857610137565b8063053ab1821461013c57806306fdde031461016a578063095ea7b3146101ed57806318160ddd1461025157806323b872dd1461026f575b600080fd5b6101686004803603602081101561015257600080fd5b81019080803590602001909291905050506107a5565b005b610172610938565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b2578082015181840152602081019050610197565b50505050905090810190601f1680156101df5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102396004803603604081101561020357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109da565b60405180821515815260200191505060405180910390f35b6102596109f8565b6040518082815260200191505060405180910390f35b6102db6004803603606081101561028557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a0b565b60405180821515815260200191505060405180910390f35b61031f6004803603602081101561030957600080fd5b8101908080359060200190929190505050610ae4565b6040518082815260200191505060405180910390f35b61033d610b68565b604051808260ff16815260200191505060405180910390f35b6103a26004803603604081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7f565b60405180821515815260200191505060405180910390f35b6103c2610c32565b6040518082815260200191505060405180910390f35b610410600480360360408110156103ee57600080fd5b8101908080359060200190929190803515159060200190929190505050610c3c565b6040518082815260200191505060405180910390f35b6104686004803603602081101561043c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b6040518082815260200191505060405180910390f35b610486610deb565b005b610490610f71565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c4610f9a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105045780820151818401526020810190506104e9565b50505050905090810190601f1680156105315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61058b6004803603604081101561055557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061103c565b60405180821515815260200191505060405180910390f35b6105ef600480360360408110156105b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611109565b60405180821515815260200191505060405180910390f35b6106496004803603602081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611127565b60405180821515815260200191505060405180910390f35b6106c36004803603604081101561067757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117d565b6040518082815260200191505060405180910390f35b61071b600480360360208110156106ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611204565b005b61075f6004803603602081101561073357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b005b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611729565b005b60006107af611ab3565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806137e9602c913960400191505060405180910390fd5b600061085f83611abb565b5050505050505090506108ba81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061091281600654611cf790919063ffffffff16565b60068190555061092d83600754611d4190919063ffffffff16565b600781905550505050565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109d05780601f106109a5576101008083540402835291602001916109d0565b820191906000526020600020905b8154815290600101906020018083116109b357829003601f168201915b5050505050905090565b60006109ee6109e7611ab3565b8484611dc9565b6001905092915050565b60006a165578eecf9d0ffb000000905090565b6000610a18848484611fc0565b610ad984610a24611ab3565b610ad48560405180606001604052806028815260200161374f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a8a611ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124199092919063ffffffff16565b611dc9565b600190509392505050565b6000600654821115610b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806136bc602a913960400191505060405180910390fd5b6000610b4b6124d9565b9050610b60818461250490919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b6000610c28610b8c611ab3565b84610c238560036000610b9d611ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b611dc9565b6001905092915050565b6000600754905090565b60006a165578eecf9d0ffb000000831115610cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81610ce1576000610ccf84611abb565b50505050505050905080915050610cfa565b6000610cec84611abb565b505050505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d9b57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610de6565b610de3600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ae4565b90505b919050565b610df3611ab3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110325780601f1061100757610100808354040283529160200191611032565b820191906000526020600020905b81548152906001019060200180831161101557829003601f168201915b5050505050905090565b60006110ff611049611ab3565b846110fa856040518060600160405280602581526020016138156025913960036000611073611ab3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124199092919063ffffffff16565b611dc9565b6001905092915050565b600061111d611116611ab3565b8484611fc0565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61120c611ab3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114605761141c600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ae4565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611526611ab3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561166c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806136e66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611731611ab3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c726561647920696e636c75646564000000000081525060200191505060405180910390fd5b60005b600580549050811015611aaf578173ffffffffffffffffffffffffffffffffffffffff16600582815481106118e457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611aa25760056001600580549050038154811061194057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061197857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480611a6857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611aaf565b80806001019150506118b3565b5050565b600033905090565b600080600080600080600080611acf613653565b611ad88a61254e565b856000600c8110611ae557fe5b60200201866001600c8110611af657fe5b60200201876002600c8110611b0757fe5b60200201886008600c8110611b1857fe5b6020020189600a600c8110611b2957fe5b6020020185815250858152508581525085815250858152505050505050611b4e6124d9565b816003600c8110611b5b57fe5b602002018181525050611bc78a826001600c8110611b7557fe5b6020020151836003600c8110611b8757fe5b6020020151846002600c8110611b9957fe5b6020020151856008600c8110611bab57fe5b602002015186600a600c8110611bbd57fe5b6020020151612763565b866004600c8110611bd457fe5b60200201876005600c8110611be557fe5b60200201886006600c8110611bf657fe5b60200201896007600c8110611c0757fe5b602002018a6009600c8110611c1857fe5b602002018b600b600c8110611c2957fe5b60200201868152508681525086815250868152508681525086815250505050505050806004600c8110611c5857fe5b6020020151816005600c8110611c6a57fe5b6020020151826006600c8110611c7c57fe5b6020020151836000600c8110611c8e57fe5b6020020151846001600c8110611ca057fe5b6020020151856002600c8110611cb257fe5b6020020151866008600c8110611cc457fe5b602002015187600a600c8110611cd657fe5b60200201519850985098509850985098509850985050919395975091939597565b6000611d3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612419565b905092915050565b600080828401905083811015611dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137c56024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061370c6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612046576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806137a06025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806136996023913960400191505060405180910390fd5b60008111612125576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806137776029913960400191505060405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121c85750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121dd576121d8838383612853565b612414565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122805750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561229557612290838383612ab6565b612413565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123395750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234e57612349838383612d19565b612412565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123f05750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561240557612400838383612ee7565b612411565b612410838383612d19565b5b5b5b5b505050565b60008383111582906124c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561248b578082015181840152602081019050612470565b50505050905090810190601f1680156124b85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006124e66131df565b915091506124fd818361250490919063ffffffff16565b9250505090565b600061254683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613494565b905092915050565b600080600080600061255e613676565b612585600061257760648a61250490919063ffffffff16565b61355a90919063ffffffff16565b8160006005811061259257fe5b6020020181815250506125c260006125b460648a61250490919063ffffffff16565b61355a90919063ffffffff16565b816001600581106125cf57fe5b6020020181815250506125ff60006125f160648a61250490919063ffffffff16565b61355a90919063ffffffff16565b8160026005811061260c57fe5b60200201818152505061263c600061262e60648a61250490919063ffffffff16565b61355a90919063ffffffff16565b8160036005811061264957fe5b6020020181815250506126df8160036005811061266257fe5b60200201516126d18360006005811061267757fe5b60200201516126c38560016005811061268c57fe5b60200201516126b5876002600581106126a157fe5b60200201518e611cf790919063ffffffff16565b611cf790919063ffffffff16565b611cf790919063ffffffff16565b611cf790919063ffffffff16565b816004600581106126ec57fe5b6020020181815250508060046005811061270257fe5b60200201518160026005811061271457fe5b60200201518260016005811061272657fe5b60200201518360006005811061273857fe5b60200201518460036005811061274a57fe5b6020020151955095509550955095505091939590929450565b60008060008060008060006127818b8e61355a90919063ffffffff16565b905060006127988c8e61355a90919063ffffffff16565b905060006127af8d8d61355a90919063ffffffff16565b905060006127c68e8c61355a90919063ffffffff16565b905060006127dd8f8e61355a90919063ffffffff16565b9050600061282a8361281c8461280e886128008b8d611cf790919063ffffffff16565b611cf790919063ffffffff16565b611cf790919063ffffffff16565b611cf790919063ffffffff16565b90508581868685879b509b509b509b509b509b5050505050505096509650965096509650969050565b60008060008060008060008061286889611abb565b975097509750975097509750975097506128ca89600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061295f88600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129f487600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a4486858585856135e0565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050505050565b600080600080600080600080612acb89611abb565b97509750975097509750975097509750612b2d88600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bc285600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c5787600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ca786858585856135e0565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050505050565b600080600080600080600080612d2e89611abb565b97509750975097509750975097509750612d9088600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2587600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e7586858585856135e0565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050505050565b600080600080600080600080612efc89611abb565b97509750975097509750975097509750612f5e89600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ff388600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf790919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061308885600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311d87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4190919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061316d86858585856135e0565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a35050505050505050505050565b6000806000600654905060006a165578eecf9d0ffb000000905060005b6005805490508110156134455782600160006005848154811061321b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613302575081600260006005848154811061329a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613322576006546a165578eecf9d0ffb00000094509450505050613490565b6133ab600160006005848154811061333657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611cf790919063ffffffff16565b925061343660026000600584815481106133c157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611cf790919063ffffffff16565b915080806001019150506131fc565b506134666a165578eecf9d0ffb00000060065461250490919063ffffffff16565b821015613487576006546a165578eecf9d0ffb000000935093505050613490565b81819350935050505b9091565b60008083118290613540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135055780820151818401526020810190506134ea565b50505050905090810190601f1680156135325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161354c57fe5b049050809150509392505050565b60008083141561356d57600090506135da565b600082840290508284828161357e57fe5b04146135d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061372e6021913960400191505060405180910390fd5b809150505b92915050565b6135f585600654611cf790919063ffffffff16565b600681905550613646816136388461362a8761361c8a600754611d4190919063ffffffff16565b611d4190919063ffffffff16565b611d4190919063ffffffff16565b611d4190919063ffffffff16565b6007819055505050505050565b604051806101800160405280600c90602082028036833780820191505090505090565b6040518060a0016040528060059060208202803683378082019150509050509056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bf8fb85f4bbcaae6ca544987a912d3d8b4a2191b8041fc1b9348d66810726e9464736f6c634300060c0033

Deployed Bytecode Sourcemap

15644:11713:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18628:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16509:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17421:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16786:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17590:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19465:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16695:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17911:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18532:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19017:440;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16889:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15092:148;;;:::i;:::-;;14454:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16600:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18137:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17095:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18414:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17270:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19726:332;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15393:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20066:478;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18628:381;18680:14;18697:12;:10;:12::i;:::-;18680:29;;18729:11;:19;18741:6;18729:19;;;;;;;;;;;;;;;;;;;;;;;;;18728:20;18720:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18809:15;18835:19;18846:7;18835:10;:19::i;:::-;18808:46;;;;;;;;;18883:28;18903:7;18883;:15;18891:6;18883:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18865:7;:15;18873:6;18865:15;;;;;;;;;;;;;;;:46;;;;18932:20;18944:7;18932;;:11;;:20;;;;:::i;:::-;18922:7;:30;;;;18977:24;18993:7;18977:11;;:15;;:24;;;;:::i;:::-;18963:11;:38;;;;18628:381;;;:::o;16509:83::-;16546:13;16579:5;16572:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16509:83;:::o;17421:161::-;17496:4;17513:39;17522:12;:10;:12::i;:::-;17536:7;17545:6;17513:8;:39::i;:::-;17570:4;17563:11;;17421:161;;;;:::o;16786:95::-;16839:7;16125:17;16859:14;;16786:95;:::o;17590:313::-;17688:4;17705:36;17715:6;17723:9;17734:6;17705:9;:36::i;:::-;17752:121;17761:6;17769:12;:10;:12::i;:::-;17783:89;17821:6;17783:89;;;;;;;;;;;;;;;;;:11;:19;17795:6;17783:19;;;;;;;;;;;;;;;:33;17803:12;:10;:12::i;:::-;17783:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17752:8;:121::i;:::-;17891:4;17884:11;;17590:313;;;;;:::o;19465:253::-;19531:7;19570;;19559;:18;;19551:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19635:19;19658:10;:8;:10::i;:::-;19635:33;;19686:24;19698:11;19686:7;:11;;:24;;;;:::i;:::-;19679:31;;;19465:253;;;:::o;16695:83::-;16736:5;16761:9;;;;;;;;;;;16754:16;;16695:83;:::o;17911:218::-;17999:4;18016:83;18025:12;:10;:12::i;:::-;18039:7;18048:50;18087:10;18048:11;:25;18060:12;:10;:12::i;:::-;18048:25;;;;;;;;;;;;;;;:34;18074:7;18048:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18016:8;:83::i;:::-;18117:4;18110:11;;17911:218;;;;:::o;18532:88::-;18574:7;18601:11;;18594:18;;18532:88;:::o;19017:440::-;19107:7;16125:17;19135:7;:18;;19127:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19205:17;19200:250;;19240:15;19266:19;19277:7;19266:10;:19::i;:::-;19239:46;;;;;;;;;19307:7;19300:14;;;;;19200:250;19349:23;19382:19;19393:7;19382:10;:19::i;:::-;19347:54;;;;;;;;;19423:15;19416:22;;;19017:440;;;;;:::o;16889:198::-;16955:7;16979:11;:20;16991:7;16979:20;;;;;;;;;;;;;;;;;;;;;;;;;16975:49;;;17008:7;:16;17016:7;17008:16;;;;;;;;;;;;;;;;17001:23;;;;16975:49;17042:37;17062:7;:16;17070:7;17062:16;;;;;;;;;;;;;;;;17042:19;:37::i;:::-;17035:44;;16889:198;;;;:::o;15092:148::-;14674:12;:10;:12::i;:::-;14664:22;;:6;;;;;;;;;;:22;;;14656:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15199:1:::1;15162:40;;15183:6;::::0;::::1;;;;;;;;15162:40;;;;;;;;;;;;15230:1;15213:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15092:148::o:0;14454:79::-;14492:7;14519:6;;;;;;;;;;;14512:13;;14454:79;:::o;16600:87::-;16639:13;16672:7;16665:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16600:87;:::o;18137:269::-;18230:4;18247:129;18256:12;:10;:12::i;:::-;18270:7;18279:96;18318:15;18279:96;;;;;;;;;;;;;;;;;:11;:25;18291:12;:10;:12::i;:::-;18279:25;;;;;;;;;;;;;;;:34;18305:7;18279:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18247:8;:129::i;:::-;18394:4;18387:11;;18137:269;;;;:::o;17095:167::-;17173:4;17190:42;17200:12;:10;:12::i;:::-;17214:9;17225:6;17190:9;:42::i;:::-;17250:4;17243:11;;17095:167;;;;:::o;18414:110::-;18472:4;18496:11;:20;18508:7;18496:20;;;;;;;;;;;;;;;;;;;;;;;;;18489:27;;18414:110;;;:::o;17270:143::-;17351:7;17378:11;:18;17390:5;17378:18;;;;;;;;;;;;;;;:27;17397:7;17378:27;;;;;;;;;;;;;;;;17371:34;;17270:143;;;;:::o;19726:332::-;14674:12;:10;:12::i;:::-;14664:22;;:6;;;;;;;;;;:22;;;14656:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19808:11:::1;:20;19820:7;19808:20;;;;;;;;;;;;;;;;;;;;;;;;;19807:21;19799:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19893:1;19874:7;:16;19882:7;19874:16;;;;;;;;;;;;;;;;:20;19871:108;;;19930:37;19950:7;:16;19958:7;19950:16;;;;;;;;;;;;;;;;19930:19;:37::i;:::-;19911:7;:16;19919:7;19911:16;;;;;;;;;;;;;;;:56;;;;19871:108;20012:4;19989:11;:20;20001:7;19989:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20027:9;20042:7;20027:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19726:332:::0;:::o;15393:244::-;14674:12;:10;:12::i;:::-;14664:22;;:6;;;;;;;;;;:22;;;14656:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15502:1:::1;15482:22;;:8;:22;;;;15474:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15592:8;15563:38;;15584:6;::::0;::::1;;;;;;;;15563:38;;;;;;;;;;;;15621:8;15612:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15393:244:::0;:::o;20066:478::-;14674:12;:10;:12::i;:::-;14664:22;;:6;;;;;;;;;;:22;;;14656:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20147:11:::1;:20;20159:7;20147:20;;;;;;;;;;;;;;;;;;;;;;;;;20139:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;20215:9;20210:327;20234:9;:16;;;;20230:1;:20;20210:327;;;20292:7;20276:23;;:9;20286:1;20276:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;20272:254;;;20335:9;20364:1;20345:9;:16;;;;:20;20335:31;;;;;;;;;;;;;;;;;;;;;;;;;20320:9;20330:1;20320:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20404:1;20385:7;:16;20393:7;20385:16;;;;;;;;;;;;;;;:20;;;;20447:5;20424:11;:20;20436:7;20424:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20471:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20505:5;;20272:254;20252:3;;;;;;;20210:327;;;;20066:478:::0;:::o;199:106::-;252:15;287:10;280:17;;199:106;:::o;24509:802::-;24568:7;24577;24586;24595;24604;24612;24620;24628;24648:28;;:::i;:::-;24829:20;24841:7;24829:11;:20::i;:::-;24688:9;24698:1;24688:12;;;;;;;;;;24722:9;24732:1;24722:12;;;;;;;;;;24747:9;24757:1;24747:12;;;;;;;;;;24776:9;24786:1;24776:12;;;;;;;;;;24797:9;24807:2;24797:13;;;;;;;;;;24687:162;;;;;;;;;;;;;;;;;;;;;;;;;24893:10;:8;:10::i;:::-;24860:9;24870:1;24860:12;;;;;;;;;;:43;;;;;25085:89;25097:7;25106:9;25116:1;25106:12;;;;;;;;;;;25120:9;25130:1;25120:12;;;;;;;;;;;25134:9;25144:1;25134:12;;;;;;;;;;;25147:9;25157:1;25147:12;;;;;;;;;;;25160:9;25170:2;25160:13;;;;;;;;;;;25085:11;:89::i;:::-;24916:9;24926:1;24916:12;;;;;;;;;;24944:9;24954:1;24944:12;;;;;;;;;;24979:9;24989:1;24979:12;;;;;;;;;;25003:9;25013:1;25003:12;;;;;;;;;;25032:9;25042:1;25032:12;;;;;;;;;;25053:9;25063:2;25053:13;;;;;;;;;;24914:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25193:9;25203:1;25193:12;;;;;;;;;;;25207:9;25217:1;25207:12;;;;;;;;;;;25221:9;25231:1;25221:12;;;;;;;;;;;25235:9;25245:1;25235:12;;;;;;;;;;;25249:9;25259:1;25249:12;;;;;;;;;;;25263:9;25273:1;25263:12;;;;;;;;;;;25276:9;25286:1;25276:12;;;;;;;;;;;25289:9;25299:2;25289:13;;;;;;;;;;;25185:118;;;;;;;;;;;;;;;;;24509:802;;;;;;;;;:::o;3903:136::-;3961:7;3988:43;3992:1;3995;3988:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3981:50;;3903:136;;;;:::o;3441:181::-;3499:7;3519:9;3535:1;3531;:5;3519:17;;3560:1;3555;:6;;3547:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3613:1;3606:8;;;3441:181;;;;:::o;20552:337::-;20662:1;20645:19;;:5;:19;;;;20637:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20743:1;20724:21;;:7;:21;;;;20716:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20827:6;20797:11;:18;20809:5;20797:18;;;;;;;;;;;;;;;:27;20816:7;20797:27;;;;;;;;;;;;;;;:36;;;;20865:7;20849:32;;20858:5;20849:32;;;20874:6;20849:32;;;;;;;;;;;;;;;;;;20552:337;;;:::o;20897:931::-;21012:1;20994:20;;:6;:20;;;;20986:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21096:1;21075:23;;:9;:23;;;;21067:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21166:1;21157:6;:10;21149:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21228:11;:19;21240:6;21228:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;21252:11;:22;21264:9;21252:22;;;;;;;;;;;;;;;;;;;;;;;;;21251:23;21228:46;21224:597;;;21291:48;21313:6;21321:9;21332:6;21291:21;:48::i;:::-;21224:597;;;21362:11;:19;21374:6;21362:19;;;;;;;;;;;;;;;;;;;;;;;;;21361:20;:46;;;;;21385:11;:22;21397:9;21385:22;;;;;;;;;;;;;;;;;;;;;;;;;21361:46;21357:464;;;21424:46;21444:6;21452:9;21463:6;21424:19;:46::i;:::-;21357:464;;;21493:11;:19;21505:6;21493:19;;;;;;;;;;;;;;;;;;;;;;;;;21492:20;:47;;;;;21517:11;:22;21529:9;21517:22;;;;;;;;;;;;;;;;;;;;;;;;;21516:23;21492:47;21488:333;;;21556:44;21574:6;21582:9;21593:6;21556:17;:44::i;:::-;21488:333;;;21622:11;:19;21634:6;21622:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;21645:11;:22;21657:9;21645:22;;;;;;;;;;;;;;;;;;;;;;;;;21622:45;21618:203;;;21684:48;21706:6;21714:9;21725:6;21684:21;:48::i;:::-;21618:203;;;21765:44;21783:6;21791:9;21802:6;21765:17;:44::i;:::-;21618:203;21488:333;21357:464;21224:597;20897:931;;;:::o;4340:190::-;4426:7;4459:1;4454;:6;;4462:12;4446:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:9;4502:1;4498;:5;4486:17;;4521:1;4514:8;;;4340:190;;;;;:::o;26598:163::-;26639:7;26660:15;26677;26696:19;:17;:19::i;:::-;26659:56;;;;26733:20;26745:7;26733;:11;;:20;;;;:::i;:::-;26726:27;;;;26598:163;:::o;5728:132::-;5786:7;5813:39;5817:1;5820;5813:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5806:46;;5728:132;;;;:::o;25323:620::-;25383:7;25392;25401;25409;25417;25437:27;;:::i;:::-;25511:23;25532:1;25511:16;25523:3;25511:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25485:9;25495:1;25485:12;;;;;;;;;;:49;;;;;25575:23;25596:1;25575:16;25587:3;25575:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25545:9;25555:1;25545:12;;;;;;;;;;:53;;;;;25636:23;25657:1;25636:16;25648:3;25636:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25609:9;25619:1;25609:12;;;;;;;;;;:50;;;;;25700:23;25721:1;25700:16;25712:3;25700:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25670:9;25680:1;25670:12;;;;;;;;;;:53;;;;;25769:79;25835:9;25845:1;25835:12;;;;;;;;;;;25769:61;25817:9;25827:1;25817:12;;;;;;;;;;;25769:43;25799:9;25809:1;25799:12;;;;;;;;;;;25769:25;25781:9;25791:1;25781:12;;;;;;;;;;;25769:7;:11;;:25;;;;:::i;:::-;:29;;:43;;;;:::i;:::-;:47;;:61;;;;:::i;:::-;:65;;:79;;;;:::i;:::-;25734:9;25744:1;25734:12;;;;;;;;;;:114;;;;;25867:9;25877:1;25867:12;;;;;;;;;;;25881:9;25891:1;25881:12;;;;;;;;;;;25895:9;25905:1;25895:12;;;;;;;;;;;25908:9;25918:1;25908:12;;;;;;;;;;;25922:9;25932:1;25922:12;;;;;;;;;;;25859:76;;;;;;;;;;;25323:620;;;;;;;:::o;25951:639::-;26095:7;26104;26113;26121;26129;26137;26157:15;26175:24;26187:11;26175:7;:11;;:24;;;;:::i;:::-;26157:42;;26210:12;26225:21;26234:11;26225:4;:8;;:21;;;;:::i;:::-;26210:36;;26257:18;26278:27;26293:11;26278:10;:14;;:27;;;;:::i;:::-;26257:48;;26316:17;26336:27;26351:11;26336:10;:14;;:27;;;;:::i;:::-;26316:47;;26374:12;26389:21;26398:11;26389:4;:8;;:21;;;;:::i;:::-;26374:36;;26421:23;26447:58;26495:9;26447:43;26485:4;26447:33;26469:10;26447:17;26459:4;26447:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:43;;;;:::i;:::-;:47;;:58;;;;:::i;:::-;26421:84;;26524:7;26533:15;26550:4;26556:10;26567:4;26572:9;26516:66;;;;;;;;;;;;;;;;;;25951:639;;;;;;;;;;;;;:::o;22991:587::-;23094:15;23111:23;23136:12;23150:23;23175:12;23188:18;23207:12;23220:18;23242:19;23253:7;23242:10;:19::i;:::-;23093:168;;;;;;;;;;;;;;;;23290:28;23310:7;23290;:15;23298:6;23290:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23272:7;:15;23280:6;23272:15;;;;;;;;;;;;;;;:46;;;;23347:28;23367:7;23347;:15;23355:6;23347:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23329:7;:15;23337:6;23329:15;;;;;;;;;;;;;;;:46;;;;23407:39;23430:15;23407:7;:18;23415:9;23407:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23386:7;:18;23394:9;23386:18;;;;;;;;;;;;;;;:60;;;;23459:51;23471:4;23477;23483:10;23494:4;23499:10;23459:11;:51::i;:::-;23543:9;23526:44;;23535:6;23526:44;;;23554:15;23526:44;;;;;;;;;;;;;;;;;;22991:587;;;;;;;;;;;:::o;22375:608::-;22476:15;22493:23;22518:12;22532:23;22557:12;22570:18;22589:12;22602:18;22624:19;22635:7;22624:10;:19::i;:::-;22475:168;;;;;;;;;;;;;;;;22672:28;22692:7;22672;:15;22680:6;22672:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22654:7;:15;22662:6;22654:15;;;;;;;;;;;;;;;:46;;;;22732:39;22755:15;22732:7;:18;22740:9;22732:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22711:7;:18;22719:9;22711:18;;;;;;;;;;;;;;;:60;;;;22803:39;22826:15;22803:7;:18;22811:9;22803:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22782:7;:18;22790:9;22782:18;;;;;;;;;;;;;;;:60;;;;22864:51;22876:4;22882;22888:10;22899:4;22904:10;22864:11;:51::i;:::-;22948:9;22931:44;;22940:6;22931:44;;;22959:15;22931:44;;;;;;;;;;;;;;;;;;22375:608;;;;;;;;;;;:::o;21836:531::-;21935:15;21952:23;21977:12;21991:23;22016:12;22029:18;22048:12;22061:18;22083:19;22094:7;22083:10;:19::i;:::-;21934:168;;;;;;;;;;;;;;;;22131:28;22151:7;22131;:15;22139:6;22131:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22113:7;:15;22121:6;22113:15;;;;;;;;;;;;;;;:46;;;;22191:39;22214:15;22191:7;:18;22199:9;22191:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22170:7;:18;22178:9;22170:18;;;;;;;;;;;;;;;:60;;;;22248:51;22260:4;22266;22272:10;22283:4;22288:10;22248:11;:51::i;:::-;22332:9;22315:44;;22324:6;22315:44;;;22343:15;22315:44;;;;;;;;;;;;;;;;;;21836:531;;;;;;;;;;;:::o;23586:664::-;23689:15;23706:23;23731:12;23745:23;23770:12;23783:18;23802:12;23815:18;23837:19;23848:7;23837:10;:19::i;:::-;23688:168;;;;;;;;;;;;;;;;23885:28;23905:7;23885;:15;23893:6;23885:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23867:7;:15;23875:6;23867:15;;;;;;;;;;;;;;;:46;;;;23942:28;23962:7;23942;:15;23950:6;23942:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23924:7;:15;23932:6;23924:15;;;;;;;;;;;;;;;:46;;;;24002:39;24025:15;24002:7;:18;24010:9;24002:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23981:7;:18;23989:9;23981:18;;;;;;;;;;;;;;;:60;;;;24073:39;24096:15;24073:7;:18;24081:9;24073:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24052:7;:18;24060:9;24052:18;;;;;;;;;;;;;;;:60;;;;24131:51;24143:4;24149;24155:10;24166:4;24171:10;24131:11;:51::i;:::-;24215:9;24198:44;;24207:6;24198:44;;;24226:15;24198:44;;;;;;;;;;;;;;;;;;23586:664;;;;;;;;;;;:::o;26769:571::-;26819:7;26828;26848:15;26866:7;;26848:25;;26884:15;16125:17;26884:25;;26931:9;26926:289;26950:9;:16;;;;26946:1;:20;26926:289;;;27016:7;26992;:21;27000:9;27010:1;27000:12;;;;;;;;;;;;;;;;;;;;;;;;;26992:21;;;;;;;;;;;;;;;;:31;:66;;;;27051:7;27027;:21;27035:9;27045:1;27035:12;;;;;;;;;;;;;;;;;;;;;;;;;27027:21;;;;;;;;;;;;;;;;:31;26992:66;26988:97;;;27068:7;;16125:17;27060:25;;;;;;;;;26988:97;27110:34;27122:7;:21;27130:9;27140:1;27130:12;;;;;;;;;;;;;;;;;;;;;;;;;27122:21;;;;;;;;;;;;;;;;27110:7;:11;;:34;;;;:::i;:::-;27100:44;;27169:34;27181:7;:21;27189:9;27199:1;27189:12;;;;;;;;;;;;;;;;;;;;;;;;;27181:21;;;;;;;;;;;;;;;;27169:7;:11;;:34;;;;:::i;:::-;27159:44;;26968:3;;;;;;;26926:289;;;;27239:20;16125:17;27239:7;;:11;;:20;;;;:::i;:::-;27229:7;:30;27225:61;;;27269:7;;16125:17;27261:25;;;;;;;;27225:61;27305:7;27314;27297:25;;;;;;26769:571;;;:::o;6354:276::-;6440:7;6472:1;6468;:5;6475:12;6460:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6499:9;6515:1;6511;:5;;;;;;6499:17;;6621:1;6614:8;;;6354:276;;;;;:::o;4787:467::-;4845:7;5095:1;5090;:6;5086:47;;;5120:1;5113:8;;;;5086:47;5143:9;5159:1;5155;:5;5143:17;;5188:1;5183;5179;:5;;;;;;:10;5171:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5245:1;5238:8;;;4787:467;;;;;:::o;24258:243::-;24388:17;24400:4;24388:7;;:11;;:17;;;;:::i;:::-;24378:7;:27;;;;24430:63;24482:10;24430:47;24472:4;24430:37;24456:10;24430:21;24446:4;24430:11;;:15;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;:41;;:47;;;;:::i;:::-;:51;;:63;;;;:::i;:::-;24416:11;:77;;;;24258:243;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://bf8fb85f4bbcaae6ca544987a912d3d8b4a2191b8041fc1b9348d66810726e94
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.