ETH Price: $3,667.28 (+1.85%)

Token

ERC-20: Elon Terrestrial (E.T)
 

Overview

Max Total Supply

1,000,000,000,000 E.T

Holders

297

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
507,177,487.256090458 E.T

Value
$0.00
0x49b04f72f443f47e27ef77876b172e817bd30964
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:
ElonTerrestrial

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-05
*/

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards 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).
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        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);
            }
        }
    }
}

abstract 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;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}  

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract ElonTerrestrial is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    address constant public burnAddr = 0x000000000000000000000000000000000000dEaD;
    address constant public zeroAddr = address(0);


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

    mapping (address => bool) private _isExcludedFromFee;

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

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

    string private _name = 'Elon Terrestrial';
    string private _symbol = 'E.T';
    uint8 private _decimals = 9;

    // Tax and team fees will start at 0 so we don't have a big impact when deploying to Uniswap
    // Team wallet address is null but the method to set the address is exposed
    uint256 private _taxFee = 3;
    uint256 private _burnFee = 1;
    uint256 private _teamFee = 10;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousBurnFee = _burnFee;
    uint256 private _previousTeamFee = _teamFee;

    address payable public _tWallet;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwap = false;
    bool public swapEnabled = true;

    uint256 private _maxTxAmount = 200000000 * 10**2 * 10**18; // 20B
    uint256 private _numOfTokensToExchangeForTeam = 5 * 10**6; // 5M

    bool private isCooldownEnabled = true;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping(address => uint256) private firstsell;
    mapping(address => uint256) private sellnumber;

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

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

    constructor (address payable tWallet) public {
        _tWallet = tWallet;
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network

        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

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

        emit Transfer(zeroAddr, _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function removeAllFee() private {
        _previousTaxFee = _taxFee;
        _previousBurnFee = _burnFee;
        _previousTeamFee = _teamFee;

        _taxFee = 0;
        _burnFee = 0;
        _teamFee = 0;
    }

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

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

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

        // Enforce the max transfer amount only if
        //   - the sender/recipient is NOT the contract owner.
        //   - the receipient is NOT the team wallet
        if(sender != owner() && recipient != owner() && recipient != _tWallet) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        // Require buyers to wait at least 30 seconds between transactions.
        if (isCooldownEnabled && sender == uniswapV2Pair && recipient != address(uniswapV2Router) && !_isExcluded[recipient]) {
            require(buycooldown[recipient] < block.timestamp);
            buycooldown[recipient] = block.timestamp + (1 minutes);
        }

        // If this is a sell transaction, index the sell number
        // and cooldown period.
        //
        // NOTE This just enforces cooldown, it does NOT enforce
        // higher fees.
        if (isCooldownEnabled && sender != uniswapV2Pair && sender != address(uniswapV2Router)) {
            require(sellcooldown[sender] < block.timestamp);
            if(firstsell[sender] + (1 days) < block.timestamp){
                sellnumber[sender] = 0;
            }
            if (sellnumber[sender] == 0) {
                sellnumber[sender]++;
                firstsell[sender] = block.timestamp;
                sellcooldown[sender] = block.timestamp + (1 hours);
            }
            else if (sellnumber[sender] == 1) {
                sellnumber[sender]++;
                sellcooldown[sender] = block.timestamp + (2 hours);
            }
            else if (sellnumber[sender] == 2) {
                sellnumber[sender]++;
                sellcooldown[sender] = block.timestamp + (6 hours);
            }
            else if (sellnumber[sender] == 3) {
                sellnumber[sender]++;
                sellcooldown[sender] = firstsell[sender] + (1 days);
            }
        }

        // If the contract holds _enough_ tokens collected from the team fees,
        // then swap them for ETH and transfer to the wallet.
        uint256 contractTokenBalance = balanceOf(address(this));
        if(contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
        if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
            // We need to swap the current tokens to ETH and send to the team wallet
            swapTokensForEth(contractTokenBalance);

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

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }

        //transfer amount, it will take tax and team fee
        _tokenTransfer(sender,recipient,amount,takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToTeam(uint256 amount) private {
        _tWallet.transfer(amount);
    }

    // We are exposing these functions to be able to manual swap and send
    // in case the token is highly valued and 5M becomes too much
    function manualSwap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

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

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

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rBurn, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rBurn, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rBurn, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rBurn, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _reflectFee(uint256 rFee, uint256 tFee, uint256 rBurn, uint256 tBurn) private {
        _rTotal = _rTotal.sub(rFee).sub(rBurn);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _rOwned[burnAddr] = _rOwned[burnAddr].add(rBurn);
        _tOwned[burnAddr] = _tOwned[burnAddr].add(tBurn);
    }

        //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tTeam) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, tFee, tBurn.mul(_getRate()));
        return (rAmount, rTransferAmount, tFee.mul(_getRate()), tBurn.mul(_getRate()), tTransferAmount, tFee, tBurn, tTeam);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(_taxFee).div(100);
        uint256 tBurn = tAmount.mul(_burnFee).div(100);
        uint256 tTeam = tAmount.mul(_teamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn).sub(tTeam);
        return (tTransferAmount, tFee, tBurn, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 rBurn) private view returns (uint256, uint256) {
        uint256 currentRate =  _getRate();
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(tFee.mul(currentRate)).sub(rBurn);
        return (rAmount, rTransferAmount);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTaxFee() private view returns(uint256) {
        return _taxFee;
    }

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

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

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

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

    function _setTeamWallet(address payable tWallet) external onlyOwner() {
        _tWallet = tWallet;
    }

    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= 100000000000000e9 , 'maxTxAmount should be greater than 100000000000000e9');
        _maxTxAmount = maxTxAmount;
    }

    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = _tTotal.div(10**2).mul(maxTxPercent);
    }

    function setCooldown(bool onoff) external onlyOwner() {
    isCooldownEnabled = onoff;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"tWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"tWallet","type":"address"}],"name":"_setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_tWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052683635c9adc5dea0000060075560075460001962000023919062000938565b60001962000032919062000875565b6008556040518060400160405280601081526020017f456c6f6e20546572726573747269616c00000000000000000000000000000000815250600a908051906020019062000082929190620006d3565b506040518060400160405280600381526020017f452e540000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000d0929190620006d3565b506009600c60006101000a81548160ff021916908360ff1602179055506003600d556001600e55600a600f55600d54601055600e54601155600f546012556000601360146101000a81548160ff0219169083151502179055506001601360156101000a81548160ff0219169083151502179055506b409f9cbc7c4a04c220000000601455624c4b406015556001601660006101000a81548160ff0219169083151502179055503480156200018357600080fd5b5060405162006649380380620066498339818101604052810190620001a99190620007dd565b6000620001bb620006a260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460016000620002b1620006a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034f57600080fd5b505afa15801562000364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038a9190620007b1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ed57600080fd5b505afa15801562000402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004289190620007b1565b6040518363ffffffff1660e01b8152600401620004479291906200082b565b602060405180830381600087803b1580156200046257600080fd5b505af115801562000477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049d9190620007b1565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060016004600062000520620006aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000631620006a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000692919062000858565b60405180910390a3505062000a31565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006e19062000902565b90600052602060002090601f01602090048101928262000705576000855562000751565b82601f106200072057805160ff191683800117855562000751565b8280016001018555821562000751579182015b828111156200075057825182559160200191906001019062000733565b5b50905062000760919062000764565b5090565b5b808211156200077f57600081600090555060010162000765565b5090565b6000815190506200079481620009fd565b92915050565b600081519050620007ab8162000a17565b92915050565b600060208284031215620007c457600080fd5b6000620007d48482850162000783565b91505092915050565b600060208284031215620007f057600080fd5b600062000800848285016200079a565b91505092915050565b6200081481620008b0565b82525050565b6200082581620008f8565b82525050565b600060408201905062000842600083018562000809565b62000851602083018462000809565b9392505050565b60006020820190506200086f60008301846200081a565b92915050565b60006200088282620008f8565b91506200088f83620008f8565b925082821015620008a557620008a462000970565b5b828203905092915050565b6000620008bd82620008d8565b9050919050565b6000620008d182620008d8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200091b57607f821691505b60208210811415620009325762000931620009ce565b5b50919050565b60006200094582620008f8565b91506200095283620008f8565b9250826200096557620009646200099f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000a0881620008b0565b811462000a1457600080fd5b50565b62000a2281620008c4565b811462000a2e57600080fd5b50565b60805160601c60a05160601c615bb462000a956000396000818161108201528181612783015281816129390152612f7c0152600081816109fb015281816127da01528181612991015281816133290152818161343f01526134660152615bb46000f3fe6080604052600436106102345760003560e01c80636e204cfd1161012e578063cba0e996116100ab578063f2cc0c181161006f578063f2cc0c1814610882578063f2fde38b146108ab578063f4293890146108d4578063f815a842146108eb578063f84354f1146109165761023b565b8063cba0e9961461078b578063d246d411146107c8578063d543dbeb146107f3578063dd62ed3e1461081c578063e01af92c146108595761023b565b8063a457c2d7116100f2578063a457c2d714610694578063a86f42cb146106d1578063a9059cbb146106fc578063af9549e014610739578063b80ec98d146107625761023b565b80636e204cfd146105bf57806370a08231146105ea578063715018a6146106275780638da5cb5b1461063e57806395d89b41146106695761023b565b80632d838119116101bc57806349bd5a5e1161018057806349bd5a5e146104ec57806351bc3c85146105175780635342acb41461052e5780635880b8731461056b5780636ddd1713146105945761023b565b80632d838119146103e1578063313ce5671461041e57806339509351146104495780633bd5d173146104865780634549b039146104af5761023b565b806316d624a51161020357806316d624a5146102fe57806318160ddd146103275780631bbae6e01461035257806323b872dd1461037b57806328667162146103b85761023b565b806306fdde0314610240578063095ea7b31461026b57806313114a9d146102a85780631694505e146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561093f565b604051610262919061509e565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190614c11565b6109d1565b60405161029f9190615068565b60405180910390f35b3480156102b457600080fd5b506102bd6109ef565b6040516102ca91906152c0565b60405180910390f35b3480156102df57600080fd5b506102e86109f9565b6040516102f59190615083565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190614c4d565b610a1d565b005b34801561033357600080fd5b5061033c610ab6565b60405161034991906152c0565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190614c76565b610ac0565b005b34801561038757600080fd5b506103a2600480360381019061039d9190614b86565b610b93565b6040516103af9190615068565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da9190614c76565b610c6c565b005b3480156103ed57600080fd5b5061040860048036038101906104039190614c76565b610d43565b60405161041591906152c0565b60405180910390f35b34801561042a57600080fd5b50610433610db1565b6040516104409190615335565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190614c11565b610dc8565b60405161047d9190615068565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190614c76565b610e7b565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190614c9f565b610ff8565b6040516104e391906152c0565b60405180910390f35b3480156104f857600080fd5b50610501611080565b60405161050e9190615032565b60405180910390f35b34801561052357600080fd5b5061052c6110a4565b005b34801561053a57600080fd5b5061055560048036038101906105509190614acf565b611139565b6040516105629190615068565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190614c76565b61118f565b005b3480156105a057600080fd5b506105a9611266565b6040516105b69190615068565b60405180910390f35b3480156105cb57600080fd5b506105d4611279565b6040516105e1919061504d565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190614acf565b61129f565b60405161061e91906152c0565b60405180910390f35b34801561063357600080fd5b5061063c61138a565b005b34801561064a57600080fd5b506106536114c4565b6040516106609190615032565b60405180910390f35b34801561067557600080fd5b5061067e6114ed565b60405161068b919061509e565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190614c11565b61157f565b6040516106c89190615068565b60405180910390f35b3480156106dd57600080fd5b506106e661164c565b6040516106f39190615032565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190614c11565b611651565b6040516107309190615068565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190614bd5565b61166f565b005b34801561076e57600080fd5b5061078960048036038101906107849190614b21565b611746565b005b34801561079757600080fd5b506107b260048036038101906107ad9190614acf565b611806565b6040516107bf9190615068565b60405180910390f35b3480156107d457600080fd5b506107dd61185c565b6040516107ea9190615032565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190614c76565b611862565b005b34801561082857600080fd5b50610843600480360381019061083e9190614b4a565b61190f565b60405161085091906152c0565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b9190614c4d565b611996565b005b34801561088e57600080fd5b506108a960048036038101906108a49190614acf565b611a2f565b005b3480156108b757600080fd5b506108d260048036038101906108cd9190614acf565b611d4d565b005b3480156108e057600080fd5b506108e9611ef6565b005b3480156108f757600080fd5b50610900611f83565b60405161090d91906152c0565b60405180910390f35b34801561092257600080fd5b5061093d60048036038101906109389190614acf565b611f8b565b005b6060600a805461094e9061558a565b80601f016020809104026020016040519081016040528092919081815260200182805461097a9061558a565b80156109c75780601f1061099c576101008083540402835291602001916109c7565b820191906000526020600020905b8154815290600101906020018083116109aa57829003601f168201915b5050505050905090565b60006109e56109de612359565b8484612361565b6001905092915050565b6000600954905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b610a25612359565b73ffffffffffffffffffffffffffffffffffffffff16610a436114c4565b73ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a90906151e0565b60405180910390fd5b80601660006101000a81548160ff02191690831515021790555050565b6000600754905090565b610ac8612359565b73ffffffffffffffffffffffffffffffffffffffff16610ae66114c4565b73ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b33906151e0565b60405180910390fd5b69152d02c7e14af6800000811015610b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8090615180565b60405180910390fd5b8060148190555050565b6000610ba084848461252c565b610c6184610bac612359565b610c5c85604051806060016040528060288152602001615b3260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c12612359565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b89092919063ffffffff16565b612361565b600190509392505050565b610c74612359565b73ffffffffffffffffffffffffffffffffffffffff16610c926114c4565b73ffffffffffffffffffffffffffffffffffffffff1614610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf906151e0565b60405180910390fd5b60018110158015610cfa575060198111155b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090615140565b60405180910390fd5b80600f8190555050565b6000600854821115610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d81906150e0565b60405180910390fd5b6000610d9461310d565b9050610da9818461313890919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610e71610dd5612359565b84610e6c8560036000610de6612359565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b612361565b6001905092915050565b6000610e85612359565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b906152a0565b60405180910390fd5b6000610f1f83613164565b505050505050509050610f7a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd28160085461320d90919063ffffffff16565b600881905550610fed8360095461314e90919063ffffffff16565b600981905550505050565b600060075483111561103f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611036906151a0565b60405180910390fd5b8161106157600061104f84613164565b5050505050505090508091505061107a565b600061106c84613164565b505050505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110ac612359565b73ffffffffffffffffffffffffffffffffffffffff166110ca6114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611117906151e0565b60405180910390fd5b600061112b3061129f565b905061113681613223565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611197612359565b73ffffffffffffffffffffffffffffffffffffffff166111b56114c4565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611202906151e0565b60405180910390fd5b6001811015801561121d575060198111155b61125c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125390615260565b60405180910390fd5b80600d8190555050565b601360159054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611385565b611382600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d43565b90505b919050565b611392612359565b73ffffffffffffffffffffffffffffffffffffffff166113b06114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd906151e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546114fc9061558a565b80601f01602080910402602001604051908101604052809291908181526020018280546115289061558a565b80156115755780601f1061154a57610100808354040283529160200191611575565b820191906000526020600020905b81548152906001019060200180831161155857829003601f168201915b5050505050905090565b600061164261158c612359565b8461163d85604051806060016040528060258152602001615b5a60259139600360006115b6612359565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b89092919063ffffffff16565b612361565b6001905092915050565b600081565b600061166561165e612359565b848461252c565b6001905092915050565b611677612359565b73ffffffffffffffffffffffffffffffffffffffff166116956114c4565b73ffffffffffffffffffffffffffffffffffffffff16146116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e2906151e0565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61174e612359565b73ffffffffffffffffffffffffffffffffffffffff1661176c6114c4565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b9906151e0565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61dead81565b61186a612359565b73ffffffffffffffffffffffffffffffffffffffff166118886114c4565b73ffffffffffffffffffffffffffffffffffffffff16146118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d5906151e0565b60405180910390fd5b611906816118f8606460075461313890919063ffffffff16565b61351790919063ffffffff16565b60148190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61199e612359565b73ffffffffffffffffffffffffffffffffffffffff166119bc6114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a09906151e0565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b611a37612359565b73ffffffffffffffffffffffffffffffffffffffff16611a556114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa2906151e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2590615280565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb290615160565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611c8f57611c4b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d43565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d55612359565b73ffffffffffffffffffffffffffffffffffffffff16611d736114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc0906151e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090615100565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611efe612359565b73ffffffffffffffffffffffffffffffffffffffff16611f1c6114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f69906151e0565b60405180910390fd5b6000479050611f808161352d565b50565b600047905090565b611f93612359565b73ffffffffffffffffffffffffffffffffffffffff16611fb16114c4565b73ffffffffffffffffffffffffffffffffffffffff1614612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe906151e0565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90615160565b60405180910390fd5b60005b600680549050811015612355578173ffffffffffffffffffffffffffffffffffffffff16600682815481106120f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612342576006600160068054905061214f9190615486565b81548110612186577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600682815481106121eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480612308577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612355565b808061234d906155bc565b915050612096565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c890615240565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243890615120565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161251f91906152c0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561259c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259390615220565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561260c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612603906150c0565b60405180910390fd5b6000811161264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690615200565b60405180910390fd5b6126576114c4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126c557506126956114c4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561271f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561276a57601454811115612769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612760906151c0565b60405180910390fd5b5b601660009054906101000a900460ff1680156127d157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b801561282957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561287f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129205742601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106128cf57600080fd5b603c426128dc91906153a5565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601660009054906101000a900460ff16801561298857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129e057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f1b5742601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a3057600080fd5b4262015180601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7f91906153a5565b1015612acb576000601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612c0257601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612b63906155bc565b919050555042601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e1042612bba91906153a5565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f1a565b6001601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612cf557601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612c9a906155bc565b9190505550611c2042612cad91906153a5565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f19565b6002601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612de857601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612d8d906155bc565b919050555061546042612da091906153a5565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f18565b6003601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612f1757601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612e80906155bc565b919050555062015180601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed391906153a5565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b5b5b6000612f263061129f565b90506014548110612f375760145490505b60006015548210159050601360149054906101000a900460ff16158015612f6a5750601360159054906101000a900460ff165b8015612f735750805b8015612fcb57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612ff357612fd982613223565b60004790506000811115612ff157612ff04761352d565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061309a5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130a457600090505b6130b086868684613599565b505050505050565b6000838311158290613100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f7919061509e565b60405180910390fd5b5082840390509392505050565b600080600061311a6138aa565b91509150613131818361313890919063ffffffff16565b9250505090565b6000818361314691906153fb565b905092915050565b6000818361315c91906153a5565b905092915050565b60008060008060008060008060008060008061317f8d613bf5565b93509350935093506000806131ae8f866131a961319a61310d565b8861351790919063ffffffff16565b613cd1565b9150915081816131ce6131bf61310d565b8861351790919063ffffffff16565b6131e86131d961310d565b8861351790919063ffffffff16565b898989899d509d509d509d509d509d509d509d50505050505050919395975091939597565b6000818361321b9190615486565b905092915050565b6001601360146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613281577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156132af5781602001602082028036833780820191505090505b50905030816000815181106132ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561338d57600080fd5b505afa1580156133a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c59190614af8565b816001815181106133ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613464307f000000000000000000000000000000000000000000000000000000000000000084612361565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134c69594939291906152db565b600060405180830381600087803b1580156134e057600080fd5b505af11580156134f4573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b60008183613525919061542c565b905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613595573d6000803e3d6000fd5b5050565b806135a7576135a6613d43565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561364a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561365f5761365a848484613d78565b613896565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137025750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561371757613712848484613fe3565b613895565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137bb5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137d0576137cb84848461424e565b613894565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138725750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561388757613882848484614424565b613893565b61389284848461424e565b5b5b5b5b806138a4576138a3614724565b5b50505050565b600080600060085490506000600754905060005b600680549050811015613bb85782600160006006848154811061390a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613a1e57508160026000600684815481106139b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613a355760085460075494509450505050613bf1565b613aeb6001600060068481548110613a76577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461320d90919063ffffffff16565b9250613ba36002600060068481548110613b2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361320d90919063ffffffff16565b91508080613bb0906155bc565b9150506138be565b50613bd060075460085461313890919063ffffffff16565b821015613be857600854600754935093505050613bf1565b81819350935050505b9091565b6000806000806000613c256064613c17600d548961351790919063ffffffff16565b61313890919063ffffffff16565b90506000613c516064613c43600e548a61351790919063ffffffff16565b61313890919063ffffffff16565b90506000613c7d6064613c6f600f548b61351790919063ffffffff16565b61313890919063ffffffff16565b90506000613cb882613caa85613c9c888e61320d90919063ffffffff16565b61320d90919063ffffffff16565b61320d90919063ffffffff16565b9050808484849750975097509750505050509193509193565b6000806000613cde61310d565b90506000613cf5828861351790919063ffffffff16565b90506000613d3086613d22613d13868b61351790919063ffffffff16565b8561320d90919063ffffffff16565b61320d90919063ffffffff16565b9050818194509450505050935093915050565b600d54601081905550600e54601181905550600f546012819055506000600d819055506000600e819055506000600f81905550565b600080600080600080600080613d8d89613164565b97509750975097509750975097509750613def89600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e8488600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f1987600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f6581614741565b613f71868487856148e6565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613fce91906152c0565b60405180910390a35050505050505050505050565b600080600080600080600080613ff889613164565b9750975097509750975097509750975061405a88600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140ef84600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061418487600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141d081614741565b6141dc868487856148e6565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161423991906152c0565b60405180910390a35050505050505050505050565b60008060008060008060008061426389613164565b975097509750975097509750975097506142c588600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435a87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143a681614741565b6143b2868487856148e6565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161440f91906152c0565b60405180910390a35050505050505050505050565b60008060008060008060008061443989613164565b9750975097509750975097509750975061449b89600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061453088600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145c584600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061465a87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146a681614741565b6146b2868487856148e6565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161470f91906152c0565b60405180910390a35050505050505050505050565b601054600d81905550601154600e81905550601254600f81905550565b600061474b61310d565b90506000614762828461351790919063ffffffff16565b90506147b681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156148e15761489d83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61490d826148ff8660085461320d90919063ffffffff16565b61320d90919063ffffffff16565b6008819055506149288360095461314e90919063ffffffff16565b600981905550614982826001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b6001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a1b816002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b6002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b600081359050614a7581615ad5565b92915050565b600081519050614a8a81615ad5565b92915050565b600081359050614a9f81615aec565b92915050565b600081359050614ab481615b03565b92915050565b600081359050614ac981615b1a565b92915050565b600060208284031215614ae157600080fd5b6000614aef84828501614a66565b91505092915050565b600060208284031215614b0a57600080fd5b6000614b1884828501614a7b565b91505092915050565b600060208284031215614b3357600080fd5b6000614b4184828501614a90565b91505092915050565b60008060408385031215614b5d57600080fd5b6000614b6b85828601614a66565b9250506020614b7c85828601614a66565b9150509250929050565b600080600060608486031215614b9b57600080fd5b6000614ba986828701614a66565b9350506020614bba86828701614a66565b9250506040614bcb86828701614aba565b9150509250925092565b60008060408385031215614be857600080fd5b6000614bf685828601614a66565b9250506020614c0785828601614aa5565b9150509250929050565b60008060408385031215614c2457600080fd5b6000614c3285828601614a66565b9250506020614c4385828601614aba565b9150509250929050565b600060208284031215614c5f57600080fd5b6000614c6d84828501614aa5565b91505092915050565b600060208284031215614c8857600080fd5b6000614c9684828501614aba565b91505092915050565b60008060408385031215614cb257600080fd5b6000614cc085828601614aba565b9250506020614cd185828601614aa5565b9150509250929050565b6000614ce78383614d02565b60208301905092915050565b614cfc816154cc565b82525050565b614d0b816154ba565b82525050565b614d1a816154ba565b82525050565b6000614d2b82615360565b614d358185615383565b9350614d4083615350565b8060005b83811015614d71578151614d588882614cdb565b9750614d6383615376565b925050600181019050614d44565b5085935050505092915050565b614d87816154de565b82525050565b614d9681615521565b82525050565b614da581615545565b82525050565b6000614db68261536b565b614dc08185615394565b9350614dd0818560208601615557565b614dd981615692565b840191505092915050565b6000614df1602383615394565b9150614dfc826156a3565b604082019050919050565b6000614e14602a83615394565b9150614e1f826156f2565b604082019050919050565b6000614e37602683615394565b9150614e4282615741565b604082019050919050565b6000614e5a602283615394565b9150614e6582615790565b604082019050919050565b6000614e7d601b83615394565b9150614e88826157df565b602082019050919050565b6000614ea0601b83615394565b9150614eab82615808565b602082019050919050565b6000614ec3603483615394565b9150614ece82615831565b604082019050919050565b6000614ee6601f83615394565b9150614ef182615880565b602082019050919050565b6000614f09602883615394565b9150614f14826158a9565b604082019050919050565b6000614f2c602083615394565b9150614f37826158f8565b602082019050919050565b6000614f4f602983615394565b9150614f5a82615921565b604082019050919050565b6000614f72602583615394565b9150614f7d82615970565b604082019050919050565b6000614f95602483615394565b9150614fa0826159bf565b604082019050919050565b6000614fb8601a83615394565b9150614fc382615a0e565b602082019050919050565b6000614fdb602283615394565b9150614fe682615a37565b604082019050919050565b6000614ffe602c83615394565b915061500982615a86565b604082019050919050565b61501d8161550a565b82525050565b61502c81615514565b82525050565b60006020820190506150476000830184614d11565b92915050565b60006020820190506150626000830184614cf3565b92915050565b600060208201905061507d6000830184614d7e565b92915050565b60006020820190506150986000830184614d8d565b92915050565b600060208201905081810360008301526150b88184614dab565b905092915050565b600060208201905081810360008301526150d981614de4565b9050919050565b600060208201905081810360008301526150f981614e07565b9050919050565b6000602082019050818103600083015261511981614e2a565b9050919050565b6000602082019050818103600083015261513981614e4d565b9050919050565b6000602082019050818103600083015261515981614e70565b9050919050565b6000602082019050818103600083015261517981614e93565b9050919050565b6000602082019050818103600083015261519981614eb6565b9050919050565b600060208201905081810360008301526151b981614ed9565b9050919050565b600060208201905081810360008301526151d981614efc565b9050919050565b600060208201905081810360008301526151f981614f1f565b9050919050565b6000602082019050818103600083015261521981614f42565b9050919050565b6000602082019050818103600083015261523981614f65565b9050919050565b6000602082019050818103600083015261525981614f88565b9050919050565b6000602082019050818103600083015261527981614fab565b9050919050565b6000602082019050818103600083015261529981614fce565b9050919050565b600060208201905081810360008301526152b981614ff1565b9050919050565b60006020820190506152d56000830184615014565b92915050565b600060a0820190506152f06000830188615014565b6152fd6020830187614d9c565b818103604083015261530f8186614d20565b905061531e6060830185614d11565b61532b6080830184615014565b9695505050505050565b600060208201905061534a6000830184615023565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006153b08261550a565b91506153bb8361550a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153f0576153ef615605565b5b828201905092915050565b60006154068261550a565b91506154118361550a565b92508261542157615420615634565b5b828204905092915050565b60006154378261550a565b91506154428361550a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561547b5761547a615605565b5b828202905092915050565b60006154918261550a565b915061549c8361550a565b9250828210156154af576154ae615605565b5b828203905092915050565b60006154c5826154ea565b9050919050565b60006154d7826154ea565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061552c82615533565b9050919050565b600061553e826154ea565b9050919050565b60006155508261550a565b9050919050565b60005b8381101561557557808201518184015260208101905061555a565b83811115615584576000848401525b50505050565b600060028204905060018216806155a257607f821691505b602082108114156155b6576155b5615663565b5b50919050565b60006155c78261550a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155fa576155f9615605565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b615ade816154ba565b8114615ae957600080fd5b50565b615af5816154cc565b8114615b0057600080fd5b50565b615b0c816154de565b8114615b1757600080fd5b50565b615b238161550a565b8114615b2e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203daff87d201a4ca42a68d6dcccef85eb73ba05d34843c053348f6c3becbe5c1f64736f6c63430008040033000000000000000000000000d8b906f93b5eab4072ddd1f0998add4357d00e1f

Deployed Bytecode

0x6080604052600436106102345760003560e01c80636e204cfd1161012e578063cba0e996116100ab578063f2cc0c181161006f578063f2cc0c1814610882578063f2fde38b146108ab578063f4293890146108d4578063f815a842146108eb578063f84354f1146109165761023b565b8063cba0e9961461078b578063d246d411146107c8578063d543dbeb146107f3578063dd62ed3e1461081c578063e01af92c146108595761023b565b8063a457c2d7116100f2578063a457c2d714610694578063a86f42cb146106d1578063a9059cbb146106fc578063af9549e014610739578063b80ec98d146107625761023b565b80636e204cfd146105bf57806370a08231146105ea578063715018a6146106275780638da5cb5b1461063e57806395d89b41146106695761023b565b80632d838119116101bc57806349bd5a5e1161018057806349bd5a5e146104ec57806351bc3c85146105175780635342acb41461052e5780635880b8731461056b5780636ddd1713146105945761023b565b80632d838119146103e1578063313ce5671461041e57806339509351146104495780633bd5d173146104865780634549b039146104af5761023b565b806316d624a51161020357806316d624a5146102fe57806318160ddd146103275780631bbae6e01461035257806323b872dd1461037b57806328667162146103b85761023b565b806306fdde0314610240578063095ea7b31461026b57806313114a9d146102a85780631694505e146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561093f565b604051610262919061509e565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190614c11565b6109d1565b60405161029f9190615068565b60405180910390f35b3480156102b457600080fd5b506102bd6109ef565b6040516102ca91906152c0565b60405180910390f35b3480156102df57600080fd5b506102e86109f9565b6040516102f59190615083565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190614c4d565b610a1d565b005b34801561033357600080fd5b5061033c610ab6565b60405161034991906152c0565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190614c76565b610ac0565b005b34801561038757600080fd5b506103a2600480360381019061039d9190614b86565b610b93565b6040516103af9190615068565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da9190614c76565b610c6c565b005b3480156103ed57600080fd5b5061040860048036038101906104039190614c76565b610d43565b60405161041591906152c0565b60405180910390f35b34801561042a57600080fd5b50610433610db1565b6040516104409190615335565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190614c11565b610dc8565b60405161047d9190615068565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190614c76565b610e7b565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190614c9f565b610ff8565b6040516104e391906152c0565b60405180910390f35b3480156104f857600080fd5b50610501611080565b60405161050e9190615032565b60405180910390f35b34801561052357600080fd5b5061052c6110a4565b005b34801561053a57600080fd5b5061055560048036038101906105509190614acf565b611139565b6040516105629190615068565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190614c76565b61118f565b005b3480156105a057600080fd5b506105a9611266565b6040516105b69190615068565b60405180910390f35b3480156105cb57600080fd5b506105d4611279565b6040516105e1919061504d565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190614acf565b61129f565b60405161061e91906152c0565b60405180910390f35b34801561063357600080fd5b5061063c61138a565b005b34801561064a57600080fd5b506106536114c4565b6040516106609190615032565b60405180910390f35b34801561067557600080fd5b5061067e6114ed565b60405161068b919061509e565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190614c11565b61157f565b6040516106c89190615068565b60405180910390f35b3480156106dd57600080fd5b506106e661164c565b6040516106f39190615032565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190614c11565b611651565b6040516107309190615068565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190614bd5565b61166f565b005b34801561076e57600080fd5b5061078960048036038101906107849190614b21565b611746565b005b34801561079757600080fd5b506107b260048036038101906107ad9190614acf565b611806565b6040516107bf9190615068565b60405180910390f35b3480156107d457600080fd5b506107dd61185c565b6040516107ea9190615032565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190614c76565b611862565b005b34801561082857600080fd5b50610843600480360381019061083e9190614b4a565b61190f565b60405161085091906152c0565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b9190614c4d565b611996565b005b34801561088e57600080fd5b506108a960048036038101906108a49190614acf565b611a2f565b005b3480156108b757600080fd5b506108d260048036038101906108cd9190614acf565b611d4d565b005b3480156108e057600080fd5b506108e9611ef6565b005b3480156108f757600080fd5b50610900611f83565b60405161090d91906152c0565b60405180910390f35b34801561092257600080fd5b5061093d60048036038101906109389190614acf565b611f8b565b005b6060600a805461094e9061558a565b80601f016020809104026020016040519081016040528092919081815260200182805461097a9061558a565b80156109c75780601f1061099c576101008083540402835291602001916109c7565b820191906000526020600020905b8154815290600101906020018083116109aa57829003601f168201915b5050505050905090565b60006109e56109de612359565b8484612361565b6001905092915050565b6000600954905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b610a25612359565b73ffffffffffffffffffffffffffffffffffffffff16610a436114c4565b73ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a90906151e0565b60405180910390fd5b80601660006101000a81548160ff02191690831515021790555050565b6000600754905090565b610ac8612359565b73ffffffffffffffffffffffffffffffffffffffff16610ae66114c4565b73ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b33906151e0565b60405180910390fd5b69152d02c7e14af6800000811015610b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8090615180565b60405180910390fd5b8060148190555050565b6000610ba084848461252c565b610c6184610bac612359565b610c5c85604051806060016040528060288152602001615b3260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c12612359565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b89092919063ffffffff16565b612361565b600190509392505050565b610c74612359565b73ffffffffffffffffffffffffffffffffffffffff16610c926114c4565b73ffffffffffffffffffffffffffffffffffffffff1614610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf906151e0565b60405180910390fd5b60018110158015610cfa575060198111155b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090615140565b60405180910390fd5b80600f8190555050565b6000600854821115610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d81906150e0565b60405180910390fd5b6000610d9461310d565b9050610da9818461313890919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610e71610dd5612359565b84610e6c8560036000610de6612359565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b612361565b6001905092915050565b6000610e85612359565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b906152a0565b60405180910390fd5b6000610f1f83613164565b505050505050509050610f7a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd28160085461320d90919063ffffffff16565b600881905550610fed8360095461314e90919063ffffffff16565b600981905550505050565b600060075483111561103f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611036906151a0565b60405180910390fd5b8161106157600061104f84613164565b5050505050505090508091505061107a565b600061106c84613164565b505050505050915050809150505b92915050565b7f0000000000000000000000009d879dc4973061c9fc7e248f7d999836ceef726881565b6110ac612359565b73ffffffffffffffffffffffffffffffffffffffff166110ca6114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611117906151e0565b60405180910390fd5b600061112b3061129f565b905061113681613223565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611197612359565b73ffffffffffffffffffffffffffffffffffffffff166111b56114c4565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611202906151e0565b60405180910390fd5b6001811015801561121d575060198111155b61125c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125390615260565b60405180910390fd5b80600d8190555050565b601360159054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611385565b611382600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d43565b90505b919050565b611392612359565b73ffffffffffffffffffffffffffffffffffffffff166113b06114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd906151e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546114fc9061558a565b80601f01602080910402602001604051908101604052809291908181526020018280546115289061558a565b80156115755780601f1061154a57610100808354040283529160200191611575565b820191906000526020600020905b81548152906001019060200180831161155857829003601f168201915b5050505050905090565b600061164261158c612359565b8461163d85604051806060016040528060258152602001615b5a60259139600360006115b6612359565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b89092919063ffffffff16565b612361565b6001905092915050565b600081565b600061166561165e612359565b848461252c565b6001905092915050565b611677612359565b73ffffffffffffffffffffffffffffffffffffffff166116956114c4565b73ffffffffffffffffffffffffffffffffffffffff16146116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e2906151e0565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61174e612359565b73ffffffffffffffffffffffffffffffffffffffff1661176c6114c4565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b9906151e0565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61dead81565b61186a612359565b73ffffffffffffffffffffffffffffffffffffffff166118886114c4565b73ffffffffffffffffffffffffffffffffffffffff16146118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d5906151e0565b60405180910390fd5b611906816118f8606460075461313890919063ffffffff16565b61351790919063ffffffff16565b60148190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61199e612359565b73ffffffffffffffffffffffffffffffffffffffff166119bc6114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a09906151e0565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b611a37612359565b73ffffffffffffffffffffffffffffffffffffffff16611a556114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa2906151e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2590615280565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb290615160565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611c8f57611c4b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d43565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d55612359565b73ffffffffffffffffffffffffffffffffffffffff16611d736114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc0906151e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090615100565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611efe612359565b73ffffffffffffffffffffffffffffffffffffffff16611f1c6114c4565b73ffffffffffffffffffffffffffffffffffffffff1614611f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f69906151e0565b60405180910390fd5b6000479050611f808161352d565b50565b600047905090565b611f93612359565b73ffffffffffffffffffffffffffffffffffffffff16611fb16114c4565b73ffffffffffffffffffffffffffffffffffffffff1614612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe906151e0565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90615160565b60405180910390fd5b60005b600680549050811015612355578173ffffffffffffffffffffffffffffffffffffffff16600682815481106120f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612342576006600160068054905061214f9190615486565b81548110612186577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600682815481106121eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480612308577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612355565b808061234d906155bc565b915050612096565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c890615240565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243890615120565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161251f91906152c0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561259c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259390615220565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561260c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612603906150c0565b60405180910390fd5b6000811161264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690615200565b60405180910390fd5b6126576114c4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126c557506126956114c4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561271f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561276a57601454811115612769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612760906151c0565b60405180910390fd5b5b601660009054906101000a900460ff1680156127d157507f0000000000000000000000009d879dc4973061c9fc7e248f7d999836ceef726873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b801561282957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561287f5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129205742601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106128cf57600080fd5b603c426128dc91906153a5565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601660009054906101000a900460ff16801561298857507f0000000000000000000000009d879dc4973061c9fc7e248f7d999836ceef726873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129e057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f1b5742601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a3057600080fd5b4262015180601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7f91906153a5565b1015612acb576000601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612c0257601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612b63906155bc565b919050555042601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e1042612bba91906153a5565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f1a565b6001601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612cf557601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612c9a906155bc565b9190505550611c2042612cad91906153a5565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f19565b6002601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612de857601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612d8d906155bc565b919050555061546042612da091906153a5565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f18565b6003601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612f1757601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612e80906155bc565b919050555062015180601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed391906153a5565b601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b5b5b6000612f263061129f565b90506014548110612f375760145490505b60006015548210159050601360149054906101000a900460ff16158015612f6a5750601360159054906101000a900460ff165b8015612f735750805b8015612fcb57507f0000000000000000000000009d879dc4973061c9fc7e248f7d999836ceef726873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612ff357612fd982613223565b60004790506000811115612ff157612ff04761352d565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061309a5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130a457600090505b6130b086868684613599565b505050505050565b6000838311158290613100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f7919061509e565b60405180910390fd5b5082840390509392505050565b600080600061311a6138aa565b91509150613131818361313890919063ffffffff16565b9250505090565b6000818361314691906153fb565b905092915050565b6000818361315c91906153a5565b905092915050565b60008060008060008060008060008060008061317f8d613bf5565b93509350935093506000806131ae8f866131a961319a61310d565b8861351790919063ffffffff16565b613cd1565b9150915081816131ce6131bf61310d565b8861351790919063ffffffff16565b6131e86131d961310d565b8861351790919063ffffffff16565b898989899d509d509d509d509d509d509d509d50505050505050919395975091939597565b6000818361321b9190615486565b905092915050565b6001601360146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613281577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156132af5781602001602082028036833780820191505090505b50905030816000815181106132ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561338d57600080fd5b505afa1580156133a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c59190614af8565b816001815181106133ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613464307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612361565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134c69594939291906152db565b600060405180830381600087803b1580156134e057600080fd5b505af11580156134f4573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b60008183613525919061542c565b905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613595573d6000803e3d6000fd5b5050565b806135a7576135a6613d43565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561364a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561365f5761365a848484613d78565b613896565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137025750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561371757613712848484613fe3565b613895565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137bb5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137d0576137cb84848461424e565b613894565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138725750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561388757613882848484614424565b613893565b61389284848461424e565b5b5b5b5b806138a4576138a3614724565b5b50505050565b600080600060085490506000600754905060005b600680549050811015613bb85782600160006006848154811061390a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613a1e57508160026000600684815481106139b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613a355760085460075494509450505050613bf1565b613aeb6001600060068481548110613a76577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461320d90919063ffffffff16565b9250613ba36002600060068481548110613b2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361320d90919063ffffffff16565b91508080613bb0906155bc565b9150506138be565b50613bd060075460085461313890919063ffffffff16565b821015613be857600854600754935093505050613bf1565b81819350935050505b9091565b6000806000806000613c256064613c17600d548961351790919063ffffffff16565b61313890919063ffffffff16565b90506000613c516064613c43600e548a61351790919063ffffffff16565b61313890919063ffffffff16565b90506000613c7d6064613c6f600f548b61351790919063ffffffff16565b61313890919063ffffffff16565b90506000613cb882613caa85613c9c888e61320d90919063ffffffff16565b61320d90919063ffffffff16565b61320d90919063ffffffff16565b9050808484849750975097509750505050509193509193565b6000806000613cde61310d565b90506000613cf5828861351790919063ffffffff16565b90506000613d3086613d22613d13868b61351790919063ffffffff16565b8561320d90919063ffffffff16565b61320d90919063ffffffff16565b9050818194509450505050935093915050565b600d54601081905550600e54601181905550600f546012819055506000600d819055506000600e819055506000600f81905550565b600080600080600080600080613d8d89613164565b97509750975097509750975097509750613def89600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e8488600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f1987600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f6581614741565b613f71868487856148e6565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613fce91906152c0565b60405180910390a35050505050505050505050565b600080600080600080600080613ff889613164565b9750975097509750975097509750975061405a88600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140ef84600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061418487600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141d081614741565b6141dc868487856148e6565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161423991906152c0565b60405180910390a35050505050505050505050565b60008060008060008060008061426389613164565b975097509750975097509750975097506142c588600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435a87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143a681614741565b6143b2868487856148e6565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161440f91906152c0565b60405180910390a35050505050505050505050565b60008060008060008060008061443989613164565b9750975097509750975097509750975061449b89600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061453088600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320d90919063ffffffff16565b600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145c584600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061465a87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146a681614741565b6146b2868487856148e6565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161470f91906152c0565b60405180910390a35050505050505050505050565b601054600d81905550601154600e81905550601254600f81905550565b600061474b61310d565b90506000614762828461351790919063ffffffff16565b90506147b681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156148e15761489d83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61490d826148ff8660085461320d90919063ffffffff16565b61320d90919063ffffffff16565b6008819055506149288360095461314e90919063ffffffff16565b600981905550614982826001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b6001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a1b816002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461314e90919063ffffffff16565b6002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b600081359050614a7581615ad5565b92915050565b600081519050614a8a81615ad5565b92915050565b600081359050614a9f81615aec565b92915050565b600081359050614ab481615b03565b92915050565b600081359050614ac981615b1a565b92915050565b600060208284031215614ae157600080fd5b6000614aef84828501614a66565b91505092915050565b600060208284031215614b0a57600080fd5b6000614b1884828501614a7b565b91505092915050565b600060208284031215614b3357600080fd5b6000614b4184828501614a90565b91505092915050565b60008060408385031215614b5d57600080fd5b6000614b6b85828601614a66565b9250506020614b7c85828601614a66565b9150509250929050565b600080600060608486031215614b9b57600080fd5b6000614ba986828701614a66565b9350506020614bba86828701614a66565b9250506040614bcb86828701614aba565b9150509250925092565b60008060408385031215614be857600080fd5b6000614bf685828601614a66565b9250506020614c0785828601614aa5565b9150509250929050565b60008060408385031215614c2457600080fd5b6000614c3285828601614a66565b9250506020614c4385828601614aba565b9150509250929050565b600060208284031215614c5f57600080fd5b6000614c6d84828501614aa5565b91505092915050565b600060208284031215614c8857600080fd5b6000614c9684828501614aba565b91505092915050565b60008060408385031215614cb257600080fd5b6000614cc085828601614aba565b9250506020614cd185828601614aa5565b9150509250929050565b6000614ce78383614d02565b60208301905092915050565b614cfc816154cc565b82525050565b614d0b816154ba565b82525050565b614d1a816154ba565b82525050565b6000614d2b82615360565b614d358185615383565b9350614d4083615350565b8060005b83811015614d71578151614d588882614cdb565b9750614d6383615376565b925050600181019050614d44565b5085935050505092915050565b614d87816154de565b82525050565b614d9681615521565b82525050565b614da581615545565b82525050565b6000614db68261536b565b614dc08185615394565b9350614dd0818560208601615557565b614dd981615692565b840191505092915050565b6000614df1602383615394565b9150614dfc826156a3565b604082019050919050565b6000614e14602a83615394565b9150614e1f826156f2565b604082019050919050565b6000614e37602683615394565b9150614e4282615741565b604082019050919050565b6000614e5a602283615394565b9150614e6582615790565b604082019050919050565b6000614e7d601b83615394565b9150614e88826157df565b602082019050919050565b6000614ea0601b83615394565b9150614eab82615808565b602082019050919050565b6000614ec3603483615394565b9150614ece82615831565b604082019050919050565b6000614ee6601f83615394565b9150614ef182615880565b602082019050919050565b6000614f09602883615394565b9150614f14826158a9565b604082019050919050565b6000614f2c602083615394565b9150614f37826158f8565b602082019050919050565b6000614f4f602983615394565b9150614f5a82615921565b604082019050919050565b6000614f72602583615394565b9150614f7d82615970565b604082019050919050565b6000614f95602483615394565b9150614fa0826159bf565b604082019050919050565b6000614fb8601a83615394565b9150614fc382615a0e565b602082019050919050565b6000614fdb602283615394565b9150614fe682615a37565b604082019050919050565b6000614ffe602c83615394565b915061500982615a86565b604082019050919050565b61501d8161550a565b82525050565b61502c81615514565b82525050565b60006020820190506150476000830184614d11565b92915050565b60006020820190506150626000830184614cf3565b92915050565b600060208201905061507d6000830184614d7e565b92915050565b60006020820190506150986000830184614d8d565b92915050565b600060208201905081810360008301526150b88184614dab565b905092915050565b600060208201905081810360008301526150d981614de4565b9050919050565b600060208201905081810360008301526150f981614e07565b9050919050565b6000602082019050818103600083015261511981614e2a565b9050919050565b6000602082019050818103600083015261513981614e4d565b9050919050565b6000602082019050818103600083015261515981614e70565b9050919050565b6000602082019050818103600083015261517981614e93565b9050919050565b6000602082019050818103600083015261519981614eb6565b9050919050565b600060208201905081810360008301526151b981614ed9565b9050919050565b600060208201905081810360008301526151d981614efc565b9050919050565b600060208201905081810360008301526151f981614f1f565b9050919050565b6000602082019050818103600083015261521981614f42565b9050919050565b6000602082019050818103600083015261523981614f65565b9050919050565b6000602082019050818103600083015261525981614f88565b9050919050565b6000602082019050818103600083015261527981614fab565b9050919050565b6000602082019050818103600083015261529981614fce565b9050919050565b600060208201905081810360008301526152b981614ff1565b9050919050565b60006020820190506152d56000830184615014565b92915050565b600060a0820190506152f06000830188615014565b6152fd6020830187614d9c565b818103604083015261530f8186614d20565b905061531e6060830185614d11565b61532b6080830184615014565b9695505050505050565b600060208201905061534a6000830184615023565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006153b08261550a565b91506153bb8361550a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153f0576153ef615605565b5b828201905092915050565b60006154068261550a565b91506154118361550a565b92508261542157615420615634565b5b828204905092915050565b60006154378261550a565b91506154428361550a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561547b5761547a615605565b5b828202905092915050565b60006154918261550a565b915061549c8361550a565b9250828210156154af576154ae615605565b5b828203905092915050565b60006154c5826154ea565b9050919050565b60006154d7826154ea565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061552c82615533565b9050919050565b600061553e826154ea565b9050919050565b60006155508261550a565b9050919050565b60005b8381101561557557808201518184015260208101905061555a565b83811115615584576000848401525b50505050565b600060028204905060018216806155a257607f821691505b602082108114156155b6576155b5615663565b5b50919050565b60006155c78261550a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155fa576155f9615605565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b615ade816154ba565b8114615ae957600080fd5b50565b615af5816154cc565b8114615b0057600080fd5b50565b615b0c816154de565b8114615b1757600080fd5b50565b615b238161550a565b8114615b2e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203daff87d201a4ca42a68d6dcccef85eb73ba05d34843c053348f6c3becbe5c1f64736f6c63430008040033

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

000000000000000000000000d8b906f93b5eab4072ddd1f0998add4357d00e1f

-----Decoded View---------------
Arg [0] : tWallet (address): 0xD8b906F93B5eAB4072DdD1f0998ADd4357D00E1F

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d8b906f93b5eab4072ddd1f0998add4357d00e1f


Deployed Bytecode Sourcemap

18103:20134:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21051:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21963:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23219:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19494:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38140:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21328:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37765:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22132:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37466:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24149:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21237:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22453:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23314:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23701:440;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19552:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30575:156;;;;;;;;;;;;;:::i;:::-;;25738:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37289:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19625:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19454:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21431:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16787:148;;;;;;;;;;;;;:::i;:::-;;16136:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22679:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18314:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21637:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23074:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37650:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22956:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18230:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37994:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21812:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30903:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24410:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17090:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30739:156;;;;;;;;;;;;;:::i;:::-;;37171:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24861:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21051:83;21088:13;21121:5;21114:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21051:83;:::o;21963:161::-;22038:4;22055:39;22064:12;:10;:12::i;:::-;22078:7;22087:6;22055:8;:39::i;:::-;22112:4;22105:11;;21963:161;;;;:::o;23219:87::-;23261:7;23288:10;;23281:17;;23219:87;:::o;19494:51::-;;;:::o;38140:94::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38221:5:::1;38201:17;;:25;;;;;;;;;;;;;;;;;;38140:94:::0;:::o;21328:95::-;21381:7;21408;;21401:14;;21328:95;:::o;37765:221::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37866:17:::1;37851:11;:32;;37843:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;37967:11;37952:12;:26;;;;37765:221:::0;:::o;22132:313::-;22230:4;22247:36;22257:6;22265:9;22276:6;22247:9;:36::i;:::-;22294:121;22303:6;22311:12;:10;:12::i;:::-;22325:89;22363:6;22325:89;;;;;;;;;;;;;;;;;:11;:19;22337:6;22325:19;;;;;;;;;;;;;;;:33;22345:12;:10;:12::i;:::-;22325:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22294:8;:121::i;:::-;22433:4;22426:11;;22132:313;;;;;:::o;37466:176::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37555:1:::1;37544:7;:12;;:29;;;;;37571:2;37560:7;:13;;37544:29;37536:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;37627:7;37616:8;:18;;;;37466:176:::0;:::o;24149:253::-;24215:7;24254;;24243;:18;;24235:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24319:19;24342:10;:8;:10::i;:::-;24319:33;;24370:24;24382:11;24370:7;:11;;:24;;;;:::i;:::-;24363:31;;;24149:253;;;:::o;21237:83::-;21278:5;21303:9;;;;;;;;;;;21296:16;;21237:83;:::o;22453:218::-;22541:4;22558:83;22567:12;:10;:12::i;:::-;22581:7;22590:50;22629:10;22590:11;:25;22602:12;:10;:12::i;:::-;22590:25;;;;;;;;;;;;;;;:34;22616:7;22590:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;22558:8;:83::i;:::-;22659:4;22652:11;;22453:218;;;;:::o;23314:379::-;23366:14;23383:12;:10;:12::i;:::-;23366:29;;23415:11;:19;23427:6;23415:19;;;;;;;;;;;;;;;;;;;;;;;;;23414:20;23406:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23495:15;23521:19;23532:7;23521:10;:19::i;:::-;23494:46;;;;;;;;;23569:28;23589:7;23569;:15;23577:6;23569:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23551:7;:15;23559:6;23551:15;;;;;;;;;;;;;;;:46;;;;23618:20;23630:7;23618;;:11;;:20;;;;:::i;:::-;23608:7;:30;;;;23662:23;23677:7;23662:10;;:14;;:23;;;;:::i;:::-;23649:10;:36;;;;23314:379;;;:::o;23701:440::-;23791:7;23830;;23819;:18;;23811:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23889:17;23884:250;;23924:15;23950:19;23961:7;23950:10;:19::i;:::-;23923:46;;;;;;;;;23991:7;23984:14;;;;;23884:250;24033:23;24066:19;24077:7;24066:10;:19::i;:::-;24031:54;;;;;;;;;24107:15;24100:22;;;23701:440;;;;;:::o;19552:38::-;;;:::o;30575:156::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30629:23:::1;30655:24;30673:4;30655:9;:24::i;:::-;30629:50;;30690:33;30707:15;30690:16;:33::i;:::-;16427:1;30575:156::o:0;25738:123::-;25802:4;25826:18;:27;25845:7;25826:27;;;;;;;;;;;;;;;;;;;;;;;;;25819:34;;25738:123;;;:::o;37289:169::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37375:1:::1;37365:6;:11;;:27;;;;;37390:2;37380:6;:12;;37365:27;37357:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;37444:6;37434:7;:16;;;;37289:169:::0;:::o;19625:30::-;;;;;;;;;;;;;:::o;19454:31::-;;;;;;;;;;;;;:::o;21431:198::-;21497:7;21521:11;:20;21533:7;21521:20;;;;;;;;;;;;;;;;;;;;;;;;;21517:49;;;21550:7;:16;21558:7;21550:16;;;;;;;;;;;;;;;;21543:23;;;;21517:49;21584:37;21604:7;:16;21612:7;21604:16;;;;;;;;;;;;;;;;21584:19;:37::i;:::-;21577:44;;21431:198;;;;:::o;16787:148::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16894:1:::1;16857:40;;16878:6;::::0;::::1;;;;;;;;16857:40;;;;;;;;;;;;16925:1;16908:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16787:148::o:0;16136:87::-;16182:7;16209:6;;;;;;;;;;;16202:13;;16136:87;:::o;21142:::-;21181:13;21214:7;21207:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21142:87;:::o;22679:269::-;22772:4;22789:129;22798:12;:10;:12::i;:::-;22812:7;22821:96;22860:15;22821:96;;;;;;;;;;;;;;;;;:11;:25;22833:12;:10;:12::i;:::-;22821:25;;;;;;;;;;;;;;;:34;22847:7;22821:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;22789:8;:129::i;:::-;22936:4;22929:11;;22679:269;;;;:::o;18314:45::-;18357:1;18314:45;:::o;21637:167::-;21715:4;21732:42;21742:12;:10;:12::i;:::-;21756:9;21767:6;21732:9;:42::i;:::-;21792:4;21785:11;;21637:167;;;;:::o;23074:137::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23195:8:::1;23165:18;:27;23184:7;23165:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;23074:137:::0;;:::o;37650:107::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37742:7:::1;37731:8;;:18;;;;;;;;;;;;;;;;;;37650:107:::0;:::o;22956:110::-;23014:4;23038:11;:20;23050:7;23038:20;;;;;;;;;;;;;;;;;;;;;;;;;23031:27;;22956:110;;;:::o;18230:77::-;18265:42;18230:77;:::o;37994:138::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38088:36:::1;38111:12;38088:18;38100:5;38088:7;;:11;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;38073:12;:51;;;;37994:138:::0;:::o;21812:143::-;21893:7;21920:11;:18;21932:5;21920:18;;;;;;;;;;;;;;;:27;21939:7;21920:27;;;;;;;;;;;;;;;;21913:34;;21812:143;;;;:::o;30903:98::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30986:7:::1;30972:11;;:21;;;;;;;;;;;;;;;;;;30903:98:::0;:::o;24410:443::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24502:42:::1;24491:53;;:7;:53;;;;24483:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;24603:11;:20;24615:7;24603:20;;;;;;;;;;;;;;;;;;;;;;;;;24602:21;24594:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24688:1;24669:7;:16;24677:7;24669:16;;;;;;;;;;;;;;;;:20;24666:108;;;24725:37;24745:7;:16;24753:7;24745:16;;;;;;;;;;;;;;;;24725:19;:37::i;:::-;24706:7;:16;24714:7;24706:16;;;;;;;;;;;;;;;:56;;;;24666:108;24807:4;24784:11;:20;24796:7;24784:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;24822:9;24837:7;24822:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24410:443:::0;:::o;17090:244::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17199:1:::1;17179:22;;:8;:22;;;;17171:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17289:8;17260:38;;17281:6;::::0;::::1;;;;;;;;17260:38;;;;;;;;;;;;17318:8;17309:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;17090:244:::0;:::o;30739:156::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30793:26:::1;30822:21;30793:50;;30854:33;30868:18;30854:13;:33::i;:::-;16427:1;30739:156::o:0;37171:110::-;37217:15;37252:21;37245:28;;37171:110;:::o;24861:478::-;16367:12;:10;:12::i;:::-;16356:23;;:7;:5;:7::i;:::-;:23;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24942:11:::1;:20;24954:7;24942:20;;;;;;;;;;;;;;;;;;;;;;;;;24934:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25010:9;25005:327;25029:9;:16;;;;25025:1;:20;25005:327;;;25087:7;25071:23;;:9;25081:1;25071:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;25067:254;;;25130:9;25159:1;25140:9;:16;;;;:20;;;;:::i;:::-;25130:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25115:9;25125:1;25115:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25199:1;25180:7;:16;25188:7;25180:16;;;;;;;;;;;;;;;:20;;;;25242:5;25219:11;:20;25231:7;25219:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25266:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25300:5;;25067:254;25047:3;;;;;:::i;:::-;;;;25005:327;;;;24861:478:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;25869:333::-;18357:1;25962:17;;:5;:17;;;;25954:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18357:1;26039:19;;:7;:19;;;;26031:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26140:6;26110:11;:18;26122:5;26110:18;;;;;;;;;;;;;;;:27;26129:7;26110:27;;;;;;;;;;;;;;;:36;;;;26178:7;26162:32;;26171:5;26162:32;;;26187:6;26162:32;;;;;;:::i;:::-;;;;;;;;25869:333;;;:::o;26210:3508::-;18357:1;26307:18;;:6;:18;;;;26299:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18357:1;26386:21;;:9;:21;;;;26378:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;26475:1;26466:6;:10;26458:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26718:7;:5;:7::i;:::-;26708:17;;:6;:17;;;;:41;;;;;26742:7;:5;:7::i;:::-;26729:20;;:9;:20;;;;26708:41;:66;;;;;26766:8;;;;;;;;;;;26753:21;;:9;:21;;;;26708:66;26705:173;;;26809:12;;26799:6;:22;;26791:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26705:173;26971:17;;;;;;;;;;;:44;;;;;27002:13;26992:23;;:6;:23;;;26971:44;:85;;;;;27040:15;27019:37;;:9;:37;;;;26971:85;:112;;;;;27061:11;:22;27073:9;27061:22;;;;;;;;;;;;;;;;;;;;;;;;;27060:23;26971:112;26967:263;;;27133:15;27108:11;:22;27120:9;27108:22;;;;;;;;;;;;;;;;:40;27100:49;;;;;;27208:9;27189:15;:29;;;;:::i;:::-;27164:11;:22;27176:9;27164:22;;;;;;;;;;;;;;;:54;;;;26967:263;27447:17;;;;;;;;;;;:44;;;;;27478:13;27468:23;;:6;:23;;;;27447:44;:82;;;;;27513:15;27495:34;;:6;:34;;;;27447:82;27443:1021;;;27577:15;27554:12;:20;27567:6;27554:20;;;;;;;;;;;;;;;;:38;27546:47;;;;;;27642:15;27632:6;27611:9;:17;27621:6;27611:17;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;:46;27608:107;;;27698:1;27677:10;:18;27688:6;27677:18;;;;;;;;;;;;;;;:22;;;;27608:107;27755:1;27733:10;:18;27744:6;27733:18;;;;;;;;;;;;;;;;:23;27729:724;;;27777:10;:18;27788:6;27777:18;;;;;;;;;;;;;;;;:20;;;;;;;;;:::i;:::-;;;;;;27836:15;27816:9;:17;27826:6;27816:17;;;;;;;;;;;;;;;:35;;;;27912:7;27893:15;:27;;;;:::i;:::-;27870:12;:20;27883:6;27870:20;;;;;;;;;;;;;;;:50;;;;27729:724;;;27981:1;27959:10;:18;27970:6;27959:18;;;;;;;;;;;;;;;;:23;27955:498;;;28003:10;:18;28014:6;28003:18;;;;;;;;;;;;;;;;:20;;;;;;;;;:::i;:::-;;;;;;28084:7;28065:15;:27;;;;:::i;:::-;28042:12;:20;28055:6;28042:20;;;;;;;;;;;;;;;:50;;;;27955:498;;;28153:1;28131:10;:18;28142:6;28131:18;;;;;;;;;;;;;;;;:23;28127:326;;;28175:10;:18;28186:6;28175:18;;;;;;;;;;;;;;;;:20;;;;;;;;;:::i;:::-;;;;;;28256:7;28237:15;:27;;;;:::i;:::-;28214:12;:20;28227:6;28214:20;;;;;;;;;;;;;;;:50;;;;28127:326;;;28325:1;28303:10;:18;28314:6;28303:18;;;;;;;;;;;;;;;;:23;28299:154;;;28347:10;:18;28358:6;28347:18;;;;;;;;;;;;;;;;:20;;;;;;;;;:::i;:::-;;;;;;28430:6;28409:9;:17;28419:6;28409:17;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;28386:12;:20;28399:6;28386:20;;;;;;;;;;;;;;;:51;;;;28299:154;28127:326;27955:498;27729:724;27443:1021;28619:28;28650:24;28668:4;28650:9;:24::i;:::-;28619:55;;28712:12;;28688:20;:36;28685:103;;28764:12;;28741:35;;28685:103;28800:24;28851:29;;28827:20;:53;;28800:80;;28896:6;;;;;;;;;;;28895:7;:22;;;;;28906:11;;;;;;;;;;;28895:22;:45;;;;;28921:19;28895:45;:72;;;;;28954:13;28944:23;;:6;:23;;;;28895:72;28891:408;;;29070:38;29087:20;29070:16;:38::i;:::-;29125:26;29154:21;29125:50;;29214:1;29193:18;:22;29190:98;;;29236:36;29250:21;29236:13;:36::i;:::-;29190:98;28891:408;;29372:12;29387:4;29372:19;;29491:18;:26;29510:6;29491:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;29521:18;:29;29540:9;29521:29;;;;;;;;;;;;;;;;;;;;;;;;;29491:59;29488:105;;;29576:5;29566:15;;29488:105;29663:47;29678:6;29685:9;29695:6;29702:7;29663:14;:47::i;:::-;26210:3508;;;;;;:::o;5755:206::-;5841:7;5899:1;5894;:6;;5902:12;5886:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5941:1;5937;:5;5930:12;;5755:206;;;;;:::o;36241:163::-;36282:7;36303:15;36320;36339:19;:17;:19::i;:::-;36302:56;;;;36376:20;36388:7;36376;:11;;:20;;;;:::i;:::-;36369:27;;;;36241:163;:::o;4613:98::-;4671:7;4702:1;4698;:5;;;;:::i;:::-;4691:12;;4613:98;;;;:::o;3476:::-;3534:7;3565:1;3561;:5;;;;:::i;:::-;3554:12;;3476:98;;;;:::o;35002:473::-;35061:7;35070;35079;35088;35097;35106;35115;35124;35145:23;35170:12;35184:13;35199;35216:20;35228:7;35216:11;:20::i;:::-;35144:92;;;;;;;;35248:15;35265:23;35292:49;35304:7;35313:4;35319:21;35329:10;:8;:10::i;:::-;35319:5;:9;;:21;;;;:::i;:::-;35292:11;:49::i;:::-;35247:94;;;;35360:7;35369:15;35386:20;35395:10;:8;:10::i;:::-;35386:4;:8;;:20;;;;:::i;:::-;35408:21;35418:10;:8;:10::i;:::-;35408:5;:9;;:21;;;;:::i;:::-;35431:15;35448:4;35454:5;35461;35352:115;;;;;;;;;;;;;;;;;;;;;;35002:473;;;;;;;;;:::o;3857:98::-;3915:7;3946:1;3942;:5;;;;:::i;:::-;3935:12;;3857:98;;;;:::o;29726:600::-;20223:4;20214:6;;:13;;;;;;;;;;;;;;;;;;29863:21:::1;29901:1;29887:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29863:40;;29932:4;29914;29919:1;29914:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;29958:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29948:4;29953:1;29948:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;29993:62;30010:4;30025:15;30043:11;29993:8;:62::i;:::-;30094:15;:66;;;30175:11;30201:1;30245:4;30272;30292:15;30094:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20238:1;20259:5:::0;20250:6;;:14;;;;;;;;;;;;;;;;;;29726:600;:::o;4214:98::-;4272:7;4303:1;4299;:5;;;;:::i;:::-;4292:12;;4214:98;;;;:::o;30334:91::-;30392:8;;;;;;;;;;;:17;;:25;30410:6;30392:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30334:91;:::o;31009:819::-;31121:7;31117:40;;31143:14;:12;:14::i;:::-;31117:40;31174:11;:19;31186:6;31174:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;31198:11;:22;31210:9;31198:22;;;;;;;;;;;;;;;;;;;;;;;;;31197:23;31174:46;31170:597;;;31237:48;31259:6;31267:9;31278:6;31237:21;:48::i;:::-;31170:597;;;31308:11;:19;31320:6;31308:19;;;;;;;;;;;;;;;;;;;;;;;;;31307:20;:46;;;;;31331:11;:22;31343:9;31331:22;;;;;;;;;;;;;;;;;;;;;;;;;31307:46;31303:464;;;31370:46;31390:6;31398:9;31409:6;31370:19;:46::i;:::-;31303:464;;;31439:11;:19;31451:6;31439:19;;;;;;;;;;;;;;;;;;;;;;;;;31438:20;:47;;;;;31463:11;:22;31475:9;31463:22;;;;;;;;;;;;;;;;;;;;;;;;;31462:23;31438:47;31434:333;;;31502:44;31520:6;31528:9;31539:6;31502:17;:44::i;:::-;31434:333;;;31568:11;:19;31580:6;31568:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31591:11;:22;31603:9;31591:22;;;;;;;;;;;;;;;;;;;;;;;;;31568:45;31564:203;;;31630:48;31652:6;31660:9;31671:6;31630:21;:48::i;:::-;31564:203;;;31711:44;31729:6;31737:9;31748:6;31711:17;:44::i;:::-;31564:203;31434:333;31303:464;31170:597;31783:7;31779:41;;31805:15;:13;:15::i;:::-;31779:41;31009:819;;;;:::o;36412:555::-;36462:7;36471;36491:15;36509:7;;36491:25;;36527:15;36545:7;;36527:25;;36568:9;36563:289;36587:9;:16;;;;36583:1;:20;36563:289;;;36653:7;36629;:21;36637:9;36647:1;36637:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36629:21;;;;;;;;;;;;;;;;:31;:66;;;;36688:7;36664;:21;36672:9;36682:1;36672:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36664:21;;;;;;;;;;;;;;;;:31;36629:66;36625:97;;;36705:7;;36714;;36697:25;;;;;;;;;36625:97;36747:34;36759:7;:21;36767:9;36777:1;36767:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36759:21;;;;;;;;;;;;;;;;36747:7;:11;;:34;;;;:::i;:::-;36737:44;;36806:34;36818:7;:21;36826:9;36836:1;36826:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36818:21;;;;;;;;;;;;;;;;36806:7;:11;;:34;;;;:::i;:::-;36796:44;;36605:3;;;;;:::i;:::-;;;;36563:289;;;;36876:20;36888:7;;36876;;:11;;:20;;;;:::i;:::-;36866:7;:30;36862:61;;;36906:7;;36915;;36898:25;;;;;;;;36862:61;36942:7;36951;36934:25;;;;;;36412:555;;;:::o;35483:404::-;35543:7;35552;35561;35570;35590:12;35605:29;35630:3;35605:20;35617:7;;35605;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;35590:44;;35645:13;35661:30;35687:3;35661:21;35673:8;;35661:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;35645:46;;35702:13;35718:30;35744:3;35718:21;35730:8;;35718:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;35702:46;;35759:23;35785:39;35818:5;35785:28;35807:5;35785:17;35797:4;35785:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;35759:65;;35843:15;35860:4;35866:5;35873;35835:44;;;;;;;;;;;;35483:404;;;;;:::o;35895:338::-;35984:7;35993;36013:19;36036:10;:8;:10::i;:::-;36013:33;;36057:15;36075:24;36087:11;36075:7;:11;;:24;;;;:::i;:::-;36057:42;;36110:23;36136:45;36175:5;36136:34;36148:21;36157:11;36148:4;:8;;:21;;;;:::i;:::-;36136:7;:11;;:34;;;;:::i;:::-;:38;;:45;;;;:::i;:::-;36110:71;;36200:7;36209:15;36192:33;;;;;;;35895:338;;;;;;:::o;25347:222::-;25408:7;;25390:15;:25;;;;25445:8;;25426:16;:27;;;;25483:8;;25464:16;:27;;;;25514:1;25504:7;:11;;;;25537:1;25526:8;:12;;;;25560:1;25549:8;:12;;;;25347:222::o;32987:592::-;33090:15;33107:23;33132:12;33146:13;33161:23;33186:12;33200:13;33215;33232:19;33243:7;33232:10;:19::i;:::-;33089:162;;;;;;;;;;;;;;;;33280:28;33300:7;33280;:15;33288:6;33280:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33262:7;:15;33270:6;33262:15;;;;;;;;;;;;;;;:46;;;;33337:28;33357:7;33337;:15;33345:6;33337:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33319:7;:15;33327:6;33319:15;;;;;;;;;;;;;;;:46;;;;33397:39;33420:15;33397:7;:18;33405:9;33397:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33376:7;:18;33384:9;33376:18;;;;;;;;;;;;;;;:60;;;;33447:16;33457:5;33447:9;:16::i;:::-;33474:37;33486:4;33492;33498:5;33505;33474:11;:37::i;:::-;33544:9;33527:44;;33536:6;33527:44;;;33555:15;33527:44;;;;;;:::i;:::-;;;;;;;;32987:592;;;;;;;;;;;:::o;32375:604::-;32476:15;32493:23;32518:12;32532:13;32547:23;32572:12;32586:13;32601;32618:19;32629:7;32618:10;:19::i;:::-;32475:162;;;;;;;;;;;;;;;;32666:28;32686:7;32666;:15;32674:6;32666:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32648:7;:15;32656:6;32648:15;;;;;;;;;;;;;;;:46;;;;32726:39;32749:15;32726:7;:18;32734:9;32726:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32705:7;:18;32713:9;32705:18;;;;;;;;;;;;;;;:60;;;;32797:39;32820:15;32797:7;:18;32805:9;32797:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32776:7;:18;32784:9;32776:18;;;;;;;;;;;;;;;:60;;;;32847:16;32857:5;32847:9;:16::i;:::-;32874:37;32886:4;32892;32898:5;32905;32874:11;:37::i;:::-;32944:9;32927:44;;32936:6;32927:44;;;32955:15;32927:44;;;;;;:::i;:::-;;;;;;;;32375:604;;;;;;;;;;;:::o;31836:531::-;31935:15;31952:23;31977:12;31991:13;32006:23;32031:12;32045:13;32060;32077:19;32088:7;32077:10;:19::i;:::-;31934:162;;;;;;;;;;;;;;;;32125:28;32145:7;32125;:15;32133:6;32125:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32107:7;:15;32115:6;32107:15;;;;;;;;;;;;;;;:46;;;;32185:39;32208:15;32185:7;:18;32193:9;32185:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32164:7;:18;32172:9;32164:18;;;;;;;;;;;;;;;:60;;;;32235:16;32245:5;32235:9;:16::i;:::-;32262:37;32274:4;32280;32286:5;32293;32262:11;:37::i;:::-;32332:9;32315:44;;32324:6;32315:44;;;32343:15;32315:44;;;;;;:::i;:::-;;;;;;;;31836:531;;;;;;;;;;;:::o;33587:663::-;33690:15;33707:23;33732:12;33746:13;33761:23;33786:12;33800:13;33815;33832:19;33843:7;33832:10;:19::i;:::-;33689:162;;;;;;;;;;;;;;;;33880:28;33900:7;33880;:15;33888:6;33880:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33862:7;:15;33870:6;33862:15;;;;;;;;;;;;;;;:46;;;;33937:28;33957:7;33937;:15;33945:6;33937:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33919:7;:15;33927:6;33919:15;;;;;;;;;;;;;;;:46;;;;33997:39;34020:15;33997:7;:18;34005:9;33997:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33976:7;:18;33984:9;33976:18;;;;;;;;;;;;;;;:60;;;;34068:39;34091:15;34068:7;:18;34076:9;34068:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;34047:7;:18;34055:9;34047:18;;;;;;;;;;;;;;;:60;;;;34118:16;34128:5;34118:9;:16::i;:::-;34145:37;34157:4;34163;34169:5;34176;34145:11;:37::i;:::-;34215:9;34198:44;;34207:6;34198:44;;;34226:15;34198:44;;;;;;:::i;:::-;;;;;;;;33587:663;;;;;;;;;;;:::o;25577:153::-;25631:15;;25621:7;:25;;;;25668:16;;25657:8;:27;;;;25706:16;;25695:8;:27;;;;25577:153::o;34258:325::-;34311:19;34334:10;:8;:10::i;:::-;34311:33;;34355:13;34371:22;34381:11;34371:5;:9;;:22;;;;:::i;:::-;34355:38;;34429:33;34456:5;34429:7;:22;34445:4;34429:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;34404:7;:22;34420:4;34404:22;;;;;;;;;;;;;;;:58;;;;34476:11;:26;34496:4;34476:26;;;;;;;;;;;;;;;;;;;;;;;;;34473:102;;;34542:33;34569:5;34542:7;:22;34558:4;34542:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;34517:7;:22;34533:4;34517:22;;;;;;;;;;;;;;;:58;;;;34473:102;34258:325;;;:::o;34591:306::-;34699:28;34721:5;34699:17;34711:4;34699:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;34689:7;:38;;;;34751:20;34766:4;34751:10;;:14;;:20;;;;:::i;:::-;34738:10;:33;;;;34802:28;34824:5;34802:7;:17;18265:42;34802:17;;;;;;;;;;;;;;;;:21;;:28;;;;:::i;:::-;34782:7;:17;18265:42;34782:17;;;;;;;;;;;;;;;:48;;;;34861:28;34883:5;34861:7;:17;18265:42;34861:17;;;;;;;;;;;;;;;;:21;;:28;;;;:::i;:::-;34841:7;:17;18265:42;34841:17;;;;;;;;;;;;;;;:48;;;;34591:306;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;653:87;;;;:::o;746:262::-;805:6;854:2;842:9;833:7;829:23;825:32;822:2;;;870:1;867;860:12;822:2;913:1;938:53;983:7;974:6;963:9;959:22;938:53;:::i;:::-;928:63;;884:117;812:196;;;;:::o;1014:284::-;1084:6;1133:2;1121:9;1112:7;1108:23;1104:32;1101:2;;;1149:1;1146;1139:12;1101:2;1192:1;1217:64;1273:7;1264:6;1253:9;1249:22;1217:64;:::i;:::-;1207:74;;1163:128;1091:207;;;;:::o;1304:278::-;1371:6;1420:2;1408:9;1399:7;1395:23;1391:32;1388:2;;;1436:1;1433;1426:12;1388:2;1479:1;1504:61;1557:7;1548:6;1537:9;1533:22;1504:61;:::i;:::-;1494:71;;1450:125;1378:204;;;;:::o;1588:407::-;1656:6;1664;1713:2;1701:9;1692:7;1688:23;1684:32;1681:2;;;1729:1;1726;1719:12;1681:2;1772:1;1797:53;1842:7;1833:6;1822:9;1818:22;1797:53;:::i;:::-;1787:63;;1743:117;1899:2;1925:53;1970:7;1961:6;1950:9;1946:22;1925:53;:::i;:::-;1915:63;;1870:118;1671:324;;;;;:::o;2001:552::-;2078:6;2086;2094;2143:2;2131:9;2122:7;2118:23;2114:32;2111:2;;;2159:1;2156;2149:12;2111:2;2202:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2173:117;2329:2;2355:53;2400:7;2391:6;2380:9;2376:22;2355:53;:::i;:::-;2345:63;;2300:118;2457:2;2483:53;2528:7;2519:6;2508:9;2504:22;2483:53;:::i;:::-;2473:63;;2428:118;2101:452;;;;;:::o;2559:401::-;2624:6;2632;2681:2;2669:9;2660:7;2656:23;2652:32;2649:2;;;2697:1;2694;2687:12;2649:2;2740:1;2765:53;2810:7;2801:6;2790:9;2786:22;2765:53;:::i;:::-;2755:63;;2711:117;2867:2;2893:50;2935:7;2926:6;2915:9;2911:22;2893:50;:::i;:::-;2883:60;;2838:115;2639:321;;;;;:::o;2966:407::-;3034:6;3042;3091:2;3079:9;3070:7;3066:23;3062:32;3059:2;;;3107:1;3104;3097:12;3059:2;3150:1;3175:53;3220:7;3211:6;3200:9;3196:22;3175:53;:::i;:::-;3165:63;;3121:117;3277:2;3303:53;3348:7;3339:6;3328:9;3324:22;3303:53;:::i;:::-;3293:63;;3248:118;3049:324;;;;;:::o;3379:256::-;3435:6;3484:2;3472:9;3463:7;3459:23;3455:32;3452:2;;;3500:1;3497;3490:12;3452:2;3543:1;3568:50;3610:7;3601:6;3590:9;3586:22;3568:50;:::i;:::-;3558:60;;3514:114;3442:193;;;;:::o;3641:262::-;3700:6;3749:2;3737:9;3728:7;3724:23;3720:32;3717:2;;;3765:1;3762;3755:12;3717:2;3808:1;3833:53;3878:7;3869:6;3858:9;3854:22;3833:53;:::i;:::-;3823:63;;3779:117;3707:196;;;;:::o;3909:401::-;3974:6;3982;4031:2;4019:9;4010:7;4006:23;4002:32;3999:2;;;4047:1;4044;4037:12;3999:2;4090:1;4115:53;4160:7;4151:6;4140:9;4136:22;4115:53;:::i;:::-;4105:63;;4061:117;4217:2;4243:50;4285:7;4276:6;4265:9;4261:22;4243:50;:::i;:::-;4233:60;;4188:115;3989:321;;;;;:::o;4316:179::-;4385:10;4406:46;4448:3;4440:6;4406:46;:::i;:::-;4484:4;4479:3;4475:14;4461:28;;4396:99;;;;:::o;4501:142::-;4604:32;4630:5;4604:32;:::i;:::-;4599:3;4592:45;4582:61;;:::o;4649:108::-;4726:24;4744:5;4726:24;:::i;:::-;4721:3;4714:37;4704:53;;:::o;4763:118::-;4850:24;4868:5;4850:24;:::i;:::-;4845:3;4838:37;4828:53;;:::o;4917:732::-;5036:3;5065:54;5113:5;5065:54;:::i;:::-;5135:86;5214:6;5209:3;5135:86;:::i;:::-;5128:93;;5245:56;5295:5;5245:56;:::i;:::-;5324:7;5355:1;5340:284;5365:6;5362:1;5359:13;5340:284;;;5441:6;5435:13;5468:63;5527:3;5512:13;5468:63;:::i;:::-;5461:70;;5554:60;5607:6;5554:60;:::i;:::-;5544:70;;5400:224;5387:1;5384;5380:9;5375:14;;5340:284;;;5344:14;5640:3;5633:10;;5041:608;;;;;;;:::o;5655:109::-;5736:21;5751:5;5736:21;:::i;:::-;5731:3;5724:34;5714:50;;:::o;5770:183::-;5883:63;5940:5;5883:63;:::i;:::-;5878:3;5871:76;5861:92;;:::o;5959:147::-;6054:45;6093:5;6054:45;:::i;:::-;6049:3;6042:58;6032:74;;:::o;6112:364::-;6200:3;6228:39;6261:5;6228:39;:::i;:::-;6283:71;6347:6;6342:3;6283:71;:::i;:::-;6276:78;;6363:52;6408:6;6403:3;6396:4;6389:5;6385:16;6363:52;:::i;:::-;6440:29;6462:6;6440:29;:::i;:::-;6435:3;6431:39;6424:46;;6204:272;;;;;:::o;6482:366::-;6624:3;6645:67;6709:2;6704:3;6645:67;:::i;:::-;6638:74;;6721:93;6810:3;6721:93;:::i;:::-;6839:2;6834:3;6830:12;6823:19;;6628:220;;;:::o;6854:366::-;6996:3;7017:67;7081:2;7076:3;7017:67;:::i;:::-;7010:74;;7093:93;7182:3;7093:93;:::i;:::-;7211:2;7206:3;7202:12;7195:19;;7000:220;;;:::o;7226:366::-;7368:3;7389:67;7453:2;7448:3;7389:67;:::i;:::-;7382:74;;7465:93;7554:3;7465:93;:::i;:::-;7583:2;7578:3;7574:12;7567:19;;7372:220;;;:::o;7598:366::-;7740:3;7761:67;7825:2;7820:3;7761:67;:::i;:::-;7754:74;;7837:93;7926:3;7837:93;:::i;:::-;7955:2;7950:3;7946:12;7939:19;;7744:220;;;:::o;7970:366::-;8112:3;8133:67;8197:2;8192:3;8133:67;:::i;:::-;8126:74;;8209:93;8298:3;8209:93;:::i;:::-;8327:2;8322:3;8318:12;8311:19;;8116:220;;;:::o;8342:366::-;8484:3;8505:67;8569:2;8564:3;8505:67;:::i;:::-;8498:74;;8581:93;8670:3;8581:93;:::i;:::-;8699:2;8694:3;8690:12;8683:19;;8488:220;;;:::o;8714:366::-;8856:3;8877:67;8941:2;8936:3;8877:67;:::i;:::-;8870:74;;8953:93;9042:3;8953:93;:::i;:::-;9071:2;9066:3;9062:12;9055:19;;8860:220;;;:::o;9086:366::-;9228:3;9249:67;9313:2;9308:3;9249:67;:::i;:::-;9242:74;;9325:93;9414:3;9325:93;:::i;:::-;9443:2;9438:3;9434:12;9427:19;;9232:220;;;:::o;9458:366::-;9600:3;9621:67;9685:2;9680:3;9621:67;:::i;:::-;9614:74;;9697:93;9786:3;9697:93;:::i;:::-;9815:2;9810:3;9806:12;9799:19;;9604:220;;;:::o;9830:366::-;9972:3;9993:67;10057:2;10052:3;9993:67;:::i;:::-;9986:74;;10069:93;10158:3;10069:93;:::i;:::-;10187:2;10182:3;10178:12;10171:19;;9976:220;;;:::o;10202:366::-;10344:3;10365:67;10429:2;10424:3;10365:67;:::i;:::-;10358:74;;10441:93;10530:3;10441:93;:::i;:::-;10559:2;10554:3;10550:12;10543:19;;10348:220;;;:::o;10574:366::-;10716:3;10737:67;10801:2;10796:3;10737:67;:::i;:::-;10730:74;;10813:93;10902:3;10813:93;:::i;:::-;10931:2;10926:3;10922:12;10915:19;;10720:220;;;:::o;10946:366::-;11088:3;11109:67;11173:2;11168:3;11109:67;:::i;:::-;11102:74;;11185:93;11274:3;11185:93;:::i;:::-;11303:2;11298:3;11294:12;11287:19;;11092:220;;;:::o;11318:366::-;11460:3;11481:67;11545:2;11540:3;11481:67;:::i;:::-;11474:74;;11557:93;11646:3;11557:93;:::i;:::-;11675:2;11670:3;11666:12;11659:19;;11464:220;;;:::o;11690:366::-;11832:3;11853:67;11917:2;11912:3;11853:67;:::i;:::-;11846:74;;11929:93;12018:3;11929:93;:::i;:::-;12047:2;12042:3;12038:12;12031:19;;11836:220;;;:::o;12062:366::-;12204:3;12225:67;12289:2;12284:3;12225:67;:::i;:::-;12218:74;;12301:93;12390:3;12301:93;:::i;:::-;12419:2;12414:3;12410:12;12403:19;;12208:220;;;:::o;12434:118::-;12521:24;12539:5;12521:24;:::i;:::-;12516:3;12509:37;12499:53;;:::o;12558:112::-;12641:22;12657:5;12641:22;:::i;:::-;12636:3;12629:35;12619:51;;:::o;12676:222::-;12769:4;12807:2;12796:9;12792:18;12784:26;;12820:71;12888:1;12877:9;12873:17;12864:6;12820:71;:::i;:::-;12774:124;;;;:::o;12904:254::-;13013:4;13051:2;13040:9;13036:18;13028:26;;13064:87;13148:1;13137:9;13133:17;13124:6;13064:87;:::i;:::-;13018:140;;;;:::o;13164:210::-;13251:4;13289:2;13278:9;13274:18;13266:26;;13302:65;13364:1;13353:9;13349:17;13340:6;13302:65;:::i;:::-;13256:118;;;;:::o;13380:274::-;13499:4;13537:2;13526:9;13522:18;13514:26;;13550:97;13644:1;13633:9;13629:17;13620:6;13550:97;:::i;:::-;13504:150;;;;:::o;13660:313::-;13773:4;13811:2;13800:9;13796:18;13788:26;;13860:9;13854:4;13850:20;13846:1;13835:9;13831:17;13824:47;13888:78;13961:4;13952:6;13888:78;:::i;:::-;13880:86;;13778:195;;;;:::o;13979:419::-;14145:4;14183:2;14172:9;14168:18;14160:26;;14232:9;14226:4;14222:20;14218:1;14207:9;14203:17;14196:47;14260:131;14386:4;14260:131;:::i;:::-;14252:139;;14150:248;;;:::o;14404:419::-;14570:4;14608:2;14597:9;14593:18;14585:26;;14657:9;14651:4;14647:20;14643:1;14632:9;14628:17;14621:47;14685:131;14811:4;14685:131;:::i;:::-;14677:139;;14575:248;;;:::o;14829:419::-;14995:4;15033:2;15022:9;15018:18;15010:26;;15082:9;15076:4;15072:20;15068:1;15057:9;15053:17;15046:47;15110:131;15236:4;15110:131;:::i;:::-;15102:139;;15000:248;;;:::o;15254:419::-;15420:4;15458:2;15447:9;15443:18;15435:26;;15507:9;15501:4;15497:20;15493:1;15482:9;15478:17;15471:47;15535:131;15661:4;15535:131;:::i;:::-;15527:139;;15425:248;;;:::o;15679:419::-;15845:4;15883:2;15872:9;15868:18;15860:26;;15932:9;15926:4;15922:20;15918:1;15907:9;15903:17;15896:47;15960:131;16086:4;15960:131;:::i;:::-;15952:139;;15850:248;;;:::o;16104:419::-;16270:4;16308:2;16297:9;16293:18;16285:26;;16357:9;16351:4;16347:20;16343:1;16332:9;16328:17;16321:47;16385:131;16511:4;16385:131;:::i;:::-;16377:139;;16275:248;;;:::o;16529:419::-;16695:4;16733:2;16722:9;16718:18;16710:26;;16782:9;16776:4;16772:20;16768:1;16757:9;16753:17;16746:47;16810:131;16936:4;16810:131;:::i;:::-;16802:139;;16700:248;;;:::o;16954:419::-;17120:4;17158:2;17147:9;17143:18;17135:26;;17207:9;17201:4;17197:20;17193:1;17182:9;17178:17;17171:47;17235:131;17361:4;17235:131;:::i;:::-;17227:139;;17125:248;;;:::o;17379:419::-;17545:4;17583:2;17572:9;17568:18;17560:26;;17632:9;17626:4;17622:20;17618:1;17607:9;17603:17;17596:47;17660:131;17786:4;17660:131;:::i;:::-;17652:139;;17550:248;;;:::o;17804:419::-;17970:4;18008:2;17997:9;17993:18;17985:26;;18057:9;18051:4;18047:20;18043:1;18032:9;18028:17;18021:47;18085:131;18211:4;18085:131;:::i;:::-;18077:139;;17975:248;;;:::o;18229:419::-;18395:4;18433:2;18422:9;18418:18;18410:26;;18482:9;18476:4;18472:20;18468:1;18457:9;18453:17;18446:47;18510:131;18636:4;18510:131;:::i;:::-;18502:139;;18400:248;;;:::o;18654:419::-;18820:4;18858:2;18847:9;18843:18;18835:26;;18907:9;18901:4;18897:20;18893:1;18882:9;18878:17;18871:47;18935:131;19061:4;18935:131;:::i;:::-;18927:139;;18825:248;;;:::o;19079:419::-;19245:4;19283:2;19272:9;19268:18;19260:26;;19332:9;19326:4;19322:20;19318:1;19307:9;19303:17;19296:47;19360:131;19486:4;19360:131;:::i;:::-;19352:139;;19250:248;;;:::o;19504:419::-;19670:4;19708:2;19697:9;19693:18;19685:26;;19757:9;19751:4;19747:20;19743:1;19732:9;19728:17;19721:47;19785:131;19911:4;19785:131;:::i;:::-;19777:139;;19675:248;;;:::o;19929:419::-;20095:4;20133:2;20122:9;20118:18;20110:26;;20182:9;20176:4;20172:20;20168:1;20157:9;20153:17;20146:47;20210:131;20336:4;20210:131;:::i;:::-;20202:139;;20100:248;;;:::o;20354:419::-;20520:4;20558:2;20547:9;20543:18;20535:26;;20607:9;20601:4;20597:20;20593:1;20582:9;20578:17;20571:47;20635:131;20761:4;20635:131;:::i;:::-;20627:139;;20525:248;;;:::o;20779:222::-;20872:4;20910:2;20899:9;20895:18;20887:26;;20923:71;20991:1;20980:9;20976:17;20967:6;20923:71;:::i;:::-;20877:124;;;;:::o;21007:831::-;21270:4;21308:3;21297:9;21293:19;21285:27;;21322:71;21390:1;21379:9;21375:17;21366:6;21322:71;:::i;:::-;21403:80;21479:2;21468:9;21464:18;21455:6;21403:80;:::i;:::-;21530:9;21524:4;21520:20;21515:2;21504:9;21500:18;21493:48;21558:108;21661:4;21652:6;21558:108;:::i;:::-;21550:116;;21676:72;21744:2;21733:9;21729:18;21720:6;21676:72;:::i;:::-;21758:73;21826:3;21815:9;21811:19;21802:6;21758:73;:::i;:::-;21275:563;;;;;;;;:::o;21844:214::-;21933:4;21971:2;21960:9;21956:18;21948:26;;21984:67;22048:1;22037:9;22033:17;22024:6;21984:67;:::i;:::-;21938:120;;;;:::o;22064:132::-;22131:4;22154:3;22146:11;;22184:4;22179:3;22175:14;22167:22;;22136:60;;;:::o;22202:114::-;22269:6;22303:5;22297:12;22287:22;;22276:40;;;:::o;22322:99::-;22374:6;22408:5;22402:12;22392:22;;22381:40;;;:::o;22427:113::-;22497:4;22529;22524:3;22520:14;22512:22;;22502:38;;;:::o;22546:184::-;22645:11;22679:6;22674:3;22667:19;22719:4;22714:3;22710:14;22695:29;;22657:73;;;;:::o;22736:169::-;22820:11;22854:6;22849:3;22842:19;22894:4;22889:3;22885:14;22870:29;;22832:73;;;;:::o;22911:305::-;22951:3;22970:20;22988:1;22970:20;:::i;:::-;22965:25;;23004:20;23022:1;23004:20;:::i;:::-;22999:25;;23158:1;23090:66;23086:74;23083:1;23080:81;23077:2;;;23164:18;;:::i;:::-;23077:2;23208:1;23205;23201:9;23194:16;;22955:261;;;;:::o;23222:185::-;23262:1;23279:20;23297:1;23279:20;:::i;:::-;23274:25;;23313:20;23331:1;23313:20;:::i;:::-;23308:25;;23352:1;23342:2;;23357:18;;:::i;:::-;23342:2;23399:1;23396;23392:9;23387:14;;23264:143;;;;:::o;23413:348::-;23453:7;23476:20;23494:1;23476:20;:::i;:::-;23471:25;;23510:20;23528:1;23510:20;:::i;:::-;23505:25;;23698:1;23630:66;23626:74;23623:1;23620:81;23615:1;23608:9;23601:17;23597:105;23594:2;;;23705:18;;:::i;:::-;23594:2;23753:1;23750;23746:9;23735:20;;23461:300;;;;:::o;23767:191::-;23807:4;23827:20;23845:1;23827:20;:::i;:::-;23822:25;;23861:20;23879:1;23861:20;:::i;:::-;23856:25;;23900:1;23897;23894:8;23891:2;;;23905:18;;:::i;:::-;23891:2;23950:1;23947;23943:9;23935:17;;23812:146;;;;:::o;23964:96::-;24001:7;24030:24;24048:5;24030:24;:::i;:::-;24019:35;;24009:51;;;:::o;24066:104::-;24111:7;24140:24;24158:5;24140:24;:::i;:::-;24129:35;;24119:51;;;:::o;24176:90::-;24210:7;24253:5;24246:13;24239:21;24228:32;;24218:48;;;:::o;24272:126::-;24309:7;24349:42;24342:5;24338:54;24327:65;;24317:81;;;:::o;24404:77::-;24441:7;24470:5;24459:16;;24449:32;;;:::o;24487:86::-;24522:7;24562:4;24555:5;24551:16;24540:27;;24530:43;;;:::o;24579:178::-;24655:9;24688:63;24745:5;24688:63;:::i;:::-;24675:76;;24665:92;;;:::o;24763:139::-;24839:9;24872:24;24890:5;24872:24;:::i;:::-;24859:37;;24849:53;;;:::o;24908:121::-;24966:9;24999:24;25017:5;24999:24;:::i;:::-;24986:37;;24976:53;;;:::o;25035:307::-;25103:1;25113:113;25127:6;25124:1;25121:13;25113:113;;;25212:1;25207:3;25203:11;25197:18;25193:1;25188:3;25184:11;25177:39;25149:2;25146:1;25142:10;25137:15;;25113:113;;;25244:6;25241:1;25238:13;25235:2;;;25324:1;25315:6;25310:3;25306:16;25299:27;25235:2;25084:258;;;;:::o;25348:320::-;25392:6;25429:1;25423:4;25419:12;25409:22;;25476:1;25470:4;25466:12;25497:18;25487:2;;25553:4;25545:6;25541:17;25531:27;;25487:2;25615;25607:6;25604:14;25584:18;25581:38;25578:2;;;25634:18;;:::i;:::-;25578:2;25399:269;;;;:::o;25674:233::-;25713:3;25736:24;25754:5;25736:24;:::i;:::-;25727:33;;25782:66;25775:5;25772:77;25769:2;;;25852:18;;:::i;:::-;25769:2;25899:1;25892:5;25888:13;25881:20;;25717:190;;;:::o;25913:180::-;25961:77;25958:1;25951:88;26058:4;26055:1;26048:15;26082:4;26079:1;26072:15;26099:180;26147:77;26144:1;26137:88;26244:4;26241:1;26234:15;26268:4;26265:1;26258:15;26285:180;26333:77;26330:1;26323:88;26430:4;26427:1;26420:15;26454:4;26451:1;26444:15;26471:102;26512:6;26563:2;26559:7;26554:2;26547:5;26543:14;26539:28;26529:38;;26519:54;;;:::o;26579:222::-;26719:34;26715:1;26707:6;26703:14;26696:58;26788:5;26783:2;26775:6;26771:15;26764:30;26685:116;:::o;26807:229::-;26947:34;26943:1;26935:6;26931:14;26924:58;27016:12;27011:2;27003:6;26999:15;26992:37;26913:123;:::o;27042:225::-;27182:34;27178:1;27170:6;27166:14;27159:58;27251:8;27246:2;27238:6;27234:15;27227:33;27148:119;:::o;27273:221::-;27413:34;27409:1;27401:6;27397:14;27390:58;27482:4;27477:2;27469:6;27465:15;27458:29;27379:115;:::o;27500:177::-;27640:29;27636:1;27628:6;27624:14;27617:53;27606:71;:::o;27683:177::-;27823:29;27819:1;27811:6;27807:14;27800:53;27789:71;:::o;27866:239::-;28006:34;28002:1;27994:6;27990:14;27983:58;28075:22;28070:2;28062:6;28058:15;28051:47;27972:133;:::o;28111:181::-;28251:33;28247:1;28239:6;28235:14;28228:57;28217:75;:::o;28298:227::-;28438:34;28434:1;28426:6;28422:14;28415:58;28507:10;28502:2;28494:6;28490:15;28483:35;28404:121;:::o;28531:182::-;28671:34;28667:1;28659:6;28655:14;28648:58;28637:76;:::o;28719:228::-;28859:34;28855:1;28847:6;28843:14;28836:58;28928:11;28923:2;28915:6;28911:15;28904:36;28825:122;:::o;28953:224::-;29093:34;29089:1;29081:6;29077:14;29070:58;29162:7;29157:2;29149:6;29145:15;29138:32;29059:118;:::o;29183:223::-;29323:34;29319:1;29311:6;29307:14;29300:58;29392:6;29387:2;29379:6;29375:15;29368:31;29289:117;:::o;29412:176::-;29552:28;29548:1;29540:6;29536:14;29529:52;29518:70;:::o;29594:221::-;29734:34;29730:1;29722:6;29718:14;29711:58;29803:4;29798:2;29790:6;29786:15;29779:29;29700:115;:::o;29821:231::-;29961:34;29957:1;29949:6;29945:14;29938:58;30030:14;30025:2;30017:6;30013:15;30006:39;29927:125;:::o;30058:122::-;30131:24;30149:5;30131:24;:::i;:::-;30124:5;30121:35;30111:2;;30170:1;30167;30160:12;30111:2;30101:79;:::o;30186:138::-;30267:32;30293:5;30267:32;:::i;:::-;30260:5;30257:43;30247:2;;30314:1;30311;30304:12;30247:2;30237:87;:::o;30330:116::-;30400:21;30415:5;30400:21;:::i;:::-;30393:5;30390:32;30380:2;;30436:1;30433;30426:12;30380:2;30370:76;:::o;30452:122::-;30525:24;30543:5;30525:24;:::i;:::-;30518:5;30515:35;30505:2;;30564:1;30561;30554:12;30505:2;30495:79;:::o

Swarm Source

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