Token

HedgePot (HPOT)

Overview

Max Total Supply

1,000,000,000 HPOT

Holders

500

Market

Price

-

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,610,993 HPOT

Value
$0.00
0xa454d420a4684e56c3504562fa6f400bec553935
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
HEDGEPOT

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2024-12-25
*/

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

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


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


/**
 * @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.
 *
 * The initial owner is set to the address provided by the deployer. 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;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @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 {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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 {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _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);
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

// File: holder-storage.sol


pragma solidity ^0.8.26;


contract HolderStorage is Ownable {
    address public tokenContract;
    address public devWallet;

    mapping(address => uint256) public balances;
    mapping(address => uint256) private holderIndexes;
    address[] public holders;
    mapping(address => bool) public isHolder;

    uint8 private constant decimals = 18;
    uint256 public minimumBalance = 50000 * 10**decimals;

    struct Payout {
        address recipient;
        uint256 amount;
        string potType;
        uint256 timestamp;
    }

    mapping(address => Payout[]) public holderPayoutHistory;

    uint256 public totalHourlyPayouts;
    uint256 public totalMegaPayouts;
    uint256 public totalHourlyAmountPaid;
    uint256 public totalMegaAmountPaid;

    Payout[] public payoutHistory;

    mapping(address => bool) public excludedFromPot;

    modifier onlyTokenContract() {
        require(msg.sender == tokenContract, "HolderStorage: Not authorized");
        _;
    }

    constructor(address initialOwner) Ownable(initialOwner) {}

    function setTokenContract(address _tokenContract) external onlyOwner {
        require(
            tokenContract == address(0),
            "HolderStorage: Token contract already set"
        );
        tokenContract = _tokenContract;
    }

    function setDevWallet(address _devWallet) external onlyOwner {
        require(
            _devWallet != address(0),
            "HolderStorage: Dev wallet is zero address"
        );
        devWallet = _devWallet;
    }

    function excludeFromPot(address account) external onlyOwner {
        require(
            account != devWallet,
            "HolderStorage: Cannot exclude dev wallet"
        );
        excludedFromPot[account] = true;
    }

    function includeInPot(address account) external onlyOwner {
        excludedFromPot[account] = false;
    }

    function setMinimumBalance(uint256 newMinimumBalance) external onlyOwner {
        minimumBalance = newMinimumBalance;
    }

    function updateHolder(address holder, uint256 newBalance)
        external
        onlyTokenContract
    {
        if (newBalance < minimumBalance) {
            removeHolder(holder);
        } else {
            if (!isHolder[holder]) {
                holders.push(holder);
                holderIndexes[holder] = holders.length - 1;
                isHolder[holder] = true;
            }
            balances[holder] = newBalance;
        }
    }

    function removeHolder(address holder) internal {
        if (isHolder[holder]) {
            uint256 index = holderIndexes[holder];
            uint256 lastIndex = holders.length - 1;
            if (index != lastIndex) {
                address lastHolder = holders[lastIndex];
                holders[index] = lastHolder;
                holderIndexes[lastHolder] = index;
            }
            holders.pop();
            isHolder[holder] = false;
            balances[holder] = 0;
        }
    }

    function getHolderCount() external view returns (uint256) {
        return holders.length;
    }

    function getHolderByIndex(uint256 index) external view returns (address) {
        require(index < holders.length, "HolderStorage: Index out of bounds");
        return holders[index];
    }

    function recordPayout(
        address recipient,
        uint256 amount,
        string memory potType
    ) external onlyTokenContract {
        payoutHistory.push(Payout(recipient, amount, potType, block.timestamp));

        if (keccak256(bytes(potType)) == keccak256(bytes("Hourly Jackpot"))) {
            totalHourlyPayouts++;
            totalHourlyAmountPaid += amount;
        } else if (
            keccak256(bytes(potType)) == keccak256(bytes("Mega Jackpot"))
        ) {
            totalMegaPayouts++;
            totalMegaAmountPaid += amount;
        }

        holderPayoutHistory[recipient].push(
            Payout(recipient, amount, potType, block.timestamp)
        );

        if (recipient != devWallet) {
            removeHolder(recipient);
        }
    }

    function getPayoutHistoryByHolder(address holder)
        external
        view
        returns (Payout[] memory)
    {
        return holderPayoutHistory[holder];
    }

    function getPayoutHistory(uint256 index)
        external
        view
        returns (
            address recipient,
            uint256 amount,
            string memory potType,
            uint256 timestamp
        )
    {
        require(
            index < payoutHistory.length,
            "HolderStorage: Index out of bounds"
        );
        Payout memory payout = payoutHistory[index];
        return (
            payout.recipient,
            payout.amount,
            payout.potType,
            payout.timestamp
        );
    }

    function getAggregateStats()
        external
        view
        returns (
            uint256 totalHourlyPayouts_,
            uint256 totalMegaPayouts_,
            uint256 totalHourlyAmountPaid_,
            uint256 totalMegaAmountPaid_
        )
    {
        return (
            totalHourlyPayouts,
            totalMegaPayouts,
            totalHourlyAmountPaid,
            totalMegaAmountPaid
        );
    }

    function isEligibleForJackpot(address account)
        external
        view
        returns (bool)
    {
        return !excludedFromPot[account];
    }
}

// File: hpot.sol


pragma solidity ^0.8.26;




interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

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

interface IUniswapV2Pair {
    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function token0() external view returns (address);
}

contract HEDGEPOT is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    address payable private _devWallet;
    HolderStorage public holderStorage;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals;
    string private constant _name = unicode"HedgePot";
    string private constant _symbol = unicode"HPOT";
    uint256 public _maxTxAmount = 21500000000000 * 10**_decimals;
    uint256 public _maxWalletSize = 8413800000000 * 10**_decimals;

    uint256 public hourlyJackpotPool;
    uint256 public megaJackpotPool;
    uint256 public lastHourlyDraw;
    uint256 public lastMegaDraw;
    uint256 public hourlyInterval = 1 hours;
    uint256 public megaInterval = 24 hours;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);

    event HourlyJackpotWon(address indexed winner, uint256 amount);
    event MegaJackpotWon(address indexed winner, uint256 amount);

    constructor(address _holderStorage) Ownable(_msgSender()) {
        _devWallet = payable(0xFe0a51777d8CB514754b3b19f6dB5389298Fc5F5);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_devWallet] = true;

        holderStorage = HolderStorage(_holderStorage);

        lastHourlyDraw = block.timestamp;
        lastMegaDraw = block.timestamp;

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

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

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

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

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

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

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );
        return true;
    }

    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 donateToMegaPotOrBurn(address sniper, bool donateToMega)
        external
        onlyOwner
    {
        uint256 balance = balanceOf(sniper);
        require(balance > 0, "Early sniper has no tokens to donate");

        if (donateToMega) {
            _transfer(sniper, address(this), balance);
            megaJackpotPool += balance;
            emit Transfer(sniper, address(this), balance);
        } else {
            _transfer(
                sniper,
                address(0x000000000000000000000000000000000000dEaD),
                balance
            );
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 feeAmount = 0;

        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFromFee[to]
        ) {
            require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= _maxWalletSize,
                "Exceeds the maxWalletSize."
            );
        }

        if (!_isExcludedFromFee[from]) {
            feeAmount = (amount * 3) / 100;
            uint256 hourlyPotFee = feeAmount / 3;
            uint256 megaPotFee = feeAmount / 3;
            uint256 devFee = feeAmount / 3;

            hourlyJackpotPool += hourlyPotFee;
            megaJackpotPool += megaPotFee;

            _balances[_devWallet] += devFee;
            _balances[address(this)] += hourlyPotFee + megaPotFee;

            emit Transfer(from, _devWallet, devFee);
            emit Transfer(from, address(this), hourlyPotFee + megaPotFee);
        }

        _balances[from] -= amount;
        _balances[to] += (amount - feeAmount);

        emit Transfer(from, to, amount - feeAmount);

        holderStorage.updateHolder(from, _balances[from]);
        holderStorage.updateHolder(to, _balances[to]);

        bool hourlyDue = block.timestamp >= lastHourlyDraw + hourlyInterval;
        bool megaDue = block.timestamp >= lastMegaDraw + megaInterval;

        if (hourlyDue) {
            distributeHourlyJackpot();
        }
        if (megaDue) {
            distributeMegaJackpot();
        }
    }

    function getTimeUntilHourlyPayout() public view returns (uint256) {
        if (block.timestamp >= lastHourlyDraw + hourlyInterval) {
            return 0;
        } else {
            return (lastHourlyDraw + hourlyInterval) - block.timestamp;
        }
    }

    function getTimeUntilMegaPayout() public view returns (uint256) {
        if (block.timestamp >= lastMegaDraw + megaInterval) {
            return 0;
        } else {
            return (lastMegaDraw + megaInterval) - block.timestamp;
        }
    }

    function getCurrentHourlyPot() public view returns (uint256) {
        return hourlyJackpotPool;
    }

    function getCurrentMegaPot() public view returns (uint256) {
        return megaJackpotPool;
    }

    function distributeHourlyJackpot() internal {
        lastHourlyDraw = block.timestamp;

        uint256 holderCount = holderStorage.getHolderCount();
        if (holderCount == 0 || hourlyJackpotPool == 0) {
            return;
        }

        address winner;
        uint256 randomIndex;

        do {
            randomIndex =
                uint256(
                    keccak256(
                        abi.encodePacked(block.timestamp, block.prevrandao)
                    )
                ) %
                holderCount;
            winner = holderStorage.getHolderByIndex(randomIndex);
        } while (!holderStorage.isEligibleForJackpot(winner));

        uint256 reward = hourlyJackpotPool;
        hourlyJackpotPool = 0;

        _transfer(address(this), winner, reward);
        holderStorage.recordPayout(winner, reward, "Hourly Jackpot");

        emit HourlyJackpotWon(winner, reward);
    }

    function distributeMegaJackpot() internal {
        lastMegaDraw = block.timestamp;

        uint256 holderCount = holderStorage.getHolderCount();
        if (holderCount == 0 || megaJackpotPool == 0) {
            return;
        }

        address winner;
        uint256 randomIndex;

        do {
            randomIndex =
                uint256(
                    keccak256(
                        abi.encodePacked(block.timestamp, block.prevrandao)
                    )
                ) %
                holderCount;
            winner = holderStorage.getHolderByIndex(randomIndex);
        } while (!holderStorage.isEligibleForJackpot(winner));

        uint256 reward = megaJackpotPool;
        megaJackpotPool = 0;

        _transfer(address(this), winner, reward);
        holderStorage.recordPayout(winner, reward, "Mega Jackpot");

        emit MegaJackpotWon(winner, reward);
    }

    function distributeHourlyPot() external {
        if (block.timestamp >= lastHourlyDraw + hourlyInterval) {
            distributeHourlyJackpot();
        }
    }

    function distributeMegaPot() external {
        if (block.timestamp >= lastMegaDraw + megaInterval) {
            distributeMegaJackpot();
        }
    }

    function donateToHourlyPot(uint256 amount) external {
        require(amount > 0, "Amount must be greater than zero");
        require(_balances[_msgSender()] >= amount, "Insufficient balance");

        _balances[_msgSender()] -= amount;
        _balances[address(this)] += amount;

        hourlyJackpotPool += amount;

        emit Transfer(_msgSender(), address(this), amount);
    }

    function donateToMegaPot(uint256 amount) external {
        require(amount > 0, "Amount must be greater than zero");
        require(_balances[_msgSender()] >= amount, "Insufficient balance");

        _balances[_msgSender()] -= amount;
        _balances[address(this)] += amount;

        megaJackpotPool += amount;

        emit Transfer(_msgSender(), address(this), amount);
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function getTokenPrice() public view returns (uint256) {
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        (uint112 reserve0, uint112 reserve1, ) = pair.getReserves();

        address token0 = pair.token0();

        uint256 tokenReserve;
        uint256 wethReserve;

        if (token0 == address(this)) {
            tokenReserve = reserve0;
            wethReserve = reserve1;
        } else {
            tokenReserve = reserve1;
            wethReserve = reserve0;
        }

        if (tokenReserve == 0) {
            return 0;
        } else {
            return (wethReserve * 1e18) / tokenReserve;
        }
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x591cf6942c422fA53E8D81c62a9692D7BeA72F61
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
        tradingOpen = true;
    }

    receive() external payable {}

    function rescueStuckSonic() public {
        uint256 contractETHBalance = address(this).balance;
        require(contractETHBalance > 0, "No Sonic to rescue");

        _devWallet.transfer(contractETHBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_holderStorage","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"HourlyJackpotWon","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MegaJackpotWon","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributeHourlyPot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeMegaPot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"donateToHourlyPot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"donateToMegaPot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sniper","type":"address"},{"internalType":"bool","name":"donateToMega","type":"bool"}],"name":"donateToMegaPotOrBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentHourlyPot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentMegaPot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeUntilHourlyPayout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeUntilMegaPayout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderStorage","outputs":[{"internalType":"contract HolderStorage","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hourlyInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hourlyJackpotPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastHourlyDraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastMegaDraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"megaInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"megaJackpotPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueStuckSonic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"}]

60806040526012600a61001291906106a0565b65138ddbdcd80061002391906106ea565b6006556012600a61003491906106a0565b6507a6fd8f6a0061004591906106ea565b600755610e10600c5562015180600d55348015610060575f80fd5b506040516143de3803806143de83398181016040528101906100829190610789565b61009061044060201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610100575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100f791906107c3565b60405180910390fd5b61010f8161044760201b60201c565b5073fe0a51777d8cb514754b3b19f6db5389298fc5f560045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a61017291906106a0565b633b9aca0061018191906106ea565b60015f61019261044060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6101e261050860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f61024461044060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600a8190555042600b819055506103ba61044060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a61041691906106a0565b633b9aca0061042591906106ea565b60405161043291906107eb565b60405180910390a350610804565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156105b15780860481111561058d5761058c61052f565b5b600185161561059c5780820291505b80810290506105aa8561055c565b9450610571565b94509492505050565b5f826105c95760019050610684565b816105d6575f9050610684565b81600181146105ec57600281146105f657610625565b6001915050610684565b60ff8411156106085761060761052f565b5b8360020a91508482111561061f5761061e61052f565b5b50610684565b5060208310610133831016604e8410600b841016171561065a5782820a9050838111156106555761065461052f565b5b610684565b6106678484846001610568565b9250905081840481111561067e5761067d61052f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6106aa8261068b565b91506106b583610694565b92506106e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846105ba565b905092915050565b5f6106f48261068b565b91506106ff8361068b565b925082820261070d8161068b565b915082820484148315176107245761072361052f565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107588261072f565b9050919050565b6107688161074e565b8114610772575f80fd5b50565b5f815190506107838161075f565b92915050565b5f6020828403121561079e5761079d61072b565b5b5f6107ab84828501610775565b91505092915050565b6107bd8161074e565b82525050565b5f6020820190506107d65f8301846107b4565b92915050565b6107e58161068b565b82525050565b5f6020820190506107fe5f8301846107dc565b92915050565b613bcd806108115f395ff3fe608060405260043610610212575f3560e01c806354117a5511610117578063a9059cbb1161009f578063d150353a1161006e578063d150353a14610721578063dd62ed3e1461074b578063e5197d8614610787578063eaaacc7c1461079d578063f2fde38b146107c757610219565b8063a9059cbb1461067d578063a9eb9211146106b9578063c9567bf9146106e1578063cf499b55146106f757610219565b8063751039fc116100e6578063751039fc146105bf5780637d1db4a5146105d55780638da5cb5b146105ff5780638f9a55c01461062957806395d89b411461065357610219565b806354117a551461052d5780635500e47a1461055757806370a082311461056d578063715018a6146105a957610219565b806327c17a521161019a578063359c16b311610169578063359c16b31461044b578063437823ec146104755780634afc26581461049d5780634b94f50e146104c75780635342acb4146104f157610219565b806327c17a52146103a55780632936eeb5146103cf578063313ce567146103f7578063314021bc1461042157610219565b806318160ddd116101e157806318160ddd146102c15780631ca65197146102eb57806323b872dd146103155780632685ca371461035157806326935d801461037b57610219565b806306fdde031461021d578063088c29ee14610247578063095ea7b31461026f57806315a5b165146102ab57610219565b3661021957005b5f80fd5b348015610228575f80fd5b506102316107ef565b60405161023e9190612b81565b60405180910390f35b348015610252575f80fd5b5061026d60048036038101906102689190612bd8565b61082c565b005b34801561027a575f80fd5b5061029560048036038101906102909190612c5d565b610a29565b6040516102a29190612cb5565b60405180910390f35b3480156102b6575f80fd5b506102bf610a46565b005b3480156102cc575f80fd5b506102d5610af4565b6040516102e29190612cdd565b60405180910390f35b3480156102f6575f80fd5b506102ff610b17565b60405161030c9190612d51565b60405180910390f35b348015610320575f80fd5b5061033b60048036038101906103369190612d6a565b610b3c565b6040516103489190612cb5565b60405180910390f35b34801561035c575f80fd5b50610365610bef565b6040516103729190612cdd565b60405180910390f35b348015610386575f80fd5b5061038f610bf8565b60405161039c9190612cdd565b60405180910390f35b3480156103b0575f80fd5b506103b9610bfe565b6040516103c69190612cdd565b60405180910390f35b3480156103da575f80fd5b506103f560048036038101906103f09190612bd8565b610c04565b005b348015610402575f80fd5b5061040b610e01565b6040516104189190612dd5565b60405180910390f35b34801561042c575f80fd5b50610435610e09565b6040516104429190612cdd565b60405180910390f35b348015610456575f80fd5b5061045f610e49565b60405161046c9190612cdd565b60405180910390f35b348015610480575f80fd5b5061049b60048036038101906104969190612dee565b610e89565b005b3480156104a8575f80fd5b506104b1610ee9565b6040516104be9190612cdd565b60405180910390f35b3480156104d2575f80fd5b506104db610ef2565b6040516104e89190612cdd565b60405180910390f35b3480156104fc575f80fd5b5061051760048036038101906105129190612dee565b6110c3565b6040516105249190612cb5565b60405180910390f35b348015610538575f80fd5b50610541611115565b60405161054e9190612cdd565b60405180910390f35b348015610562575f80fd5b5061056b61111b565b005b348015610578575f80fd5b50610593600480360381019061058e9190612dee565b61113c565b6040516105a09190612cdd565b60405180910390f35b3480156105b4575f80fd5b506105bd611182565b005b3480156105ca575f80fd5b506105d3611195565b005b3480156105e0575f80fd5b506105e9611238565b6040516105f69190612cdd565b60405180910390f35b34801561060a575f80fd5b5061061361123e565b6040516106209190612e28565b60405180910390f35b348015610634575f80fd5b5061063d611265565b60405161064a9190612cdd565b60405180910390f35b34801561065e575f80fd5b5061066761126b565b6040516106749190612b81565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190612c5d565b6112a8565b6040516106b09190612cb5565b60405180910390f35b3480156106c4575f80fd5b506106df60048036038101906106da9190612e6b565b6112c5565b005b3480156106ec575f80fd5b506106f56113c1565b005b348015610702575f80fd5b5061070b61183c565b6040516107189190612cdd565b60405180910390f35b34801561072c575f80fd5b50610735611842565b6040516107429190612cdd565b60405180910390f35b348015610756575f80fd5b50610771600480360381019061076c9190612ea9565b611848565b60405161077e9190612cdd565b60405180910390f35b348015610792575f80fd5b5061079b6118ca565b005b3480156107a8575f80fd5b506107b16118eb565b6040516107be9190612cdd565b60405180910390f35b3480156107d2575f80fd5b506107ed60048036038101906107e89190612dee565b6118f1565b005b60606040518060400160405280600881526020017f4865646765506f74000000000000000000000000000000000000000000000000815250905090565b5f811161086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590612f31565b60405180910390fd5b8060015f61087a611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612f99565b60405180910390fd5b8060015f610901611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109489190612fe4565b925050819055508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461099b9190613017565b925050819055508060085f8282546109b39190613017565b925050819055503073ffffffffffffffffffffffffffffffffffffffff166109d9611975565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a1e9190612cdd565b60405180910390a350565b5f610a3c610a35611975565b848461197c565b6001905092915050565b5f4790505f8111610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613094565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610af0573d5f803e3d5ffd5b5050565b5f6012600a610b0391906131e1565b633b9aca00610b12919061322b565b905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610b48848484611b3f565b610be484610b54611975565b8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b9b611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bdf9190612fe4565b61197c565b600190509392505050565b5f600854905090565b60095481565b600c5481565b5f8111610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90612f31565b60405180910390fd5b8060015f610c52611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490612f99565b60405180910390fd5b8060015f610cd9611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d209190612fe4565b925050819055508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d739190613017565b925050819055508060095f828254610d8b9190613017565b925050819055503073ffffffffffffffffffffffffffffffffffffffff16610db1611975565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610df69190612cdd565b60405180910390a350565b5f6012905090565b5f600c54600a54610e1a9190613017565b4210610e28575f9050610e46565b42600c54600a54610e399190613017565b610e439190612fe4565b90505b90565b5f600d54600b54610e5a9190613017565b4210610e68575f9050610e86565b42600d54600b54610e799190613017565b610e839190612fe4565b90505b90565b610e91612391565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600954905090565b5f80600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610f63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8791906132e8565b50915091505f8373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffa919061334c565b90505f803073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361105c57846dffffffffffffffffffffffffffff169150836dffffffffffffffffffffffffffff169050611083565b836dffffffffffffffffffffffffffff169150846dffffffffffffffffffffffffffff1690505b5f8203611098575f96505050505050506110c0565b81670de0b6b3a7640000826110ad919061322b565b6110b791906133a4565b96505050505050505b90565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085481565b600c54600a5461112b9190613017565b421061113a57611139612418565b5b565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61118a612391565b6111935f612734565b565b61119d612391565b6012600a6111ab91906131e1565b633b9aca006111ba919061322b565b6006819055506012600a6111ce91906131e1565b633b9aca006111dd919061322b565b6007819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a61121291906131e1565b633b9aca00611221919061322b565b60405161122e9190612cdd565b60405180910390a1565b60065481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600481526020017f48504f5400000000000000000000000000000000000000000000000000000000815250905090565b5f6112bb6112b4611975565b8484611b3f565b6001905092915050565b6112cd612391565b5f6112d78361113c565b90505f811161131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290613444565b60405180910390fd5b81156113ae5761132c833083611b3f565b8060095f82825461133d9190613017565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113a19190612cdd565b60405180910390a36113bc565b6113bb8361dead83611b3f565b5b505050565b6113c9612391565b600f60149054906101000a900460ff1615611419576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611410906134ac565b60405180910390fd5b73591cf6942c422fa53e8d81c62a9692d7bea72f61600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114b530600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6114a191906131e1565b633b9aca006114b0919061322b565b61197c565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611543919061334c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed919061334c565b6040518363ffffffff1660e01b815260040161160a9291906134ca565b6020604051808303815f875af1158015611626573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164a919061334c565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116d13061113c565b5f806116db61123e565b426040518863ffffffff1660e01b81526004016116fd9695949392919061352a565b60606040518083038185885af1158015611719573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061173e919061359d565b505050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117de9291906135ed565b6020604051808303815f875af11580156117fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181e9190613628565b506001600f60146101000a81548160ff021916908315150217905550565b600d5481565b600b5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d54600b546118da9190613017565b42106118e9576118e86127f5565b5b565b600a5481565b6118f9612391565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611969575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016119609190612e28565b60405180910390fd5b61197281612734565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e1906136c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90613751565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b329190612cdd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba4906137df565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c129061386d565b60405180910390fd5b5f8111611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c54906138fb565b60405180910390fd5b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d075750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d5a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dfd57600654821115611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b90613963565b60405180910390fd5b60075482611db18561113c565b611dbb9190613017565b1115611dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df3906139cb565b60405180910390fd5b5b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612092576064600383611e5a919061322b565b611e6491906133a4565b90505f600382611e7491906133a4565b90505f600383611e8491906133a4565b90505f600384611e9491906133a4565b90508260085f828254611ea79190613017565b925050819055508160095f828254611ebf9190613017565b925050819055508060015f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f339190613017565b925050819055508183611f469190613017565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f919190613017565b9250508190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120169190612cdd565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84866120799190613017565b6040516120869190612cdd565b60405180910390a35050505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120de9190612fe4565b9250508190555080826120f19190612fe4565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461213c9190613017565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838561219e9190612fe4565b6040516121ab9190612cdd565b60405180910390a360055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e2057e58560015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b815260040161224c9291906135ed565b5f604051808303815f87803b158015612263575f80fd5b505af1158015612275573d5f803e3d5ffd5b5050505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e2057e58460015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016123129291906135ed565b5f604051808303815f87803b158015612329575f80fd5b505af115801561233b573d5f803e3d5ffd5b505050505f600c54600a546123509190613017565b42101590505f600d54600b546123669190613017565b4210159050811561237a57612379612418565b5b8015612389576123886127f5565b5b505050505050565b612399611975565b73ffffffffffffffffffffffffffffffffffffffff166123b761123e565b73ffffffffffffffffffffffffffffffffffffffff1614612416576123da611975565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161240d9190612e28565b60405180910390fd5b565b42600a819055505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637136982b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ae91906139e9565b90505f8114806124bf57505f600854145b156124ca5750612732565b5f805b8242446040516020016124e1929190613a34565b604051602081830303815290604052805190602001205f1c6125039190613a5f565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb8106f4826040518263ffffffff1660e01b815260040161255f9190612cdd565b602060405180830381865afa15801561257a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259e919061334c565b915060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663855dab69836040518263ffffffff1660e01b81526004016125fa9190612e28565b602060405180830381865afa158015612615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126399190613628565b156124cd575f60085490505f600881905550612656308483611b3f565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350a9852c84836040518363ffffffff1660e01b81526004016126b2929190613ad9565b5f604051808303815f87803b1580156126c9575f80fd5b505af11580156126db573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff167fb9e5c818220b96face6ded1a28ec847dd014a916c63448d0abe28b2ff93f3268826040516127259190612cdd565b60405180910390a2505050505b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b42600b819055505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637136982b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612867573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288b91906139e9565b90505f81148061289c57505f600954145b156128a75750612b0f565b5f805b8242446040516020016128be929190613a34565b604051602081830303815290604052805190602001205f1c6128e09190613a5f565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb8106f4826040518263ffffffff1660e01b815260040161293c9190612cdd565b602060405180830381865afa158015612957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061297b919061334c565b915060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663855dab69836040518263ffffffff1660e01b81526004016129d79190612e28565b602060405180830381865afa1580156129f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a169190613628565b156128aa575f60095490505f600981905550612a33308483611b3f565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350a9852c84836040518363ffffffff1660e01b8152600401612a8f929190613b5d565b5f604051808303815f87803b158015612aa6575f80fd5b505af1158015612ab8573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f58c067553256ad4fdb558327b62e1709e0563bff7aea437f92f0cbf1f9d5fb1d82604051612b029190612cdd565b60405180910390a2505050505b565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612b5382612b11565b612b5d8185612b1b565b9350612b6d818560208601612b2b565b612b7681612b39565b840191505092915050565b5f6020820190508181035f830152612b998184612b49565b905092915050565b5f80fd5b5f819050919050565b612bb781612ba5565b8114612bc1575f80fd5b50565b5f81359050612bd281612bae565b92915050565b5f60208284031215612bed57612bec612ba1565b5b5f612bfa84828501612bc4565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c2c82612c03565b9050919050565b612c3c81612c22565b8114612c46575f80fd5b50565b5f81359050612c5781612c33565b92915050565b5f8060408385031215612c7357612c72612ba1565b5b5f612c8085828601612c49565b9250506020612c9185828601612bc4565b9150509250929050565b5f8115159050919050565b612caf81612c9b565b82525050565b5f602082019050612cc85f830184612ca6565b92915050565b612cd781612ba5565b82525050565b5f602082019050612cf05f830184612cce565b92915050565b5f819050919050565b5f612d19612d14612d0f84612c03565b612cf6565b612c03565b9050919050565b5f612d2a82612cff565b9050919050565b5f612d3b82612d20565b9050919050565b612d4b81612d31565b82525050565b5f602082019050612d645f830184612d42565b92915050565b5f805f60608486031215612d8157612d80612ba1565b5b5f612d8e86828701612c49565b9350506020612d9f86828701612c49565b9250506040612db086828701612bc4565b9150509250925092565b5f60ff82169050919050565b612dcf81612dba565b82525050565b5f602082019050612de85f830184612dc6565b92915050565b5f60208284031215612e0357612e02612ba1565b5b5f612e1084828501612c49565b91505092915050565b612e2281612c22565b82525050565b5f602082019050612e3b5f830184612e19565b92915050565b612e4a81612c9b565b8114612e54575f80fd5b50565b5f81359050612e6581612e41565b92915050565b5f8060408385031215612e8157612e80612ba1565b5b5f612e8e85828601612c49565b9250506020612e9f85828601612e57565b9150509250929050565b5f8060408385031215612ebf57612ebe612ba1565b5b5f612ecc85828601612c49565b9250506020612edd85828601612c49565b9150509250929050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f612f1b602083612b1b565b9150612f2682612ee7565b602082019050919050565b5f6020820190508181035f830152612f4881612f0f565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f612f83601483612b1b565b9150612f8e82612f4f565b602082019050919050565b5f6020820190508181035f830152612fb081612f77565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612fee82612ba5565b9150612ff983612ba5565b925082820390508181111561301157613010612fb7565b5b92915050565b5f61302182612ba5565b915061302c83612ba5565b925082820190508082111561304457613043612fb7565b5b92915050565b7f4e6f20536f6e696320746f2072657363756500000000000000000000000000005f82015250565b5f61307e601283612b1b565b91506130898261304a565b602082019050919050565b5f6020820190508181035f8301526130ab81613072565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613107578086048111156130e3576130e2612fb7565b5b60018516156130f25780820291505b8081029050613100856130b2565b94506130c7565b94509492505050565b5f8261311f57600190506131da565b8161312c575f90506131da565b8160018114613142576002811461314c5761317b565b60019150506131da565b60ff84111561315e5761315d612fb7565b5b8360020a91508482111561317557613174612fb7565b5b506131da565b5060208310610133831016604e8410600b84101617156131b05782820a9050838111156131ab576131aa612fb7565b5b6131da565b6131bd84848460016130be565b925090508184048111156131d4576131d3612fb7565b5b81810290505b9392505050565b5f6131eb82612ba5565b91506131f683612dba565b92506132237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613110565b905092915050565b5f61323582612ba5565b915061324083612ba5565b925082820261324e81612ba5565b9150828204841483151761326557613264612fb7565b5b5092915050565b5f6dffffffffffffffffffffffffffff82169050919050565b61328e8161326c565b8114613298575f80fd5b50565b5f815190506132a981613285565b92915050565b5f63ffffffff82169050919050565b6132c7816132af565b81146132d1575f80fd5b50565b5f815190506132e2816132be565b92915050565b5f805f606084860312156132ff576132fe612ba1565b5b5f61330c8682870161329b565b935050602061331d8682870161329b565b925050604061332e868287016132d4565b9150509250925092565b5f8151905061334681612c33565b92915050565b5f6020828403121561336157613360612ba1565b5b5f61336e84828501613338565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133ae82612ba5565b91506133b983612ba5565b9250826133c9576133c8613377565b5b828204905092915050565b7f4561726c7920736e6970657220686173206e6f20746f6b656e7320746f20646f5f8201527f6e61746500000000000000000000000000000000000000000000000000000000602082015250565b5f61342e602483612b1b565b9150613439826133d4565b604082019050919050565b5f6020820190508181035f83015261345b81613422565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613496601783612b1b565b91506134a182613462565b602082019050919050565b5f6020820190508181035f8301526134c38161348a565b9050919050565b5f6040820190506134dd5f830185612e19565b6134ea6020830184612e19565b9392505050565b5f819050919050565b5f61351461350f61350a846134f1565b612cf6565b612ba5565b9050919050565b613524816134fa565b82525050565b5f60c08201905061353d5f830189612e19565b61354a6020830188612cce565b613557604083018761351b565b613564606083018661351b565b6135716080830185612e19565b61357e60a0830184612cce565b979650505050505050565b5f8151905061359781612bae565b92915050565b5f805f606084860312156135b4576135b3612ba1565b5b5f6135c186828701613589565b93505060206135d286828701613589565b92505060406135e386828701613589565b9150509250925092565b5f6040820190506136005f830185612e19565b61360d6020830184612cce565b9392505050565b5f8151905061362281612e41565b92915050565b5f6020828403121561363d5761363c612ba1565b5b5f61364a84828501613614565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6136ad602483612b1b565b91506136b882613653565b604082019050919050565b5f6020820190508181035f8301526136da816136a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61373b602283612b1b565b9150613746826136e1565b604082019050919050565b5f6020820190508181035f8301526137688161372f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6137c9602583612b1b565b91506137d48261376f565b604082019050919050565b5f6020820190508181035f8301526137f6816137bd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613857602383612b1b565b9150613862826137fd565b604082019050919050565b5f6020820190508181035f8301526138848161384b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138e5602983612b1b565b91506138f08261388b565b604082019050919050565b5f6020820190508181035f830152613912816138d9565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61394d601983612b1b565b915061395882613919565b602082019050919050565b5f6020820190508181035f83015261397a81613941565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6139b5601a83612b1b565b91506139c082613981565b602082019050919050565b5f6020820190508181035f8301526139e2816139a9565b9050919050565b5f602082840312156139fe576139fd612ba1565b5b5f613a0b84828501613589565b91505092915050565b5f819050919050565b613a2e613a2982612ba5565b613a14565b82525050565b5f613a3f8285613a1d565b602082019150613a4f8284613a1d565b6020820191508190509392505050565b5f613a6982612ba5565b9150613a7483612ba5565b925082613a8457613a83613377565b5b828206905092915050565b7f486f75726c79204a61636b706f740000000000000000000000000000000000005f82015250565b5f613ac3600e83612b1b565b9150613ace82613a8f565b602082019050919050565b5f606082019050613aec5f830185612e19565b613af96020830184612cce565b8181036040830152613b0a81613ab7565b90509392505050565b7f4d656761204a61636b706f7400000000000000000000000000000000000000005f82015250565b5f613b47600c83612b1b565b9150613b5282613b13565b602082019050919050565b5f606082019050613b705f830185612e19565b613b7d6020830184612cce565b8181036040830152613b8e81613b3b565b9050939250505056fea26469706673582212209c42cb212a2249d45c104b8fd4ebbd3cee7866f6efa9b01c12bafeba5398de8d64736f6c634300081a00330000000000000000000000000165323ffe01cb58a175bc8360d1291432f4f0ab

Deployed Bytecode

0x608060405260043610610212575f3560e01c806354117a5511610117578063a9059cbb1161009f578063d150353a1161006e578063d150353a14610721578063dd62ed3e1461074b578063e5197d8614610787578063eaaacc7c1461079d578063f2fde38b146107c757610219565b8063a9059cbb1461067d578063a9eb9211146106b9578063c9567bf9146106e1578063cf499b55146106f757610219565b8063751039fc116100e6578063751039fc146105bf5780637d1db4a5146105d55780638da5cb5b146105ff5780638f9a55c01461062957806395d89b411461065357610219565b806354117a551461052d5780635500e47a1461055757806370a082311461056d578063715018a6146105a957610219565b806327c17a521161019a578063359c16b311610169578063359c16b31461044b578063437823ec146104755780634afc26581461049d5780634b94f50e146104c75780635342acb4146104f157610219565b806327c17a52146103a55780632936eeb5146103cf578063313ce567146103f7578063314021bc1461042157610219565b806318160ddd116101e157806318160ddd146102c15780631ca65197146102eb57806323b872dd146103155780632685ca371461035157806326935d801461037b57610219565b806306fdde031461021d578063088c29ee14610247578063095ea7b31461026f57806315a5b165146102ab57610219565b3661021957005b5f80fd5b348015610228575f80fd5b506102316107ef565b60405161023e9190612b81565b60405180910390f35b348015610252575f80fd5b5061026d60048036038101906102689190612bd8565b61082c565b005b34801561027a575f80fd5b5061029560048036038101906102909190612c5d565b610a29565b6040516102a29190612cb5565b60405180910390f35b3480156102b6575f80fd5b506102bf610a46565b005b3480156102cc575f80fd5b506102d5610af4565b6040516102e29190612cdd565b60405180910390f35b3480156102f6575f80fd5b506102ff610b17565b60405161030c9190612d51565b60405180910390f35b348015610320575f80fd5b5061033b60048036038101906103369190612d6a565b610b3c565b6040516103489190612cb5565b60405180910390f35b34801561035c575f80fd5b50610365610bef565b6040516103729190612cdd565b60405180910390f35b348015610386575f80fd5b5061038f610bf8565b60405161039c9190612cdd565b60405180910390f35b3480156103b0575f80fd5b506103b9610bfe565b6040516103c69190612cdd565b60405180910390f35b3480156103da575f80fd5b506103f560048036038101906103f09190612bd8565b610c04565b005b348015610402575f80fd5b5061040b610e01565b6040516104189190612dd5565b60405180910390f35b34801561042c575f80fd5b50610435610e09565b6040516104429190612cdd565b60405180910390f35b348015610456575f80fd5b5061045f610e49565b60405161046c9190612cdd565b60405180910390f35b348015610480575f80fd5b5061049b60048036038101906104969190612dee565b610e89565b005b3480156104a8575f80fd5b506104b1610ee9565b6040516104be9190612cdd565b60405180910390f35b3480156104d2575f80fd5b506104db610ef2565b6040516104e89190612cdd565b60405180910390f35b3480156104fc575f80fd5b5061051760048036038101906105129190612dee565b6110c3565b6040516105249190612cb5565b60405180910390f35b348015610538575f80fd5b50610541611115565b60405161054e9190612cdd565b60405180910390f35b348015610562575f80fd5b5061056b61111b565b005b348015610578575f80fd5b50610593600480360381019061058e9190612dee565b61113c565b6040516105a09190612cdd565b60405180910390f35b3480156105b4575f80fd5b506105bd611182565b005b3480156105ca575f80fd5b506105d3611195565b005b3480156105e0575f80fd5b506105e9611238565b6040516105f69190612cdd565b60405180910390f35b34801561060a575f80fd5b5061061361123e565b6040516106209190612e28565b60405180910390f35b348015610634575f80fd5b5061063d611265565b60405161064a9190612cdd565b60405180910390f35b34801561065e575f80fd5b5061066761126b565b6040516106749190612b81565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190612c5d565b6112a8565b6040516106b09190612cb5565b60405180910390f35b3480156106c4575f80fd5b506106df60048036038101906106da9190612e6b565b6112c5565b005b3480156106ec575f80fd5b506106f56113c1565b005b348015610702575f80fd5b5061070b61183c565b6040516107189190612cdd565b60405180910390f35b34801561072c575f80fd5b50610735611842565b6040516107429190612cdd565b60405180910390f35b348015610756575f80fd5b50610771600480360381019061076c9190612ea9565b611848565b60405161077e9190612cdd565b60405180910390f35b348015610792575f80fd5b5061079b6118ca565b005b3480156107a8575f80fd5b506107b16118eb565b6040516107be9190612cdd565b60405180910390f35b3480156107d2575f80fd5b506107ed60048036038101906107e89190612dee565b6118f1565b005b60606040518060400160405280600881526020017f4865646765506f74000000000000000000000000000000000000000000000000815250905090565b5f811161086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590612f31565b60405180910390fd5b8060015f61087a611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612f99565b60405180910390fd5b8060015f610901611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109489190612fe4565b925050819055508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461099b9190613017565b925050819055508060085f8282546109b39190613017565b925050819055503073ffffffffffffffffffffffffffffffffffffffff166109d9611975565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a1e9190612cdd565b60405180910390a350565b5f610a3c610a35611975565b848461197c565b6001905092915050565b5f4790505f8111610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613094565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610af0573d5f803e3d5ffd5b5050565b5f6012600a610b0391906131e1565b633b9aca00610b12919061322b565b905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610b48848484611b3f565b610be484610b54611975565b8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b9b611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bdf9190612fe4565b61197c565b600190509392505050565b5f600854905090565b60095481565b600c5481565b5f8111610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90612f31565b60405180910390fd5b8060015f610c52611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490612f99565b60405180910390fd5b8060015f610cd9611975565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d209190612fe4565b925050819055508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d739190613017565b925050819055508060095f828254610d8b9190613017565b925050819055503073ffffffffffffffffffffffffffffffffffffffff16610db1611975565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610df69190612cdd565b60405180910390a350565b5f6012905090565b5f600c54600a54610e1a9190613017565b4210610e28575f9050610e46565b42600c54600a54610e399190613017565b610e439190612fe4565b90505b90565b5f600d54600b54610e5a9190613017565b4210610e68575f9050610e86565b42600d54600b54610e799190613017565b610e839190612fe4565b90505b90565b610e91612391565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600954905090565b5f80600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610f63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8791906132e8565b50915091505f8373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffa919061334c565b90505f803073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361105c57846dffffffffffffffffffffffffffff169150836dffffffffffffffffffffffffffff169050611083565b836dffffffffffffffffffffffffffff169150846dffffffffffffffffffffffffffff1690505b5f8203611098575f96505050505050506110c0565b81670de0b6b3a7640000826110ad919061322b565b6110b791906133a4565b96505050505050505b90565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60085481565b600c54600a5461112b9190613017565b421061113a57611139612418565b5b565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61118a612391565b6111935f612734565b565b61119d612391565b6012600a6111ab91906131e1565b633b9aca006111ba919061322b565b6006819055506012600a6111ce91906131e1565b633b9aca006111dd919061322b565b6007819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a61121291906131e1565b633b9aca00611221919061322b565b60405161122e9190612cdd565b60405180910390a1565b60065481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600481526020017f48504f5400000000000000000000000000000000000000000000000000000000815250905090565b5f6112bb6112b4611975565b8484611b3f565b6001905092915050565b6112cd612391565b5f6112d78361113c565b90505f811161131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290613444565b60405180910390fd5b81156113ae5761132c833083611b3f565b8060095f82825461133d9190613017565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113a19190612cdd565b60405180910390a36113bc565b6113bb8361dead83611b3f565b5b505050565b6113c9612391565b600f60149054906101000a900460ff1615611419576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611410906134ac565b60405180910390fd5b73591cf6942c422fa53e8d81c62a9692d7bea72f61600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114b530600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6114a191906131e1565b633b9aca006114b0919061322b565b61197c565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611543919061334c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed919061334c565b6040518363ffffffff1660e01b815260040161160a9291906134ca565b6020604051808303815f875af1158015611626573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164a919061334c565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116d13061113c565b5f806116db61123e565b426040518863ffffffff1660e01b81526004016116fd9695949392919061352a565b60606040518083038185885af1158015611719573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061173e919061359d565b505050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117de9291906135ed565b6020604051808303815f875af11580156117fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181e9190613628565b506001600f60146101000a81548160ff021916908315150217905550565b600d5481565b600b5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d54600b546118da9190613017565b42106118e9576118e86127f5565b5b565b600a5481565b6118f9612391565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611969575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016119609190612e28565b60405180910390fd5b61197281612734565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e1906136c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90613751565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b329190612cdd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba4906137df565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c129061386d565b60405180910390fd5b5f8111611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c54906138fb565b60405180910390fd5b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d075750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d5a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dfd57600654821115611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b90613963565b60405180910390fd5b60075482611db18561113c565b611dbb9190613017565b1115611dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df3906139cb565b60405180910390fd5b5b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612092576064600383611e5a919061322b565b611e6491906133a4565b90505f600382611e7491906133a4565b90505f600383611e8491906133a4565b90505f600384611e9491906133a4565b90508260085f828254611ea79190613017565b925050819055508160095f828254611ebf9190613017565b925050819055508060015f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f339190613017565b925050819055508183611f469190613017565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f919190613017565b9250508190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120169190612cdd565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84866120799190613017565b6040516120869190612cdd565b60405180910390a35050505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120de9190612fe4565b9250508190555080826120f19190612fe4565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461213c9190613017565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838561219e9190612fe4565b6040516121ab9190612cdd565b60405180910390a360055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e2057e58560015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b815260040161224c9291906135ed565b5f604051808303815f87803b158015612263575f80fd5b505af1158015612275573d5f803e3d5ffd5b5050505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e2057e58460015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b81526004016123129291906135ed565b5f604051808303815f87803b158015612329575f80fd5b505af115801561233b573d5f803e3d5ffd5b505050505f600c54600a546123509190613017565b42101590505f600d54600b546123669190613017565b4210159050811561237a57612379612418565b5b8015612389576123886127f5565b5b505050505050565b612399611975565b73ffffffffffffffffffffffffffffffffffffffff166123b761123e565b73ffffffffffffffffffffffffffffffffffffffff1614612416576123da611975565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161240d9190612e28565b60405180910390fd5b565b42600a819055505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637136982b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ae91906139e9565b90505f8114806124bf57505f600854145b156124ca5750612732565b5f805b8242446040516020016124e1929190613a34565b604051602081830303815290604052805190602001205f1c6125039190613a5f565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb8106f4826040518263ffffffff1660e01b815260040161255f9190612cdd565b602060405180830381865afa15801561257a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259e919061334c565b915060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663855dab69836040518263ffffffff1660e01b81526004016125fa9190612e28565b602060405180830381865afa158015612615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126399190613628565b156124cd575f60085490505f600881905550612656308483611b3f565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350a9852c84836040518363ffffffff1660e01b81526004016126b2929190613ad9565b5f604051808303815f87803b1580156126c9575f80fd5b505af11580156126db573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff167fb9e5c818220b96face6ded1a28ec847dd014a916c63448d0abe28b2ff93f3268826040516127259190612cdd565b60405180910390a2505050505b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b42600b819055505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637136982b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612867573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288b91906139e9565b90505f81148061289c57505f600954145b156128a75750612b0f565b5f805b8242446040516020016128be929190613a34565b604051602081830303815290604052805190602001205f1c6128e09190613a5f565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb8106f4826040518263ffffffff1660e01b815260040161293c9190612cdd565b602060405180830381865afa158015612957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061297b919061334c565b915060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663855dab69836040518263ffffffff1660e01b81526004016129d79190612e28565b602060405180830381865afa1580156129f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a169190613628565b156128aa575f60095490505f600981905550612a33308483611b3f565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350a9852c84836040518363ffffffff1660e01b8152600401612a8f929190613b5d565b5f604051808303815f87803b158015612aa6575f80fd5b505af1158015612ab8573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f58c067553256ad4fdb558327b62e1709e0563bff7aea437f92f0cbf1f9d5fb1d82604051612b029190612cdd565b60405180910390a2505050505b565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612b5382612b11565b612b5d8185612b1b565b9350612b6d818560208601612b2b565b612b7681612b39565b840191505092915050565b5f6020820190508181035f830152612b998184612b49565b905092915050565b5f80fd5b5f819050919050565b612bb781612ba5565b8114612bc1575f80fd5b50565b5f81359050612bd281612bae565b92915050565b5f60208284031215612bed57612bec612ba1565b5b5f612bfa84828501612bc4565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c2c82612c03565b9050919050565b612c3c81612c22565b8114612c46575f80fd5b50565b5f81359050612c5781612c33565b92915050565b5f8060408385031215612c7357612c72612ba1565b5b5f612c8085828601612c49565b9250506020612c9185828601612bc4565b9150509250929050565b5f8115159050919050565b612caf81612c9b565b82525050565b5f602082019050612cc85f830184612ca6565b92915050565b612cd781612ba5565b82525050565b5f602082019050612cf05f830184612cce565b92915050565b5f819050919050565b5f612d19612d14612d0f84612c03565b612cf6565b612c03565b9050919050565b5f612d2a82612cff565b9050919050565b5f612d3b82612d20565b9050919050565b612d4b81612d31565b82525050565b5f602082019050612d645f830184612d42565b92915050565b5f805f60608486031215612d8157612d80612ba1565b5b5f612d8e86828701612c49565b9350506020612d9f86828701612c49565b9250506040612db086828701612bc4565b9150509250925092565b5f60ff82169050919050565b612dcf81612dba565b82525050565b5f602082019050612de85f830184612dc6565b92915050565b5f60208284031215612e0357612e02612ba1565b5b5f612e1084828501612c49565b91505092915050565b612e2281612c22565b82525050565b5f602082019050612e3b5f830184612e19565b92915050565b612e4a81612c9b565b8114612e54575f80fd5b50565b5f81359050612e6581612e41565b92915050565b5f8060408385031215612e8157612e80612ba1565b5b5f612e8e85828601612c49565b9250506020612e9f85828601612e57565b9150509250929050565b5f8060408385031215612ebf57612ebe612ba1565b5b5f612ecc85828601612c49565b9250506020612edd85828601612c49565b9150509250929050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f612f1b602083612b1b565b9150612f2682612ee7565b602082019050919050565b5f6020820190508181035f830152612f4881612f0f565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f612f83601483612b1b565b9150612f8e82612f4f565b602082019050919050565b5f6020820190508181035f830152612fb081612f77565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612fee82612ba5565b9150612ff983612ba5565b925082820390508181111561301157613010612fb7565b5b92915050565b5f61302182612ba5565b915061302c83612ba5565b925082820190508082111561304457613043612fb7565b5b92915050565b7f4e6f20536f6e696320746f2072657363756500000000000000000000000000005f82015250565b5f61307e601283612b1b565b91506130898261304a565b602082019050919050565b5f6020820190508181035f8301526130ab81613072565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613107578086048111156130e3576130e2612fb7565b5b60018516156130f25780820291505b8081029050613100856130b2565b94506130c7565b94509492505050565b5f8261311f57600190506131da565b8161312c575f90506131da565b8160018114613142576002811461314c5761317b565b60019150506131da565b60ff84111561315e5761315d612fb7565b5b8360020a91508482111561317557613174612fb7565b5b506131da565b5060208310610133831016604e8410600b84101617156131b05782820a9050838111156131ab576131aa612fb7565b5b6131da565b6131bd84848460016130be565b925090508184048111156131d4576131d3612fb7565b5b81810290505b9392505050565b5f6131eb82612ba5565b91506131f683612dba565b92506132237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613110565b905092915050565b5f61323582612ba5565b915061324083612ba5565b925082820261324e81612ba5565b9150828204841483151761326557613264612fb7565b5b5092915050565b5f6dffffffffffffffffffffffffffff82169050919050565b61328e8161326c565b8114613298575f80fd5b50565b5f815190506132a981613285565b92915050565b5f63ffffffff82169050919050565b6132c7816132af565b81146132d1575f80fd5b50565b5f815190506132e2816132be565b92915050565b5f805f606084860312156132ff576132fe612ba1565b5b5f61330c8682870161329b565b935050602061331d8682870161329b565b925050604061332e868287016132d4565b9150509250925092565b5f8151905061334681612c33565b92915050565b5f6020828403121561336157613360612ba1565b5b5f61336e84828501613338565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133ae82612ba5565b91506133b983612ba5565b9250826133c9576133c8613377565b5b828204905092915050565b7f4561726c7920736e6970657220686173206e6f20746f6b656e7320746f20646f5f8201527f6e61746500000000000000000000000000000000000000000000000000000000602082015250565b5f61342e602483612b1b565b9150613439826133d4565b604082019050919050565b5f6020820190508181035f83015261345b81613422565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613496601783612b1b565b91506134a182613462565b602082019050919050565b5f6020820190508181035f8301526134c38161348a565b9050919050565b5f6040820190506134dd5f830185612e19565b6134ea6020830184612e19565b9392505050565b5f819050919050565b5f61351461350f61350a846134f1565b612cf6565b612ba5565b9050919050565b613524816134fa565b82525050565b5f60c08201905061353d5f830189612e19565b61354a6020830188612cce565b613557604083018761351b565b613564606083018661351b565b6135716080830185612e19565b61357e60a0830184612cce565b979650505050505050565b5f8151905061359781612bae565b92915050565b5f805f606084860312156135b4576135b3612ba1565b5b5f6135c186828701613589565b93505060206135d286828701613589565b92505060406135e386828701613589565b9150509250925092565b5f6040820190506136005f830185612e19565b61360d6020830184612cce565b9392505050565b5f8151905061362281612e41565b92915050565b5f6020828403121561363d5761363c612ba1565b5b5f61364a84828501613614565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6136ad602483612b1b565b91506136b882613653565b604082019050919050565b5f6020820190508181035f8301526136da816136a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61373b602283612b1b565b9150613746826136e1565b604082019050919050565b5f6020820190508181035f8301526137688161372f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6137c9602583612b1b565b91506137d48261376f565b604082019050919050565b5f6020820190508181035f8301526137f6816137bd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613857602383612b1b565b9150613862826137fd565b604082019050919050565b5f6020820190508181035f8301526138848161384b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138e5602983612b1b565b91506138f08261388b565b604082019050919050565b5f6020820190508181035f830152613912816138d9565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61394d601983612b1b565b915061395882613919565b602082019050919050565b5f6020820190508181035f83015261397a81613941565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6139b5601a83612b1b565b91506139c082613981565b602082019050919050565b5f6020820190508181035f8301526139e2816139a9565b9050919050565b5f602082840312156139fe576139fd612ba1565b5b5f613a0b84828501613589565b91505092915050565b5f819050919050565b613a2e613a2982612ba5565b613a14565b82525050565b5f613a3f8285613a1d565b602082019150613a4f8284613a1d565b6020820191508190509392505050565b5f613a6982612ba5565b9150613a7483612ba5565b925082613a8457613a83613377565b5b828206905092915050565b7f486f75726c79204a61636b706f740000000000000000000000000000000000005f82015250565b5f613ac3600e83612b1b565b9150613ace82613a8f565b602082019050919050565b5f606082019050613aec5f830185612e19565b613af96020830184612cce565b8181036040830152613b0a81613ab7565b90509392505050565b7f4d656761204a61636b706f7400000000000000000000000000000000000000005f82015250565b5f613b47600c83612b1b565b9150613b5282613b13565b602082019050919050565b5f606082019050613b705f830185612e19565b613b7d6020830184612cce565b8181036040830152613b8e81613b3b565b9050939250505056fea26469706673582212209c42cb212a2249d45c104b8fd4ebbd3cee7866f6efa9b01c12bafeba5398de8d64736f6c634300081a0033

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

0000000000000000000000000165323ffe01cb58a175bc8360d1291432f4f0ab

-----Decoded View---------------
Arg [0] : _holderStorage (address): 0x0165323fFE01cb58A175bC8360D1291432F4F0aB

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000165323ffe01cb58a175bc8360d1291432f4f0ab


Deployed Bytecode Sourcemap

13684:12183:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15498:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23112:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16657:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25644:220;;;;;;;;;;;;;:::i;:::-;;15775:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13953:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16858:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20662:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14397:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14504:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23517:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15684:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20124:266;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20398:256;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16005:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20774:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24088:667;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16126:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14358:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22772:166;;;;;;;;;;;;;:::i;:::-;;15878:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3361:103;;;;;;;;;;;;;:::i;:::-;;23918:162;;;;;;;;;;;;;:::i;:::-;;14221:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2686:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14288:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15589:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16258:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17593:610;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24763:836;;;;;;;;;;;;;:::i;:::-;;14550:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14470:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16465:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22946:158;;;;;;;;;;;;;:::i;:::-;;14434:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3619:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15498:83;15535:13;15568:5;;;;;;;;;;;;;;;;;15561:12;;15498:83;:::o;23112:397::-;23192:1;23183:6;:10;23175:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;23276:6;23249:9;:23;23259:12;:10;:12::i;:::-;23249:23;;;;;;;;;;;;;;;;:33;;23241:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23347:6;23320:9;:23;23330:12;:10;:12::i;:::-;23320:23;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;23392:6;23364:9;:24;23382:4;23364:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;23432:6;23411:17;;:27;;;;;;;:::i;:::-;;;;;;;;23487:4;23456:45;;23465:12;:10;:12::i;:::-;23456:45;;;23494:6;23456:45;;;;;;:::i;:::-;;;;;;;;23112:397;:::o;16657:193::-;16759:4;16781:39;16790:12;:10;:12::i;:::-;16804:7;16813:6;16781:8;:39::i;:::-;16838:4;16831:11;;16657:193;;;;:::o;25644:220::-;25690:26;25719:21;25690:50;;25780:1;25759:18;:22;25751:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;25817:10;;;;;;;;;;;:19;;:39;25837:18;25817:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25679:185;25644:220::o;15775:95::-;15828:7;14031:2;14091;:13;;;;:::i;:::-;14075;:29;;;;:::i;:::-;15848:14;;15775:95;:::o;13953:34::-;;;;;;;;;;;;;:::o;16858:350::-;16990:4;17007:36;17017:6;17025:9;17036:6;17007:9;:36::i;:::-;17054:124;17077:6;17098:12;:10;:12::i;:::-;17161:6;17125:11;:19;17137:6;17125:19;;;;;;;;;;;;;;;:33;17145:12;:10;:12::i;:::-;17125:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;17054:8;:124::i;:::-;17196:4;17189:11;;16858:350;;;;;:::o;20662:104::-;20714:7;20741:17;;20734:24;;20662:104;:::o;14397:30::-;;;;:::o;14504:39::-;;;;:::o;23517:393::-;23595:1;23586:6;:10;23578:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;23679:6;23652:9;:23;23662:12;:10;:12::i;:::-;23652:23;;;;;;;;;;;;;;;;:33;;23644:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23750:6;23723:9;:23;23733:12;:10;:12::i;:::-;23723:23;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;23795:6;23767:9;:24;23785:4;23767:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;23833:6;23814:15;;:25;;;;;;;:::i;:::-;;;;;;;;23888:4;23857:45;;23866:12;:10;:12::i;:::-;23857:45;;;23895:6;23857:45;;;;;;:::i;:::-;;;;;;;;23517:393;:::o;15684:83::-;15725:5;14031:2;15743:16;;15684:83;:::o;20124:266::-;20181:7;20241:14;;20224;;:31;;;;:::i;:::-;20205:15;:50;20201:182;;20279:1;20272:8;;;;20201:182;20356:15;20338:14;;20321;;:31;;;;:::i;:::-;20320:51;;;;:::i;:::-;20313:58;;20124:266;;:::o;20398:256::-;20453:7;20511:12;;20496;;:27;;;;:::i;:::-;20477:15;:46;20473:174;;20547:1;20540:8;;;;20473:174;20620:15;20604:12;;20589;;:27;;;;:::i;:::-;20588:47;;;;:::i;:::-;20581:54;;20398:256;;:::o;16005:113::-;2572:13;:11;:13::i;:::-;16106:4:::1;16076:18;:27;16095:7;16076:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;16005:113:::0;:::o;20774:100::-;20824:7;20851:15;;20844:22;;20774:100;:::o;24088:667::-;24134:7;24154:19;24191:13;;;;;;;;;;;24154:51;;24217:16;24235;24257:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24216:59;;;;;24288:14;24305:4;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24288:30;;24331:20;24362:19;24416:4;24398:23;;:6;:23;;;24394:209;;24453:8;24438:23;;;;24490:8;24476:22;;;;24394:209;;;24546:8;24531:23;;;;24583:8;24569:22;;;;24394:209;24635:1;24619:12;:17;24615:133;;24660:1;24653:8;;;;;;;;;;24615:133;24724:12;24716:4;24702:11;:18;;;;:::i;:::-;24701:35;;;;:::i;:::-;24694:42;;;;;;;;24088:667;;:::o;16126:124::-;16191:4;16215:18;:27;16234:7;16215:27;;;;;;;;;;;;;;;;;;;;;;;;;16208:34;;16126:124;;;:::o;14358:32::-;;;;:::o;22772:166::-;22863:14;;22846;;:31;;;;:::i;:::-;22827:15;:50;22823:108;;22894:25;:23;:25::i;:::-;22823:108;22772:166::o;15878:119::-;15944:7;15971:9;:18;15981:7;15971:18;;;;;;;;;;;;;;;;15964:25;;15878:119;;;:::o;3361:103::-;2572:13;:11;:13::i;:::-;3426:30:::1;3453:1;3426:18;:30::i;:::-;3361:103::o:0;23918:162::-;2572:13;:11;:13::i;:::-;14031:2:::1;14091;:13;;;;:::i;:::-;14075;:29;;;;:::i;:::-;23972:12;:22;;;;14031:2;14091;:13;;;;:::i;:::-;14075;:29;;;;:::i;:::-;24005:14;:24;;;;24045:27;14031:2;14091;:13;;;;:::i;:::-;14075;:29;;;;:::i;:::-;24045:27;;;;;;:::i;:::-;;;;;;;;23918:162::o:0;14221:60::-;;;;:::o;2686:87::-;2732:7;2759:6;;;;;;;;;;;2752:13;;2686:87;:::o;14288:61::-;;;;:::o;15589:87::-;15628:13;15661:7;;;;;;;;;;;;;;;;;15654:14;;15589:87;:::o;16258:199::-;16363:4;16385:42;16395:12;:10;:12::i;:::-;16409:9;16420:6;16385:9;:42::i;:::-;16445:4;16438:11;;16258:199;;;;:::o;17593:610::-;2572:13;:11;:13::i;:::-;17712:15:::1;17730:17;17740:6;17730:9;:17::i;:::-;17712:35;;17776:1;17766:7;:11;17758:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17835:12;17831:365;;;17864:41;17874:6;17890:4;17897:7;17864:9;:41::i;:::-;17939:7;17920:15;;:26;;;;;;;:::i;:::-;;;;;;;;17991:4;17966:40;;17975:6;17966:40;;;17998:7;17966:40;;;;;;:::i;:::-;;;;;;;;17831:365;;;18039:145;18067:6;18100:42;18162:7;18039:9;:145::i;:::-;17831:365;17701:502;17593:610:::0;;:::o;24763:836::-;2572:13;:11;:13::i;:::-;24825:11:::1;;;;;;;;;;;24824:12;24816:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24926:42;24875:15;;:104;;;;;;;;;;;;;;;;;;24990:58;25007:4;25022:15;;;;;;;;;;;14031:2;14091;:13;;;;:::i;:::-;14075;:29;;;;:::i;:::-;24990:8;:58::i;:::-;25093:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25075:55;;;25153:4;25173:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25075:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25059:13;;:147;;;;;;;;;;;;;;;;;;25217:15;;;;;;;;;;;:31;;;25256:21;25301:4;25321:24;25339:4;25321:9;:24::i;:::-;25360:1;25376::::0;25392:7:::1;:5;:7::i;:::-;25414:15;25217:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25458:13;;;;;;;;;;;25451:29;;;25503:15;;;;;;;;;;;25534:17;25451:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25587:4;25573:11;;:18;;;;;;;;;;;;;;;;;;24763:836::o:0;14550:38::-;;;;:::o;14470:27::-;;;;:::o;16465:184::-;16582:7;16614:11;:18;16626:5;16614:18;;;;;;;;;;;;;;;:27;16633:7;16614:27;;;;;;;;;;;;;;;;16607:34;;16465:184;;;;:::o;22946:158::-;23033:12;;23018;;:27;;;;:::i;:::-;22999:15;:46;22995:102;;23062:23;:21;:23::i;:::-;22995:102;22946:158::o;14434:29::-;;;;:::o;3619:220::-;2572:13;:11;:13::i;:::-;3724:1:::1;3704:22;;:8;:22;;::::0;3700:93:::1;;3778:1;3750:31;;;;;;;;;;;:::i;:::-;;;;;;;;3700:93;3803:28;3822:8;3803:18;:28::i;:::-;3619:220:::0;:::o;695:98::-;748:7;775:10;768:17;;695:98;:::o;17216:369::-;17360:1;17343:19;;:5;:19;;;17335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17441:1;17422:21;;:7;:21;;;17414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17523:6;17493:11;:18;17505:5;17493:18;;;;;;;;;;;;;;;:27;17512:7;17493:27;;;;;;;;;;;;;;;:36;;;;17561:7;17545:32;;17554:5;17545:32;;;17570:6;17545:32;;;;;;:::i;:::-;;;;;;;;17216:369;;;:::o;18211:1905::-;18349:1;18333:18;;:4;:18;;;18325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18426:1;18412:16;;:2;:16;;;18404:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18496:1;18487:6;:10;18479:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18556:17;18616:13;;;;;;;;;;;18608:21;;:4;:21;;;:68;;;;;18660:15;;;;;;;;;;;18646:30;;:2;:30;;;;18608:68;:108;;;;;18694:18;:22;18713:2;18694:22;;;;;;;;;;;;;;;;;;;;;;;;;18693:23;18608:108;18590:368;;;18761:12;;18751:6;:22;;18743:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18870:14;;18860:6;18844:13;18854:2;18844:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18818:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;18590:368;18975:18;:24;18994:4;18975:24;;;;;;;;;;;;;;;;;;;;;;;;;18970:575;;19043:3;19038:1;19029:6;:10;;;;:::i;:::-;19028:18;;;;:::i;:::-;19016:30;;19061:20;19096:1;19084:9;:13;;;;:::i;:::-;19061:36;;19112:18;19145:1;19133:9;:13;;;;:::i;:::-;19112:34;;19161:14;19190:1;19178:9;:13;;;;:::i;:::-;19161:30;;19229:12;19208:17;;:33;;;;;;;:::i;:::-;;;;;;;;19275:10;19256:15;;:29;;;;;;;:::i;:::-;;;;;;;;19327:6;19302:9;:21;19312:10;;;;;;;;;;;19302:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;19391:10;19376:12;:25;;;;:::i;:::-;19348:9;:24;19366:4;19348:24;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;19438:10;;;;;;;;;;;19423:34;;19432:4;19423:34;;;19450:6;19423:34;;;;;;:::i;:::-;;;;;;;;19500:4;19477:56;;19486:4;19477:56;;;19522:10;19507:12;:25;;;;:::i;:::-;19477:56;;;;;;:::i;:::-;;;;;;;;19001:544;;;18970:575;19576:6;19557:9;:15;19567:4;19557:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;19620:9;19611:6;:18;;;;:::i;:::-;19593:9;:13;19603:2;19593:13;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;19663:2;19648:38;;19657:4;19648:38;;;19676:9;19667:6;:18;;;;:::i;:::-;19648:38;;;;;;:::i;:::-;;;;;;;;19699:13;;;;;;;;;;;:26;;;19726:4;19732:9;:15;19742:4;19732:15;;;;;;;;;;;;;;;;19699:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19759:13;;;;;;;;;;;:26;;;19786:2;19790:9;:13;19800:2;19790:13;;;;;;;;;;;;;;;;19759:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19817:14;19870;;19853;;:31;;;;:::i;:::-;19834:15;:50;;19817:67;;19895:12;19944;;19929;;:27;;;;:::i;:::-;19910:15;:46;;19895:61;;19973:9;19969:67;;;19999:25;:23;:25::i;:::-;19969:67;20050:7;20046:63;;;20074:23;:21;:23::i;:::-;20046:63;18314:1802;;;18211:1905;;;:::o;2851:166::-;2922:12;:10;:12::i;:::-;2911:23;;:7;:5;:7::i;:::-;:23;;;2907:103;;2985:12;:10;:12::i;:::-;2958:40;;;;;;;;;;;:::i;:::-;;;;;;;;2907:103;2851:166::o;20882:944::-;20954:15;20937:14;:32;;;;20982:19;21004:13;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20982:52;;21064:1;21049:11;:16;:42;;;;21090:1;21069:17;;:22;21049:42;21045:81;;;21108:7;;;21045:81;21138:14;21163:19;21195:371;21423:11;21327:15;21344:16;21310:51;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21274:110;;;;;;21244:159;;:190;;;;:::i;:::-;21213:221;;21458:13;;;;;;;;;;;:30;;;21489:11;21458:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21449:52;;21522:13;;;;;;;;;;;:34;;;21557:6;21522:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21521:43;21195:371;;21578:14;21595:17;;21578:34;;21643:1;21623:17;:21;;;;21657:40;21675:4;21682:6;21690;21657:9;:40::i;:::-;21708:13;;;;;;;;;;;:26;;;21735:6;21743;21708:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21803:6;21786:32;;;21811:6;21786:32;;;;;;:::i;:::-;;;;;;;;20926:900;;;;20882:944;:::o;3999:191::-;4073:16;4092:6;;;;;;;;;;;4073:25;;4118:8;4109:6;;:17;;;;;;;;;;;;;;;;;;4173:8;4142:40;;4163:8;4142:40;;;;;;;;;;;;4062:128;3999:191;:::o;21834:930::-;21902:15;21887:12;:30;;;;21930:19;21952:13;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21930:52;;22012:1;21997:11;:16;:40;;;;22036:1;22017:15;;:20;21997:40;21993:79;;;22054:7;;;21993:79;22084:14;22109:19;22141:371;22369:11;22273:15;22290:16;22256:51;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22220:110;;;;;;22190:159;;:190;;;;:::i;:::-;22159:221;;22404:13;;;;;;;;;;;:30;;;22435:11;22404:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22395:52;;22468:13;;;;;;;;;;;:34;;;22503:6;22468:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22467:43;22141:371;;22524:14;22541:15;;22524:32;;22585:1;22567:15;:19;;;;22599:40;22617:4;22624:6;22632;22599:9;:40::i;:::-;22650:13;;;;;;;;;;;:26;;;22677:6;22685;22650:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22741:6;22726:30;;;22749:6;22726:30;;;;;;:::i;:::-;;;;;;;;21876:888;;;;21834:930;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:77;1606:7;1635:5;1624:16;;1569:77;;;:::o;1652:122::-;1725:24;1743:5;1725:24;:::i;:::-;1718:5;1715:35;1705:63;;1764:1;1761;1754:12;1705:63;1652:122;:::o;1780:139::-;1826:5;1864:6;1851:20;1842:29;;1880:33;1907:5;1880:33;:::i;:::-;1780:139;;;;:::o;1925:329::-;1984:6;2033:2;2021:9;2012:7;2008:23;2004:32;2001:119;;;2039:79;;:::i;:::-;2001:119;2159:1;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;:::i;:::-;2174:63;;2130:117;1925:329;;;;:::o;2260:126::-;2297:7;2337:42;2330:5;2326:54;2315:65;;2260:126;;;:::o;2392:96::-;2429:7;2458:24;2476:5;2458:24;:::i;:::-;2447:35;;2392:96;;;:::o;2494:122::-;2567:24;2585:5;2567:24;:::i;:::-;2560:5;2557:35;2547:63;;2606:1;2603;2596:12;2547:63;2494:122;:::o;2622:139::-;2668:5;2706:6;2693:20;2684:29;;2722:33;2749:5;2722:33;:::i;:::-;2622:139;;;;:::o;2767:474::-;2835:6;2843;2892:2;2880:9;2871:7;2867:23;2863:32;2860:119;;;2898:79;;:::i;:::-;2860:119;3018:1;3043:53;3088:7;3079:6;3068:9;3064:22;3043:53;:::i;:::-;3033:63;;2989:117;3145:2;3171:53;3216:7;3207:6;3196:9;3192:22;3171:53;:::i;:::-;3161:63;;3116:118;2767:474;;;;;:::o;3247:90::-;3281:7;3324:5;3317:13;3310:21;3299:32;;3247:90;;;:::o;3343:109::-;3424:21;3439:5;3424:21;:::i;:::-;3419:3;3412:34;3343:109;;:::o;3458:210::-;3545:4;3583:2;3572:9;3568:18;3560:26;;3596:65;3658:1;3647:9;3643:17;3634:6;3596:65;:::i;:::-;3458:210;;;;:::o;3674:118::-;3761:24;3779:5;3761:24;:::i;:::-;3756:3;3749:37;3674:118;;:::o;3798:222::-;3891:4;3929:2;3918:9;3914:18;3906:26;;3942:71;4010:1;3999:9;3995:17;3986:6;3942:71;:::i;:::-;3798:222;;;;:::o;4026:60::-;4054:3;4075:5;4068:12;;4026:60;;;:::o;4092:142::-;4142:9;4175:53;4193:34;4202:24;4220:5;4202:24;:::i;:::-;4193:34;:::i;:::-;4175:53;:::i;:::-;4162:66;;4092:142;;;:::o;4240:126::-;4290:9;4323:37;4354:5;4323:37;:::i;:::-;4310:50;;4240:126;;;:::o;4372:147::-;4443:9;4476:37;4507:5;4476:37;:::i;:::-;4463:50;;4372:147;;;:::o;4525:173::-;4633:58;4685:5;4633:58;:::i;:::-;4628:3;4621:71;4525:173;;:::o;4704:264::-;4818:4;4856:2;4845:9;4841:18;4833:26;;4869:92;4958:1;4947:9;4943:17;4934:6;4869:92;:::i;:::-;4704:264;;;;:::o;4974:619::-;5051:6;5059;5067;5116:2;5104:9;5095:7;5091:23;5087:32;5084:119;;;5122:79;;:::i;:::-;5084:119;5242:1;5267:53;5312:7;5303:6;5292:9;5288:22;5267:53;:::i;:::-;5257:63;;5213:117;5369:2;5395:53;5440:7;5431:6;5420:9;5416:22;5395:53;:::i;:::-;5385:63;;5340:118;5497:2;5523:53;5568:7;5559:6;5548:9;5544:22;5523:53;:::i;:::-;5513:63;;5468:118;4974:619;;;;;:::o;5599:86::-;5634:7;5674:4;5667:5;5663:16;5652:27;;5599:86;;;:::o;5691:112::-;5774:22;5790:5;5774:22;:::i;:::-;5769:3;5762:35;5691:112;;:::o;5809:214::-;5898:4;5936:2;5925:9;5921:18;5913:26;;5949:67;6013:1;6002:9;5998:17;5989:6;5949:67;:::i;:::-;5809:214;;;;:::o;6029:329::-;6088:6;6137:2;6125:9;6116:7;6112:23;6108:32;6105:119;;;6143:79;;:::i;:::-;6105:119;6263:1;6288:53;6333:7;6324:6;6313:9;6309:22;6288:53;:::i;:::-;6278:63;;6234:117;6029:329;;;;:::o;6364:118::-;6451:24;6469:5;6451:24;:::i;:::-;6446:3;6439:37;6364:118;;:::o;6488:222::-;6581:4;6619:2;6608:9;6604:18;6596:26;;6632:71;6700:1;6689:9;6685:17;6676:6;6632:71;:::i;:::-;6488:222;;;;:::o;6716:116::-;6786:21;6801:5;6786:21;:::i;:::-;6779:5;6776:32;6766:60;;6822:1;6819;6812:12;6766:60;6716:116;:::o;6838:133::-;6881:5;6919:6;6906:20;6897:29;;6935:30;6959:5;6935:30;:::i;:::-;6838:133;;;;:::o;6977:468::-;7042:6;7050;7099:2;7087:9;7078:7;7074:23;7070:32;7067:119;;;7105:79;;:::i;:::-;7067:119;7225:1;7250:53;7295:7;7286:6;7275:9;7271:22;7250:53;:::i;:::-;7240:63;;7196:117;7352:2;7378:50;7420:7;7411:6;7400:9;7396:22;7378:50;:::i;:::-;7368:60;;7323:115;6977:468;;;;;:::o;7451:474::-;7519:6;7527;7576:2;7564:9;7555:7;7551:23;7547:32;7544:119;;;7582:79;;:::i;:::-;7544:119;7702:1;7727:53;7772:7;7763:6;7752:9;7748:22;7727:53;:::i;:::-;7717:63;;7673:117;7829:2;7855:53;7900:7;7891:6;7880:9;7876:22;7855:53;:::i;:::-;7845:63;;7800:118;7451:474;;;;;:::o;7931:182::-;8071:34;8067:1;8059:6;8055:14;8048:58;7931:182;:::o;8119:366::-;8261:3;8282:67;8346:2;8341:3;8282:67;:::i;:::-;8275:74;;8358:93;8447:3;8358:93;:::i;:::-;8476:2;8471:3;8467:12;8460:19;;8119:366;;;:::o;8491:419::-;8657:4;8695:2;8684:9;8680:18;8672:26;;8744:9;8738:4;8734:20;8730:1;8719:9;8715:17;8708:47;8772:131;8898:4;8772:131;:::i;:::-;8764:139;;8491:419;;;:::o;8916:170::-;9056:22;9052:1;9044:6;9040:14;9033:46;8916:170;:::o;9092:366::-;9234:3;9255:67;9319:2;9314:3;9255:67;:::i;:::-;9248:74;;9331:93;9420:3;9331:93;:::i;:::-;9449:2;9444:3;9440:12;9433:19;;9092:366;;;:::o;9464:419::-;9630:4;9668:2;9657:9;9653:18;9645:26;;9717:9;9711:4;9707:20;9703:1;9692:9;9688:17;9681:47;9745:131;9871:4;9745:131;:::i;:::-;9737:139;;9464:419;;;:::o;9889:180::-;9937:77;9934:1;9927:88;10034:4;10031:1;10024:15;10058:4;10055:1;10048:15;10075:194;10115:4;10135:20;10153:1;10135:20;:::i;:::-;10130:25;;10169:20;10187:1;10169:20;:::i;:::-;10164:25;;10213:1;10210;10206:9;10198:17;;10237:1;10231:4;10228:11;10225:37;;;10242:18;;:::i;:::-;10225:37;10075:194;;;;:::o;10275:191::-;10315:3;10334:20;10352:1;10334:20;:::i;:::-;10329:25;;10368:20;10386:1;10368:20;:::i;:::-;10363:25;;10411:1;10408;10404:9;10397:16;;10432:3;10429:1;10426:10;10423:36;;;10439:18;;:::i;:::-;10423:36;10275:191;;;;:::o;10472:168::-;10612:20;10608:1;10600:6;10596:14;10589:44;10472:168;:::o;10646:366::-;10788:3;10809:67;10873:2;10868:3;10809:67;:::i;:::-;10802:74;;10885:93;10974:3;10885:93;:::i;:::-;11003:2;10998:3;10994:12;10987:19;;10646:366;;;:::o;11018:419::-;11184:4;11222:2;11211:9;11207:18;11199:26;;11271:9;11265:4;11261:20;11257:1;11246:9;11242:17;11235:47;11299:131;11425:4;11299:131;:::i;:::-;11291:139;;11018:419;;;:::o;11443:102::-;11485:8;11532:5;11529:1;11525:13;11504:34;;11443:102;;;:::o;11551:848::-;11612:5;11619:4;11643:6;11634:15;;11667:5;11658:14;;11681:712;11702:1;11692:8;11689:15;11681:712;;;11797:4;11792:3;11788:14;11782:4;11779:24;11776:50;;;11806:18;;:::i;:::-;11776:50;11856:1;11846:8;11842:16;11839:451;;;12271:4;12264:5;12260:16;12251:25;;11839:451;12321:4;12315;12311:15;12303:23;;12351:32;12374:8;12351:32;:::i;:::-;12339:44;;11681:712;;;11551:848;;;;;;;:::o;12405:1073::-;12459:5;12650:8;12640:40;;12671:1;12662:10;;12673:5;;12640:40;12699:4;12689:36;;12716:1;12707:10;;12718:5;;12689:36;12785:4;12833:1;12828:27;;;;12869:1;12864:191;;;;12778:277;;12828:27;12846:1;12837:10;;12848:5;;;12864:191;12909:3;12899:8;12896:17;12893:43;;;12916:18;;:::i;:::-;12893:43;12965:8;12962:1;12958:16;12949:25;;13000:3;12993:5;12990:14;12987:40;;;13007:18;;:::i;:::-;12987:40;13040:5;;;12778:277;;13164:2;13154:8;13151:16;13145:3;13139:4;13136:13;13132:36;13114:2;13104:8;13101:16;13096:2;13090:4;13087:12;13083:35;13067:111;13064:246;;;13220:8;13214:4;13210:19;13201:28;;13255:3;13248:5;13245:14;13242:40;;;13262:18;;:::i;:::-;13242:40;13295:5;;13064:246;13335:42;13373:3;13363:8;13357:4;13354:1;13335:42;:::i;:::-;13320:57;;;;13409:4;13404:3;13400:14;13393:5;13390:25;13387:51;;;13418:18;;:::i;:::-;13387:51;13467:4;13460:5;13456:16;13447:25;;12405:1073;;;;;;:::o;13484:281::-;13542:5;13566:23;13584:4;13566:23;:::i;:::-;13558:31;;13610:25;13626:8;13610:25;:::i;:::-;13598:37;;13654:104;13691:66;13681:8;13675:4;13654:104;:::i;:::-;13645:113;;13484:281;;;;:::o;13771:410::-;13811:7;13834:20;13852:1;13834:20;:::i;:::-;13829:25;;13868:20;13886:1;13868:20;:::i;:::-;13863:25;;13923:1;13920;13916:9;13945:30;13963:11;13945:30;:::i;:::-;13934:41;;14124:1;14115:7;14111:15;14108:1;14105:22;14085:1;14078:9;14058:83;14035:139;;14154:18;;:::i;:::-;14035:139;13819:362;13771:410;;;;:::o;14187:114::-;14224:7;14264:30;14257:5;14253:42;14242:53;;14187:114;;;:::o;14307:122::-;14380:24;14398:5;14380:24;:::i;:::-;14373:5;14370:35;14360:63;;14419:1;14416;14409:12;14360:63;14307:122;:::o;14435:143::-;14492:5;14523:6;14517:13;14508:22;;14539:33;14566:5;14539:33;:::i;:::-;14435:143;;;;:::o;14584:93::-;14620:7;14660:10;14653:5;14649:22;14638:33;;14584:93;;;:::o;14683:120::-;14755:23;14772:5;14755:23;:::i;:::-;14748:5;14745:34;14735:62;;14793:1;14790;14783:12;14735:62;14683:120;:::o;14809:141::-;14865:5;14896:6;14890:13;14881:22;;14912:32;14938:5;14912:32;:::i;:::-;14809:141;;;;:::o;14956:661::-;15043:6;15051;15059;15108:2;15096:9;15087:7;15083:23;15079:32;15076:119;;;15114:79;;:::i;:::-;15076:119;15234:1;15259:64;15315:7;15306:6;15295:9;15291:22;15259:64;:::i;:::-;15249:74;;15205:128;15372:2;15398:64;15454:7;15445:6;15434:9;15430:22;15398:64;:::i;:::-;15388:74;;15343:129;15511:2;15537:63;15592:7;15583:6;15572:9;15568:22;15537:63;:::i;:::-;15527:73;;15482:128;14956:661;;;;;:::o;15623:143::-;15680:5;15711:6;15705:13;15696:22;;15727:33;15754:5;15727:33;:::i;:::-;15623:143;;;;:::o;15772:351::-;15842:6;15891:2;15879:9;15870:7;15866:23;15862:32;15859:119;;;15897:79;;:::i;:::-;15859:119;16017:1;16042:64;16098:7;16089:6;16078:9;16074:22;16042:64;:::i;:::-;16032:74;;15988:128;15772:351;;;;:::o;16129:180::-;16177:77;16174:1;16167:88;16274:4;16271:1;16264:15;16298:4;16295:1;16288:15;16315:185;16355:1;16372:20;16390:1;16372:20;:::i;:::-;16367:25;;16406:20;16424:1;16406:20;:::i;:::-;16401:25;;16445:1;16435:35;;16450:18;;:::i;:::-;16435:35;16492:1;16489;16485:9;16480:14;;16315:185;;;;:::o;16506:223::-;16646:34;16642:1;16634:6;16630:14;16623:58;16715:6;16710:2;16702:6;16698:15;16691:31;16506:223;:::o;16735:366::-;16877:3;16898:67;16962:2;16957:3;16898:67;:::i;:::-;16891:74;;16974:93;17063:3;16974:93;:::i;:::-;17092:2;17087:3;17083:12;17076:19;;16735:366;;;:::o;17107:419::-;17273:4;17311:2;17300:9;17296:18;17288:26;;17360:9;17354:4;17350:20;17346:1;17335:9;17331:17;17324:47;17388:131;17514:4;17388:131;:::i;:::-;17380:139;;17107:419;;;:::o;17532:173::-;17672:25;17668:1;17660:6;17656:14;17649:49;17532:173;:::o;17711:366::-;17853:3;17874:67;17938:2;17933:3;17874:67;:::i;:::-;17867:74;;17950:93;18039:3;17950:93;:::i;:::-;18068:2;18063:3;18059:12;18052:19;;17711:366;;;:::o;18083:419::-;18249:4;18287:2;18276:9;18272:18;18264:26;;18336:9;18330:4;18326:20;18322:1;18311:9;18307:17;18300:47;18364:131;18490:4;18364:131;:::i;:::-;18356:139;;18083:419;;;:::o;18508:332::-;18629:4;18667:2;18656:9;18652:18;18644:26;;18680:71;18748:1;18737:9;18733:17;18724:6;18680:71;:::i;:::-;18761:72;18829:2;18818:9;18814:18;18805:6;18761:72;:::i;:::-;18508:332;;;;;:::o;18846:85::-;18891:7;18920:5;18909:16;;18846:85;;;:::o;18937:158::-;18995:9;19028:61;19046:42;19055:32;19081:5;19055:32;:::i;:::-;19046:42;:::i;:::-;19028:61;:::i;:::-;19015:74;;18937:158;;;:::o;19101:147::-;19196:45;19235:5;19196:45;:::i;:::-;19191:3;19184:58;19101:147;;:::o;19254:807::-;19503:4;19541:3;19530:9;19526:19;19518:27;;19555:71;19623:1;19612:9;19608:17;19599:6;19555:71;:::i;:::-;19636:72;19704:2;19693:9;19689:18;19680:6;19636:72;:::i;:::-;19718:80;19794:2;19783:9;19779:18;19770:6;19718:80;:::i;:::-;19808;19884:2;19873:9;19869:18;19860:6;19808:80;:::i;:::-;19898:73;19966:3;19955:9;19951:19;19942:6;19898:73;:::i;:::-;19981;20049:3;20038:9;20034:19;20025:6;19981:73;:::i;:::-;19254:807;;;;;;;;;:::o;20067:143::-;20124:5;20155:6;20149:13;20140:22;;20171:33;20198:5;20171:33;:::i;:::-;20067:143;;;;:::o;20216:663::-;20304:6;20312;20320;20369:2;20357:9;20348:7;20344:23;20340:32;20337:119;;;20375:79;;:::i;:::-;20337:119;20495:1;20520:64;20576:7;20567:6;20556:9;20552:22;20520:64;:::i;:::-;20510:74;;20466:128;20633:2;20659:64;20715:7;20706:6;20695:9;20691:22;20659:64;:::i;:::-;20649:74;;20604:129;20772:2;20798:64;20854:7;20845:6;20834:9;20830:22;20798:64;:::i;:::-;20788:74;;20743:129;20216:663;;;;;:::o;20885:332::-;21006:4;21044:2;21033:9;21029:18;21021:26;;21057:71;21125:1;21114:9;21110:17;21101:6;21057:71;:::i;:::-;21138:72;21206:2;21195:9;21191:18;21182:6;21138:72;:::i;:::-;20885:332;;;;;:::o;21223:137::-;21277:5;21308:6;21302:13;21293:22;;21324:30;21348:5;21324:30;:::i;:::-;21223:137;;;;:::o;21366:345::-;21433:6;21482:2;21470:9;21461:7;21457:23;21453:32;21450:119;;;21488:79;;:::i;:::-;21450:119;21608:1;21633:61;21686:7;21677:6;21666:9;21662:22;21633:61;:::i;:::-;21623:71;;21579:125;21366:345;;;;:::o;21717:223::-;21857:34;21853:1;21845:6;21841:14;21834:58;21926:6;21921:2;21913:6;21909:15;21902:31;21717:223;:::o;21946:366::-;22088:3;22109:67;22173:2;22168:3;22109:67;:::i;:::-;22102:74;;22185:93;22274:3;22185:93;:::i;:::-;22303:2;22298:3;22294:12;22287:19;;21946:366;;;:::o;22318:419::-;22484:4;22522:2;22511:9;22507:18;22499:26;;22571:9;22565:4;22561:20;22557:1;22546:9;22542:17;22535:47;22599:131;22725:4;22599:131;:::i;:::-;22591:139;;22318:419;;;:::o;22743:221::-;22883:34;22879:1;22871:6;22867:14;22860:58;22952:4;22947:2;22939:6;22935:15;22928:29;22743:221;:::o;22970:366::-;23112:3;23133:67;23197:2;23192:3;23133:67;:::i;:::-;23126:74;;23209:93;23298:3;23209:93;:::i;:::-;23327:2;23322:3;23318:12;23311:19;;22970:366;;;:::o;23342:419::-;23508:4;23546:2;23535:9;23531:18;23523:26;;23595:9;23589:4;23585:20;23581:1;23570:9;23566:17;23559:47;23623:131;23749:4;23623:131;:::i;:::-;23615:139;;23342:419;;;:::o;23767:224::-;23907:34;23903:1;23895:6;23891:14;23884:58;23976:7;23971:2;23963:6;23959:15;23952:32;23767:224;:::o;23997:366::-;24139:3;24160:67;24224:2;24219:3;24160:67;:::i;:::-;24153:74;;24236:93;24325:3;24236:93;:::i;:::-;24354:2;24349:3;24345:12;24338:19;;23997:366;;;:::o;24369:419::-;24535:4;24573:2;24562:9;24558:18;24550:26;;24622:9;24616:4;24612:20;24608:1;24597:9;24593:17;24586:47;24650:131;24776:4;24650:131;:::i;:::-;24642:139;;24369:419;;;:::o;24794:222::-;24934:34;24930:1;24922:6;24918:14;24911:58;25003:5;24998:2;24990:6;24986:15;24979:30;24794:222;:::o;25022:366::-;25164:3;25185:67;25249:2;25244:3;25185:67;:::i;:::-;25178:74;;25261:93;25350:3;25261:93;:::i;:::-;25379:2;25374:3;25370:12;25363:19;;25022:366;;;:::o;25394:419::-;25560:4;25598:2;25587:9;25583:18;25575:26;;25647:9;25641:4;25637:20;25633:1;25622:9;25618:17;25611:47;25675:131;25801:4;25675:131;:::i;:::-;25667:139;;25394:419;;;:::o;25819:228::-;25959:34;25955:1;25947:6;25943:14;25936:58;26028:11;26023:2;26015:6;26011:15;26004:36;25819:228;:::o;26053:366::-;26195:3;26216:67;26280:2;26275:3;26216:67;:::i;:::-;26209:74;;26292:93;26381:3;26292:93;:::i;:::-;26410:2;26405:3;26401:12;26394:19;;26053:366;;;:::o;26425:419::-;26591:4;26629:2;26618:9;26614:18;26606:26;;26678:9;26672:4;26668:20;26664:1;26653:9;26649:17;26642:47;26706:131;26832:4;26706:131;:::i;:::-;26698:139;;26425:419;;;:::o;26850:175::-;26990:27;26986:1;26978:6;26974:14;26967:51;26850:175;:::o;27031:366::-;27173:3;27194:67;27258:2;27253:3;27194:67;:::i;:::-;27187:74;;27270:93;27359:3;27270:93;:::i;:::-;27388:2;27383:3;27379:12;27372:19;;27031:366;;;:::o;27403:419::-;27569:4;27607:2;27596:9;27592:18;27584:26;;27656:9;27650:4;27646:20;27642:1;27631:9;27627:17;27620:47;27684:131;27810:4;27684:131;:::i;:::-;27676:139;;27403:419;;;:::o;27828:176::-;27968:28;27964:1;27956:6;27952:14;27945:52;27828:176;:::o;28010:366::-;28152:3;28173:67;28237:2;28232:3;28173:67;:::i;:::-;28166:74;;28249:93;28338:3;28249:93;:::i;:::-;28367:2;28362:3;28358:12;28351:19;;28010:366;;;:::o;28382:419::-;28548:4;28586:2;28575:9;28571:18;28563:26;;28635:9;28629:4;28625:20;28621:1;28610:9;28606:17;28599:47;28663:131;28789:4;28663:131;:::i;:::-;28655:139;;28382:419;;;:::o;28807:351::-;28877:6;28926:2;28914:9;28905:7;28901:23;28897:32;28894:119;;;28932:79;;:::i;:::-;28894:119;29052:1;29077:64;29133:7;29124:6;29113:9;29109:22;29077:64;:::i;:::-;29067:74;;29023:128;28807:351;;;;:::o;29164:79::-;29203:7;29232:5;29221:16;;29164:79;;;:::o;29249:157::-;29354:45;29374:24;29392:5;29374:24;:::i;:::-;29354:45;:::i;:::-;29349:3;29342:58;29249:157;;:::o;29412:397::-;29552:3;29567:75;29638:3;29629:6;29567:75;:::i;:::-;29667:2;29662:3;29658:12;29651:19;;29680:75;29751:3;29742:6;29680:75;:::i;:::-;29780:2;29775:3;29771:12;29764:19;;29800:3;29793:10;;29412:397;;;;;:::o;29815:176::-;29847:1;29864:20;29882:1;29864:20;:::i;:::-;29859:25;;29898:20;29916:1;29898:20;:::i;:::-;29893:25;;29937:1;29927:35;;29942:18;;:::i;:::-;29927:35;29983:1;29980;29976:9;29971:14;;29815:176;;;;:::o;29997:164::-;30137:16;30133:1;30125:6;30121:14;30114:40;29997:164;:::o;30167:366::-;30309:3;30330:67;30394:2;30389:3;30330:67;:::i;:::-;30323:74;;30406:93;30495:3;30406:93;:::i;:::-;30524:2;30519:3;30515:12;30508:19;;30167:366;;;:::o;30539:639::-;30761:4;30799:2;30788:9;30784:18;30776:26;;30812:71;30880:1;30869:9;30865:17;30856:6;30812:71;:::i;:::-;30893:72;30961:2;30950:9;30946:18;30937:6;30893:72;:::i;:::-;31012:9;31006:4;31002:20;30997:2;30986:9;30982:18;30975:48;31040:131;31166:4;31040:131;:::i;:::-;31032:139;;30539:639;;;;;:::o;31184:162::-;31324:14;31320:1;31312:6;31308:14;31301:38;31184:162;:::o;31352:366::-;31494:3;31515:67;31579:2;31574:3;31515:67;:::i;:::-;31508:74;;31591:93;31680:3;31591:93;:::i;:::-;31709:2;31704:3;31700:12;31693:19;;31352:366;;;:::o;31724:639::-;31946:4;31984:2;31973:9;31969:18;31961:26;;31997:71;32065:1;32054:9;32050:17;32041:6;31997:71;:::i;:::-;32078:72;32146:2;32135:9;32131:18;32122:6;32078:72;:::i;:::-;32197:9;32191:4;32187:20;32182:2;32171:9;32167:18;32160:48;32225:131;32351:4;32225:131;:::i;:::-;32217:139;;31724:639;;;;;:::o

Swarm Source

ipfs://9c42cb212a2249d45c104b8fd4ebbd3cee7866f6efa9b01c12bafeba5398de8d
[ 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.