ETH Price: $2,911.98 (-3.90%)
Gas: 2 Gwei

Contract

0xa867B3AEbdf582A27418D74254d69B36f05A193e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve194887932024-03-22 7:51:47107 days ago1711093907IN
0xa867B3AE...6f05A193e
0 ETH0.0012351326.13444488
Approve190189012024-01-16 10:37:59173 days ago1705401479IN
0xa867B3AE...6f05A193e
0 ETH0.0008084632.44625028
Approve185525272023-11-12 1:21:59239 days ago1699752119IN
0xa867B3AE...6f05A193e
0 ETH0.0013342428.23145667
Approve182093452023-09-25 0:51:11287 days ago1695603071IN
0xa867B3AE...6f05A193e
0 ETH0.000202516.81464545
Approve179992192023-08-26 13:44:35316 days ago1693057475IN
0xa867B3AE...6f05A193e
0 ETH0.0005900512.57115471
Approve178442262023-08-04 21:14:11338 days ago1691183651IN
0xa867B3AE...6f05A193e
0 ETH0.0009014219.20494554
Approve178102652023-07-31 3:20:11343 days ago1690773611IN
0xa867B3AE...6f05A193e
0 ETH0.0006231513.25955623
Approve177327172023-07-20 6:52:47353 days ago1689835967IN
0xa867B3AE...6f05A193e
0 ETH0.0007498815.97646301
Approve176611212023-07-10 5:14:47363 days ago1688966087IN
0xa867B3AE...6f05A193e
0 ETH0.0003317313.31341252
Approve176552992023-07-09 9:35:47364 days ago1688895347IN
0xa867B3AE...6f05A193e
0 ETH0.0007617316.22885193
Approve176403212023-07-07 7:03:35366 days ago1688713415IN
0xa867B3AE...6f05A193e
0 ETH0.0004905319.63945472
Approve176148102023-07-03 17:06:11370 days ago1688403971IN
0xa867B3AE...6f05A193e
0 ETH0.0012221526.00497052
Approve175674192023-06-27 1:22:35377 days ago1687828955IN
0xa867B3AE...6f05A193e
0 ETH0.0007948816.93075139
Approve175608692023-06-26 3:15:11378 days ago1687749311IN
0xa867B3AE...6f05A193e
0 ETH0.0006346613.44600794
Approve175608292023-06-26 3:06:59378 days ago1687748819IN
0xa867B3AE...6f05A193e
0 ETH0.0005843812.3808441
Approve175535832023-06-25 2:38:11379 days ago1687660691IN
0xa867B3AE...6f05A193e
0 ETH0.0005755612.17833637
Approve175501822023-06-24 15:10:23379 days ago1687619423IN
0xa867B3AE...6f05A193e
0 ETH0.0010438522.23940695
Approve175436622023-06-23 17:09:47380 days ago1687540187IN
0xa867B3AE...6f05A193e
0 ETH0.001436230.4274088
Approve175326292023-06-22 3:55:59382 days ago1687406159IN
0xa867B3AE...6f05A193e
0 ETH0.0007091615.1087958
Approve175326052023-06-22 3:51:11382 days ago1687405871IN
0xa867B3AE...6f05A193e
0 ETH0.0006854514.50361603
Approve175306722023-06-21 21:20:23382 days ago1687382423IN
0xa867B3AE...6f05A193e
0 ETH0.0009763220.77428047
Approve175123742023-06-19 7:41:59384 days ago1687160519IN
0xa867B3AE...6f05A193e
0 ETH0.0006736514.27207695
Approve175122202023-06-19 7:10:47384 days ago1687158647IN
0xa867B3AE...6f05A193e
0 ETH0.0004396814.60688538
Approve175111222023-06-19 3:28:59385 days ago1687145339IN
0xa867B3AE...6f05A193e
0 ETH0.0006589713.9610839
Approve174997812023-06-17 13:19:11386 days ago1687007951IN
0xa867B3AE...6f05A193e
0 ETH0.0007494815.9638836
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
174793372023-06-14 16:22:35389 days ago1686759755
0xa867B3AE...6f05A193e
0.00560925 ETH
174793372023-06-14 16:22:35389 days ago1686759755
0xa867B3AE...6f05A193e
0.00560925 ETH
174793262023-06-14 16:20:23389 days ago1686759623
0xa867B3AE...6f05A193e
0.00640206 ETH
174793262023-06-14 16:20:23389 days ago1686759623
0xa867B3AE...6f05A193e
0.00640206 ETH
174793192023-06-14 16:18:59389 days ago1686759539
0xa867B3AE...6f05A193e
0.00618359 ETH
174793192023-06-14 16:18:59389 days ago1686759539
0xa867B3AE...6f05A193e
0.00618359 ETH
174793142023-06-14 16:17:59389 days ago1686759479
0xa867B3AE...6f05A193e
0.1041248 ETH
174793142023-06-14 16:17:59389 days ago1686759479
0xa867B3AE...6f05A193e
0.1041248 ETH
174793062023-06-14 16:16:23389 days ago1686759383
0xa867B3AE...6f05A193e
0.1041248 ETH
174793062023-06-14 16:16:23389 days ago1686759383
0xa867B3AE...6f05A193e
0.1041248 ETH
174793062023-06-14 16:16:23389 days ago1686759383
0xa867B3AE...6f05A193e
0.07010204 ETH
174793062023-06-14 16:16:23389 days ago1686759383
0xa867B3AE...6f05A193e
0.07010204 ETH
174793052023-06-14 16:16:11389 days ago1686759371
0xa867B3AE...6f05A193e
0.00744853 ETH
174793052023-06-14 16:16:11389 days ago1686759371
0xa867B3AE...6f05A193e
0.00744853 ETH
174793022023-06-14 16:15:35389 days ago1686759335
0xa867B3AE...6f05A193e
0.00561357 ETH
174793022023-06-14 16:15:35389 days ago1686759335
0xa867B3AE...6f05A193e
0.00561357 ETH
174793022023-06-14 16:15:35389 days ago1686759335
0xa867B3AE...6f05A193e
0.00645823 ETH
174793022023-06-14 16:15:35389 days ago1686759335
0xa867B3AE...6f05A193e
0.00645823 ETH
174793022023-06-14 16:15:35389 days ago1686759335
0xa867B3AE...6f05A193e
0.03042867 ETH
174793022023-06-14 16:15:35389 days ago1686759335
0xa867B3AE...6f05A193e
0.03042867 ETH
174793022023-06-14 16:15:35389 days ago1686759335
0xa867B3AE...6f05A193e
0.00773433 ETH
174793022023-06-14 16:15:35389 days ago1686759335
0xa867B3AE...6f05A193e
0.00773433 ETH
174793012023-06-14 16:15:23389 days ago1686759323
0xa867B3AE...6f05A193e
0.04075399 ETH
174793012023-06-14 16:15:23389 days ago1686759323
0xa867B3AE...6f05A193e
0.04075399 ETH
174792992023-06-14 16:14:59389 days ago1686759299
0xa867B3AE...6f05A193e
0.04832956 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CultToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-12
*/

/**
 *       https://twitter.com/cult_initiation
 *       https://t.me/cult_initation
 **/

/**


⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣞⣋⣉⣳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⣋⣉⣄⣉⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠋⡉⢉⠁⣈⠛⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⡉⠁⠉⣄⢉⡉⠙⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠯⡽⠋⠉⠁⣁⠈⠉⠛⠛⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠆⣸⣅⣁⣬⣭⣌⣉⣜⡓⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⡿⡿⠿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⢿⣍⠉⠃⠀⠀⣀⣴⠛⠀⣹⠟⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣟⣻⡶⠚⠚⠋⠩⠍⠿⠭⣽⣿⣧⣞⠉⢻⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣾⣿⡷⠋⠁⠀⠀⠀⣀⣀⣤⣤⣤⣀⡈⢹⣻⣷⣴⣷⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⣼⡟⠛⠀⣠⡴⣶⣿⡟⠛⢻⣿⣿⣿⣿⢿⢷⣿⣿⣙⣯⣷⡀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡜⠛⣤⣶⣿⣿⡇⢿⣿⣷⣄⣘⣿⣿⣿⡿⡼⠺⠛⣿⣿⣿⡟⣷⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣸⢛⡛⡿⠿⣷⣧⠹⣌⢿⡋⠉⠛⣛⣿⣿⠟⢡⠆⣰⣿⣿⣿⠿⢮⣧⠀⠀⠀⠀
⠀⠀⠀⡰⢷⡤⠏⢁⠀⠈⠛⠃⠈⠀⠈⠉⠛⠛⠉⠁⠀⠉⣀⣬⣿⣿⣿⠿⠦⣙⣧⠀⠀⠀
⠀⠀⢰⠛⣿⠛⠦⠀⡀⠒⠀⠀⠐⠦⠤⠤⠤⠤⠴⠖⢒⣻⢷⣛⣿⡈⠉⢤⡒⠛⢻⣆⠀⠀
⠀⢠⣻⣯⡉⢳⡶⠤⣍⡉⢐⡒⠒⠐⠲⣶⢶⣤⠀⢰⣾⣟⣻⣿⡷⠴⠖⣾⠛⢻⣍⠙⣆⠀
⢠⠿⣬⡉⣹⡿⠦⠀⢤⣄⠀⠹⠏⢹⠛⠋⢋⣟⢉⡍⢉⣭⠠⣶⠀⠴⠓⠛⠛⠿⣽⣿⣿⡆
⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉
 **/

pragma solidity ^0.8.0;

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

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

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

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

// File @openzeppelin/contracts/access/[email protected]

// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]

// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract CultToken is IERC20, Ownable {
    using SafeMath for uint256;

    address private constant UNISWAP_ROUTER =
        0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private constant UNISWAP_FACTORY =
        0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    string private constant _name = "Cult Coin";
    string private constant _symbol = "$CULT";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 333000000 * 10 ** 18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots;
    mapping(address => uint256) public _buyMap;

    address payable private _developmentAddress =
        payable(0xd0f0c2D1F8fda751c56fB06Eabe070D4DeAdcF01); //Dev Address
    address payable private _marketingAddress =
        payable(0xd0f0c2D1F8fda751c56fB06Eabe070D4DeAdcF01); // Marketing Address

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 1000000000000000000 * 10 ** 18;
    uint256 public _maxWalletSize = 1000000000000000000 * 10 ** 18;
    uint256 public _swapTokensAtAmount = 10000 * 10 ** 18;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            UNISWAP_ROUTER
        ); //
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        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 view override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

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

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(address 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");

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(
                !bots[from] && !bots[to],
                "TOKEN: Your account is blacklisted!"
            );

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletSize,
                    "TOKEN: Balance exceeds wallet size!"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                swapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            //Set Fee for Buys
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
                uint256 amountToBurn = amount.mul(_taxFee).div(100);
                _tTotal -= amountToBurn;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

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

    ///Withdrawls any eth that's sent to this contract
    function manualswap() external {
        require(
            _msgSender() == _developmentAddress ||
                _msgSender() == _marketingAddress
        );
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    ///Withdrawls any erc20 that's sent to this contract
    function manualsend() external {
        require(
            _msgSender() == _developmentAddress ||
                _msgSender() == _marketingAddress
        );
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

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

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

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

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(
        uint256 tAmount
    )
        private
        view
        returns (uint256, uint256, uint256, uint256, uint256, uint256)
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _redisFee,
            _taxFee
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    ) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    ) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(
        uint256 swapTokensAtAmount
    ) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"name":"_swapTokensAtAmount","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b0113737e2c00911a6d00000060055560055460001962000026919062000894565b6000196200003591906200081b565b600655600060085560006009556000600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f5573d0f0c2d1f8fda751c56fb06eabe070d4deadcf01601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d0f0c2d1f8fda751c56fb06eabe070d4deadcf01601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506ec097ce7bc90715b34b9f10000000006016556ec097ce7bc90715b34b9f100000000060175569021e19e0c9bab24000006018553480156200019f57600080fd5b50620001c0620001b46200067760201b60201c565b6200067f60201b60201c565b60065460016000620001d76200067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b657600080fd5b505afa158015620002cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f1919062000783565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035457600080fd5b505afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000783565b6040518363ffffffff1660e01b8152600401620003ae929190620007d1565b602060405180830381600087803b158015620003c957600080fd5b505af1158015620003de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000404919062000783565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006200045a6200074360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006076200067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620006689190620007fe565b60405180910390a35062000944565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200077d816200092a565b92915050565b6000602082840312156200079657600080fd5b6000620007a6848285016200076c565b91505092915050565b620007ba8162000856565b82525050565b620007cb816200088a565b82525050565b6000604082019050620007e86000830185620007af565b620007f76020830184620007af565b9392505050565b6000602082019050620008156000830184620007c0565b92915050565b600062000828826200088a565b915062000835836200088a565b9250828210156200084b576200084a620008cc565b5b828203905092915050565b600062000863826200086a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620008a1826200088a565b9150620008ae836200088a565b925082620008c157620008c0620008fb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620009358162000856565b81146200094157600080fd5b50565b613b8280620009546000396000f3fe6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612d80565b610714565b005b34801561021157600080fd5b5061021a61084b565b6040516102279190613501565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612cec565b610888565b60405161026491906134cb565b60405180910390f35b34801561027957600080fd5b506102826108a6565b60405161028f91906134e6565b60405180910390f35b3480156102a457600080fd5b506102ad6108cc565b6040516102ba91906136e3565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612c9d565b6108d6565b6040516102f791906134cb565b60405180910390f35b34801561030c57600080fd5b506103156109af565b60405161032291906136e3565b60405180910390f35b34801561033757600080fd5b506103406109b5565b60405161034d9190613758565b60405180910390f35b34801561036257600080fd5b5061036b6109be565b60405161037891906134b0565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190612c0f565b6109e4565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612dc1565b610abb565b005b3480156103df57600080fd5b506103e8610b54565b005b3480156103f657600080fd5b50610411600480360381019061040c9190612c0f565b610c25565b60405161041e91906136e3565b60405180910390f35b34801561043357600080fd5b5061043c610c76565b005b34801561044a57600080fd5b5061046560048036038101906104609190612dea565b610cfe565b005b34801561047357600080fd5b5061047c610d84565b60405161048991906136e3565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190612c0f565b610d8a565b6040516104c691906136e3565b60405180910390f35b3480156104db57600080fd5b506104e4610da2565b6040516104f191906134b0565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190612dc1565b610dcb565b005b34801561052f57600080fd5b50610538610e64565b60405161054591906136e3565b60405180910390f35b34801561055a57600080fd5b50610563610e6a565b6040516105709190613501565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190612dea565b610ea7565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190612e13565b610f2d565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612cec565b610fcb565b6040516105ff91906134cb565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190612c0f565b610fe9565b60405161063c91906134cb565b60405180910390f35b34801561065157600080fd5b5061065a611009565b005b34801561066857600080fd5b50610683600480360381019061067e9190612d28565b6110e2565b005b34801561069157600080fd5b506106ac60048036038101906106a79190612c61565b611229565b6040516106b991906136e3565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190612dea565b6112b0565b005b3480156106f757600080fd5b50610712600480360381019061070d9190612c0f565b611336565b005b61071c61142e565b73ffffffffffffffffffffffffffffffffffffffff1661073a610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078790613643565b60405180910390fd5b60005b8151811015610847576001601060008484815181106107db577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061083f906139f8565b915050610793565b5050565b60606040518060400160405280600981526020017f43756c7420436f696e0000000000000000000000000000000000000000000000815250905090565b600061089c61089561142e565b8484611436565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b60006108e3848484611601565b6109a4846108ef61142e565b61099f85604051806060016040528060288152602001613b2560289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095561142e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ecc9092919063ffffffff16565b611436565b600190509392505050565b60185481565b60006012905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ec61142e565b73ffffffffffffffffffffffffffffffffffffffff16610a0a610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790613643565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ac361142e565b73ffffffffffffffffffffffffffffffffffffffff16610ae1610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90613643565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b9561142e565b73ffffffffffffffffffffffffffffffffffffffff161480610c0b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf361142e565b73ffffffffffffffffffffffffffffffffffffffff16145b610c1457600080fd5b6000479050610c2281611f30565b50565b6000610c6f600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9c565b9050919050565b610c7e61142e565b73ffffffffffffffffffffffffffffffffffffffff16610c9c610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990613643565b60405180910390fd5b610cfc600061200a565b565b610d0661142e565b73ffffffffffffffffffffffffffffffffffffffff16610d24610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190613643565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dd361142e565b73ffffffffffffffffffffffffffffffffffffffff16610df1610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90613643565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f2443554c54000000000000000000000000000000000000000000000000000000815250905090565b610eaf61142e565b73ffffffffffffffffffffffffffffffffffffffff16610ecd610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a90613643565b60405180910390fd5b8060188190555050565b610f3561142e565b73ffffffffffffffffffffffffffffffffffffffff16610f53610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090613643565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610fdf610fd861142e565b8484611601565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661104a61142e565b73ffffffffffffffffffffffffffffffffffffffff1614806110c05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110a861142e565b73ffffffffffffffffffffffffffffffffffffffff16145b6110c957600080fd5b60006110d430610c25565b90506110df816120ce565b50565b6110ea61142e565b73ffffffffffffffffffffffffffffffffffffffff16611108610da2565b73ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115590613643565b60405180910390fd5b60005b838390508110156112235781600460008686858181106111aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906111bf9190612c0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061121b906139f8565b915050611161565b50505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112b861142e565b73ffffffffffffffffffffffffffffffffffffffff166112d6610da2565b73ffffffffffffffffffffffffffffffffffffffff161461132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390613643565b60405180910390fd5b8060178190555050565b61133e61142e565b73ffffffffffffffffffffffffffffffffffffffff1661135c610da2565b73ffffffffffffffffffffffffffffffffffffffff16146113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990613643565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906135a3565b60405180910390fd5b61142b8161200a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d906136c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906135c3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115f491906136e3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613683565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d890613523565b60405180910390fd5b60008111611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b90613663565b60405180910390fd5b61172c610da2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561179a575061176a610da2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b8557601560149054906101000a900460ff16611829576117bb610da2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613543565b60405180910390fd5b5b60165481111561186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613583565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119125750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611951576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611948906135e3565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146119fe57601754816119b384610c25565b6119bd9190613825565b106119fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f4906136a3565b60405180910390fd5b5b6000611a0930610c25565b9050600060185482101590506016548210611a245760165491505b808015611a3c575060158054906101000a900460ff16155b8015611a965750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611aae5750601560169054906101000a900460ff165b8015611b045750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b5a5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b8257611b68826120ce565b60004790506000811115611b8057611b7f47611f30565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c2c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611cdf5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cde5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ced5760009050611eba565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d985750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611db057600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611eb957600a54600c81905550600b54600d819055506000611e9c6064611e8e600d54866123c690919063ffffffff16565b61244190919063ffffffff16565b90508060056000828254611eb09190613906565b92505081905550505b5b611ec68484848461248b565b50505050565b6000838311158290611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b9190613501565b60405180910390fd5b5060008385611f239190613906565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f98573d6000803e3d6000fd5b5050565b6000600654821115611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613563565b60405180910390fd5b6000611fed6124b8565b9050612002818461244190919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561212b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156121595781602001602082028036833780820191505090505b5090503081600081518110612197577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561223957600080fd5b505afa15801561224d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122719190612c38565b816001815181106122ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061231230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611436565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123769594939291906136fe565b600060405180830381600087803b15801561239057600080fd5b505af11580156123a4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b6000808314156123d9576000905061243b565b600082846123e791906138ac565b90508284826123f6919061387b565b14612436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242d90613623565b60405180910390fd5b809150505b92915050565b600061248383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124e3565b905092915050565b8061249957612498612546565b5b6124a4848484612589565b806124b2576124b1612754565b5b50505050565b60008060006124c5612768565b915091506124dc818361244190919063ffffffff16565b9250505090565b6000808311829061252a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125219190613501565b60405180910390fd5b5060008385612539919061387b565b9050809150509392505050565b6000600c5414801561255a57506000600d54145b1561256457612587565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061259b876127b5565b9550955095509550955095506125f986600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061268e85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126da816128c5565b6126e48483612982565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161274191906136e3565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000600554905061279060055460065461244190919063ffffffff16565b8210156127a8576006546005549350935050506127b1565b81819350935050505b9091565b60008060008060008060008060006127d28a600c54600d546129bc565b92509250925060006127e26124b8565b905060008060006127f58e878787612a52565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061285f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ecc565b905092915050565b60008082846128769190613825565b9050838110156128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290613603565b60405180910390fd5b8091505092915050565b60006128cf6124b8565b905060006128e682846123c690919063ffffffff16565b905061293a81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286790919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129978260065461281d90919063ffffffff16565b6006819055506129b28160075461286790919063ffffffff16565b6007819055505050565b6000806000806129e860646129da888a6123c690919063ffffffff16565b61244190919063ffffffff16565b90506000612a126064612a04888b6123c690919063ffffffff16565b61244190919063ffffffff16565b90506000612a3b82612a2d858c61281d90919063ffffffff16565b61281d90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a6b85896123c690919063ffffffff16565b90506000612a8286896123c690919063ffffffff16565b90506000612a9987896123c690919063ffffffff16565b90506000612ac282612ab4858761281d90919063ffffffff16565b61281d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000612aee612ae9846137a4565b613773565b90508083825260208201905082856020860282011115612b0d57600080fd5b60005b85811015612b3d5781612b238882612b47565b845260208401935060208301925050600181019050612b10565b5050509392505050565b600081359050612b5681613adf565b92915050565b600081519050612b6b81613adf565b92915050565b60008083601f840112612b8357600080fd5b8235905067ffffffffffffffff811115612b9c57600080fd5b602083019150836020820283011115612bb457600080fd5b9250929050565b600082601f830112612bcc57600080fd5b8135612bdc848260208601612adb565b91505092915050565b600081359050612bf481613af6565b92915050565b600081359050612c0981613b0d565b92915050565b600060208284031215612c2157600080fd5b6000612c2f84828501612b47565b91505092915050565b600060208284031215612c4a57600080fd5b6000612c5884828501612b5c565b91505092915050565b60008060408385031215612c7457600080fd5b6000612c8285828601612b47565b9250506020612c9385828601612b47565b9150509250929050565b600080600060608486031215612cb257600080fd5b6000612cc086828701612b47565b9350506020612cd186828701612b47565b9250506040612ce286828701612bfa565b9150509250925092565b60008060408385031215612cff57600080fd5b6000612d0d85828601612b47565b9250506020612d1e85828601612bfa565b9150509250929050565b600080600060408486031215612d3d57600080fd5b600084013567ffffffffffffffff811115612d5757600080fd5b612d6386828701612b71565b93509350506020612d7686828701612be5565b9150509250925092565b600060208284031215612d9257600080fd5b600082013567ffffffffffffffff811115612dac57600080fd5b612db884828501612bbb565b91505092915050565b600060208284031215612dd357600080fd5b6000612de184828501612be5565b91505092915050565b600060208284031215612dfc57600080fd5b6000612e0a84828501612bfa565b91505092915050565b60008060008060808587031215612e2957600080fd5b6000612e3787828801612bfa565b9450506020612e4887828801612bfa565b9350506040612e5987828801612bfa565b9250506060612e6a87828801612bfa565b91505092959194509250565b6000612e828383612e8e565b60208301905092915050565b612e978161393a565b82525050565b612ea68161393a565b82525050565b6000612eb7826137e0565b612ec18185613803565b9350612ecc836137d0565b8060005b83811015612efd578151612ee48882612e76565b9750612eef836137f6565b925050600181019050612ed0565b5085935050505092915050565b612f138161394c565b82525050565b612f228161398f565b82525050565b612f31816139b3565b82525050565b6000612f42826137eb565b612f4c8185613814565b9350612f5c8185602086016139c5565b612f6581613ace565b840191505092915050565b6000612f7d602383613814565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612fe3603f83613814565b91507f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008301527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006020830152604082019050919050565b6000613049602a83613814565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006130af601c83613814565b91507f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006000830152602082019050919050565b60006130ef602683613814565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613155602283613814565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131bb602383613814565b91507f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008301527f65642100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613221601b83613814565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613261602183613814565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132c7602083613814565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613307602983613814565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600061336d602583613814565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133d3602383613814565b91507f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008301527f7a652100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613439602483613814565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61349b81613978565b82525050565b6134aa81613982565b82525050565b60006020820190506134c56000830184612e9d565b92915050565b60006020820190506134e06000830184612f0a565b92915050565b60006020820190506134fb6000830184612f19565b92915050565b6000602082019050818103600083015261351b8184612f37565b905092915050565b6000602082019050818103600083015261353c81612f70565b9050919050565b6000602082019050818103600083015261355c81612fd6565b9050919050565b6000602082019050818103600083015261357c8161303c565b9050919050565b6000602082019050818103600083015261359c816130a2565b9050919050565b600060208201905081810360008301526135bc816130e2565b9050919050565b600060208201905081810360008301526135dc81613148565b9050919050565b600060208201905081810360008301526135fc816131ae565b9050919050565b6000602082019050818103600083015261361c81613214565b9050919050565b6000602082019050818103600083015261363c81613254565b9050919050565b6000602082019050818103600083015261365c816132ba565b9050919050565b6000602082019050818103600083015261367c816132fa565b9050919050565b6000602082019050818103600083015261369c81613360565b9050919050565b600060208201905081810360008301526136bc816133c6565b9050919050565b600060208201905081810360008301526136dc8161342c565b9050919050565b60006020820190506136f86000830184613492565b92915050565b600060a0820190506137136000830188613492565b6137206020830187612f28565b81810360408301526137328186612eac565b90506137416060830185612e9d565b61374e6080830184613492565b9695505050505050565b600060208201905061376d60008301846134a1565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561379a57613799613a9f565b5b8060405250919050565b600067ffffffffffffffff8211156137bf576137be613a9f565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061383082613978565b915061383b83613978565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138705761386f613a41565b5b828201905092915050565b600061388682613978565b915061389183613978565b9250826138a1576138a0613a70565b5b828204905092915050565b60006138b782613978565b91506138c283613978565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138fb576138fa613a41565b5b828202905092915050565b600061391182613978565b915061391c83613978565b92508282101561392f5761392e613a41565b5b828203905092915050565b600061394582613958565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399a826139a1565b9050919050565b60006139ac82613958565b9050919050565b60006139be82613978565b9050919050565b60005b838110156139e35780820151818401526020810190506139c8565b838111156139f2576000848401525b50505050565b6000613a0382613978565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a3657613a35613a41565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613ae88161393a565b8114613af357600080fd5b50565b613aff8161394c565b8114613b0a57600080fd5b50565b613b1681613978565b8114613b2157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220da5c374e30acd8c22f6226e8d85ab67e9fca9c6744332eec26a20a63e71d5b4264736f6c63430008000033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612d80565b610714565b005b34801561021157600080fd5b5061021a61084b565b6040516102279190613501565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612cec565b610888565b60405161026491906134cb565b60405180910390f35b34801561027957600080fd5b506102826108a6565b60405161028f91906134e6565b60405180910390f35b3480156102a457600080fd5b506102ad6108cc565b6040516102ba91906136e3565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612c9d565b6108d6565b6040516102f791906134cb565b60405180910390f35b34801561030c57600080fd5b506103156109af565b60405161032291906136e3565b60405180910390f35b34801561033757600080fd5b506103406109b5565b60405161034d9190613758565b60405180910390f35b34801561036257600080fd5b5061036b6109be565b60405161037891906134b0565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190612c0f565b6109e4565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612dc1565b610abb565b005b3480156103df57600080fd5b506103e8610b54565b005b3480156103f657600080fd5b50610411600480360381019061040c9190612c0f565b610c25565b60405161041e91906136e3565b60405180910390f35b34801561043357600080fd5b5061043c610c76565b005b34801561044a57600080fd5b5061046560048036038101906104609190612dea565b610cfe565b005b34801561047357600080fd5b5061047c610d84565b60405161048991906136e3565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190612c0f565b610d8a565b6040516104c691906136e3565b60405180910390f35b3480156104db57600080fd5b506104e4610da2565b6040516104f191906134b0565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190612dc1565b610dcb565b005b34801561052f57600080fd5b50610538610e64565b60405161054591906136e3565b60405180910390f35b34801561055a57600080fd5b50610563610e6a565b6040516105709190613501565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190612dea565b610ea7565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190612e13565b610f2d565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612cec565b610fcb565b6040516105ff91906134cb565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190612c0f565b610fe9565b60405161063c91906134cb565b60405180910390f35b34801561065157600080fd5b5061065a611009565b005b34801561066857600080fd5b50610683600480360381019061067e9190612d28565b6110e2565b005b34801561069157600080fd5b506106ac60048036038101906106a79190612c61565b611229565b6040516106b991906136e3565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190612dea565b6112b0565b005b3480156106f757600080fd5b50610712600480360381019061070d9190612c0f565b611336565b005b61071c61142e565b73ffffffffffffffffffffffffffffffffffffffff1661073a610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078790613643565b60405180910390fd5b60005b8151811015610847576001601060008484815181106107db577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061083f906139f8565b915050610793565b5050565b60606040518060400160405280600981526020017f43756c7420436f696e0000000000000000000000000000000000000000000000815250905090565b600061089c61089561142e565b8484611436565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b60006108e3848484611601565b6109a4846108ef61142e565b61099f85604051806060016040528060288152602001613b2560289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095561142e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ecc9092919063ffffffff16565b611436565b600190509392505050565b60185481565b60006012905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ec61142e565b73ffffffffffffffffffffffffffffffffffffffff16610a0a610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790613643565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ac361142e565b73ffffffffffffffffffffffffffffffffffffffff16610ae1610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90613643565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b9561142e565b73ffffffffffffffffffffffffffffffffffffffff161480610c0b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf361142e565b73ffffffffffffffffffffffffffffffffffffffff16145b610c1457600080fd5b6000479050610c2281611f30565b50565b6000610c6f600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9c565b9050919050565b610c7e61142e565b73ffffffffffffffffffffffffffffffffffffffff16610c9c610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990613643565b60405180910390fd5b610cfc600061200a565b565b610d0661142e565b73ffffffffffffffffffffffffffffffffffffffff16610d24610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190613643565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dd361142e565b73ffffffffffffffffffffffffffffffffffffffff16610df1610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e90613643565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f2443554c54000000000000000000000000000000000000000000000000000000815250905090565b610eaf61142e565b73ffffffffffffffffffffffffffffffffffffffff16610ecd610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a90613643565b60405180910390fd5b8060188190555050565b610f3561142e565b73ffffffffffffffffffffffffffffffffffffffff16610f53610da2565b73ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090613643565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610fdf610fd861142e565b8484611601565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661104a61142e565b73ffffffffffffffffffffffffffffffffffffffff1614806110c05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110a861142e565b73ffffffffffffffffffffffffffffffffffffffff16145b6110c957600080fd5b60006110d430610c25565b90506110df816120ce565b50565b6110ea61142e565b73ffffffffffffffffffffffffffffffffffffffff16611108610da2565b73ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115590613643565b60405180910390fd5b60005b838390508110156112235781600460008686858181106111aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906111bf9190612c0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061121b906139f8565b915050611161565b50505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112b861142e565b73ffffffffffffffffffffffffffffffffffffffff166112d6610da2565b73ffffffffffffffffffffffffffffffffffffffff161461132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390613643565b60405180910390fd5b8060178190555050565b61133e61142e565b73ffffffffffffffffffffffffffffffffffffffff1661135c610da2565b73ffffffffffffffffffffffffffffffffffffffff16146113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990613643565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906135a3565b60405180910390fd5b61142b8161200a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d906136c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906135c3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115f491906136e3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613683565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d890613523565b60405180910390fd5b60008111611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b90613663565b60405180910390fd5b61172c610da2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561179a575061176a610da2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b8557601560149054906101000a900460ff16611829576117bb610da2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613543565b60405180910390fd5b5b60165481111561186e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186590613583565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119125750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611951576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611948906135e3565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146119fe57601754816119b384610c25565b6119bd9190613825565b106119fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f4906136a3565b60405180910390fd5b5b6000611a0930610c25565b9050600060185482101590506016548210611a245760165491505b808015611a3c575060158054906101000a900460ff16155b8015611a965750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611aae5750601560169054906101000a900460ff165b8015611b045750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b5a5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b8257611b68826120ce565b60004790506000811115611b8057611b7f47611f30565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c2c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611cdf5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cde5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ced5760009050611eba565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d985750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611db057600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611eb957600a54600c81905550600b54600d819055506000611e9c6064611e8e600d54866123c690919063ffffffff16565b61244190919063ffffffff16565b90508060056000828254611eb09190613906565b92505081905550505b5b611ec68484848461248b565b50505050565b6000838311158290611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b9190613501565b60405180910390fd5b5060008385611f239190613906565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f98573d6000803e3d6000fd5b5050565b6000600654821115611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613563565b60405180910390fd5b6000611fed6124b8565b9050612002818461244190919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561212b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156121595781602001602082028036833780820191505090505b5090503081600081518110612197577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561223957600080fd5b505afa15801561224d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122719190612c38565b816001815181106122ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061231230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611436565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123769594939291906136fe565b600060405180830381600087803b15801561239057600080fd5b505af11580156123a4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b6000808314156123d9576000905061243b565b600082846123e791906138ac565b90508284826123f6919061387b565b14612436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242d90613623565b60405180910390fd5b809150505b92915050565b600061248383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124e3565b905092915050565b8061249957612498612546565b5b6124a4848484612589565b806124b2576124b1612754565b5b50505050565b60008060006124c5612768565b915091506124dc818361244190919063ffffffff16565b9250505090565b6000808311829061252a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125219190613501565b60405180910390fd5b5060008385612539919061387b565b9050809150509392505050565b6000600c5414801561255a57506000600d54145b1561256457612587565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061259b876127b5565b9550955095509550955095506125f986600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061268e85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286790919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126da816128c5565b6126e48483612982565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161274191906136e3565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000600554905061279060055460065461244190919063ffffffff16565b8210156127a8576006546005549350935050506127b1565b81819350935050505b9091565b60008060008060008060008060006127d28a600c54600d546129bc565b92509250925060006127e26124b8565b905060008060006127f58e878787612a52565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061285f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ecc565b905092915050565b60008082846128769190613825565b9050838110156128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b290613603565b60405180910390fd5b8091505092915050565b60006128cf6124b8565b905060006128e682846123c690919063ffffffff16565b905061293a81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286790919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129978260065461281d90919063ffffffff16565b6006819055506129b28160075461286790919063ffffffff16565b6007819055505050565b6000806000806129e860646129da888a6123c690919063ffffffff16565b61244190919063ffffffff16565b90506000612a126064612a04888b6123c690919063ffffffff16565b61244190919063ffffffff16565b90506000612a3b82612a2d858c61281d90919063ffffffff16565b61281d90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a6b85896123c690919063ffffffff16565b90506000612a8286896123c690919063ffffffff16565b90506000612a9987896123c690919063ffffffff16565b90506000612ac282612ab4858761281d90919063ffffffff16565b61281d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000612aee612ae9846137a4565b613773565b90508083825260208201905082856020860282011115612b0d57600080fd5b60005b85811015612b3d5781612b238882612b47565b845260208401935060208301925050600181019050612b10565b5050509392505050565b600081359050612b5681613adf565b92915050565b600081519050612b6b81613adf565b92915050565b60008083601f840112612b8357600080fd5b8235905067ffffffffffffffff811115612b9c57600080fd5b602083019150836020820283011115612bb457600080fd5b9250929050565b600082601f830112612bcc57600080fd5b8135612bdc848260208601612adb565b91505092915050565b600081359050612bf481613af6565b92915050565b600081359050612c0981613b0d565b92915050565b600060208284031215612c2157600080fd5b6000612c2f84828501612b47565b91505092915050565b600060208284031215612c4a57600080fd5b6000612c5884828501612b5c565b91505092915050565b60008060408385031215612c7457600080fd5b6000612c8285828601612b47565b9250506020612c9385828601612b47565b9150509250929050565b600080600060608486031215612cb257600080fd5b6000612cc086828701612b47565b9350506020612cd186828701612b47565b9250506040612ce286828701612bfa565b9150509250925092565b60008060408385031215612cff57600080fd5b6000612d0d85828601612b47565b9250506020612d1e85828601612bfa565b9150509250929050565b600080600060408486031215612d3d57600080fd5b600084013567ffffffffffffffff811115612d5757600080fd5b612d6386828701612b71565b93509350506020612d7686828701612be5565b9150509250925092565b600060208284031215612d9257600080fd5b600082013567ffffffffffffffff811115612dac57600080fd5b612db884828501612bbb565b91505092915050565b600060208284031215612dd357600080fd5b6000612de184828501612be5565b91505092915050565b600060208284031215612dfc57600080fd5b6000612e0a84828501612bfa565b91505092915050565b60008060008060808587031215612e2957600080fd5b6000612e3787828801612bfa565b9450506020612e4887828801612bfa565b9350506040612e5987828801612bfa565b9250506060612e6a87828801612bfa565b91505092959194509250565b6000612e828383612e8e565b60208301905092915050565b612e978161393a565b82525050565b612ea68161393a565b82525050565b6000612eb7826137e0565b612ec18185613803565b9350612ecc836137d0565b8060005b83811015612efd578151612ee48882612e76565b9750612eef836137f6565b925050600181019050612ed0565b5085935050505092915050565b612f138161394c565b82525050565b612f228161398f565b82525050565b612f31816139b3565b82525050565b6000612f42826137eb565b612f4c8185613814565b9350612f5c8185602086016139c5565b612f6581613ace565b840191505092915050565b6000612f7d602383613814565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612fe3603f83613814565b91507f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008301527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006020830152604082019050919050565b6000613049602a83613814565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006130af601c83613814565b91507f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006000830152602082019050919050565b60006130ef602683613814565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613155602283613814565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131bb602383613814565b91507f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008301527f65642100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613221601b83613814565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613261602183613814565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132c7602083613814565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613307602983613814565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600061336d602583613814565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133d3602383613814565b91507f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008301527f7a652100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613439602483613814565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61349b81613978565b82525050565b6134aa81613982565b82525050565b60006020820190506134c56000830184612e9d565b92915050565b60006020820190506134e06000830184612f0a565b92915050565b60006020820190506134fb6000830184612f19565b92915050565b6000602082019050818103600083015261351b8184612f37565b905092915050565b6000602082019050818103600083015261353c81612f70565b9050919050565b6000602082019050818103600083015261355c81612fd6565b9050919050565b6000602082019050818103600083015261357c8161303c565b9050919050565b6000602082019050818103600083015261359c816130a2565b9050919050565b600060208201905081810360008301526135bc816130e2565b9050919050565b600060208201905081810360008301526135dc81613148565b9050919050565b600060208201905081810360008301526135fc816131ae565b9050919050565b6000602082019050818103600083015261361c81613214565b9050919050565b6000602082019050818103600083015261363c81613254565b9050919050565b6000602082019050818103600083015261365c816132ba565b9050919050565b6000602082019050818103600083015261367c816132fa565b9050919050565b6000602082019050818103600083015261369c81613360565b9050919050565b600060208201905081810360008301526136bc816133c6565b9050919050565b600060208201905081810360008301526136dc8161342c565b9050919050565b60006020820190506136f86000830184613492565b92915050565b600060a0820190506137136000830188613492565b6137206020830187612f28565b81810360408301526137328186612eac565b90506137416060830185612e9d565b61374e6080830184613492565b9695505050505050565b600060208201905061376d60008301846134a1565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561379a57613799613a9f565b5b8060405250919050565b600067ffffffffffffffff8211156137bf576137be613a9f565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061383082613978565b915061383b83613978565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138705761386f613a41565b5b828201905092915050565b600061388682613978565b915061389183613978565b9250826138a1576138a0613a70565b5b828204905092915050565b60006138b782613978565b91506138c283613978565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138fb576138fa613a41565b5b828202905092915050565b600061391182613978565b915061391c83613978565b92508282101561392f5761392e613a41565b5b828203905092915050565b600061394582613958565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399a826139a1565b9050919050565b60006139ac82613958565b9050919050565b60006139be82613978565b9050919050565b60005b838110156139e35780820151818401526020810190506139c8565b838111156139f2576000848401525b50505050565b6000613a0382613978565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a3657613a35613a41565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613ae88161393a565b8114613af357600080fd5b50565b613aff8161394c565b8114613b0a57600080fd5b50565b613b1681613978565b8114613b2157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220da5c374e30acd8c22f6226e8d85ab67e9fca9c6744332eec26a20a63e71d5b4264736f6c63430008000033

Deployed Bytecode Sourcemap

11235:14291:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20766:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14091:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14993:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12906:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14368:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15187:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13239:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14277:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12954:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20943:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24884:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20373:276;;;;;;;;;;;;;:::i;:::-;;14471:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4779:103;;;;;;;;;;;;;:::i;:::-;;25024:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13103:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12594:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4128:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20657:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13170:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14182:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24677:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24291:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14617:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12551:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20030:277;;;;;;;;;;;;;:::i;:::-;;25263:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14817:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25140:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5037:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20766:169;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20842:9:::1;20837:91;20861:5;:12;20857:1;:16;20837:91;;;20912:4;20895;:14;20900:5;20906:1;20900:8;;;;;;;;;;;;;;;;;;;;;;20895:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;20875:3;;;;;:::i;:::-;;;;20837:91;;;;20766:169:::0;:::o;14091:83::-;14128:13;14161:5;;;;;;;;;;;;;;;;;14154:12;;14091:83;:::o;14993:186::-;15093:4;15110:39;15119:12;:10;:12::i;:::-;15133:7;15142:6;15110:8;:39::i;:::-;15167:4;15160:11;;14993:186;;;;:::o;12906:41::-;;;;;;;;;;;;;:::o;14368:95::-;14421:7;14448;;14441:14;;14368:95;:::o;15187:446::-;15319:4;15336:36;15346:6;15354:9;15365:6;15336:9;:36::i;:::-;15383:220;15406:6;15427:12;:10;:12::i;:::-;15454:138;15510:6;15454:138;;;;;;;;;;;;;;;;;:11;:19;15466:6;15454:19;;;;;;;;;;;;;;;:33;15474:12;:10;:12::i;:::-;15454:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;15383:8;:220::i;:::-;15621:4;15614:11;;15187:446;;;;;:::o;13239:53::-;;;;:::o;14277:83::-;14318:5;11732:2;14336:16;;14277:83;:::o;12954:28::-;;;;;;;;;;;;;:::o;20943:92::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21022:5:::1;21007:4;:12;21012:6;21007:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;20943:92:::0;:::o;24884:101::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24965:12:::1;24951:11;;:26;;;;;;;;;;;;;;;;;;24884:101:::0;:::o;20373:276::-;20453:19;;;;;;;;;;;20437:35;;:12;:10;:12::i;:::-;:35;;;:89;;;;20509:17;;;;;;;;;;;20493:33;;:12;:10;:12::i;:::-;:33;;;20437:89;20415:122;;;;;;20548:26;20577:21;20548:50;;20609:32;20622:18;20609:12;:32::i;:::-;20373:276;:::o;14471:138::-;14537:7;14564:37;14584:7;:16;14592:7;14584:16;;;;;;;;;;;;;;;;14564:19;:37::i;:::-;14557:44;;14471:138;;;:::o;4779:103::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4844:30:::1;4871:1;4844:18;:30::i;:::-;4779:103::o:0;25024:108::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25113:11:::1;25098:12;:26;;;;25024:108:::0;:::o;13103:60::-;;;;:::o;12594:42::-;;;;;;;;;;;;;;;;;:::o;4128:87::-;4174:7;4201:6;;;;;;;;;;;4194:13;;4128:87;:::o;20657:101::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20738:12:::1;20724:11;;:26;;;;;;;;;;;;;;;;;;20657:101:::0;:::o;13170:62::-;;;;:::o;14182:87::-;14221:13;14254:7;;;;;;;;;;;;;;;;;14247:14;;14182:87;:::o;24677:155::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24806:18:::1;24784:19;:40;;;;24677:155:::0;:::o;24291:334::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24485:13:::1;24468:14;:30;;;;24527:14;24509:15;:32;;;;24567:11;24552:12;:26;;;;24605:12;24589:13;:28;;;;24291:334:::0;;;;:::o;14617:192::-;14720:4;14737:42;14747:12;:10;:12::i;:::-;14761:9;14772:6;14737:9;:42::i;:::-;14797:4;14790:11;;14617:192;;;;:::o;12551:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;20030:277::-;20110:19;;;;;;;;;;;20094:35;;:12;:10;:12::i;:::-;:35;;;:89;;;;20166:17;;;;;;;;;;;20150:33;;:12;:10;:12::i;:::-;:33;;;20094:89;20072:122;;;;;;20205:23;20231:24;20249:4;20231:9;:24::i;:::-;20205:50;;20266:33;20283:15;20266:16;:33::i;:::-;20030:277;:::o;25263:260::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25406:9:::1;25401:115;25425:8;;:15;;25421:1;:19;25401:115;;;25496:8;25462:18;:31;25481:8;;25490:1;25481:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25462:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;25442:3;;;;;:::i;:::-;;;;25401:115;;;;25263:260:::0;;;:::o;14817:168::-;14923:7;14950:11;:18;14962:5;14950:18;;;;;;;;;;;;;;;:27;14969:7;14950:27;;;;;;;;;;;;;;;;14943:34;;14817:168;;;;:::o;25140:115::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25234:13:::1;25217:14;:30;;;;25140:115:::0;:::o;5037:238::-;4359:12;:10;:12::i;:::-;4348:23;;:7;:5;:7::i;:::-;:23;;;4340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5160:1:::1;5140:22;;:8;:22;;;;5118:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;5239:28;5258:8;5239:18;:28::i;:::-;5037:238:::0;:::o;2852:98::-;2905:7;2932:10;2925:17;;2852:98;:::o;16308:335::-;16418:1;16401:19;;:5;:19;;;;16393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16499:1;16480:21;;:7;:21;;;;16472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16581:6;16551:11;:18;16563:5;16551:18;;;;;;;;;;;;;;;:27;16570:7;16551:27;;;;;;;;;;;;;;;:36;;;;16619:7;16603:32;;16612:5;16603:32;;;16628:6;16603:32;;;;;;:::i;:::-;;;;;;;;16308:335;;;:::o;16651:2717::-;16755:1;16739:18;;:4;:18;;;;16731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16832:1;16818:16;;:2;:16;;;;16810:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16902:1;16893:6;:10;16885:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16974:7;:5;:7::i;:::-;16966:15;;:4;:15;;;;:32;;;;;16991:7;:5;:7::i;:::-;16985:13;;:2;:13;;;;16966:32;16962:1534;;;17053:11;;;;;;;;;;;17048:205;;17123:7;:5;:7::i;:::-;17115:15;;:4;:15;;;17085:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;17048:205;17287:12;;17277:6;:22;;17269:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17374:4;:10;17379:4;17374:10;;;;;;;;;;;;;;;;;;;;;;;;;17373:11;:24;;;;;17389:4;:8;17394:2;17389:8;;;;;;;;;;;;;;;;;;;;;;;;;17388:9;17373:24;17347:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;17495:13;;;;;;;;;;;17489:19;;:2;:19;;;17485:208;;17584:14;;17575:6;17559:13;17569:2;17559:9;:13::i;:::-;:22;;;;:::i;:::-;:39;17529:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;17485:208;17709:28;17740:24;17758:4;17740:9;:24::i;:::-;17709:55;;17779:12;17818:19;;17794:20;:43;;17779:58;;17882:12;;17858:20;:36;17854:112;;17938:12;;17915:35;;17854:112;18004:7;:35;;;;;18033:6;;;;;;;;;;18032:7;18004:35;:77;;;;;18068:13;;;;;;;;;;;18060:21;;:4;:21;;;;18004:77;:109;;;;;18102:11;;;;;;;;;;;18004:109;:155;;;;;18135:18;:24;18154:4;18135:24;;;;;;;;;;;;;;;;;;;;;;;;;18134:25;18004:155;:199;;;;;18181:18;:22;18200:2;18181:22;;;;;;;;;;;;;;;;;;;;;;;;;18180:23;18004:199;17982:503;;;18238:38;18255:20;18238:16;:38::i;:::-;18295:26;18324:21;18295:50;;18389:1;18368:18;:22;18364:106;;;18415:35;18428:21;18415:12;:35::i;:::-;18364:106;17982:503;;16962:1534;;;18508:12;18523:4;18508:19;;18586:18;:24;18605:4;18586:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;18614:18;:22;18633:2;18614:22;;;;;;;;;;;;;;;;;;;;;;;;;18586:50;18585:115;;;;18663:13;;;;;;;;;;;18655:21;;:4;:21;;;;:44;;;;;18686:13;;;;;;;;;;;18680:19;;:2;:19;;;;18655:44;18585:115;18567:740;;;18737:5;18727:15;;18567:740;;;18819:13;;;;;;;;;;;18811:21;;:4;:21;;;:55;;;;;18850:15;;;;;;;;;;;18836:30;;:2;:30;;;;18811:55;18807:163;;;18899:14;;18887:9;:26;;;;18942:12;;18932:7;:22;;;;18807:163;19029:13;;;;;;;;;;;19023:19;;:2;:19;;;:55;;;;;19062:15;;;;;;;;;;;19046:32;;:4;:32;;;;19023:55;19019:277;;;19111:15;;19099:9;:27;;;;19155:13;;19145:7;:23;;;;19187:20;19210:28;19234:3;19210:19;19221:7;;19210:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;19187:51;;19268:12;19257:7;;:23;;;;;;;:::i;:::-;;;;;;;;19019:277;;18567:740;19319:41;19334:4;19340:2;19344:6;19352:7;19319:14;:41::i;:::-;16651:2717;;;;:::o;10379:224::-;10499:7;10532:1;10527;:6;;10535:12;10519:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10559:9;10575:1;10571;:5;;;;:::i;:::-;10559:17;;10594:1;10587:8;;;10379:224;;;;;:::o;19376:99::-;19433:17;;;;;;;;;;;:26;;:34;19460:6;19433:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19376:99;:::o;15641:307::-;15725:7;15778;;15767;:18;;15745:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;15866:19;15888:10;:8;:10::i;:::-;15866:32;;15916:24;15928:11;15916:7;:11;;:24;;;;:::i;:::-;15909:31;;;15641:307;;;:::o;5435:191::-;5509:16;5528:6;;;;;;;;;;;5509:25;;5554:8;5545:6;;:17;;;;;;;;;;;;;;;;;;5609:8;5578:40;;5599:8;5578:40;;;;;;;;;;;;5435:191;;:::o;19483:483::-;13397:4;13388:6;;:13;;;;;;;;;;;;;;;;;;19561:21:::1;19599:1;19585:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19561:40;;19630:4;19612;19617:1;19612:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;19656:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19646:4;19651:1;19646:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;19689:62;19706:4;19721:15;;;;;;;;;;;19739:11;19689:8;:62::i;:::-;19762:15;;;;;;;;;;;:66;;;19843:11;19869:1;19885:4;19912;19932:15;19762:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13412:1;13433:5:::0;13424:6;;:14;;;;;;;;;;;;;;;;;;19483:483;:::o;10611:246::-;10669:7;10698:1;10693;:6;10689:47;;;10723:1;10716:8;;;;10689:47;10746:9;10762:1;10758;:5;;;;:::i;:::-;10746:17;;10791:1;10786;10782;:5;;;;:::i;:::-;:10;10774:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10848:1;10841:8;;;10611:246;;;;;:::o;10865:132::-;10923:7;10950:39;10954:1;10957;10950:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10943:46;;10865:132;;;;:::o;21043:282::-;21199:7;21194:28;;21208:14;:12;:14::i;:::-;21194:28;21233:44;21251:6;21259:9;21270:6;21233:17;:44::i;:::-;21293:7;21288:29;;21302:15;:13;:15::i;:::-;21288:29;21043:282;;;;:::o;23854:164::-;23896:7;23917:15;23934;23953:19;:17;:19::i;:::-;23916:56;;;;23990:20;24002:7;23990;:11;;:20;;;;:::i;:::-;23983:27;;;;23854:164;:::o;11005:223::-;11125:7;11157:1;11153;:5;11160:12;11145:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11184:9;11200:1;11196;:5;;;;:::i;:::-;11184:17;;11219:1;11212:8;;;11005:223;;;;;:::o;15956:219::-;16016:1;16003:9;;:14;:30;;;;;16032:1;16021:7;;:12;16003:30;15999:43;;;16035:7;;15999:43;16074:9;;16054:17;:29;;;;16112:7;;16094:15;:25;;;;16144:1;16132:9;:13;;;;16166:1;16156:7;:11;;;;15956:219;:::o;21333:610::-;21480:15;21510:23;21548:12;21575:23;21613:12;21640:13;21667:19;21678:7;21667:10;:19::i;:::-;21465:221;;;;;;;;;;;;21715:28;21735:7;21715;:15;21723:6;21715:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21697:7;:15;21705:6;21697:15;;;;;;;;;;;;;;;:46;;;;21775:39;21798:15;21775:7;:18;21783:9;21775:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21754:7;:18;21762:9;21754:18;;;;;;;;;;;;;;;:60;;;;21825:16;21835:5;21825:9;:16::i;:::-;21852:23;21864:4;21870;21852:11;:23::i;:::-;21908:9;21891:44;;21900:6;21891:44;;;21919:15;21891:44;;;;;;:::i;:::-;;;;;;;;21333:610;;;;;;;;;:::o;16183:117::-;16239:17;;16227:9;:29;;;;16277:15;;16267:7;:25;;;;16183:117::o;24026:257::-;24077:7;24086;24106:15;24124:7;;24106:25;;24142:15;24160:7;;24142:25;;24192:20;24204:7;;24192;;:11;;:20;;;;:::i;:::-;24182:7;:30;24178:61;;;24222:7;;24231;;24214:25;;;;;;;;24178:61;24258:7;24267;24250:25;;;;;;24026:257;;;:::o;22362:629::-;22464:7;22473;22482;22491;22500;22509;22535:23;22560:12;22574:13;22591:90;22617:7;22639:9;;22663:7;;22591:11;:90::i;:::-;22534:147;;;;;;22692:19;22714:10;:8;:10::i;:::-;22692:32;;22736:15;22753:23;22778:12;22794:109;22820:7;22842:4;22861:5;22881:11;22794;:109::i;:::-;22735:168;;;;;;22922:7;22931:15;22948:4;22954:15;22971:4;22977:5;22914:69;;;;;;;;;;;;;;;;;;;22362:629;;;;;;;:::o;10235:136::-;10293:7;10320:43;10324:1;10327;10320:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10313:50;;10235:136;;;;:::o;10048:179::-;10106:7;10126:9;10142:1;10138;:5;;;;:::i;:::-;10126:17;;10167:1;10162;:6;;10154:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10218:1;10211:8;;;10048:179;;;;:::o;21951:211::-;22004:19;22026:10;:8;:10::i;:::-;22004:32;;22047:13;22063:22;22073:11;22063:5;:9;;:22;;;;:::i;:::-;22047:38;;22121:33;22148:5;22121:7;:22;22137:4;22121:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;22096:7;:22;22112:4;22096:22;;;;;;;;;;;;;;;:58;;;;21951:211;;;:::o;22170:147::-;22248:17;22260:4;22248:7;;:11;;:17;;;;:::i;:::-;22238:7;:27;;;;22289:20;22304:4;22289:10;;:14;;:20;;;;:::i;:::-;22276:10;:33;;;;22170:147;;:::o;22999:387::-;23127:7;23136;23145;23165:12;23180:30;23206:3;23180:21;23192:8;23180:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;23165:45;;23221:13;23237:28;23261:3;23237:19;23249:6;23237:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;23221:44;;23276:23;23302:28;23324:5;23302:17;23314:4;23302:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;23276:54;;23349:15;23366:4;23372:5;23341:37;;;;;;;;;22999:387;;;;;;;:::o;23394:452::-;23547:7;23556;23565;23585:15;23603:24;23615:11;23603:7;:11;;:24;;;;:::i;:::-;23585:42;;23638:12;23653:21;23662:11;23653:4;:8;;:21;;;;:::i;:::-;23638:36;;23685:13;23701:22;23711:11;23701:5;:9;;:22;;;;:::i;:::-;23685:38;;23734:23;23760:28;23782:5;23760:17;23772:4;23760:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;23734:54;;23807:7;23816:15;23833:4;23799:39;;;;;;;;;;23394:452;;;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:139::-;;736:6;723:20;714:29;;752:33;779:5;752:33;:::i;:::-;704:87;;;;:::o;797:143::-;;885:6;879:13;870:22;;901:33;928:5;901:33;:::i;:::-;860:80;;;;:::o;963:367::-;;;1096:3;1089:4;1081:6;1077:17;1073:27;1063:2;;1114:1;1111;1104:12;1063:2;1150:6;1137:20;1127:30;;1180:18;1172:6;1169:30;1166:2;;;1212:1;1209;1202:12;1166:2;1249:4;1241:6;1237:17;1225:29;;1303:3;1295:4;1287:6;1283:17;1273:8;1269:32;1266:41;1263:2;;;1320:1;1317;1310:12;1263:2;1053:277;;;;;:::o;1353:303::-;;1473:3;1466:4;1458:6;1454:17;1450:27;1440:2;;1491:1;1488;1481:12;1440:2;1531:6;1518:20;1556:94;1646:3;1638:6;1631:4;1623:6;1619:17;1556:94;:::i;:::-;1547:103;;1430:226;;;;;:::o;1662:133::-;;1743:6;1730:20;1721:29;;1759:30;1783:5;1759:30;:::i;:::-;1711:84;;;;:::o;1801:139::-;;1885:6;1872:20;1863:29;;1901:33;1928:5;1901:33;:::i;:::-;1853:87;;;;:::o;1946:262::-;;2054:2;2042:9;2033:7;2029:23;2025:32;2022:2;;;2070:1;2067;2060:12;2022:2;2113:1;2138:53;2183:7;2174:6;2163:9;2159:22;2138:53;:::i;:::-;2128:63;;2084:117;2012:196;;;;:::o;2214:284::-;;2333:2;2321:9;2312:7;2308:23;2304:32;2301:2;;;2349:1;2346;2339:12;2301:2;2392:1;2417:64;2473:7;2464:6;2453:9;2449:22;2417:64;:::i;:::-;2407:74;;2363:128;2291:207;;;;:::o;2504:407::-;;;2629:2;2617:9;2608:7;2604:23;2600:32;2597:2;;;2645:1;2642;2635:12;2597:2;2688:1;2713:53;2758:7;2749:6;2738:9;2734:22;2713:53;:::i;:::-;2703:63;;2659:117;2815:2;2841:53;2886:7;2877:6;2866:9;2862:22;2841:53;:::i;:::-;2831:63;;2786:118;2587:324;;;;;:::o;2917:552::-;;;;3059:2;3047:9;3038:7;3034:23;3030:32;3027:2;;;3075:1;3072;3065:12;3027:2;3118:1;3143:53;3188:7;3179:6;3168:9;3164:22;3143:53;:::i;:::-;3133:63;;3089:117;3245:2;3271:53;3316:7;3307:6;3296:9;3292:22;3271:53;:::i;:::-;3261:63;;3216:118;3373:2;3399:53;3444:7;3435:6;3424:9;3420:22;3399:53;:::i;:::-;3389:63;;3344:118;3017:452;;;;;:::o;3475:407::-;;;3600:2;3588:9;3579:7;3575:23;3571:32;3568:2;;;3616:1;3613;3606:12;3568:2;3659:1;3684:53;3729:7;3720:6;3709:9;3705:22;3684:53;:::i;:::-;3674:63;;3630:117;3786:2;3812:53;3857:7;3848:6;3837:9;3833:22;3812:53;:::i;:::-;3802:63;;3757:118;3558:324;;;;;:::o;3888:564::-;;;;4045:2;4033:9;4024:7;4020:23;4016:32;4013:2;;;4061:1;4058;4051:12;4013:2;4132:1;4121:9;4117:17;4104:31;4162:18;4154:6;4151:30;4148:2;;;4194:1;4191;4184:12;4148:2;4230:80;4302:7;4293:6;4282:9;4278:22;4230:80;:::i;:::-;4212:98;;;;4075:245;4359:2;4385:50;4427:7;4418:6;4407:9;4403:22;4385:50;:::i;:::-;4375:60;;4330:115;4003:449;;;;;:::o;4458:405::-;;4591:2;4579:9;4570:7;4566:23;4562:32;4559:2;;;4607:1;4604;4597:12;4559:2;4678:1;4667:9;4663:17;4650:31;4708:18;4700:6;4697:30;4694:2;;;4740:1;4737;4730:12;4694:2;4768:78;4838:7;4829:6;4818:9;4814:22;4768:78;:::i;:::-;4758:88;;4621:235;4549:314;;;;:::o;4869:256::-;;4974:2;4962:9;4953:7;4949:23;4945:32;4942:2;;;4990:1;4987;4980:12;4942:2;5033:1;5058:50;5100:7;5091:6;5080:9;5076:22;5058:50;:::i;:::-;5048:60;;5004:114;4932:193;;;;:::o;5131:262::-;;5239:2;5227:9;5218:7;5214:23;5210:32;5207:2;;;5255:1;5252;5245:12;5207:2;5298:1;5323:53;5368:7;5359:6;5348:9;5344:22;5323:53;:::i;:::-;5313:63;;5269:117;5197:196;;;;:::o;5399:698::-;;;;;5558:3;5546:9;5537:7;5533:23;5529:33;5526:2;;;5575:1;5572;5565:12;5526:2;5618:1;5643:53;5688:7;5679:6;5668:9;5664:22;5643:53;:::i;:::-;5633:63;;5589:117;5745:2;5771:53;5816:7;5807:6;5796:9;5792:22;5771:53;:::i;:::-;5761:63;;5716:118;5873:2;5899:53;5944:7;5935:6;5924:9;5920:22;5899:53;:::i;:::-;5889:63;;5844:118;6001:2;6027:53;6072:7;6063:6;6052:9;6048:22;6027:53;:::i;:::-;6017:63;;5972:118;5516:581;;;;;;;:::o;6103:179::-;;6193:46;6235:3;6227:6;6193:46;:::i;:::-;6271:4;6266:3;6262:14;6248:28;;6183:99;;;;:::o;6288:108::-;6365:24;6383:5;6365:24;:::i;:::-;6360:3;6353:37;6343:53;;:::o;6402:118::-;6489:24;6507:5;6489:24;:::i;:::-;6484:3;6477:37;6467:53;;:::o;6556:732::-;;6704:54;6752:5;6704:54;:::i;:::-;6774:86;6853:6;6848:3;6774:86;:::i;:::-;6767:93;;6884:56;6934:5;6884:56;:::i;:::-;6963:7;6994:1;6979:284;7004:6;7001:1;6998:13;6979:284;;;7080:6;7074:13;7107:63;7166:3;7151:13;7107:63;:::i;:::-;7100:70;;7193:60;7246:6;7193:60;:::i;:::-;7183:70;;7039:224;7026:1;7023;7019:9;7014:14;;6979:284;;;6983:14;7279:3;7272:10;;6680:608;;;;;;;:::o;7294:109::-;7375:21;7390:5;7375:21;:::i;:::-;7370:3;7363:34;7353:50;;:::o;7409:183::-;7522:63;7579:5;7522:63;:::i;:::-;7517:3;7510:76;7500:92;;:::o;7598:147::-;7693:45;7732:5;7693:45;:::i;:::-;7688:3;7681:58;7671:74;;:::o;7751:364::-;;7867:39;7900:5;7867:39;:::i;:::-;7922:71;7986:6;7981:3;7922:71;:::i;:::-;7915:78;;8002:52;8047:6;8042:3;8035:4;8028:5;8024:16;8002:52;:::i;:::-;8079:29;8101:6;8079:29;:::i;:::-;8074:3;8070:39;8063:46;;7843:272;;;;;:::o;8121:367::-;;8284:67;8348:2;8343:3;8284:67;:::i;:::-;8277:74;;8381:34;8377:1;8372:3;8368:11;8361:55;8447:5;8442:2;8437:3;8433:12;8426:27;8479:2;8474:3;8470:12;8463:19;;8267:221;;;:::o;8494:395::-;;8657:67;8721:2;8716:3;8657:67;:::i;:::-;8650:74;;8754:34;8750:1;8745:3;8741:11;8734:55;8820:33;8815:2;8810:3;8806:12;8799:55;8880:2;8875:3;8871:12;8864:19;;8640:249;;;:::o;8895:374::-;;9058:67;9122:2;9117:3;9058:67;:::i;:::-;9051:74;;9155:34;9151:1;9146:3;9142:11;9135:55;9221:12;9216:2;9211:3;9207:12;9200:34;9260:2;9255:3;9251:12;9244:19;;9041:228;;;:::o;9275:326::-;;9438:67;9502:2;9497:3;9438:67;:::i;:::-;9431:74;;9535:30;9531:1;9526:3;9522:11;9515:51;9592:2;9587:3;9583:12;9576:19;;9421:180;;;:::o;9607:370::-;;9770:67;9834:2;9829:3;9770:67;:::i;:::-;9763:74;;9867:34;9863:1;9858:3;9854:11;9847:55;9933:8;9928:2;9923:3;9919:12;9912:30;9968:2;9963:3;9959:12;9952:19;;9753:224;;;:::o;9983:366::-;;10146:67;10210:2;10205:3;10146:67;:::i;:::-;10139:74;;10243:34;10239:1;10234:3;10230:11;10223:55;10309:4;10304:2;10299:3;10295:12;10288:26;10340:2;10335:3;10331:12;10324:19;;10129:220;;;:::o;10355:367::-;;10518:67;10582:2;10577:3;10518:67;:::i;:::-;10511:74;;10615:34;10611:1;10606:3;10602:11;10595:55;10681:5;10676:2;10671:3;10667:12;10660:27;10713:2;10708:3;10704:12;10697:19;;10501:221;;;:::o;10728:325::-;;10891:67;10955:2;10950:3;10891:67;:::i;:::-;10884:74;;10988:29;10984:1;10979:3;10975:11;10968:50;11044:2;11039:3;11035:12;11028:19;;10874:179;;;:::o;11059:365::-;;11222:67;11286:2;11281:3;11222:67;:::i;:::-;11215:74;;11319:34;11315:1;11310:3;11306:11;11299:55;11385:3;11380:2;11375:3;11371:12;11364:25;11415:2;11410:3;11406:12;11399:19;;11205:219;;;:::o;11430:330::-;;11593:67;11657:2;11652:3;11593:67;:::i;:::-;11586:74;;11690:34;11686:1;11681:3;11677:11;11670:55;11751:2;11746:3;11742:12;11735:19;;11576:184;;;:::o;11766:373::-;;11929:67;11993:2;11988:3;11929:67;:::i;:::-;11922:74;;12026:34;12022:1;12017:3;12013:11;12006:55;12092:11;12087:2;12082:3;12078:12;12071:33;12130:2;12125:3;12121:12;12114:19;;11912:227;;;:::o;12145:369::-;;12308:67;12372:2;12367:3;12308:67;:::i;:::-;12301:74;;12405:34;12401:1;12396:3;12392:11;12385:55;12471:7;12466:2;12461:3;12457:12;12450:29;12505:2;12500:3;12496:12;12489:19;;12291:223;;;:::o;12520:367::-;;12683:67;12747:2;12742:3;12683:67;:::i;:::-;12676:74;;12780:34;12776:1;12771:3;12767:11;12760:55;12846:5;12841:2;12836:3;12832:12;12825:27;12878:2;12873:3;12869:12;12862:19;;12666:221;;;:::o;12893:368::-;;13056:67;13120:2;13115:3;13056:67;:::i;:::-;13049:74;;13153:34;13149:1;13144:3;13140:11;13133:55;13219:6;13214:2;13209:3;13205:12;13198:28;13252:2;13247:3;13243:12;13236:19;;13039:222;;;:::o;13267:118::-;13354:24;13372:5;13354:24;:::i;:::-;13349:3;13342:37;13332:53;;:::o;13391:112::-;13474:22;13490:5;13474:22;:::i;:::-;13469:3;13462:35;13452:51;;:::o;13509:222::-;;13640:2;13629:9;13625:18;13617:26;;13653:71;13721:1;13710:9;13706:17;13697:6;13653:71;:::i;:::-;13607:124;;;;:::o;13737:210::-;;13862:2;13851:9;13847:18;13839:26;;13875:65;13937:1;13926:9;13922:17;13913:6;13875:65;:::i;:::-;13829:118;;;;:::o;13953:274::-;;14110:2;14099:9;14095:18;14087:26;;14123:97;14217:1;14206:9;14202:17;14193:6;14123:97;:::i;:::-;14077:150;;;;:::o;14233:313::-;;14384:2;14373:9;14369:18;14361:26;;14433:9;14427:4;14423:20;14419:1;14408:9;14404:17;14397:47;14461:78;14534:4;14525:6;14461:78;:::i;:::-;14453:86;;14351:195;;;;:::o;14552:419::-;;14756:2;14745:9;14741:18;14733:26;;14805:9;14799:4;14795:20;14791:1;14780:9;14776:17;14769:47;14833:131;14959:4;14833:131;:::i;:::-;14825:139;;14723:248;;;:::o;14977:419::-;;15181:2;15170:9;15166:18;15158:26;;15230:9;15224:4;15220:20;15216:1;15205:9;15201:17;15194:47;15258:131;15384:4;15258:131;:::i;:::-;15250:139;;15148:248;;;:::o;15402:419::-;;15606:2;15595:9;15591:18;15583:26;;15655:9;15649:4;15645:20;15641:1;15630:9;15626:17;15619:47;15683:131;15809:4;15683:131;:::i;:::-;15675:139;;15573:248;;;:::o;15827:419::-;;16031:2;16020:9;16016:18;16008:26;;16080:9;16074:4;16070:20;16066:1;16055:9;16051:17;16044:47;16108:131;16234:4;16108:131;:::i;:::-;16100:139;;15998:248;;;:::o;16252:419::-;;16456:2;16445:9;16441:18;16433:26;;16505:9;16499:4;16495:20;16491:1;16480:9;16476:17;16469:47;16533:131;16659:4;16533:131;:::i;:::-;16525:139;;16423:248;;;:::o;16677:419::-;;16881:2;16870:9;16866:18;16858:26;;16930:9;16924:4;16920:20;16916:1;16905:9;16901:17;16894:47;16958:131;17084:4;16958:131;:::i;:::-;16950:139;;16848:248;;;:::o;17102:419::-;;17306:2;17295:9;17291:18;17283:26;;17355:9;17349:4;17345:20;17341:1;17330:9;17326:17;17319:47;17383:131;17509:4;17383:131;:::i;:::-;17375:139;;17273:248;;;:::o;17527:419::-;;17731:2;17720:9;17716:18;17708:26;;17780:9;17774:4;17770:20;17766:1;17755:9;17751:17;17744:47;17808:131;17934:4;17808:131;:::i;:::-;17800:139;;17698:248;;;:::o;17952:419::-;;18156:2;18145:9;18141:18;18133:26;;18205:9;18199:4;18195:20;18191:1;18180:9;18176:17;18169:47;18233:131;18359:4;18233:131;:::i;:::-;18225:139;;18123:248;;;:::o;18377:419::-;;18581:2;18570:9;18566:18;18558:26;;18630:9;18624:4;18620:20;18616:1;18605:9;18601:17;18594:47;18658:131;18784:4;18658:131;:::i;:::-;18650:139;;18548:248;;;:::o;18802:419::-;;19006:2;18995:9;18991:18;18983:26;;19055:9;19049:4;19045:20;19041:1;19030:9;19026:17;19019:47;19083:131;19209:4;19083:131;:::i;:::-;19075:139;;18973:248;;;:::o;19227:419::-;;19431:2;19420:9;19416:18;19408:26;;19480:9;19474:4;19470:20;19466:1;19455:9;19451:17;19444:47;19508:131;19634:4;19508:131;:::i;:::-;19500:139;;19398:248;;;:::o;19652:419::-;;19856:2;19845:9;19841:18;19833:26;;19905:9;19899:4;19895:20;19891:1;19880:9;19876:17;19869:47;19933:131;20059:4;19933:131;:::i;:::-;19925:139;;19823:248;;;:::o;20077:419::-;;20281:2;20270:9;20266:18;20258:26;;20330:9;20324:4;20320:20;20316:1;20305:9;20301:17;20294:47;20358:131;20484:4;20358:131;:::i;:::-;20350:139;;20248:248;;;:::o;20502:222::-;;20633:2;20622:9;20618:18;20610:26;;20646:71;20714:1;20703:9;20699:17;20690:6;20646:71;:::i;:::-;20600:124;;;;:::o;20730:831::-;;21031:3;21020:9;21016:19;21008:27;;21045:71;21113:1;21102:9;21098:17;21089:6;21045:71;:::i;:::-;21126:80;21202:2;21191:9;21187:18;21178:6;21126:80;:::i;:::-;21253:9;21247:4;21243:20;21238:2;21227:9;21223:18;21216:48;21281:108;21384:4;21375:6;21281:108;:::i;:::-;21273:116;;21399:72;21467:2;21456:9;21452:18;21443:6;21399:72;:::i;:::-;21481:73;21549:3;21538:9;21534:19;21525:6;21481:73;:::i;:::-;20998:563;;;;;;;;:::o;21567:214::-;;21694:2;21683:9;21679:18;21671:26;;21707:67;21771:1;21760:9;21756:17;21747:6;21707:67;:::i;:::-;21661:120;;;;:::o;21787:283::-;;21853:2;21847:9;21837:19;;21895:4;21887:6;21883:17;22002:6;21990:10;21987:22;21966:18;21954:10;21951:34;21948:62;21945:2;;;22013:18;;:::i;:::-;21945:2;22053:10;22049:2;22042:22;21827:243;;;;:::o;22076:311::-;;22243:18;22235:6;22232:30;22229:2;;;22265:18;;:::i;:::-;22229:2;22315:4;22307:6;22303:17;22295:25;;22375:4;22369;22365:15;22357:23;;22158:229;;;:::o;22393:132::-;;22483:3;22475:11;;22513:4;22508:3;22504:14;22496:22;;22465:60;;;:::o;22531:114::-;;22632:5;22626:12;22616:22;;22605:40;;;:::o;22651:99::-;;22737:5;22731:12;22721:22;;22710:40;;;:::o;22756:113::-;;22858:4;22853:3;22849:14;22841:22;;22831:38;;;:::o;22875:184::-;;23008:6;23003:3;22996:19;23048:4;23043:3;23039:14;23024:29;;22986:73;;;;:::o;23065:169::-;;23183:6;23178:3;23171:19;23223:4;23218:3;23214:14;23199:29;;23161:73;;;;:::o;23240:305::-;;23299:20;23317:1;23299:20;:::i;:::-;23294:25;;23333:20;23351:1;23333:20;:::i;:::-;23328:25;;23487:1;23419:66;23415:74;23412:1;23409:81;23406:2;;;23493:18;;:::i;:::-;23406:2;23537:1;23534;23530:9;23523:16;;23284:261;;;;:::o;23551:185::-;;23608:20;23626:1;23608:20;:::i;:::-;23603:25;;23642:20;23660:1;23642:20;:::i;:::-;23637:25;;23681:1;23671:2;;23686:18;;:::i;:::-;23671:2;23728:1;23725;23721:9;23716:14;;23593:143;;;;:::o;23742:348::-;;23805:20;23823:1;23805:20;:::i;:::-;23800:25;;23839:20;23857:1;23839:20;:::i;:::-;23834:25;;24027:1;23959:66;23955:74;23952:1;23949:81;23944:1;23937:9;23930:17;23926:105;23923:2;;;24034:18;;:::i;:::-;23923:2;24082:1;24079;24075:9;24064:20;;23790:300;;;;:::o;24096:191::-;;24156:20;24174:1;24156:20;:::i;:::-;24151:25;;24190:20;24208:1;24190:20;:::i;:::-;24185:25;;24229:1;24226;24223:8;24220:2;;;24234:18;;:::i;:::-;24220:2;24279:1;24276;24272:9;24264:17;;24141:146;;;;:::o;24293:96::-;;24359:24;24377:5;24359:24;:::i;:::-;24348:35;;24338:51;;;:::o;24395:90::-;;24472:5;24465:13;24458:21;24447:32;;24437:48;;;:::o;24491:126::-;;24568:42;24561:5;24557:54;24546:65;;24536:81;;;:::o;24623:77::-;;24689:5;24678:16;;24668:32;;;:::o;24706:86::-;;24781:4;24774:5;24770:16;24759:27;;24749:43;;;:::o;24798:178::-;;24907:63;24964:5;24907:63;:::i;:::-;24894:76;;24884:92;;;:::o;24982:139::-;;25091:24;25109:5;25091:24;:::i;:::-;25078:37;;25068:53;;;:::o;25127:121::-;;25218:24;25236:5;25218:24;:::i;:::-;25205:37;;25195:53;;;:::o;25254:307::-;25322:1;25332:113;25346:6;25343:1;25340:13;25332:113;;;25431:1;25426:3;25422:11;25416:18;25412:1;25407:3;25403:11;25396:39;25368:2;25365:1;25361:10;25356:15;;25332:113;;;25463:6;25460:1;25457:13;25454:2;;;25543:1;25534:6;25529:3;25525:16;25518:27;25454:2;25303:258;;;;:::o;25567:233::-;;25629:24;25647:5;25629:24;:::i;:::-;25620:33;;25675:66;25668:5;25665:77;25662:2;;;25745:18;;:::i;:::-;25662:2;25792:1;25785:5;25781:13;25774:20;;25610:190;;;:::o;25806:180::-;25854:77;25851:1;25844:88;25951:4;25948:1;25941:15;25975:4;25972:1;25965:15;25992:180;26040:77;26037:1;26030:88;26137:4;26134:1;26127:15;26161:4;26158:1;26151:15;26178:180;26226:77;26223:1;26216:88;26323:4;26320:1;26313:15;26347:4;26344:1;26337:15;26364:102;;26456:2;26452:7;26447:2;26440:5;26436:14;26432:28;26422:38;;26412:54;;;:::o;26472:122::-;26545:24;26563:5;26545:24;:::i;:::-;26538:5;26535:35;26525:2;;26584:1;26581;26574:12;26525:2;26515:79;:::o;26600:116::-;26670:21;26685:5;26670:21;:::i;:::-;26663:5;26660:32;26650:2;;26706:1;26703;26696:12;26650:2;26640:76;:::o;26722:122::-;26795:24;26813:5;26795:24;:::i;:::-;26788:5;26785:35;26775:2;;26834:1;26831;26824:12;26775:2;26765:79;:::o

Swarm Source

ipfs://da5c374e30acd8c22f6226e8d85ab67e9fca9c6744332eec26a20a63e71d5b42

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.