ETH Price: $3,267.43 (+0.22%)
Gas: 2 Gwei

Token

GM (GM ☕)
 

Overview

Max Total Supply

100,000,000 GM ☕

Holders

102

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0 GM ☕

Value
$0.00
0x73a4eeecfdd0919611491fb850b8e1e2b281657a
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:
GM

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-21
*/

// https://gmcoin.wtf
// https://t.me/gmcoin_wtf
// https://discord.gg/QmHJ75ftB7
// https://twitter.com/gmcoin_wtf
// https://medium.com/@gm_59437
// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/utils/Context.sol
//     ______  ____    ____  
//   .' ___  ||_   \  /   _| 
//  / .'   \_|  |   \/   |   
//  | |   ____  | |\  /| |   
//  \ `.___]  |_| |_\/_| |_  
//   `._____.'|_____||_____| 
                         

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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 subtraction 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. 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;
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

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

interface 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 GM is Context, Ownable {
    using SafeMath for uint256;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromLimits;


    address payable private _feeWallet;
    address payable private _devWallet;
    address private _uniswapV2Pair;

    bool private _forceGM = false;
    bool private _inSwap = false;
    bool private _gm = false;

    string private constant _name = unicode"GM";
    string private constant _symbol = unicode"GM ☕";

    int8 private _timezone = -5;

    IUniswapV2Router02 private _uniswapV2Router;

    uint256 private _currentTaxPercent = 4;
    uint256 private _decimals = 8;
    uint256 private _devTaxPercent = 1;
    uint256 private _daytimeTaxPercent = 3;
    uint256 private _gmTaxPercent = 0;
    uint256 private _gmHourStart = 9;
    uint256 private _gmHourEnd = 11;
  
    
    uint256 private _currentTimestamp;
    uint256 private _tSupply = 100_000_000 * 10**_decimals;
  
    event GMUpdated(bool on);

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


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

    constructor () {

        // used to be in openTrading()
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(_uniswapV2Router), _tSupply);
        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        _currentTimestamp                       = block.timestamp;
        _feeWallet                              = payable(0xD63117E111fD4e1AF8C41dDA991B19D2Cca80844);
        _devWallet                              = payable(0xD63117E111fD4e1AF8C41dDA991B19D2Cca80844);

        _balances[_msgSender()]                 = _tSupply;

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

        _isExcludedFromLimits[owner()]          = true;
        _isExcludedFromLimits[address(this)]    = true;
        _isExcludedFromLimits[_feeWallet]       = true;
        _isExcludedFromLimits[address(_uniswapV2Router)] = true;
        _isExcludedFromLimits[_uniswapV2Pair] = true;
        _isExcludedFromLimits[_devWallet] = true;

        

        _setTaxes();
       
        
        emit Transfer(address(0), _msgSender(), _tSupply);
    }
    // ~~~~~~~~~~~~ accessors ~~~~~~~~~~~~ \\

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

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

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

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

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

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

    function feeWallet() public view returns (address) {
        return _feeWallet;
    }

    function gm() public view returns (bool) {
        return _gm;
    }

    function timezone() public view returns (int8) {
        return _timezone;
    }

    function currentTimestamp() public view returns (uint256) {
        return _currentTimestamp;
    }

    function taxPercent() public view returns (uint256) {
        return _currentTaxPercent;
    }


    function isExcludedFromFees(address a) public view returns (bool) {
        return _isExcludedFromFee[a];
    }

    function isExcludedFromLimits(address a) public view returns (bool) {
        return _isExcludedFromLimits[a];
    }

    function gmHourStart() public view returns (uint256) {
        return _gmHourStart;
    }

    function gmHourEnd() public view returns (uint256) {
        return _gmHourEnd;
    }

    function getOwner() public view returns (address) {
        return this.owner();
    }

    function getDevWallet() public view returns (address) {
        return _devWallet;
    }

    // ~~~~~~~~~~~~ mutators ~~~~~~~~~~~~ \\

    function setFeeWallet(address payable w) external {
        require(
            _msgSender() == _feeWallet || 
            _msgSender() == owner() ||
            _msgSender() == _devWallet);

        require(w != address(0), "Can't set fee wallet to burn addr.");
        _feeWallet = w;
    }

    function setDevWallet(address payable w) external {
        require(
            _msgSender() == _feeWallet || 
            _msgSender() == owner() ||
            _msgSender() == _devWallet);
        require(w != address(0), "Can't set dev wallet to burn addr.");
        _devWallet = w;
    }

    function setTimezone(int8 tz) external onlyOwner {
        /* changes the timezone where tz is interpreted as UTC-<tz>.
            parameters:
                tx (int8): a signed 8-bit int, used to represent when "morning" is.  
            
            returns:
                none
        */
        require(-12 < tz && tz < 13, "Timezone not recognized.");
        _timezone = tz;
    }

    function setTaxPercent(uint256 percent) external onlyOwner {
        /* sets the tax during the daytime (non-gm) period.
            parameters:
                percent (uint256): represents the % of the transaction given to the contract as taxes.
            
            returns:
                none
        */
        require(percent <= 3, "Maximum tax of 3%.");
        _daytimeTaxPercent = percent;
    }

    function setDevTaxPercent(uint256 percent) external onlyOwner {
        /* sets the dev tax pecent.
            parameters:
                percent (uint256): represents the % of the transaction given to the contract as taxes.
            
            returns:
                none
        */
        require(percent <= 2, "Maximum tax of 2%.");
        _devTaxPercent = percent;
    }

    function setGMHourStart(uint256 hour) external onlyOwner {
        /* sets the hour that gm mode starts at.
            parameters:
                hour (uint256): the hour to change the gm start time to.
            
            returns:
                none
        */
        require(hour < _gmHourEnd, "GM mode has to start before it ends.");
        _gmHourStart = hour;
    }

    function setGMHourEnd(uint256 hour) external onlyOwner {
        /* sets the hour that gm mode ends at.
            parameters:
                hour (uint256): the hour to change the gm end time to.
            returns:
                none
        */
        require(hour > _gmHourStart, "GM mode has to end after it starts.");
        _gmHourEnd = hour;
    }

    function setForceGM(bool on) external onlyOwner {
        /* set the _forceGM mode flag.
            parameters:
                on (bool): whether we want _forceGM mode active or not.
            returns:
                none
        */
        _forceGM = on;
    }

    
    // ~~~~~~~~~~~~ ierc20 functions ~~~~~~~~~~~~ \\

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


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

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

    // ~~~~~~~~~~~~ custom functions ~~~~~~~~~~~~ \\

    function multisendToken( address[] memory addresses, uint256[] memory balances) external onlyOwner {
        
        for (uint8 i=0;i < addresses.length; i++) {
            _transferFeeless(owner(), addresses[i], balances[i]);
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transferFeeless(address sender, address recipient, uint256 amount) private {
        /* transfers tokens without taking fees.
            parameters:
                sender (address):
                recipient (address):
                amount (uint256): the amount of tokens (keep in mind theres _decimals more digits than you think).
            returns:
                none
        */
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _transferSupportingFee(address sender, address recipient, uint256 amount) private {
        /* transfers tokens while taking fees.
            parameters:
                sender (address):
                recipient (address):
                amount (uint256):
            returns:
                none
        */
        uint256 taxedTokens = amount.mul(_currentTaxPercent).div(100);
        uint256 amountRecieved = amount.sub(taxedTokens);

        // subtract amt from sender and add to recipient
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amountRecieved);

        // handle taxes
        _balances[address(this)] = _balances[address(this)].add(taxedTokens);

        emit Transfer(sender, recipient, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        /* runs checks to ensure a valid transfer, then executes.
            first group of statements check that the zero address is not involved, and that the transfer amount is > 0.
            second group checks that a bot isn't involved (they aren't allowed to trade), and ensures trading has started.
            third group only applies when Uniswap is involved (buy/sell, not transfer) and when the involved addresses are not exempt from fees.
            the taxes are then set, which does the time check and sets the `_gm` flag.
            if: GM mode or there is an address exempt from fees involved,
                The helper function to transfer without fees is called.
            else:
                The contract balance of tokens is checked (using the ERC20.sol function balanceOf()), if its > 0, sell tokens.
                The helper function to transfer with fees is called.
            parameters:
                sender (address):
                recipient (address):
                amount (uint256):
            returns:
                none
        */


        // checks base transaction requirements
        require(sender != address(0), "ERC20: transfer from the zero address.");
        require(recipient != address(0), "ERC20: transfer to the zero address.");
        require(amount > 0, "Transfer amount must be greater than zero.");

      

        _setTaxes();
        
        //TODO: ensure an address cannot map to both bots and exemptfromfee.
        // if sender/reciever is excluded from fees or it is GM mode.
        if ((_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) || _gm) {
            _transferFeeless(sender, recipient, amount);
            return;
        }

        // ensure no transfer tax between addresses.
        if ((sender != _uniswapV2Pair && sender != address(_uniswapV2Router)) &&
            (recipient != _uniswapV2Pair && recipient != (address)(_uniswapV2Router))){
                _transferFeeless(sender, recipient, amount);
                return;
        }

        // handles the contract collecting fees.
        uint256 contractTokenBalance = balanceOf(address(this));
        if (!_inSwap && sender != _uniswapV2Pair && contractTokenBalance > 0) {
            swapTokensForEth(contractTokenBalance);
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                uint256 _feeAmt = contractETHBalance.mul(_currentTaxPercent.sub(_devTaxPercent)).div(_currentTaxPercent);
                uint256 _devAmt = contractETHBalance.mul(_devTaxPercent).div(_currentTaxPercent);
                _feeWallet.transfer(_feeAmt);
                _devWallet.transfer(_devAmt);
            }
        }


        // send the tokens
        _transferSupportingFee(sender, recipient, amount);
    }

    function _setTaxes() private {
        // sets GM mode and consequently, the tax rate.
        bool gmChanged = _setGM();

        if (gmChanged) {
            _currentTaxPercent = _gm ? (_gmTaxPercent + _devTaxPercent) : (_daytimeTaxPercent + _devTaxPercent);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();
        _approve(address(this), address(_uniswapV2Router), tokenAmount);
        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function manualSwap() external {
        require(
            _msgSender() == _feeWallet || 
            _msgSender() == owner() ||
            _msgSender() == _devWallet);
        swapTokensForEth(balanceOf(address(this)));
    }

    function manualSend() external {
        require(
            _msgSender() == _feeWallet || 
            _msgSender() == owner() ||
            _msgSender() == _devWallet);

        _feeWallet.transfer(address(this).balance);
    }

    function forceGM(bool g) external onlyOwner {
        _gm = g;
    }



  
  
    function _setGM() private returns (bool) {
        _currentTimestamp = block.timestamp;
        uint256 hour = uint256(int(_currentTimestamp.div(3600))+_timezone).mod(24);

        // checks whether we are currently between the hours of GM.
        bool newGM = (_gmHourStart <= hour  && hour < _gmHourEnd);

        // if the _gm value changes, we emit an event and return true
        if (_gm != newGM) {
            _gm = newGM;
            emit GMUpdated(newGM);
            return true;
        }
        return false;
    }
    
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"on","type":"bool"}],"name":"GMUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"g","type":"bool"}],"name":"forceGM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDevWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gm","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gmHourEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gmHourStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isExcludedFromLimits","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":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"name":"multisendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setDevTaxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"w","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"w","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"on","type":"bool"}],"name":"setForceGM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"hour","type":"uint256"}],"name":"setGMHourEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"hour","type":"uint256"}],"name":"setGMHourStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTaxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int8","name":"tz","type":"int8"}],"name":"setTimezone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timezone","outputs":[{"internalType":"int8","name":"","type":"int8"}],"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"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600760176101000a81548160ff021916908360000b60ff16021790555060046009556008600a556001600b556003600c556000600d556009600e55600b600f55600a54600a620000c7919062000f57565b6305f5e100620000d8919062000fa8565b601155348015620000e857600080fd5b5062000109620000fd6200096d60201b60201c565b6200097560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200019530600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660115462000a3960201b60201c565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000203573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000229919062001073565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d9919062001073565b6040518363ffffffff1660e01b8152600401620002f8929190620010b6565b6020604051808303816000875af115801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e919062001073565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260108190555073d63117e111fd4e1af8c41dda991b19d2cca80844600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d63117e111fd4e1af8c41dda991b19d2cca80844600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115460026000620004466200096d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006200049a62000c0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200064d62000c0c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008ee62000c3560201b60201c565b620008fe6200096d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6011546040516200095f9190620010f4565b60405180910390a362001430565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000aac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aa39062001198565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b169062001230565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000bff9190620010f4565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600062000c4762000c9a60201b60201c565b9050801562000c9757600760169054906101000a900460ff1662000c7d57600b54600c5462000c77919062001252565b62000c90565b600b54600d5462000c8f919062001252565b5b6009819055505b50565b600042601081905550600062000cfc6018600760179054906101000a900460000b60000b62000cdc610e1060105462000d9a60201b620015d11790919060201c565b62000ce89190620012b9565b62000db260201b620015e71790919060201c565b9050600081600e541115801562000d145750600f5482105b9050801515600760169054906101000a900460ff1615151462000d905780600760166101000a81548160ff0219169083151502179055507f74b491e4baeda06b7ceae407eab65ee0f7aea1351af1e3acf4a945f7d701d4c18160405162000d7c919062001374565b60405180910390a160019250505062000d97565b6000925050505b90565b6000818362000daa9190620013c0565b905092915050565b6000818362000dc29190620013f8565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e585780860481111562000e305762000e2f62000dca565b5b600185161562000e405780820291505b808102905062000e508562000df9565b945062000e10565b94509492505050565b60008262000e73576001905062000f46565b8162000e83576000905062000f46565b816001811462000e9c576002811462000ea75762000edd565b600191505062000f46565b60ff84111562000ebc5762000ebb62000dca565b5b8360020a91508482111562000ed65762000ed562000dca565b5b5062000f46565b5060208310610133831016604e8410600b841016171562000f175782820a90508381111562000f115762000f1062000dca565b5b62000f46565b62000f26848484600162000e06565b9250905081840481111562000f405762000f3f62000dca565b5b81810290505b9392505050565b6000819050919050565b600062000f648262000f4d565b915062000f718362000f4d565b925062000fa07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e61565b905092915050565b600062000fb58262000f4d565b915062000fc28362000f4d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ffe5762000ffd62000dca565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200103b826200100e565b9050919050565b6200104d816200102e565b81146200105957600080fd5b50565b6000815190506200106d8162001042565b92915050565b6000602082840312156200108c576200108b62001009565b5b60006200109c848285016200105c565b91505092915050565b620010b0816200102e565b82525050565b6000604082019050620010cd6000830185620010a5565b620010dc6020830184620010a5565b9392505050565b620010ee8162000f4d565b82525050565b60006020820190506200110b6000830184620010e3565b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200118060248362001111565b91506200118d8262001122565b604082019050919050565b60006020820190508181036000830152620011b38162001171565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200121860228362001111565b91506200122582620011ba565b604082019050919050565b600060208201905081810360008301526200124b8162001209565b9050919050565b60006200125f8262000f4d565b91506200126c8362000f4d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012a457620012a362000dca565b5b828201905092915050565b6000819050919050565b6000620012c682620012af565b9150620012d383620012af565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0383136000831215161562001311576200131062000dca565b5b817f80000000000000000000000000000000000000000000000000000000000000000383126000831216156200134c576200134b62000dca565b5b828201905092915050565b60008115159050919050565b6200136e8162001357565b82525050565b60006020820190506200138b600083018462001363565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013cd8262000f4d565b9150620013da8362000f4d565b925082620013ed57620013ec62001391565b5b828204905092915050565b6000620014058262000f4d565b9150620014128362000f4d565b92508262001425576200142462001391565b5b828206905092915050565b6139c380620014406000396000f3fe6080604052600436106102085760003560e01c80637541f41c11610118578063b5ead9b7116100a0578063dd62ed3e1161006f578063dd62ed3e14610750578063ddb211b31461078d578063f25f4b56146107b6578063f2fde38b146107e1578063f42938901461080a5761020f565b8063b5ead9b7146106a6578063c0129d43146106d1578063c4148fe5146106fc578063d2d745b1146107275761020f565b806390d49b9d116100e757806390d49b9d146105c157806395d89b41146105ea5780639ab2c29c14610615578063a4324f4b1461063e578063a9059cbb146106695761020f565b80637541f41c1461051757806381f4946214610542578063893d20e81461056b5780638da5cb5b146105965761020f565b80633e05fee11161019b5780635cce86cd1161016a5780635cce86cd146104345780635d1db1e314610471578063611783861461049a57806370a08231146104c3578063715018a6146105005761020f565b80633e05fee11461038c578063453dd97f146103b55780634fbee193146103e057806351bc3c851461041d5761020f565b80631f53ac02116101d75780631f53ac02146102d257806323b872dd146102fb578063313ce5671461033857806331cd85be146103635761020f565b806306fdde0314610214578063095ea7b31461023f57806318160ddd1461027c5780631e2ff94f146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610821565b6040516102369190612762565b60405180910390f35b34801561024b57600080fd5b506102666004803603810190610261919061282c565b61085e565b6040516102739190612887565b60405180910390f35b34801561028857600080fd5b5061029161087c565b60405161029e91906128b1565b60405180910390f35b3480156102b357600080fd5b506102bc610886565b6040516102c991906128b1565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f4919061290a565b610890565b005b34801561030757600080fd5b50610322600480360381019061031d9190612937565b610a48565b60405161032f9190612887565b60405180910390f35b34801561034457600080fd5b5061034d610b21565b60405161035a91906128b1565b60405180910390f35b34801561036f57600080fd5b5061038a6004803603810190610385919061298a565b610b2b565b005b34801561039857600080fd5b506103b360048036038101906103ae91906129f0565b610b81565b005b3480156103c157600080fd5b506103ca610c1e565b6040516103d79190612a2c565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612a47565b610c48565b6040516104149190612887565b60405180910390f35b34801561042957600080fd5b50610432610c9e565b005b34801561044057600080fd5b5061045b60048036038101906104569190612a47565b610db5565b6040516104689190612887565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190612aa0565b610e0b565b005b3480156104a657600080fd5b506104c160048036038101906104bc919061298a565b610e30565b005b3480156104cf57600080fd5b506104ea60048036038101906104e59190612a47565b610e86565b6040516104f791906128b1565b60405180910390f35b34801561050c57600080fd5b50610515610ecf565b005b34801561052357600080fd5b5061052c610ee3565b60405161053991906128b1565b60405180910390f35b34801561054e57600080fd5b5061056960048036038101906105649190612aa0565b610eed565b005b34801561057757600080fd5b50610580610f12565b60405161058d9190612a2c565b60405180910390f35b3480156105a257600080fd5b506105ab610f88565b6040516105b89190612a2c565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e3919061290a565b610fb1565b005b3480156105f657600080fd5b506105ff611169565b60405161060c9190612762565b60405180910390f35b34801561062157600080fd5b5061063c6004803603810190610637919061298a565b6111a6565b005b34801561064a57600080fd5b506106536111fc565b60405161066091906128b1565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b919061282c565b611206565b60405161069d9190612887565b60405180910390f35b3480156106b257600080fd5b506106bb611224565b6040516106c891906128b1565b60405180910390f35b3480156106dd57600080fd5b506106e661122e565b6040516106f39190612887565b60405180910390f35b34801561070857600080fd5b50610711611245565b60405161071e9190612adc565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190612d02565b61125c565b005b34801561075c57600080fd5b5061077760048036038101906107729190612d7a565b6112d7565b60405161078491906128b1565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af919061298a565b61135e565b005b3480156107c257600080fd5b506107cb6113b4565b6040516107d89190612a2c565b60405180910390f35b3480156107ed57600080fd5b5061080860048036038101906108039190612a47565b6113de565b005b34801561081657600080fd5b5061081f611462565b005b60606040518060400160405280600281526020017f474d000000000000000000000000000000000000000000000000000000000000815250905090565b600061087261086b6115fd565b8484611605565b6001905092915050565b6000601154905090565b6000601054905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d16115fd565b73ffffffffffffffffffffffffffffffffffffffff16148061092c57506108f6610f88565b73ffffffffffffffffffffffffffffffffffffffff166109146115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b8061098b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109736115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b61099457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb90612e2c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610a558484846117d0565b610b1684610a616115fd565b610b118560405180606001604052806028815260200161396660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ac76115fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d349092919063ffffffff16565b611605565b600190509392505050565b6000600a54905090565b610b33611d89565b6002811115610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90612e98565b60405180910390fd5b80600b8190555050565b610b89611d89565b8060000b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4128015610bbe5750600d8160000b125b610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490612f04565b60405180910390fd5b80600760176101000a81548160ff021916908360000b60ff16021790555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cdf6115fd565b73ffffffffffffffffffffffffffffffffffffffff161480610d3a5750610d04610f88565b73ffffffffffffffffffffffffffffffffffffffff16610d226115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d995750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d816115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b610da257600080fd5b610db3610dae30610e86565b611e07565b565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e13611d89565b80600760166101000a81548160ff02191690831515021790555050565b610e38611d89565b6003811115610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7390612f70565b60405180910390fd5b80600c8190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ed7611d89565b610ee16000612080565b565b6000600954905090565b610ef5611d89565b80600760146101000a81548160ff02191690831515021790555050565b60003073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f839190612fa5565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff26115fd565b73ffffffffffffffffffffffffffffffffffffffff16148061104d5750611017610f88565b73ffffffffffffffffffffffffffffffffffffffff166110356115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b806110ac5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110946115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b6110b557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90613044565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600681526020017f474d20e298950000000000000000000000000000000000000000000000000000815250905090565b6111ae611d89565b600f5481106111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e9906130d6565b60405180910390fd5b80600e8190555050565b6000600f54905090565b600061121a6112136115fd565b84846117d0565b6001905092915050565b6000600e54905090565b6000600760169054906101000a900460ff16905090565b6000600760179054906101000a900460000b905090565b611264611d89565b60005b82518160ff1610156112d2576112bf61127e610f88565b848360ff1681518110611294576112936130f6565b5b6020026020010151848460ff16815181106112b2576112b16130f6565b5b6020026020010151612144565b80806112ca90613161565b915050611267565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611366611d89565b600e5481116113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a1906131fd565b60405180910390fd5b80600f8190555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113e6611d89565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d9061328f565b60405180910390fd5b61145f81612080565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a36115fd565b73ffffffffffffffffffffffffffffffffffffffff1614806114fe57506114c8610f88565b73ffffffffffffffffffffffffffffffffffffffff166114e66115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b8061155d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115456115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b61156657600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156115ce573d6000803e3d6000fd5b50565b600081836115df91906132de565b905092915050565b600081836115f5919061330f565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c906133b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90613444565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117c391906128b1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611837906134d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790613568565b60405180910390fd5b600081116118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea906135fa565b60405180910390fd5b6118fb6122d8565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061199c5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b35750600760169054906101000a900460ff165b156119c8576119c3838383612144565b611d2f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a745750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b285750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b275750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b3d57611b38838383612144565b611d2f565b6000611b4830610e86565b9050600760159054906101000a900460ff16158015611bb55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc15750600081115b15611d2257611bcf81611e07565b60004790506000811115611d20576000611c1c600954611c0e611bff600b5460095461232e90919063ffffffff16565b8561234490919063ffffffff16565b6115d190919063ffffffff16565b90506000611c49600954611c3b600b548661234490919063ffffffff16565b6115d190919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611cb3573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d1c573d6000803e3d6000fd5b5050505b505b611d2d84848461235a565b505b505050565b6000838311158290611d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d739190612762565b60405180910390fd5b5082840390509392505050565b611d916115fd565b73ffffffffffffffffffffffffffffffffffffffff16611daf610f88565b73ffffffffffffffffffffffffffffffffffffffff1614611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90613666565b60405180910390fd5b565b6001600760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e3f57611e3e612afc565b5b604051908082528060200260200182016040528015611e6d5781602001602082028036833780820191505090505b5090503081600081518110611e8557611e846130f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190612fa5565b81600181518110611f6457611f636130f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fcb30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611605565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161202f959493929190613789565b600060405180830381600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b50505050506000600760156101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61219681600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232e90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061222b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122cb91906128b1565b60405180910390a3505050565b60006122e26125de565b9050801561232b57600760169054906101000a900460ff1661231357600b54600c5461230e91906137e3565b612324565b600b54600d5461232391906137e3565b5b6009819055505b50565b6000818361233c9190613839565b905092915050565b60008183612352919061386d565b905092915050565b600061238460646123766009548561234490919063ffffffff16565b6115d190919063ffffffff16565b9050600061239b828461232e90919063ffffffff16565b90506123ef83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232e90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061248481600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c890919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061251982600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125b991906128b1565b60405180910390a35050505050565b600081836125d691906137e3565b905092915050565b60004260108190555060006126306018600760179054906101000a900460000b60000b612618610e106010546115d190919063ffffffff16565b61262291906138d1565b6115e790919063ffffffff16565b9050600081600e54111580156126475750600f5482105b9050801515600760169054906101000a900460ff161515146126bf5780600760166101000a81548160ff0219169083151502179055507f74b491e4baeda06b7ceae407eab65ee0f7aea1351af1e3acf4a945f7d701d4c1816040516126ac9190612887565b60405180910390a16001925050506126c6565b6000925050505b90565b600081519050919050565b600082825260208201905092915050565b60005b838110156127035780820151818401526020810190506126e8565b83811115612712576000848401525b50505050565b6000601f19601f8301169050919050565b6000612734826126c9565b61273e81856126d4565b935061274e8185602086016126e5565b61275781612718565b840191505092915050565b6000602082019050818103600083015261277c8184612729565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127c382612798565b9050919050565b6127d3816127b8565b81146127de57600080fd5b50565b6000813590506127f0816127ca565b92915050565b6000819050919050565b612809816127f6565b811461281457600080fd5b50565b60008135905061282681612800565b92915050565b600080604083850312156128435761284261278e565b5b6000612851858286016127e1565b925050602061286285828601612817565b9150509250929050565b60008115159050919050565b6128818161286c565b82525050565b600060208201905061289c6000830184612878565b92915050565b6128ab816127f6565b82525050565b60006020820190506128c660008301846128a2565b92915050565b60006128d782612798565b9050919050565b6128e7816128cc565b81146128f257600080fd5b50565b600081359050612904816128de565b92915050565b6000602082840312156129205761291f61278e565b5b600061292e848285016128f5565b91505092915050565b6000806000606084860312156129505761294f61278e565b5b600061295e868287016127e1565b935050602061296f868287016127e1565b925050604061298086828701612817565b9150509250925092565b6000602082840312156129a05761299f61278e565b5b60006129ae84828501612817565b91505092915050565b60008160000b9050919050565b6129cd816129b7565b81146129d857600080fd5b50565b6000813590506129ea816129c4565b92915050565b600060208284031215612a0657612a0561278e565b5b6000612a14848285016129db565b91505092915050565b612a26816127b8565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b600060208284031215612a5d57612a5c61278e565b5b6000612a6b848285016127e1565b91505092915050565b612a7d8161286c565b8114612a8857600080fd5b50565b600081359050612a9a81612a74565b92915050565b600060208284031215612ab657612ab561278e565b5b6000612ac484828501612a8b565b91505092915050565b612ad6816129b7565b82525050565b6000602082019050612af16000830184612acd565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b3482612718565b810181811067ffffffffffffffff82111715612b5357612b52612afc565b5b80604052505050565b6000612b66612784565b9050612b728282612b2b565b919050565b600067ffffffffffffffff821115612b9257612b91612afc565b5b602082029050602081019050919050565b600080fd5b6000612bbb612bb684612b77565b612b5c565b90508083825260208201905060208402830185811115612bde57612bdd612ba3565b5b835b81811015612c075780612bf388826127e1565b845260208401935050602081019050612be0565b5050509392505050565b600082601f830112612c2657612c25612af7565b5b8135612c36848260208601612ba8565b91505092915050565b600067ffffffffffffffff821115612c5a57612c59612afc565b5b602082029050602081019050919050565b6000612c7e612c7984612c3f565b612b5c565b90508083825260208201905060208402830185811115612ca157612ca0612ba3565b5b835b81811015612cca5780612cb68882612817565b845260208401935050602081019050612ca3565b5050509392505050565b600082601f830112612ce957612ce8612af7565b5b8135612cf9848260208601612c6b565b91505092915050565b60008060408385031215612d1957612d1861278e565b5b600083013567ffffffffffffffff811115612d3757612d36612793565b5b612d4385828601612c11565b925050602083013567ffffffffffffffff811115612d6457612d63612793565b5b612d7085828601612cd4565b9150509250929050565b60008060408385031215612d9157612d9061278e565b5b6000612d9f858286016127e1565b9250506020612db0858286016127e1565b9150509250929050565b7f43616e277420736574206465762077616c6c657420746f206275726e2061646460008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e166022836126d4565b9150612e2182612dba565b604082019050919050565b60006020820190508181036000830152612e4581612e09565b9050919050565b7f4d6178696d756d20746178206f662032252e0000000000000000000000000000600082015250565b6000612e826012836126d4565b9150612e8d82612e4c565b602082019050919050565b60006020820190508181036000830152612eb181612e75565b9050919050565b7f54696d657a6f6e65206e6f74207265636f676e697a65642e0000000000000000600082015250565b6000612eee6018836126d4565b9150612ef982612eb8565b602082019050919050565b60006020820190508181036000830152612f1d81612ee1565b9050919050565b7f4d6178696d756d20746178206f662033252e0000000000000000000000000000600082015250565b6000612f5a6012836126d4565b9150612f6582612f24565b602082019050919050565b60006020820190508181036000830152612f8981612f4d565b9050919050565b600081519050612f9f816127ca565b92915050565b600060208284031215612fbb57612fba61278e565b5b6000612fc984828501612f90565b91505092915050565b7f43616e277420736574206665652077616c6c657420746f206275726e2061646460008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b600061302e6022836126d4565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f474d206d6f64652068617320746f207374617274206265666f7265206974206560008201527f6e64732e00000000000000000000000000000000000000000000000000000000602082015250565b60006130c06024836126d4565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff82169050919050565b600061316c82613154565b915060ff8214156131805761317f613125565b5b600182019050919050565b7f474d206d6f64652068617320746f20656e64206166746572206974207374617260008201527f74732e0000000000000000000000000000000000000000000000000000000000602082015250565b60006131e76023836126d4565b91506131f28261318b565b604082019050919050565b60006020820190508181036000830152613216816131da565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132796026836126d4565b91506132848261321d565b604082019050919050565b600060208201905081810360008301526132a88161326c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132e9826127f6565b91506132f4836127f6565b925082613304576133036132af565b5b828204905092915050565b600061331a826127f6565b9150613325836127f6565b925082613335576133346132af565b5b828206905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061339c6024836126d4565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061342e6022836126d4565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f64726573732e0000000000000000000000000000000000000000000000000000602082015250565b60006134c06026836126d4565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573732e00000000000000000000000000000000000000000000000000000000602082015250565b60006135526024836126d4565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b60006135e4602a836126d4565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136506020836126d4565b915061365b8261361a565b602082019050919050565b6000602082019050818103600083015261367f81613643565b9050919050565b6000819050919050565b6000819050919050565b60006136b56136b06136ab84613686565b613690565b6127f6565b9050919050565b6136c58161369a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613700816127b8565b82525050565b600061371283836136f7565b60208301905092915050565b6000602082019050919050565b6000613736826136cb565b61374081856136d6565b935061374b836136e7565b8060005b8381101561377c5781516137638882613706565b975061376e8361371e565b92505060018101905061374f565b5085935050505092915050565b600060a08201905061379e60008301886128a2565b6137ab60208301876136bc565b81810360408301526137bd818661372b565b90506137cc6060830185612a1d565b6137d960808301846128a2565b9695505050505050565b60006137ee826127f6565b91506137f9836127f6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561382e5761382d613125565b5b828201905092915050565b6000613844826127f6565b915061384f836127f6565b92508282101561386257613861613125565b5b828203905092915050565b6000613878826127f6565b9150613883836127f6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138bc576138bb613125565b5b828202905092915050565b6000819050919050565b60006138dc826138c7565b91506138e7836138c7565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0383136000831215161561392257613921613125565b5b817f800000000000000000000000000000000000000000000000000000000000000003831260008312161561395a57613959613125565b5b82820190509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ea51608f92538602741f34818fe574b9b9234781d495f7cba8031cf516e0c7c464736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102085760003560e01c80637541f41c11610118578063b5ead9b7116100a0578063dd62ed3e1161006f578063dd62ed3e14610750578063ddb211b31461078d578063f25f4b56146107b6578063f2fde38b146107e1578063f42938901461080a5761020f565b8063b5ead9b7146106a6578063c0129d43146106d1578063c4148fe5146106fc578063d2d745b1146107275761020f565b806390d49b9d116100e757806390d49b9d146105c157806395d89b41146105ea5780639ab2c29c14610615578063a4324f4b1461063e578063a9059cbb146106695761020f565b80637541f41c1461051757806381f4946214610542578063893d20e81461056b5780638da5cb5b146105965761020f565b80633e05fee11161019b5780635cce86cd1161016a5780635cce86cd146104345780635d1db1e314610471578063611783861461049a57806370a08231146104c3578063715018a6146105005761020f565b80633e05fee11461038c578063453dd97f146103b55780634fbee193146103e057806351bc3c851461041d5761020f565b80631f53ac02116101d75780631f53ac02146102d257806323b872dd146102fb578063313ce5671461033857806331cd85be146103635761020f565b806306fdde0314610214578063095ea7b31461023f57806318160ddd1461027c5780631e2ff94f146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610821565b6040516102369190612762565b60405180910390f35b34801561024b57600080fd5b506102666004803603810190610261919061282c565b61085e565b6040516102739190612887565b60405180910390f35b34801561028857600080fd5b5061029161087c565b60405161029e91906128b1565b60405180910390f35b3480156102b357600080fd5b506102bc610886565b6040516102c991906128b1565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f4919061290a565b610890565b005b34801561030757600080fd5b50610322600480360381019061031d9190612937565b610a48565b60405161032f9190612887565b60405180910390f35b34801561034457600080fd5b5061034d610b21565b60405161035a91906128b1565b60405180910390f35b34801561036f57600080fd5b5061038a6004803603810190610385919061298a565b610b2b565b005b34801561039857600080fd5b506103b360048036038101906103ae91906129f0565b610b81565b005b3480156103c157600080fd5b506103ca610c1e565b6040516103d79190612a2c565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612a47565b610c48565b6040516104149190612887565b60405180910390f35b34801561042957600080fd5b50610432610c9e565b005b34801561044057600080fd5b5061045b60048036038101906104569190612a47565b610db5565b6040516104689190612887565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190612aa0565b610e0b565b005b3480156104a657600080fd5b506104c160048036038101906104bc919061298a565b610e30565b005b3480156104cf57600080fd5b506104ea60048036038101906104e59190612a47565b610e86565b6040516104f791906128b1565b60405180910390f35b34801561050c57600080fd5b50610515610ecf565b005b34801561052357600080fd5b5061052c610ee3565b60405161053991906128b1565b60405180910390f35b34801561054e57600080fd5b5061056960048036038101906105649190612aa0565b610eed565b005b34801561057757600080fd5b50610580610f12565b60405161058d9190612a2c565b60405180910390f35b3480156105a257600080fd5b506105ab610f88565b6040516105b89190612a2c565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e3919061290a565b610fb1565b005b3480156105f657600080fd5b506105ff611169565b60405161060c9190612762565b60405180910390f35b34801561062157600080fd5b5061063c6004803603810190610637919061298a565b6111a6565b005b34801561064a57600080fd5b506106536111fc565b60405161066091906128b1565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b919061282c565b611206565b60405161069d9190612887565b60405180910390f35b3480156106b257600080fd5b506106bb611224565b6040516106c891906128b1565b60405180910390f35b3480156106dd57600080fd5b506106e661122e565b6040516106f39190612887565b60405180910390f35b34801561070857600080fd5b50610711611245565b60405161071e9190612adc565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190612d02565b61125c565b005b34801561075c57600080fd5b5061077760048036038101906107729190612d7a565b6112d7565b60405161078491906128b1565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af919061298a565b61135e565b005b3480156107c257600080fd5b506107cb6113b4565b6040516107d89190612a2c565b60405180910390f35b3480156107ed57600080fd5b5061080860048036038101906108039190612a47565b6113de565b005b34801561081657600080fd5b5061081f611462565b005b60606040518060400160405280600281526020017f474d000000000000000000000000000000000000000000000000000000000000815250905090565b600061087261086b6115fd565b8484611605565b6001905092915050565b6000601154905090565b6000601054905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d16115fd565b73ffffffffffffffffffffffffffffffffffffffff16148061092c57506108f6610f88565b73ffffffffffffffffffffffffffffffffffffffff166109146115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b8061098b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109736115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b61099457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb90612e2c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610a558484846117d0565b610b1684610a616115fd565b610b118560405180606001604052806028815260200161396660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ac76115fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d349092919063ffffffff16565b611605565b600190509392505050565b6000600a54905090565b610b33611d89565b6002811115610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90612e98565b60405180910390fd5b80600b8190555050565b610b89611d89565b8060000b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4128015610bbe5750600d8160000b125b610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf490612f04565b60405180910390fd5b80600760176101000a81548160ff021916908360000b60ff16021790555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cdf6115fd565b73ffffffffffffffffffffffffffffffffffffffff161480610d3a5750610d04610f88565b73ffffffffffffffffffffffffffffffffffffffff16610d226115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d995750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d816115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b610da257600080fd5b610db3610dae30610e86565b611e07565b565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e13611d89565b80600760166101000a81548160ff02191690831515021790555050565b610e38611d89565b6003811115610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7390612f70565b60405180910390fd5b80600c8190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ed7611d89565b610ee16000612080565b565b6000600954905090565b610ef5611d89565b80600760146101000a81548160ff02191690831515021790555050565b60003073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f839190612fa5565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ff26115fd565b73ffffffffffffffffffffffffffffffffffffffff16148061104d5750611017610f88565b73ffffffffffffffffffffffffffffffffffffffff166110356115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b806110ac5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110946115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b6110b557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90613044565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600681526020017f474d20e298950000000000000000000000000000000000000000000000000000815250905090565b6111ae611d89565b600f5481106111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e9906130d6565b60405180910390fd5b80600e8190555050565b6000600f54905090565b600061121a6112136115fd565b84846117d0565b6001905092915050565b6000600e54905090565b6000600760169054906101000a900460ff16905090565b6000600760179054906101000a900460000b905090565b611264611d89565b60005b82518160ff1610156112d2576112bf61127e610f88565b848360ff1681518110611294576112936130f6565b5b6020026020010151848460ff16815181106112b2576112b16130f6565b5b6020026020010151612144565b80806112ca90613161565b915050611267565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611366611d89565b600e5481116113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a1906131fd565b60405180910390fd5b80600f8190555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113e6611d89565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d9061328f565b60405180910390fd5b61145f81612080565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a36115fd565b73ffffffffffffffffffffffffffffffffffffffff1614806114fe57506114c8610f88565b73ffffffffffffffffffffffffffffffffffffffff166114e66115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b8061155d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115456115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b61156657600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156115ce573d6000803e3d6000fd5b50565b600081836115df91906132de565b905092915050565b600081836115f5919061330f565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c906133b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90613444565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117c391906128b1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611837906134d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790613568565b60405180910390fd5b600081116118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea906135fa565b60405180910390fd5b6118fb6122d8565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061199c5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b35750600760169054906101000a900460ff165b156119c8576119c3838383612144565b611d2f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a745750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b285750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b275750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b3d57611b38838383612144565b611d2f565b6000611b4830610e86565b9050600760159054906101000a900460ff16158015611bb55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc15750600081115b15611d2257611bcf81611e07565b60004790506000811115611d20576000611c1c600954611c0e611bff600b5460095461232e90919063ffffffff16565b8561234490919063ffffffff16565b6115d190919063ffffffff16565b90506000611c49600954611c3b600b548661234490919063ffffffff16565b6115d190919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611cb3573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d1c573d6000803e3d6000fd5b5050505b505b611d2d84848461235a565b505b505050565b6000838311158290611d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d739190612762565b60405180910390fd5b5082840390509392505050565b611d916115fd565b73ffffffffffffffffffffffffffffffffffffffff16611daf610f88565b73ffffffffffffffffffffffffffffffffffffffff1614611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90613666565b60405180910390fd5b565b6001600760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e3f57611e3e612afc565b5b604051908082528060200260200182016040528015611e6d5781602001602082028036833780820191505090505b5090503081600081518110611e8557611e846130f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190612fa5565b81600181518110611f6457611f636130f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fcb30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611605565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161202f959493929190613789565b600060405180830381600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b50505050506000600760156101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61219681600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232e90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061222b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122cb91906128b1565b60405180910390a3505050565b60006122e26125de565b9050801561232b57600760169054906101000a900460ff1661231357600b54600c5461230e91906137e3565b612324565b600b54600d5461232391906137e3565b5b6009819055505b50565b6000818361233c9190613839565b905092915050565b60008183612352919061386d565b905092915050565b600061238460646123766009548561234490919063ffffffff16565b6115d190919063ffffffff16565b9050600061239b828461232e90919063ffffffff16565b90506123ef83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232e90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061248481600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c890919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061251982600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125b991906128b1565b60405180910390a35050505050565b600081836125d691906137e3565b905092915050565b60004260108190555060006126306018600760179054906101000a900460000b60000b612618610e106010546115d190919063ffffffff16565b61262291906138d1565b6115e790919063ffffffff16565b9050600081600e54111580156126475750600f5482105b9050801515600760169054906101000a900460ff161515146126bf5780600760166101000a81548160ff0219169083151502179055507f74b491e4baeda06b7ceae407eab65ee0f7aea1351af1e3acf4a945f7d701d4c1816040516126ac9190612887565b60405180910390a16001925050506126c6565b6000925050505b90565b600081519050919050565b600082825260208201905092915050565b60005b838110156127035780820151818401526020810190506126e8565b83811115612712576000848401525b50505050565b6000601f19601f8301169050919050565b6000612734826126c9565b61273e81856126d4565b935061274e8185602086016126e5565b61275781612718565b840191505092915050565b6000602082019050818103600083015261277c8184612729565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127c382612798565b9050919050565b6127d3816127b8565b81146127de57600080fd5b50565b6000813590506127f0816127ca565b92915050565b6000819050919050565b612809816127f6565b811461281457600080fd5b50565b60008135905061282681612800565b92915050565b600080604083850312156128435761284261278e565b5b6000612851858286016127e1565b925050602061286285828601612817565b9150509250929050565b60008115159050919050565b6128818161286c565b82525050565b600060208201905061289c6000830184612878565b92915050565b6128ab816127f6565b82525050565b60006020820190506128c660008301846128a2565b92915050565b60006128d782612798565b9050919050565b6128e7816128cc565b81146128f257600080fd5b50565b600081359050612904816128de565b92915050565b6000602082840312156129205761291f61278e565b5b600061292e848285016128f5565b91505092915050565b6000806000606084860312156129505761294f61278e565b5b600061295e868287016127e1565b935050602061296f868287016127e1565b925050604061298086828701612817565b9150509250925092565b6000602082840312156129a05761299f61278e565b5b60006129ae84828501612817565b91505092915050565b60008160000b9050919050565b6129cd816129b7565b81146129d857600080fd5b50565b6000813590506129ea816129c4565b92915050565b600060208284031215612a0657612a0561278e565b5b6000612a14848285016129db565b91505092915050565b612a26816127b8565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b600060208284031215612a5d57612a5c61278e565b5b6000612a6b848285016127e1565b91505092915050565b612a7d8161286c565b8114612a8857600080fd5b50565b600081359050612a9a81612a74565b92915050565b600060208284031215612ab657612ab561278e565b5b6000612ac484828501612a8b565b91505092915050565b612ad6816129b7565b82525050565b6000602082019050612af16000830184612acd565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b3482612718565b810181811067ffffffffffffffff82111715612b5357612b52612afc565b5b80604052505050565b6000612b66612784565b9050612b728282612b2b565b919050565b600067ffffffffffffffff821115612b9257612b91612afc565b5b602082029050602081019050919050565b600080fd5b6000612bbb612bb684612b77565b612b5c565b90508083825260208201905060208402830185811115612bde57612bdd612ba3565b5b835b81811015612c075780612bf388826127e1565b845260208401935050602081019050612be0565b5050509392505050565b600082601f830112612c2657612c25612af7565b5b8135612c36848260208601612ba8565b91505092915050565b600067ffffffffffffffff821115612c5a57612c59612afc565b5b602082029050602081019050919050565b6000612c7e612c7984612c3f565b612b5c565b90508083825260208201905060208402830185811115612ca157612ca0612ba3565b5b835b81811015612cca5780612cb68882612817565b845260208401935050602081019050612ca3565b5050509392505050565b600082601f830112612ce957612ce8612af7565b5b8135612cf9848260208601612c6b565b91505092915050565b60008060408385031215612d1957612d1861278e565b5b600083013567ffffffffffffffff811115612d3757612d36612793565b5b612d4385828601612c11565b925050602083013567ffffffffffffffff811115612d6457612d63612793565b5b612d7085828601612cd4565b9150509250929050565b60008060408385031215612d9157612d9061278e565b5b6000612d9f858286016127e1565b9250506020612db0858286016127e1565b9150509250929050565b7f43616e277420736574206465762077616c6c657420746f206275726e2061646460008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e166022836126d4565b9150612e2182612dba565b604082019050919050565b60006020820190508181036000830152612e4581612e09565b9050919050565b7f4d6178696d756d20746178206f662032252e0000000000000000000000000000600082015250565b6000612e826012836126d4565b9150612e8d82612e4c565b602082019050919050565b60006020820190508181036000830152612eb181612e75565b9050919050565b7f54696d657a6f6e65206e6f74207265636f676e697a65642e0000000000000000600082015250565b6000612eee6018836126d4565b9150612ef982612eb8565b602082019050919050565b60006020820190508181036000830152612f1d81612ee1565b9050919050565b7f4d6178696d756d20746178206f662033252e0000000000000000000000000000600082015250565b6000612f5a6012836126d4565b9150612f6582612f24565b602082019050919050565b60006020820190508181036000830152612f8981612f4d565b9050919050565b600081519050612f9f816127ca565b92915050565b600060208284031215612fbb57612fba61278e565b5b6000612fc984828501612f90565b91505092915050565b7f43616e277420736574206665652077616c6c657420746f206275726e2061646460008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b600061302e6022836126d4565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f474d206d6f64652068617320746f207374617274206265666f7265206974206560008201527f6e64732e00000000000000000000000000000000000000000000000000000000602082015250565b60006130c06024836126d4565b91506130cb82613064565b604082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff82169050919050565b600061316c82613154565b915060ff8214156131805761317f613125565b5b600182019050919050565b7f474d206d6f64652068617320746f20656e64206166746572206974207374617260008201527f74732e0000000000000000000000000000000000000000000000000000000000602082015250565b60006131e76023836126d4565b91506131f28261318b565b604082019050919050565b60006020820190508181036000830152613216816131da565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132796026836126d4565b91506132848261321d565b604082019050919050565b600060208201905081810360008301526132a88161326c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132e9826127f6565b91506132f4836127f6565b925082613304576133036132af565b5b828204905092915050565b600061331a826127f6565b9150613325836127f6565b925082613335576133346132af565b5b828206905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061339c6024836126d4565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061342e6022836126d4565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f64726573732e0000000000000000000000000000000000000000000000000000602082015250565b60006134c06026836126d4565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573732e00000000000000000000000000000000000000000000000000000000602082015250565b60006135526024836126d4565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b60006135e4602a836126d4565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136506020836126d4565b915061365b8261361a565b602082019050919050565b6000602082019050818103600083015261367f81613643565b9050919050565b6000819050919050565b6000819050919050565b60006136b56136b06136ab84613686565b613690565b6127f6565b9050919050565b6136c58161369a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613700816127b8565b82525050565b600061371283836136f7565b60208301905092915050565b6000602082019050919050565b6000613736826136cb565b61374081856136d6565b935061374b836136e7565b8060005b8381101561377c5781516137638882613706565b975061376e8361371e565b92505060018101905061374f565b5085935050505092915050565b600060a08201905061379e60008301886128a2565b6137ab60208301876136bc565b81810360408301526137bd818661372b565b90506137cc6060830185612a1d565b6137d960808301846128a2565b9695505050505050565b60006137ee826127f6565b91506137f9836127f6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561382e5761382d613125565b5b828201905092915050565b6000613844826127f6565b915061384f836127f6565b92508282101561386257613861613125565b5b828203905092915050565b6000613878826127f6565b9150613883836127f6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138bc576138bb613125565b5b828202905092915050565b6000819050919050565b60006138dc826138c7565b91506138e7836138c7565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0383136000831215161561392257613921613125565b5b817f800000000000000000000000000000000000000000000000000000000000000003831260008312161561395a57613959613125565b5b82820190509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ea51608f92538602741f34818fe574b9b9234781d495f7cba8031cf516e0c7c464736f6c634300080c0033

Deployed Bytecode Sourcemap

11793:15307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14678:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19452:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14957:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15575:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16783:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19614:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14864:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17928:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17091:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16327:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15790:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25933:236;;;;;;;;;;;;;:::i;:::-;;15911:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26423:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17500:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15052:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3173:103;;;;;;;;;;;;;:::i;:::-;;15684:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19108:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16231:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2525:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16473:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14769:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18331:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16136:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19926:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16037:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15407:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15485:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20148:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15170:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18730:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15312:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3431:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26177:238;;;;;;;;;;;;;:::i;:::-;;14678:83;14715:13;14748:5;;;;;;;;;;;;;;;;;14741:12;;14678:83;:::o;19452:152::-;19518:4;19535:39;19544:12;:10;:12::i;:::-;19558:7;19567:6;19535:8;:39::i;:::-;19592:4;19585:11;;19452:152;;;;:::o;14957:87::-;15001:7;15028:8;;15021:15;;14957:87;:::o;15575:101::-;15624:7;15651:17;;15644:24;;15575:101;:::o;16783:300::-;16882:10;;;;;;;;;;;16866:26;;:12;:10;:12::i;:::-;:26;;;:67;;;;16926:7;:5;:7::i;:::-;16910:23;;:12;:10;:12::i;:::-;:23;;;16866:67;:110;;;;16966:10;;;;;;;;;;;16950:26;;:12;:10;:12::i;:::-;:26;;;16866:110;16844:133;;;;;;17009:1;16996:15;;:1;:15;;;;16988:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17074:1;17061:10;;:14;;;;;;;;;;;;;;;;;;16783:300;:::o;19614:304::-;19703:4;19720:36;19730:6;19738:9;19749:6;19720:9;:36::i;:::-;19767:121;19776:6;19784:12;:10;:12::i;:::-;19798:89;19836:6;19798:89;;;;;;;;;;;;;;;;;:11;:19;19810:6;19798:19;;;;;;;;;;;;;;;:33;19818:12;:10;:12::i;:::-;19798:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19767:8;:121::i;:::-;19906:4;19899:11;;19614:304;;;;;:::o;14864:85::-;14905:7;14932:9;;14925:16;;14864:85;:::o;17928:395::-;2411:13;:11;:13::i;:::-;18256:1:::1;18245:7;:12;;18237:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;18308:7;18291:14;:24;;;;17928:395:::0;:::o;17091:401::-;2411:13;:11;:13::i;:::-;17417:2:::1;17411:8;;:3;:8;:19;;;;;17428:2;17423;:7;;;17411:19;17403:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17482:2;17470:9;;:14;;;;;;;;;;;;;;;;;;;;17091:401:::0;:::o;16327:90::-;16372:7;16399:10;;;;;;;;;;;16392:17;;16327:90;:::o;15790:113::-;15850:4;15874:18;:21;15893:1;15874:21;;;;;;;;;;;;;;;;;;;;;;;;;15867:28;;15790:113;;;:::o;25933:236::-;26013:10;;;;;;;;;;;25997:26;;:12;:10;:12::i;:::-;:26;;;:67;;;;26057:7;:5;:7::i;:::-;26041:23;;:12;:10;:12::i;:::-;:23;;;25997:67;:110;;;;26097:10;;;;;;;;;;;26081:26;;:12;:10;:12::i;:::-;:26;;;25997:110;25975:133;;;;;;26119:42;26136:24;26154:4;26136:9;:24::i;:::-;26119:16;:42::i;:::-;25933:236::o;15911:118::-;15973:4;15997:21;:24;16019:1;15997:24;;;;;;;;;;;;;;;;;;;;;;;;;15990:31;;15911:118;;;:::o;26423:70::-;2411:13;:11;:13::i;:::-;26484:1:::1;26478:3;;:7;;;;;;;;;;;;;;;;;;26423:70:::0;:::o;17500:420::-;2411:13;:11;:13::i;:::-;17849:1:::1;17838:7;:12;;17830:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;17905:7;17884:18;:28;;;;17500:420:::0;:::o;15052:110::-;15109:7;15136:9;:18;15146:7;15136:18;;;;;;;;;;;;;;;;15129:25;;15052:110;;;:::o;3173:103::-;2411:13;:11;:13::i;:::-;3238:30:::1;3265:1;3238:18;:30::i;:::-;3173:103::o:0;15684:96::-;15727:7;15754:18;;15747:25;;15684:96;:::o;19108:274::-;2411:13;:11;:13::i;:::-;19372:2:::1;19361:8;;:13;;;;;;;;;;;;;;;;;;19108:274:::0;:::o;16231:88::-;16272:7;16299:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16292:19;;16231:88;:::o;2525:87::-;2571:7;2598:6;;;;;;;;;;;2591:13;;2525:87;:::o;16473:302::-;16572:10;;;;;;;;;;;16556:26;;:12;:10;:12::i;:::-;:26;;;:67;;;;16616:7;:5;:7::i;:::-;16600:23;;:12;:10;:12::i;:::-;:23;;;16556:67;:110;;;;16656:10;;;;;;;;;;;16640:26;;:12;:10;:12::i;:::-;:26;;;16556:110;16534:133;;;;;;16701:1;16688:15;;:1;:15;;;;16680:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16766:1;16753:10;;:14;;;;;;;;;;;;;;;;;;16473:302;:::o;14769:87::-;14808:13;14841:7;;;;;;;;;;;;;;;;;14834:14;;14769:87;:::o;18331:391::-;2411:13;:11;:13::i;:::-;18633:10:::1;;18626:4;:17;18618:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18710:4;18695:12;:19;;;;18331:391:::0;:::o;16136:87::-;16178:7;16205:10;;16198:17;;16136:87;:::o;19926:158::-;19995:4;20012:42;20022:12;:10;:12::i;:::-;20036:9;20047:6;20012:9;:42::i;:::-;20072:4;20065:11;;19926:158;;;;:::o;16037:91::-;16081:7;16108:12;;16101:19;;16037:91;:::o;15407:70::-;15442:4;15466:3;;;;;;;;;;;15459:10;;15407:70;:::o;15485:82::-;15526:4;15550:9;;;;;;;;;;;15543:16;;15485:82;:::o;20148:248::-;2411:13;:11;:13::i;:::-;20273:7:::1;20268:121;20287:9;:16;20283:1;:20;;;20268:121;;;20325:52;20342:7;:5;:7::i;:::-;20351:9;20361:1;20351:12;;;;;;;;;;:::i;:::-;;;;;;;;20365:8;20374:1;20365:11;;;;;;;;;;:::i;:::-;;;;;;;;20325:16;:52::i;:::-;20305:3;;;;;:::i;:::-;;;;20268:121;;;;20148:248:::0;;:::o;15170:134::-;15242:7;15269:11;:18;15281:5;15269:18;;;;;;;;;;;;;;;:27;15288:7;15269:27;;;;;;;;;;;;;;;;15262:34;;15170:134;;;;:::o;18730:370::-;2411:13;:11;:13::i;:::-;19012:12:::1;;19005:4;:19;18997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19088:4;19075:10;:17;;;;18730:370:::0;:::o;15312:87::-;15354:7;15381:10;;;;;;;;;;;15374:17;;15312:87;:::o;3431:201::-;2411:13;:11;:13::i;:::-;3540:1:::1;3520:22;;:8;:22;;;;3512:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3596:28;3615:8;3596:18;:28::i;:::-;3431:201:::0;:::o;26177:238::-;26257:10;;;;;;;;;;;26241:26;;:12;:10;:12::i;:::-;:26;;;:67;;;;26301:7;:5;:7::i;:::-;26285:23;;:12;:10;:12::i;:::-;:23;;;26241:67;:110;;;;26341:10;;;;;;;;;;;26325:26;;:12;:10;:12::i;:::-;:26;;;26241:110;26219:133;;;;;;26365:10;;;;;;;;;;;:19;;:42;26385:21;26365:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26177:238::o;7477:98::-;7535:7;7566:1;7562;:5;;;;:::i;:::-;7555:12;;7477:98;;;;:::o;8042:::-;8100:7;8131:1;8127;:5;;;;:::i;:::-;8120:12;;8042:98;;;;:::o;1076:::-;1129:7;1156:10;1149:17;;1076:98;:::o;20404:335::-;20514:1;20497:19;;:5;:19;;;;20489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20595:1;20576:21;;:7;:21;;;;20568:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20677:6;20647:11;:18;20659:5;20647:18;;;;;;;;;;;;;;;:27;20666:7;20647:27;;;;;;;;;;;;;;;:36;;;;20715:7;20699:32;;20708:5;20699:32;;;20724:6;20699:32;;;;;;:::i;:::-;;;;;;;;20404:335;;;:::o;22173:2967::-;23441:1;23423:20;;:6;:20;;;;23415:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23526:1;23505:23;;:9;:23;;;;23497:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;23597:1;23588:6;:10;23580:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23668:11;:9;:11::i;:::-;23854:18;:26;23873:6;23854:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;23884:18;:29;23903:9;23884:29;;;;;;;;;;;;;;;;;;;;;;;;;23854:59;23853:68;;;;23918:3;;;;;;;;;;;23853:68;23849:165;;;23938:43;23955:6;23963:9;23974:6;23938:16;:43::i;:::-;23996:7;;23849:165;24095:14;;;;;;;;;;;24085:24;;:6;:24;;;;:63;;;;;24131:16;;;;;;;;;;;24113:35;;:6;:35;;;;24085:63;24084:155;;;;;24180:14;;;;;;;;;;;24167:27;;:9;:27;;;;:71;;;;;24221:16;;;;;;;;;;;24198:40;;:9;:40;;;;24167:71;24084:155;24080:259;;;24259:43;24276:6;24284:9;24295:6;24259:16;:43::i;:::-;24321:7;;24080:259;24401:28;24432:24;24450:4;24432:9;:24::i;:::-;24401:55;;24472:7;;;;;;;;;;;24471:8;:36;;;;;24493:14;;;;;;;;;;;24483:24;;:6;:24;;;;24471:36;:64;;;;;24534:1;24511:20;:24;24471:64;24467:574;;;24552:38;24569:20;24552:16;:38::i;:::-;24605:26;24634:21;24605:50;;24695:1;24674:18;:22;24670:360;;;24717:15;24735:86;24802:18;;24735:62;24758:38;24781:14;;24758:18;;:22;;:38;;;;:::i;:::-;24735:18;:22;;:62;;;;:::i;:::-;:66;;:86;;;;:::i;:::-;24717:104;;24840:15;24858:62;24901:18;;24858:38;24881:14;;24858:18;:22;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;24840:80;;24939:10;;;;;;;;;;;:19;;:28;24959:7;24939:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24986:10;;;;;;;;;;;:19;;:28;25006:7;24986:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24698:332;;24670:360;24537:504;24467:574;25083:49;25106:6;25114:9;25125:6;25083:22;:49::i;:::-;22251:2889;22173:2967;;;;:::o;8619:240::-;8739:7;8797:1;8792;:6;;8800:12;8784:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8839:1;8835;:5;8828:12;;8619:240;;;;;:::o;2690:132::-;2765:12;:10;:12::i;:::-;2754:23;;:7;:5;:7::i;:::-;:23;;;2746:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2690:132::o;25439:486::-;13182:4;13172:7;;:14;;;;;;;;;;;;;;;;;;25517:21:::1;25555:1;25541:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25517:40;;25586:4;25568;25573:1;25568:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;25612:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25602:4;25607:1;25602:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;::::0;::::1;25646:63;25663:4;25678:16;;;;;;;;;;;25697:11;25646:8;:63::i;:::-;25720:16;;;;;;;;;;;:67;;;25802:11;25828:1;25844:4;25871;25891:15;25720:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25506:419;13219:5:::0;13209:7;;:15;;;;;;;;;;;;;;;;;;25439:486;:::o;3792:191::-;3866:16;3885:6;;;;;;;;;;;3866:25;;3911:8;3902:6;;:17;;;;;;;;;;;;;;;;;;3966:8;3935:40;;3956:8;3935:40;;;;;;;;;;;;3855:128;3792:191;:::o;20747:590::-;21183:29;21205:6;21183:9;:17;21193:6;21183:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;21163:9;:17;21173:6;21163:17;;;;;;;;;;;;;;;:49;;;;21246:32;21271:6;21246:9;:20;21256:9;21246:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;21223:9;:20;21233:9;21223:20;;;;;;;;;;;;;;;:55;;;;21311:9;21294:35;;21303:6;21294:35;;;21322:6;21294:35;;;;;;:::i;:::-;;;;;;;;20747:590;;;:::o;25148:283::-;25245:14;25262:8;:6;:8::i;:::-;25245:25;;25287:9;25283:141;;;25334:3;;;;;;;;;;;:78;;25397:14;;25376:18;;:35;;;;:::i;:::-;25334:78;;;25357:14;;25341:13;;:30;;;;:::i;:::-;25334:78;25313:18;:99;;;;25283:141;25177:254;25148:283::o;6721:98::-;6779:7;6810:1;6806;:5;;;;:::i;:::-;6799:12;;6721:98;;;;:::o;7078:::-;7136:7;7167:1;7163;:5;;;;:::i;:::-;7156:12;;7078:98;;;;:::o;21345:820::-;21684:19;21706:39;21741:3;21706:30;21717:18;;21706:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;21684:61;;21756:22;21781:23;21792:11;21781:6;:10;;:23;;;;:::i;:::-;21756:48;;21895:29;21917:6;21895:9;:17;21905:6;21895:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;21875:9;:17;21885:6;21875:17;;;;;;;;;;;;;;;:49;;;;21958:40;21983:14;21958:9;:20;21968:9;21958:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;21935:9;:20;21945:9;21935:20;;;;;;;;;;;;;;;:63;;;;22063:41;22092:11;22063:9;:24;22081:4;22063:24;;;;;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;22036:9;:24;22054:4;22036:24;;;;;;;;;;;;;;;:68;;;;22139:9;22122:35;;22131:6;22122:35;;;22150:6;22122:35;;;;;;:::i;:::-;;;;;;;;21436:729;;21345:820;;;:::o;6340:98::-;6398:7;6429:1;6425;:5;;;;:::i;:::-;6418:12;;6340:98;;;;:::o;26513:543::-;26548:4;26585:15;26565:17;:35;;;;26611:12;26626:59;26682:2;26667:9;;;;;;;;;;;26634:42;;26638:27;26660:4;26638:17;;:21;;:27;;;;:::i;:::-;26634:42;;;;:::i;:::-;26626:55;;:59;;;;:::i;:::-;26611:74;;26767:10;26797:4;26781:12;;:20;;:42;;;;;26813:10;;26806:4;:17;26781:42;26767:57;;26919:5;26912:12;;:3;;;;;;;;;;;:12;;;26908:118;;26947:5;26941:3;;:11;;;;;;;;;;;;;;;;;;26972:16;26982:5;26972:16;;;;;;:::i;:::-;;;;;;;;27010:4;27003:11;;;;;;26908:118;27043:5;27036:12;;;;26513:543;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:104::-;3891:7;3920:24;3938:5;3920:24;:::i;:::-;3909:35;;3846:104;;;:::o;3956:138::-;4037:32;4063:5;4037:32;:::i;:::-;4030:5;4027:43;4017:71;;4084:1;4081;4074:12;4017:71;3956:138;:::o;4100:155::-;4154:5;4192:6;4179:20;4170:29;;4208:41;4243:5;4208:41;:::i;:::-;4100:155;;;;:::o;4261:345::-;4328:6;4377:2;4365:9;4356:7;4352:23;4348:32;4345:119;;;4383:79;;:::i;:::-;4345:119;4503:1;4528:61;4581:7;4572:6;4561:9;4557:22;4528:61;:::i;:::-;4518:71;;4474:125;4261:345;;;;:::o;4612:619::-;4689:6;4697;4705;4754:2;4742:9;4733:7;4729:23;4725:32;4722:119;;;4760:79;;:::i;:::-;4722:119;4880:1;4905:53;4950:7;4941:6;4930:9;4926:22;4905:53;:::i;:::-;4895:63;;4851:117;5007:2;5033:53;5078:7;5069:6;5058:9;5054:22;5033:53;:::i;:::-;5023:63;;4978:118;5135:2;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5106:118;4612:619;;;;;:::o;5237:329::-;5296:6;5345:2;5333:9;5324:7;5320:23;5316:32;5313:119;;;5351:79;;:::i;:::-;5313:119;5471:1;5496:53;5541:7;5532:6;5521:9;5517:22;5496:53;:::i;:::-;5486:63;;5442:117;5237:329;;;;:::o;5572:89::-;5606:7;5649:5;5646:1;5635:20;5624:31;;5572:89;;;:::o;5667:116::-;5737:21;5752:5;5737:21;:::i;:::-;5730:5;5727:32;5717:60;;5773:1;5770;5763:12;5717:60;5667:116;:::o;5789:133::-;5832:5;5870:6;5857:20;5848:29;;5886:30;5910:5;5886:30;:::i;:::-;5789:133;;;;:::o;5928:323::-;5984:6;6033:2;6021:9;6012:7;6008:23;6004:32;6001:119;;;6039:79;;:::i;:::-;6001:119;6159:1;6184:50;6226:7;6217:6;6206:9;6202:22;6184:50;:::i;:::-;6174:60;;6130:114;5928:323;;;;:::o;6257:118::-;6344:24;6362:5;6344:24;:::i;:::-;6339:3;6332:37;6257:118;;:::o;6381:222::-;6474:4;6512:2;6501:9;6497:18;6489:26;;6525:71;6593:1;6582:9;6578:17;6569:6;6525:71;:::i;:::-;6381:222;;;;:::o;6609:329::-;6668:6;6717:2;6705:9;6696:7;6692:23;6688:32;6685:119;;;6723:79;;:::i;:::-;6685:119;6843:1;6868:53;6913:7;6904:6;6893:9;6889:22;6868:53;:::i;:::-;6858:63;;6814:117;6609:329;;;;:::o;6944:116::-;7014:21;7029:5;7014:21;:::i;:::-;7007:5;7004:32;6994:60;;7050:1;7047;7040:12;6994:60;6944:116;:::o;7066:133::-;7109:5;7147:6;7134:20;7125:29;;7163:30;7187:5;7163:30;:::i;:::-;7066:133;;;;:::o;7205:323::-;7261:6;7310:2;7298:9;7289:7;7285:23;7281:32;7278:119;;;7316:79;;:::i;:::-;7278:119;7436:1;7461:50;7503:7;7494:6;7483:9;7479:22;7461:50;:::i;:::-;7451:60;;7407:114;7205:323;;;;:::o;7534:109::-;7615:21;7630:5;7615:21;:::i;:::-;7610:3;7603:34;7534:109;;:::o;7649:210::-;7736:4;7774:2;7763:9;7759:18;7751:26;;7787:65;7849:1;7838:9;7834:17;7825:6;7787:65;:::i;:::-;7649:210;;;;:::o;7865:117::-;7974:1;7971;7964:12;7988:180;8036:77;8033:1;8026:88;8133:4;8130:1;8123:15;8157:4;8154:1;8147:15;8174:281;8257:27;8279:4;8257:27;:::i;:::-;8249:6;8245:40;8387:6;8375:10;8372:22;8351:18;8339:10;8336:34;8333:62;8330:88;;;8398:18;;:::i;:::-;8330:88;8438:10;8434:2;8427:22;8217:238;8174:281;;:::o;8461:129::-;8495:6;8522:20;;:::i;:::-;8512:30;;8551:33;8579:4;8571:6;8551:33;:::i;:::-;8461:129;;;:::o;8596:311::-;8673:4;8763:18;8755:6;8752:30;8749:56;;;8785:18;;:::i;:::-;8749:56;8835:4;8827:6;8823:17;8815:25;;8895:4;8889;8885:15;8877:23;;8596:311;;;:::o;8913:117::-;9022:1;9019;9012:12;9053:710;9149:5;9174:81;9190:64;9247:6;9190:64;:::i;:::-;9174:81;:::i;:::-;9165:90;;9275:5;9304:6;9297:5;9290:21;9338:4;9331:5;9327:16;9320:23;;9391:4;9383:6;9379:17;9371:6;9367:30;9420:3;9412:6;9409:15;9406:122;;;9439:79;;:::i;:::-;9406:122;9554:6;9537:220;9571:6;9566:3;9563:15;9537:220;;;9646:3;9675:37;9708:3;9696:10;9675:37;:::i;:::-;9670:3;9663:50;9742:4;9737:3;9733:14;9726:21;;9613:144;9597:4;9592:3;9588:14;9581:21;;9537:220;;;9541:21;9155:608;;9053:710;;;;;:::o;9786:370::-;9857:5;9906:3;9899:4;9891:6;9887:17;9883:27;9873:122;;9914:79;;:::i;:::-;9873:122;10031:6;10018:20;10056:94;10146:3;10138:6;10131:4;10123:6;10119:17;10056:94;:::i;:::-;10047:103;;9863:293;9786:370;;;;:::o;10162:311::-;10239:4;10329:18;10321:6;10318:30;10315:56;;;10351:18;;:::i;:::-;10315:56;10401:4;10393:6;10389:17;10381:25;;10461:4;10455;10451:15;10443:23;;10162:311;;;:::o;10496:710::-;10592:5;10617:81;10633:64;10690:6;10633:64;:::i;:::-;10617:81;:::i;:::-;10608:90;;10718:5;10747:6;10740:5;10733:21;10781:4;10774:5;10770:16;10763:23;;10834:4;10826:6;10822:17;10814:6;10810:30;10863:3;10855:6;10852:15;10849:122;;;10882:79;;:::i;:::-;10849:122;10997:6;10980:220;11014:6;11009:3;11006:15;10980:220;;;11089:3;11118:37;11151:3;11139:10;11118:37;:::i;:::-;11113:3;11106:50;11185:4;11180:3;11176:14;11169:21;;11056:144;11040:4;11035:3;11031:14;11024:21;;10980:220;;;10984:21;10598:608;;10496:710;;;;;:::o;11229:370::-;11300:5;11349:3;11342:4;11334:6;11330:17;11326:27;11316:122;;11357:79;;:::i;:::-;11316:122;11474:6;11461:20;11499:94;11589:3;11581:6;11574:4;11566:6;11562:17;11499:94;:::i;:::-;11490:103;;11306:293;11229:370;;;;:::o;11605:894::-;11723:6;11731;11780:2;11768:9;11759:7;11755:23;11751:32;11748:119;;;11786:79;;:::i;:::-;11748:119;11934:1;11923:9;11919:17;11906:31;11964:18;11956:6;11953:30;11950:117;;;11986:79;;:::i;:::-;11950:117;12091:78;12161:7;12152:6;12141:9;12137:22;12091:78;:::i;:::-;12081:88;;11877:302;12246:2;12235:9;12231:18;12218:32;12277:18;12269:6;12266:30;12263:117;;;12299:79;;:::i;:::-;12263:117;12404:78;12474:7;12465:6;12454:9;12450:22;12404:78;:::i;:::-;12394:88;;12189:303;11605:894;;;;;:::o;12505:474::-;12573:6;12581;12630:2;12618:9;12609:7;12605:23;12601:32;12598:119;;;12636:79;;:::i;:::-;12598:119;12756:1;12781:53;12826:7;12817:6;12806:9;12802:22;12781:53;:::i;:::-;12771:63;;12727:117;12883:2;12909:53;12954:7;12945:6;12934:9;12930:22;12909:53;:::i;:::-;12899:63;;12854:118;12505:474;;;;;:::o;12985:221::-;13125:34;13121:1;13113:6;13109:14;13102:58;13194:4;13189:2;13181:6;13177:15;13170:29;12985:221;:::o;13212:366::-;13354:3;13375:67;13439:2;13434:3;13375:67;:::i;:::-;13368:74;;13451:93;13540:3;13451:93;:::i;:::-;13569:2;13564:3;13560:12;13553:19;;13212:366;;;:::o;13584:419::-;13750:4;13788:2;13777:9;13773:18;13765:26;;13837:9;13831:4;13827:20;13823:1;13812:9;13808:17;13801:47;13865:131;13991:4;13865:131;:::i;:::-;13857:139;;13584:419;;;:::o;14009:168::-;14149:20;14145:1;14137:6;14133:14;14126:44;14009:168;:::o;14183:366::-;14325:3;14346:67;14410:2;14405:3;14346:67;:::i;:::-;14339:74;;14422:93;14511:3;14422:93;:::i;:::-;14540:2;14535:3;14531:12;14524:19;;14183:366;;;:::o;14555:419::-;14721:4;14759:2;14748:9;14744:18;14736:26;;14808:9;14802:4;14798:20;14794:1;14783:9;14779:17;14772:47;14836:131;14962:4;14836:131;:::i;:::-;14828:139;;14555:419;;;:::o;14980:174::-;15120:26;15116:1;15108:6;15104:14;15097:50;14980:174;:::o;15160:366::-;15302:3;15323:67;15387:2;15382:3;15323:67;:::i;:::-;15316:74;;15399:93;15488:3;15399:93;:::i;:::-;15517:2;15512:3;15508:12;15501:19;;15160:366;;;:::o;15532:419::-;15698:4;15736:2;15725:9;15721:18;15713:26;;15785:9;15779:4;15775:20;15771:1;15760:9;15756:17;15749:47;15813:131;15939:4;15813:131;:::i;:::-;15805:139;;15532:419;;;:::o;15957:168::-;16097:20;16093:1;16085:6;16081:14;16074:44;15957:168;:::o;16131:366::-;16273:3;16294:67;16358:2;16353:3;16294:67;:::i;:::-;16287:74;;16370:93;16459:3;16370:93;:::i;:::-;16488:2;16483:3;16479:12;16472:19;;16131:366;;;:::o;16503:419::-;16669:4;16707:2;16696:9;16692:18;16684:26;;16756:9;16750:4;16746:20;16742:1;16731:9;16727:17;16720:47;16784:131;16910:4;16784:131;:::i;:::-;16776:139;;16503:419;;;:::o;16928:143::-;16985:5;17016:6;17010:13;17001:22;;17032:33;17059:5;17032:33;:::i;:::-;16928:143;;;;:::o;17077:351::-;17147:6;17196:2;17184:9;17175:7;17171:23;17167:32;17164:119;;;17202:79;;:::i;:::-;17164:119;17322:1;17347:64;17403:7;17394:6;17383:9;17379:22;17347:64;:::i;:::-;17337:74;;17293:128;17077:351;;;;:::o;17434:221::-;17574:34;17570:1;17562:6;17558:14;17551:58;17643:4;17638:2;17630:6;17626:15;17619:29;17434:221;:::o;17661:366::-;17803:3;17824:67;17888:2;17883:3;17824:67;:::i;:::-;17817:74;;17900:93;17989:3;17900:93;:::i;:::-;18018:2;18013:3;18009:12;18002:19;;17661:366;;;:::o;18033:419::-;18199:4;18237:2;18226:9;18222:18;18214:26;;18286:9;18280:4;18276:20;18272:1;18261:9;18257:17;18250:47;18314:131;18440:4;18314:131;:::i;:::-;18306:139;;18033:419;;;:::o;18458:223::-;18598:34;18594:1;18586:6;18582:14;18575:58;18667:6;18662:2;18654:6;18650:15;18643:31;18458:223;:::o;18687:366::-;18829:3;18850:67;18914:2;18909:3;18850:67;:::i;:::-;18843:74;;18926:93;19015:3;18926:93;:::i;:::-;19044:2;19039:3;19035:12;19028:19;;18687:366;;;:::o;19059:419::-;19225:4;19263:2;19252:9;19248:18;19240:26;;19312:9;19306:4;19302:20;19298:1;19287:9;19283:17;19276:47;19340:131;19466:4;19340:131;:::i;:::-;19332:139;;19059:419;;;:::o;19484:180::-;19532:77;19529:1;19522:88;19629:4;19626:1;19619:15;19653:4;19650:1;19643:15;19670:180;19718:77;19715:1;19708:88;19815:4;19812:1;19805:15;19839:4;19836:1;19829:15;19856:86;19891:7;19931:4;19924:5;19920:16;19909:27;;19856:86;;;:::o;19948:167::-;19985:3;20008:22;20024:5;20008:22;:::i;:::-;19999:31;;20052:4;20045:5;20042:15;20039:41;;;20060:18;;:::i;:::-;20039:41;20107:1;20100:5;20096:13;20089:20;;19948:167;;;:::o;20121:222::-;20261:34;20257:1;20249:6;20245:14;20238:58;20330:5;20325:2;20317:6;20313:15;20306:30;20121:222;:::o;20349:366::-;20491:3;20512:67;20576:2;20571:3;20512:67;:::i;:::-;20505:74;;20588:93;20677:3;20588:93;:::i;:::-;20706:2;20701:3;20697:12;20690:19;;20349:366;;;:::o;20721:419::-;20887:4;20925:2;20914:9;20910:18;20902:26;;20974:9;20968:4;20964:20;20960:1;20949:9;20945:17;20938:47;21002:131;21128:4;21002:131;:::i;:::-;20994:139;;20721:419;;;:::o;21146:225::-;21286:34;21282:1;21274:6;21270:14;21263:58;21355:8;21350:2;21342:6;21338:15;21331:33;21146:225;:::o;21377:366::-;21519:3;21540:67;21604:2;21599:3;21540:67;:::i;:::-;21533:74;;21616:93;21705:3;21616:93;:::i;:::-;21734:2;21729:3;21725:12;21718:19;;21377:366;;;:::o;21749:419::-;21915:4;21953:2;21942:9;21938:18;21930:26;;22002:9;21996:4;21992:20;21988:1;21977:9;21973:17;21966:47;22030:131;22156:4;22030:131;:::i;:::-;22022:139;;21749:419;;;:::o;22174:180::-;22222:77;22219:1;22212:88;22319:4;22316:1;22309:15;22343:4;22340:1;22333:15;22360:185;22400:1;22417:20;22435:1;22417:20;:::i;:::-;22412:25;;22451:20;22469:1;22451:20;:::i;:::-;22446:25;;22490:1;22480:35;;22495:18;;:::i;:::-;22480:35;22537:1;22534;22530:9;22525:14;;22360:185;;;;:::o;22551:176::-;22583:1;22600:20;22618:1;22600:20;:::i;:::-;22595:25;;22634:20;22652:1;22634:20;:::i;:::-;22629:25;;22673:1;22663:35;;22678:18;;:::i;:::-;22663:35;22719:1;22716;22712:9;22707:14;;22551:176;;;;:::o;22733:223::-;22873:34;22869:1;22861:6;22857:14;22850:58;22942:6;22937:2;22929:6;22925:15;22918:31;22733:223;:::o;22962:366::-;23104:3;23125:67;23189:2;23184:3;23125:67;:::i;:::-;23118:74;;23201:93;23290:3;23201:93;:::i;:::-;23319:2;23314:3;23310:12;23303:19;;22962:366;;;:::o;23334:419::-;23500:4;23538:2;23527:9;23523:18;23515:26;;23587:9;23581:4;23577:20;23573:1;23562:9;23558:17;23551:47;23615:131;23741:4;23615:131;:::i;:::-;23607:139;;23334:419;;;:::o;23759:221::-;23899:34;23895:1;23887:6;23883:14;23876:58;23968:4;23963:2;23955:6;23951:15;23944:29;23759:221;:::o;23986:366::-;24128:3;24149:67;24213:2;24208:3;24149:67;:::i;:::-;24142:74;;24225:93;24314:3;24225:93;:::i;:::-;24343:2;24338:3;24334:12;24327:19;;23986:366;;;:::o;24358:419::-;24524:4;24562:2;24551:9;24547:18;24539:26;;24611:9;24605:4;24601:20;24597:1;24586:9;24582:17;24575:47;24639:131;24765:4;24639:131;:::i;:::-;24631:139;;24358:419;;;:::o;24783:225::-;24923:34;24919:1;24911:6;24907:14;24900:58;24992:8;24987:2;24979:6;24975:15;24968:33;24783:225;:::o;25014:366::-;25156:3;25177:67;25241:2;25236:3;25177:67;:::i;:::-;25170:74;;25253:93;25342:3;25253:93;:::i;:::-;25371:2;25366:3;25362:12;25355:19;;25014:366;;;:::o;25386:419::-;25552:4;25590:2;25579:9;25575:18;25567:26;;25639:9;25633:4;25629:20;25625:1;25614:9;25610:17;25603:47;25667:131;25793:4;25667:131;:::i;:::-;25659:139;;25386:419;;;:::o;25811:223::-;25951:34;25947:1;25939:6;25935:14;25928:58;26020:6;26015:2;26007:6;26003:15;25996:31;25811:223;:::o;26040:366::-;26182:3;26203:67;26267:2;26262:3;26203:67;:::i;:::-;26196:74;;26279:93;26368:3;26279:93;:::i;:::-;26397:2;26392:3;26388:12;26381:19;;26040:366;;;:::o;26412:419::-;26578:4;26616:2;26605:9;26601:18;26593:26;;26665:9;26659:4;26655:20;26651:1;26640:9;26636:17;26629:47;26693:131;26819:4;26693:131;:::i;:::-;26685:139;;26412:419;;;:::o;26837:229::-;26977:34;26973:1;26965:6;26961:14;26954:58;27046:12;27041:2;27033:6;27029:15;27022:37;26837:229;:::o;27072:366::-;27214:3;27235:67;27299:2;27294:3;27235:67;:::i;:::-;27228:74;;27311:93;27400:3;27311:93;:::i;:::-;27429:2;27424:3;27420:12;27413:19;;27072:366;;;:::o;27444:419::-;27610:4;27648:2;27637:9;27633:18;27625:26;;27697:9;27691:4;27687:20;27683:1;27672:9;27668:17;27661:47;27725:131;27851:4;27725:131;:::i;:::-;27717:139;;27444:419;;;:::o;27869:182::-;28009:34;28005:1;27997:6;27993:14;27986:58;27869:182;:::o;28057:366::-;28199:3;28220:67;28284:2;28279:3;28220:67;:::i;:::-;28213:74;;28296:93;28385:3;28296:93;:::i;:::-;28414:2;28409:3;28405:12;28398:19;;28057:366;;;:::o;28429:419::-;28595:4;28633:2;28622:9;28618:18;28610:26;;28682:9;28676:4;28672:20;28668:1;28657:9;28653:17;28646:47;28710:131;28836:4;28710:131;:::i;:::-;28702:139;;28429:419;;;:::o;28854:85::-;28899:7;28928:5;28917:16;;28854:85;;;:::o;28945:60::-;28973:3;28994:5;28987:12;;28945:60;;;:::o;29011:158::-;29069:9;29102:61;29120:42;29129:32;29155:5;29129:32;:::i;:::-;29120:42;:::i;:::-;29102:61;:::i;:::-;29089:74;;29011:158;;;:::o;29175:147::-;29270:45;29309:5;29270:45;:::i;:::-;29265:3;29258:58;29175:147;;:::o;29328:114::-;29395:6;29429:5;29423:12;29413:22;;29328:114;;;:::o;29448:184::-;29547:11;29581:6;29576:3;29569:19;29621:4;29616:3;29612:14;29597:29;;29448:184;;;;:::o;29638:132::-;29705:4;29728:3;29720:11;;29758:4;29753:3;29749:14;29741:22;;29638:132;;;:::o;29776:108::-;29853:24;29871:5;29853:24;:::i;:::-;29848:3;29841:37;29776:108;;:::o;29890:179::-;29959:10;29980:46;30022:3;30014:6;29980:46;:::i;:::-;30058:4;30053:3;30049:14;30035:28;;29890:179;;;;:::o;30075:113::-;30145:4;30177;30172:3;30168:14;30160:22;;30075:113;;;:::o;30224:732::-;30343:3;30372:54;30420:5;30372:54;:::i;:::-;30442:86;30521:6;30516:3;30442:86;:::i;:::-;30435:93;;30552:56;30602:5;30552:56;:::i;:::-;30631:7;30662:1;30647:284;30672:6;30669:1;30666:13;30647:284;;;30748:6;30742:13;30775:63;30834:3;30819:13;30775:63;:::i;:::-;30768:70;;30861:60;30914:6;30861:60;:::i;:::-;30851:70;;30707:224;30694:1;30691;30687:9;30682:14;;30647:284;;;30651:14;30947:3;30940:10;;30348:608;;;30224:732;;;;:::o;30962:831::-;31225:4;31263:3;31252:9;31248:19;31240:27;;31277:71;31345:1;31334:9;31330:17;31321:6;31277:71;:::i;:::-;31358:80;31434:2;31423:9;31419:18;31410:6;31358:80;:::i;:::-;31485:9;31479:4;31475:20;31470:2;31459:9;31455:18;31448:48;31513:108;31616:4;31607:6;31513:108;:::i;:::-;31505:116;;31631:72;31699:2;31688:9;31684:18;31675:6;31631:72;:::i;:::-;31713:73;31781:3;31770:9;31766:19;31757:6;31713:73;:::i;:::-;30962:831;;;;;;;;:::o;31799:305::-;31839:3;31858:20;31876:1;31858:20;:::i;:::-;31853:25;;31892:20;31910:1;31892:20;:::i;:::-;31887:25;;32046:1;31978:66;31974:74;31971:1;31968:81;31965:107;;;32052:18;;:::i;:::-;31965:107;32096:1;32093;32089:9;32082:16;;31799:305;;;;:::o;32110:191::-;32150:4;32170:20;32188:1;32170:20;:::i;:::-;32165:25;;32204:20;32222:1;32204:20;:::i;:::-;32199:25;;32243:1;32240;32237:8;32234:34;;;32248:18;;:::i;:::-;32234:34;32293:1;32290;32286:9;32278:17;;32110:191;;;;:::o;32307:348::-;32347:7;32370:20;32388:1;32370:20;:::i;:::-;32365:25;;32404:20;32422:1;32404:20;:::i;:::-;32399:25;;32592:1;32524:66;32520:74;32517:1;32514:81;32509:1;32502:9;32495:17;32491:105;32488:131;;;32599:18;;:::i;:::-;32488:131;32647:1;32644;32640:9;32629:20;;32307:348;;;;:::o;32661:76::-;32697:7;32726:5;32715:16;;32661:76;;;:::o;32743:525::-;32782:3;32801:19;32818:1;32801:19;:::i;:::-;32796:24;;32834:19;32851:1;32834:19;:::i;:::-;32829:24;;33022:1;32954:66;32950:74;32947:1;32943:82;32938:1;32935;32931:9;32924:17;32920:106;32917:132;;;33029:18;;:::i;:::-;32917:132;33209:1;33141:66;33137:74;33134:1;33130:82;33126:1;33123;33119:9;33115:98;33112:124;;;33216:18;;:::i;:::-;33112:124;33260:1;33257;33253:9;33246:16;;32743:525;;;;:::o

Swarm Source

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