ETH Price: $2,441.44 (-0.20%)

Contract

0x65aAF0e7500EC72cB16a19D27e8b228fAf118452
 

Overview

ETH Balance

0.003872675668805184 ETH

Eth Value

$9.45 (@ $2,441.44/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer207006952024-09-07 19:03:4730 days ago1725735827IN
0x65aAF0e7...fAf118452
0 ETH0.000250224.86705302
Transfer207006722024-09-07 18:59:1130 days ago1725735551IN
0x65aAF0e7...fAf118452
0 ETH0.000245864.78232135
Transfer207006492024-09-07 18:54:3530 days ago1725735275IN
0x65aAF0e7...fAf118452
0 ETH0.000124262.41697204
Approve203658142024-07-23 1:01:1176 days ago1721696471IN
0x65aAF0e7...fAf118452
0 ETH0.000055712.29471873
Approve203657822024-07-23 0:54:4776 days ago1721696087IN
0x65aAF0e7...fAf118452
0 ETH0.000101232.17023907
Transfer200770372024-06-12 16:47:47117 days ago1718210867IN
0x65aAF0e7...fAf118452
0 ETH0.001085317.02498768
Transfer199580742024-05-27 1:58:11133 days ago1716775091IN
0x65aAF0e7...fAf118452
0 ETH0.000424336.63514856
Transfer199178282024-05-21 10:56:59139 days ago1716289019IN
0x65aAF0e7...fAf118452
0 ETH0.000415728.87077866
Transfer199178252024-05-21 10:56:23139 days ago1716288983IN
0x65aAF0e7...fAf118452
0 ETH0.000382098.15128305
Transfer199178122024-05-21 10:53:47139 days ago1716288827IN
0x65aAF0e7...fAf118452
0 ETH0.00038228.15358712
Approve198676742024-05-14 10:32:47146 days ago1715682767IN
0x65aAF0e7...fAf118452
0 ETH0.00035077.5182186
Approve198620612024-05-13 15:42:23147 days ago1715614943IN
0x65aAF0e7...fAf118452
0 ETH0.0012024225.9500706
Transfer198582582024-05-13 2:57:23147 days ago1715569043IN
0x65aAF0e7...fAf118452
0 ETH0.000421566.58826098
Transfer198582442024-05-13 2:54:35147 days ago1715568875IN
0x65aAF0e7...fAf118452
0 ETH0.0004637.23581029
Transfer198582342024-05-13 2:52:35147 days ago1715568755IN
0x65aAF0e7...fAf118452
0 ETH0.000278244.34846645
Transfer198579492024-05-13 1:55:23147 days ago1715565323IN
0x65aAF0e7...fAf118452
0 ETH0.000378755.50807987
Transfer198579082024-05-13 1:47:11147 days ago1715564831IN
0x65aAF0e7...fAf118452
0 ETH0.000292116.22998808
Transfer198578592024-05-13 1:36:59147 days ago1715564219IN
0x65aAF0e7...fAf118452
0 ETH0.000359495.6180957
Transfer198578542024-05-13 1:35:59147 days ago1715564159IN
0x65aAF0e7...fAf118452
0 ETH0.000435556.33406581
Approve198494772024-05-11 21:28:47148 days ago1715462927IN
0x65aAF0e7...fAf118452
0 ETH0.000253515.43455158
Transfer198487582024-05-11 19:04:23149 days ago1715454263IN
0x65aAF0e7...fAf118452
0 ETH0.000195793.79063596
Transfer198487432024-05-11 19:01:23149 days ago1715454083IN
0x65aAF0e7...fAf118452
0 ETH0.000255753.71990167
Transfer198487282024-05-11 18:58:23149 days ago1715453903IN
0x65aAF0e7...fAf118452
0 ETH0.000277774.04088158
Transfer198487152024-05-11 18:55:47149 days ago1715453747IN
0x65aAF0e7...fAf118452
0 ETH0.000285134.14733075
Approve198471802024-05-11 13:46:59149 days ago1715435219IN
0x65aAF0e7...fAf118452
0 ETH0.0006260413.42070471
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
197975852024-05-04 15:18:23156 days ago1714835903
0x65aAF0e7...fAf118452
0.00031664 ETH
197975852024-05-04 15:18:23156 days ago1714835903
0x65aAF0e7...fAf118452
0.06145011 ETH
197975852024-05-04 15:18:23156 days ago1714835903
0x65aAF0e7...fAf118452
0.12290023 ETH
197975852024-05-04 15:18:23156 days ago1714835903
0x65aAF0e7...fAf118452
0.18435034 ETH
197204082024-04-23 20:14:11166 days ago1713903251
0x65aAF0e7...fAf118452
0.0000349 ETH
197204082024-04-23 20:14:11166 days ago1713903251
0x65aAF0e7...fAf118452
0.0266182 ETH
197204082024-04-23 20:14:11166 days ago1713903251
0x65aAF0e7...fAf118452
0.05323641 ETH
197204082024-04-23 20:14:11166 days ago1713903251
0x65aAF0e7...fAf118452
0.07985462 ETH
196779982024-04-17 21:53:23172 days ago1713390803
0x65aAF0e7...fAf118452
0.0011669 ETH
196779982024-04-17 21:53:23172 days ago1713390803
0x65aAF0e7...fAf118452
0.09529749 ETH
196779982024-04-17 21:53:23172 days ago1713390803
0x65aAF0e7...fAf118452
0.19059499 ETH
196779982024-04-17 21:53:23172 days ago1713390803
0x65aAF0e7...fAf118452
0.28589249 ETH
196014712024-04-07 4:35:47183 days ago1712464547
0x65aAF0e7...fAf118452
0.00050427 ETH
196014712024-04-07 4:35:47183 days ago1712464547
0x65aAF0e7...fAf118452
0.05449153 ETH
196014712024-04-07 4:35:47183 days ago1712464547
0x65aAF0e7...fAf118452
0.10898307 ETH
196014712024-04-07 4:35:47183 days ago1712464547
0x65aAF0e7...fAf118452
0.1634746 ETH
195370832024-03-29 3:48:23192 days ago1711684103
0x65aAF0e7...fAf118452
0.00068926 ETH
195370832024-03-29 3:48:23192 days ago1711684103
0x65aAF0e7...fAf118452
0.05860033 ETH
195370832024-03-29 3:48:23192 days ago1711684103
0x65aAF0e7...fAf118452
0.11720067 ETH
195370832024-03-29 3:48:23192 days ago1711684103
0x65aAF0e7...fAf118452
0.175801 ETH
192670012024-02-20 6:01:47230 days ago1708408907
0x65aAF0e7...fAf118452
0.00000039 ETH
192670012024-02-20 6:01:47230 days ago1708408907
0x65aAF0e7...fAf118452
0.00000031 ETH
192670012024-02-20 6:01:47230 days ago1708408907
0x65aAF0e7...fAf118452
0.00000126 ETH
192670012024-02-20 6:01:47230 days ago1708408907
0x65aAF0e7...fAf118452
0.00000197 ETH
192669562024-02-20 5:52:47230 days ago1708408367
0x65aAF0e7...fAf118452
0.00093923 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HiveMind

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-27
*/

//Telegram  https://t.me/Hive_Mind_Official
//Website   https://hivemind.hub
//Twitter/X https://twitter.com/Hive_Mind_Token

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++++#@@@@#++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++++*@@@@@*%@@@@@+++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++++@@@@@%++++++++@@@@@%+++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++#@@@@@*++++#@@@@*++++#@@@@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++%@@++++*@@@@@@@@@@@@+++++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++%@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++%@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@++@@@@@@@@@@@@@@@@@#++@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@@#++++*@@@@@@@@@@+++++%@@*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++++#@@@@@*+++*%@@#++++*@@@@@*++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++++#%+++++@@@@@@++++++@@@@@%+++++@*++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@#++++*@@@@@@@@#++++*@@@@@@@@@@+++++%@@@@@@@@+++++@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@+++++%@@@@@++++%@@@@@*+++*%@@#++++*@@@@@#+++*@@@@@%++++*@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@++++#@@@@@*++*+#%+++++@@@@@%+++++*@@@@@%+++++@*++++#@@@@@*+++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@++*@@@%+++++@@@@@@@@*++**#@@@@++@@@@*++++%@@@@@@@@+++++@@@@++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@++*@@+*+%@@@@@@@@@@@@@@@*++@@@++@@%+**@@@@@@@@@@@@@@@#+++@@++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@*+*@@++#@@@@@@@@@@@@@@@@@++@@@++@@%++@@@@@@@@@@@@@@@@@*++@@++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@*+*@@++#@@@@@@@@@@@@@@@@@++#+**+++%++@@@@@@@@@@@@@@@@@*++@@++#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@++*@@+*#@@@@@@@@@@@@@@@@@++++%@@%++++@@@@@@@@@@@@@@@@@*+*@@*+#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@*+*@@+*#@@@@@@@@@@@@@@@@*+*@@@@@@@@***@@@@@@@@@@@@@@@@*+*@@**#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@***@@++#@@@@@@@@@@@@@@@@**@@@@@@@@@@+*@@@@@@@@@@@@@@@@***@@**#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@***@@++*+@@@@@@@@@@@@@@@**@@@@@@@@@@**@@@@@@@@@@@@@@%+*+*@@**#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@***@@@@#+++**###########*+*@@@@@@@@++*###########****+%@@@@**#@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@*****#@@@@@**********+***+**+@@@@+***+*+********+**@@@@@***+*%@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@*****@**%@@@@@@@@@@@@@@#*++**+%@@@@@@@@@@@@@@***%+****@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@#*****@@@@@@@@@@@@@@#*****+#@@@@@@@@@@@@@@****+%@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@***@@@@@@@@@@*****@@@@+****@@@@@@@@@@**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+*@@@@%****#@@@@@@@@@@#****@@@@@+**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#********%@#*****+****#@*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@******%@@@@@@#*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**@@@@@@@@@@@@@@**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@**#@@@@@@@@@@@@***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#@@@@@@#***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@***@@@@@@***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***@@***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


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

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

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() {
        _setOwner(_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() external virtual onlyOwner {
        _setOwner(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) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract HiveMind is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "The Hive Mind";
    string constant _symbol = "HIVE";
    uint8 constant _decimals = 18;

    uint256 constant _totalSupply = 100000000000 * 10**18; // 100 Billion
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isRestricted;

    uint256 burnFee = 0;
    uint256 daoFee = 0;
    uint256 liquidityFee = 0;
    uint256 marketingFee = 0;

    uint256 constant feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public daoFeeReceiver;
    address public marketingFeeReceiver;

    IDEXRouter public router;
    address uniswapV2ETHPair;
    address[] public pairs;

    bool public autoLiquifyEnabled = true;
    bool public feesOnNormalTransfers = false;

    bool inSwap;
    modifier swapping { inSwap = true; _; inSwap = false; }
    uint256 public autoLiquifyThreshold = 100 * 10 ** _decimals;

    event AutoLiquify(uint256 amountETH, uint256 amountToken);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event FeesUpdated(uint256 indexed newBurnFee, uint256 indexed newDaoFee, uint256 newLiquidityFee, uint256 newMarketingFee);
    event RecoveredExcess(uint256 amount);
    event UpdateDaoAddress(address indexed newAddr, address indexed oldAddr);
    event UpdateLiquidityAddress(address indexed newAddr, address indexed oldAddr);
    event UpdateAutoLiquifyEnabled(bool enabled);
    event UpdateFeesOnNormalTransfer(bool enabled);
    event UpdateMarketingAddress(address indexed newAddr, address indexed oldAddr);

    constructor() {
        address ownerAddr = msg.sender;

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2ETHPair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = ~uint256(0);

        pairs.push(uniswapV2ETHPair);

        isFeeExempt[ownerAddr] = true;
        isFeeExempt[address(this)] = true;

        daoFeeReceiver = ownerAddr;
        marketingFeeReceiver = ownerAddr;
        autoLiquidityReceiver = ownerAddr;

        _balances[ownerAddr] = _totalSupply;
        emit Transfer(address(0), ownerAddr, _totalSupply);
    }

    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }

    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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, ~uint256(0));
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != ~uint256(0)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!isRestricted[recipient], "Address is restricted");

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(shouldAutoLiquify()) { autoLiquify(); }

        require(_balances[sender].sub(amount) >= 0, "Insufficient Balance");
        _balances[sender] = _balances[sender].sub(amount);

        if (shouldTakeFee(sender, recipient)) {
            uint256 burnAmount = amount.mul(burnFee).div(feeDenominator);
            uint256 daoAmount = amount.mul(daoFee).div(feeDenominator);
            uint256 liquidityAmount = amount.mul(liquidityFee).div(feeDenominator);
            uint256 marketingAmount = amount.mul(marketingFee).div(feeDenominator);

            uint256 totalStoreAmount = daoAmount + liquidityAmount + marketingAmount; // Total token fee
            uint256 totalTaxAmount = burnAmount + totalStoreAmount; // Total amount of tax

            _balances[address(this)] = _balances[address(this)] + totalStoreAmount; // Store tax fees within itself
            emit Transfer(sender, address(this), totalStoreAmount);

            _balances[DEAD] = _balances[DEAD].add(burnAmount); // Send the Burn fee to the DEAD wallet
            emit Transfer(sender, DEAD, burnAmount);


            uint256 amountReceived = amount - totalTaxAmount;
            _balances[recipient] = _balances[recipient].add(amountReceived);
            emit Transfer(sender, recipient, amountReceived);
        } else {
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }

        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(balanceOf(sender).sub(amount) >= 0, "Insufficient Balance");
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if (isFeeExempt[sender] || isFeeExempt[recipient]) return false;

        address[] memory liqPairs = pairs;

        for (uint256 i = 0; i < liqPairs.length; i++) {
            if (sender == liqPairs[i] || recipient == liqPairs[i]) return true;
        }

        return feesOnNormalTransfers;
    }

    function shouldAutoLiquify() internal view returns (bool) {
        return msg.sender != uniswapV2ETHPair
        && !inSwap
        && autoLiquifyEnabled
        && _balances[address(this)] >= autoLiquifyThreshold;
    }

    function liquify() external onlyOwner {
        autoLiquify();
    }

    function autoLiquify() internal swapping {
        uint256 balanceBefore = address(this).balance;

        uint256 totalAmount = _balances[address(this)];
        uint256 denom = daoFee + liquidityFee + marketingFee;

        uint256 daoSwap = totalAmount.mul(daoFee).div(denom);
        uint256 liquiditySwap = totalAmount.mul(liquidityFee).div(denom);
        uint256 marketingSwap = totalAmount.mul(marketingFee).div(denom);

        uint256 amountToLiquify = liquiditySwap.div(2);

        uint256 amountToSwap = daoSwap + amountToLiquify + marketingSwap;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), amountToSwap);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 swapedETHAmount = address(this).balance.sub(balanceBefore);

        if (swapedETHAmount > 0) {
            uint256 ethDenom =  daoFee + marketingFee + liquidityFee.div(2);

            uint256 ethSwapMarketingAmount = swapedETHAmount.mul(marketingFee).div(ethDenom); // ETH for Marketing
            uint256 ethSwapDaoAmount = swapedETHAmount.mul(daoFee).div(ethDenom); // ETH for DAO
            uint256 ethLiquidify = swapedETHAmount.mul(liquidityFee.div(2)).div(ethDenom); // ETH for Liqudity

            if (ethSwapMarketingAmount > 0) {
                // Send ETH for Marketing
                payable(marketingFeeReceiver).transfer(ethSwapMarketingAmount);
            }

            if (ethSwapDaoAmount > 0) {
                // Send ETH for DAO
                payable(daoFeeReceiver).transfer(ethSwapDaoAmount);
            }

            if (ethLiquidify > 0){
                _approve(address(this), address(router), amountToLiquify);
                router.addLiquidityETH{ value: ethLiquidify }(
                    address(this),
                    amountToLiquify,
                    0,
                    0,
                    autoLiquidityReceiver,
                    block.timestamp
                );
            }
        }
    }

    function ETHbalance() external view returns (uint256) {
        return address(this).balance;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;

        emit ExcludeFromFees(holder, exempt);
    }

    function setFees(
        uint256 _burnFee,
        uint256 _daoFee,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) external onlyOwner {
        burnFee = _burnFee;
        daoFee = _daoFee;
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;

        emit FeesUpdated(burnFee, daoFee, liquidityFee, marketingFee);
    }

    function setAutoLiquifyThreshold(uint256 threshold) external onlyOwner {
        autoLiquifyThreshold = threshold;
    }

    function setAutoLiquifyEnabled(bool _enabled) external onlyOwner {
        autoLiquifyEnabled = _enabled;
        emit UpdateAutoLiquifyEnabled(_enabled);
    }

    function setDaoFeeReceiver(address _receiver) external onlyOwner {
        address oldAddr = daoFeeReceiver;
        daoFeeReceiver = _receiver;
        
        isFeeExempt[_receiver] = true;

        emit UpdateDaoAddress(oldAddr, _receiver);
    }

    function setLiquidityFeeReceiver(address _receiver) external onlyOwner {
        address oldAddr = autoLiquidityReceiver;
        autoLiquidityReceiver = _receiver;

        isFeeExempt[_receiver] = true;

        emit UpdateLiquidityAddress(oldAddr, _receiver);
    }

    function setMarketingFeeReceiver(address _receiver) external onlyOwner {
        address oldAddr = marketingFeeReceiver;
        marketingFeeReceiver = _receiver;

        isFeeExempt[_receiver] = true;

        emit UpdateMarketingAddress(oldAddr, _receiver);
    }

    function getCirculatingSupply() external view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function addPair(address pair) external onlyOwner {
        pairs.push(pair);
    }

    function removeLastPair() external onlyOwner {
        pairs.pop();
    }

    function setFeesOnNormalTransfers(bool _enabled) external onlyOwner {
        feesOnNormalTransfers = _enabled;

        emit UpdateFeesOnNormalTransfer(_enabled);
    }

    function setisRestricted(address adr, bool restricted) external onlyOwner {
        isRestricted[adr] = restricted;
    }

    function totalFees() external view returns (uint256) {
        return burnFee.add(daoFee).add(liquidityFee).add(marketingFee).div(100);
    }

    function walletisRestricted(address adr) external view returns (bool) {
        return isRestricted[adr];
    }

    function walletIsTaxExempt(address adr) external view returns (bool) {
        return isFeeExempt[adr];
    }

    // only for recovering excess ETH in the contract, in times of miscalculation. Can only be sent to marketing wallet - ALWAYS CONFIRM BEFORE USE
    function recoverExcess(uint256 amount) external onlyOwner {
        require(amount < address(this).balance, "HIVE: Can not send more than contract balance");
        payable(marketingFeeReceiver).transfer(amount);
        emit RecoveredExcess(amount);
    }

    // only for recovering tokens that are NOT HIVE tokens sent in error by wallets
    function withdrawTokens(address tokenaddr) external onlyOwner {
        require(tokenaddr != address(this), 'This is for tokens sent to the contract by mistake');
        uint256 tokenBal = IERC20(tokenaddr).balanceOf(address(this));
        if (tokenBal > 0) {
            IERC20(tokenaddr).transfer(marketingFeeReceiver, tokenBal);
        }
    }

    receive() external payable { }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newDaoFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoveredExcess","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"UpdateAutoLiquifyEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddr","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddr","type":"address"}],"name":"UpdateDaoAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"UpdateFeesOnNormalTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddr","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddr","type":"address"}],"name":"UpdateLiquidityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddr","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddr","type":"address"}],"name":"UpdateMarketingAddress","type":"event"},{"inputs":[],"name":"ETHbalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquifyThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feesOnNormalTransfers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverExcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLastPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setAutoLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setAutoLiquifyThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"setDaoFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_daoFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeesOnNormalTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"setLiquidityFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"setMarketingFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"},{"internalType":"bool","name":"restricted","type":"bool"}],"name":"setisRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"walletIsTaxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"walletisRestricted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenaddr","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600581905560068190556007819055600855600f805461ffff19166001179055620000346012600a620003fb565b62000041906064620004bc565b6010553480156200005157600080fd5b506200005d3362000332565b600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905133929163c45a0155916004808301926020929190829003018186803b158015620000bf57600080fd5b505afa158015620000d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fa919062000382565b6001600160a01b031663c9c65396600c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200015757600080fd5b505afa1580156200016c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000192919062000382565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620001da57600080fd5b505af1158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000215919062000382565b600d80546001600160a01b039283166001600160a01b0319918216178255306000818152600260209081526040808320600c5488168452825280832060001990559454600e805460018181019092557fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01805487169289169290921790915595871680835260038252858320805460ff19908116891790915593835285832080549094168717909355600a8054851684179055600b80548516841790556009805490941683179093558181529382528284206c01431e0fae6d7217caa000000090819055925192835292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620004f4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121562000394578081fd5b81516001600160a01b0381168114620003ab578182fd5b9392505050565b600181815b80851115620003f3578160001904821115620003d757620003d7620004de565b80851615620003e557918102915b93841c9390800290620003b7565b509250929050565b6000620003ab60ff8416836000826200041757506001620004b6565b816200042657506000620004b6565b81600181146200043f57600281146200044a576200046a565b6001915050620004b6565b60ff8411156200045e576200045e620004de565b50506001821b620004b6565b5060208310610133831016604e8410600b84101617156200048f575081810a620004b6565b6200049b8383620003b2565b8060001904821115620004b257620004b2620004de565b0290505b92915050565b6000816000190483118215151615620004d957620004d9620004de565b500290565b634e487b7160e01b600052601160045260246000fd5b61244380620005046000396000f3fe60806040526004361061023e5760003560e01c80637df8d8431161012e578063c2b7bbb6116100ab578063e96fada21161006f578063e96fada21461072a578063edafd4ad1461074a578063f2fde38b1461076a578063f3a54f2c1461078a578063f887ea40146107aa57600080fd5b8063c2b7bbb614610679578063ca33e64c14610699578063cb9598c3146106b9578063dd62ed3e146106ce578063e66f9c661461071457600080fd5b806395d89b41116100f257806395d89b41146105d9578063a9059cbb14610606578063ab12bf8014610626578063ab643c5a14610646578063b91ac7881461065957600080fd5b80637df8d84314610528578063890a8127146105485780638997a942146105625780638da5cb5b146105825780639373c0a4146105a057600080fd5b80633a814487116101bc57806361ed96f51161018057806361ed96f514610465578063658d4b7f1461049d5780636fcba377146104bd57806370a08231146104dd578063715018a61461051357600080fd5b80633a814487146103c657806349df728c146103e657806354200d6f14610406578063571ac8b0146104265780635abe67111461044657600080fd5b806318160ddd1161020357806318160ddd1461033557806323b872dd146103555780632b112e4914610375578063313ce5671461038a5780633190bb8a146103a657600080fd5b806293dc141461024a57806306fdde031461026157806307c0e790146102a9578063095ea7b3146102f257806313114a9d1461031257600080fd5b3661024557005b600080fd5b34801561025657600080fd5b5061025f6107ca565b005b34801561026d57600080fd5b5060408051808201909152600d81526c151a1948121a5d9948135a5b99609a1b60208201525b6040516102a09190612233565b60405180910390f35b3480156102b557600080fd5b506102e26102c4366004612065565b6001600160a01b031660009081526003602052604090205460ff1690565b60405190151581526020016102a0565b3480156102fe57600080fd5b506102e261030d366004612142565b610840565b34801561031e57600080fd5b50610327610857565b6040519081526020016102a0565b34801561034157600080fd5b506c01431e0fae6d7217caa0000000610327565b34801561036157600080fd5b506102e26103703660046120d5565b610892565b34801561038157600080fd5b50610327610954565b34801561039657600080fd5b50604051601281526020016102a0565b3480156103b257600080fd5b5061025f6103c1366004612065565b6109c9565b3480156103d257600080fd5b5061025f6103e13660046121a5565b610a5d565b3480156103f257600080fd5b5061025f610401366004612065565b610b5e565b34801561041257600080fd5b5061025f61042136600461216d565b610d0a565b34801561043257600080fd5b506102e2610441366004612065565b610d75565b34801561045257600080fd5b50600f546102e290610100900460ff1681565b34801561047157600080fd5b50600a54610485906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b3480156104a957600080fd5b5061025f6104b8366004612115565b610d83565b3480156104c957600080fd5b5061025f6104d8366004612202565b610e0c565b3480156104e957600080fd5b506103276104f8366004612065565b6001600160a01b031660009081526001602052604090205490565b34801561051f57600080fd5b5061025f610e8d565b34801561053457600080fd5b5061025f610543366004612115565b610ec3565b34801561055457600080fd5b50600f546102e29060ff1681565b34801561056e57600080fd5b5061025f61057d3660046121a5565b610f18565b34801561058e57600080fd5b506000546001600160a01b0316610485565b3480156105ac57600080fd5b506102e26105bb366004612065565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105e557600080fd5b506040805180820190915260048152634849564560e01b6020820152610293565b34801561061257600080fd5b506102e2610621366004612142565b610f47565b34801561063257600080fd5b5061025f610641366004612065565b610f54565b34801561065257600080fd5b5047610327565b34801561066557600080fd5b506104856106743660046121a5565b610fe8565b34801561068557600080fd5b5061025f610694366004612065565b611012565b3480156106a557600080fd5b50600954610485906001600160a01b031681565b3480156106c557600080fd5b5061025f61108e565b3480156106da57600080fd5b506103276106e936600461209d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561072057600080fd5b5061032760105481565b34801561073657600080fd5b50600b54610485906001600160a01b031681565b34801561075657600080fd5b5061025f610765366004612065565b6110c0565b34801561077657600080fd5b5061025f610785366004612065565b611154565b34801561079657600080fd5b5061025f6107a536600461216d565b6111ef565b3480156107b657600080fd5b50600c54610485906001600160a01b031681565b6000546001600160a01b031633146107fd5760405162461bcd60e51b81526004016107f490612286565b60405180910390fd5b600e80548061081c57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055565b600061084d338484611262565b5060015b92915050565b600061088d606461088760085461088160075461088160065460055461138690919063ffffffff16565b90611386565b906113e5565b905090565b6001600160a01b03831660009081526002602090815260408083203384529091528120546000191461093f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260028252838120338252909152919091205461091a918490611427565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b61094a848484611461565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54909161088d916109c3906c01431e0fae6d7217caa00000009061184f565b9061184f565b6000546001600160a01b031633146109f35760405162461bcd60e51b81526004016107f490612286565b600980546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917fbe2b5c29e9a490c1772c736f2420e15cb41fdb25e6518f23433f03b125c747d19190a35050565b6000546001600160a01b03163314610a875760405162461bcd60e51b81526004016107f490612286565b478110610aec5760405162461bcd60e51b815260206004820152602d60248201527f484956453a2043616e206e6f742073656e64206d6f7265207468616e20636f6e60448201526c74726163742062616c616e636560981b60648201526084016107f4565b600b546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b26573d6000803e3d6000fd5b506040518181527f37e7145c08854d83de3c610e4a804c2cd5a0280e411042991ba02908917e02f8906020015b60405180910390a150565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016107f490612286565b6001600160a01b038116301415610bfc5760405162461bcd60e51b815260206004820152603260248201527f5468697320697320666f7220746f6b656e732073656e7420746f2074686520636044820152716f6e7472616374206279206d697374616b6560701b60648201526084016107f4565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610c3e57600080fd5b505afa158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7691906121bd565b90508015610d0657600b5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190612189565b505b5050565b6000546001600160a01b03163314610d345760405162461bcd60e51b81526004016107f490612286565b600f805460ff19168215159081179091556040519081527f1a41147a9f7da81de762374b357f65cb0091cde612f12c5efb2f45cffc94b8b390602001610b53565b600061085182600019610840565b6000546001600160a01b03163314610dad5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b03163314610e365760405162461bcd60e51b81526004016107f490612286565b60058490556006839055600782905560088190556040805183815260208101839052849186917f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe910160405180910390a350505050565b6000546001600160a01b03163314610eb75760405162461bcd60e51b81526004016107f490612286565b610ec16000611891565b565b6000546001600160a01b03163314610eed5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f425760405162461bcd60e51b81526004016107f490612286565b601055565b600061094d338484611461565b6000546001600160a01b03163314610f7e5760405162461bcd60e51b81526004016107f490612286565b600a80546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917f165f20ca26f0dc785b62df8c285bff5d2b653e0050cc84418aed0585ec25d9d39190a35050565b600e8181548110610ff857600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461103c5760405162461bcd60e51b81526004016107f490612286565b600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110b85760405162461bcd60e51b81526004016107f490612286565b610ec16118e1565b6000546001600160a01b031633146110ea5760405162461bcd60e51b81526004016107f490612286565b600b80546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917ff814e542e14c332b4a2776be84ba8f1764a228047e65dcd7a9ef759ddc9e89c29190a35050565b6000546001600160a01b0316331461117e5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b0381166111e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b6111ec81611891565b50565b6000546001600160a01b031633146112195760405162461bcd60e51b81526004016107f490612286565b600f80548215156101000261ff00199091161790556040517f6614b840e348fc9387fe5e75126c9f2d8ae6b7e2de9b667576b26394c57dd89e90610b5390831515815260200190565b6001600160a01b0383166112c45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b6001600160a01b0382166113255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f4565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080611393838561232b565b90508381101561094d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f4565b600061094d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d3a565b6000818484111561144b5760405162461bcd60e51b81526004016107f49190612233565b5060006114588486612382565b95945050505050565b6001600160a01b03821660009081526004602052604081205460ff16156114c25760405162461bcd60e51b81526020600482015260156024820152741059191c995cdcc81a5cc81c995cdd1c9a58dd1959605a1b60448201526064016107f4565b600f5462010000900460ff16156114e5576114de848484611d68565b905061094d565b6114ed611e25565b156114fa576114fa6118e1565b6001600160a01b03841660009081526001602052604081205461151d908461184f565b10156115625760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107f4565b6001600160a01b038416600090815260016020526040902054611585908361184f565b6001600160a01b0385166000908152600160205260409020556115a88484611e7a565b156117d75760006115ca61271061088760055486611fe690919063ffffffff16565b905060006115e961271061088760065487611fe690919063ffffffff16565b9050600061160861271061088760075488611fe690919063ffffffff16565b9050600061162761271061088760085489611fe690919063ffffffff16565b9050600081611636848661232b565b611640919061232b565b9050600061164e828761232b565b3060009081526001602052604090205490915061166c90839061232b565b30600081815260016020526040908190209290925590516001600160a01b038c16906000805160206123ee833981519152906116ab9086815260200190565b60405180910390a361dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546116ea9087611386565b61dead600081905260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d919091556040516001600160a01b038c16906000805160206123ee83398151915290611747908a815260200190565b60405180910390a3600061175b828a612382565b6001600160a01b038b166000908152600160205260409020549091506117819082611386565b6001600160a01b03808c1660008181526001602052604090819020939093559151908d16906000805160206123ee833981519152906117c39085815260200190565b60405180910390a350505050505050611845565b6001600160a01b0383166000908152600160205260409020546117fa9083611386565b6001600160a01b0380851660008181526001602052604090819020939093559151908616906000805160206123ee8339815191529061183c9086815260200190565b60405180910390a35b5060019392505050565b600061094d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611427565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600f805462ff000019166201000017905530600090815260016020526040812054600854600754600654479492916119189161232b565b611922919061232b565b9050600061193f8261088760065486611fe690919063ffffffff16565b9050600061195c8361088760075487611fe690919063ffffffff16565b905060006119798461088760085488611fe690919063ffffffff16565b905060006119888360026113e5565b9050600082611997838761232b565b6119a1919061232b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119e957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611a3d57600080fd5b505afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190612081565b81600181518110611a9657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c54611abc9130911684611262565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611af59085906000908690309042906004016122bb565b600060405180830381600087803b158015611b0f57600080fd5b505af1158015611b23573d6000803e3d6000fd5b505050506000611b3c8a4761184f90919063ffffffff16565b90508015611d2257600754600090611b559060026113e5565b600854600654611b65919061232b565b611b6f919061232b565b90506000611b8c8261088760085486611fe690919063ffffffff16565b90506000611ba98361088760065487611fe690919063ffffffff16565b90506000611bd184610887611bca60026007546113e590919063ffffffff16565b8890611fe6565b90508215611c1557600b546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611c13573d6000803e3d6000fd5b505b8115611c5757600a546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611c55573d6000803e3d6000fd5b505b8015611d1d57600c54611c759030906001600160a01b03168a611262565b600c5460095460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015611ce057600080fd5b505af1158015611cf4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d1991906121d5565b5050505b505050505b5050600f805462ff0000191690555050505050505050565b60008183611d5b5760405162461bcd60e51b81526004016107f49190612233565b5060006114588486612343565b600080611d8e836109c3876001600160a01b031660009081526001602052604090205490565b1015611dd35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107f4565b6001600160a01b038416600090815260016020526040902054611df6908361184f565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546117fa9083611386565b600d546000906001600160a01b03163314801590611e4c5750600f5462010000900460ff16155b8015611e5a5750600f5460ff165b801561088d57505060105430600090815260016020526040902054101590565b6001600160a01b03821660009081526003602052604081205460ff1680611eb957506001600160a01b03821660009081526003602052604090205460ff165b15611ec657506000610851565b6000600e805480602002602001604051908101604052809291908181526020018280548015611f1e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f00575b5050505050905060005b8151811015611fd257818181518110611f5157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b03161480611fb05750818181518110611f9357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b0316145b15611fc057600192505050610851565b80611fca81612399565b915050611f28565b5050600f54610100900460ff169392505050565b600082611ff557506000610851565b60006120018385612363565b90508261200e8583612343565b1461094d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f4565b600060208284031215612076578081fd5b813561094d816123ca565b600060208284031215612092578081fd5b815161094d816123ca565b600080604083850312156120af578081fd5b82356120ba816123ca565b915060208301356120ca816123ca565b809150509250929050565b6000806000606084860312156120e9578081fd5b83356120f4816123ca565b92506020840135612104816123ca565b929592945050506040919091013590565b60008060408385031215612127578182fd5b8235612132816123ca565b915060208301356120ca816123df565b60008060408385031215612154578182fd5b823561215f816123ca565b946020939093013593505050565b60006020828403121561217e578081fd5b813561094d816123df565b60006020828403121561219a578081fd5b815161094d816123df565b6000602082840312156121b6578081fd5b5035919050565b6000602082840312156121ce578081fd5b5051919050565b6000806000606084860312156121e9578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612217578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b8181101561225f57858101830151858201604001528201612243565b818111156122705783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561230a5784516001600160a01b0316835293830193918301916001016122e5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561233e5761233e6123b4565b500190565b60008261235e57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561237d5761237d6123b4565b500290565b600082821015612394576123946123b4565b500390565b60006000198214156123ad576123ad6123b4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146111ec57600080fd5b80151581146111ec57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bee68ea7fb7ec9417814abb7a0db5e63722a70fb5d7d7392801a9c07d4aaf0ac64736f6c63430008040033

Deployed Bytecode

0x60806040526004361061023e5760003560e01c80637df8d8431161012e578063c2b7bbb6116100ab578063e96fada21161006f578063e96fada21461072a578063edafd4ad1461074a578063f2fde38b1461076a578063f3a54f2c1461078a578063f887ea40146107aa57600080fd5b8063c2b7bbb614610679578063ca33e64c14610699578063cb9598c3146106b9578063dd62ed3e146106ce578063e66f9c661461071457600080fd5b806395d89b41116100f257806395d89b41146105d9578063a9059cbb14610606578063ab12bf8014610626578063ab643c5a14610646578063b91ac7881461065957600080fd5b80637df8d84314610528578063890a8127146105485780638997a942146105625780638da5cb5b146105825780639373c0a4146105a057600080fd5b80633a814487116101bc57806361ed96f51161018057806361ed96f514610465578063658d4b7f1461049d5780636fcba377146104bd57806370a08231146104dd578063715018a61461051357600080fd5b80633a814487146103c657806349df728c146103e657806354200d6f14610406578063571ac8b0146104265780635abe67111461044657600080fd5b806318160ddd1161020357806318160ddd1461033557806323b872dd146103555780632b112e4914610375578063313ce5671461038a5780633190bb8a146103a657600080fd5b806293dc141461024a57806306fdde031461026157806307c0e790146102a9578063095ea7b3146102f257806313114a9d1461031257600080fd5b3661024557005b600080fd5b34801561025657600080fd5b5061025f6107ca565b005b34801561026d57600080fd5b5060408051808201909152600d81526c151a1948121a5d9948135a5b99609a1b60208201525b6040516102a09190612233565b60405180910390f35b3480156102b557600080fd5b506102e26102c4366004612065565b6001600160a01b031660009081526003602052604090205460ff1690565b60405190151581526020016102a0565b3480156102fe57600080fd5b506102e261030d366004612142565b610840565b34801561031e57600080fd5b50610327610857565b6040519081526020016102a0565b34801561034157600080fd5b506c01431e0fae6d7217caa0000000610327565b34801561036157600080fd5b506102e26103703660046120d5565b610892565b34801561038157600080fd5b50610327610954565b34801561039657600080fd5b50604051601281526020016102a0565b3480156103b257600080fd5b5061025f6103c1366004612065565b6109c9565b3480156103d257600080fd5b5061025f6103e13660046121a5565b610a5d565b3480156103f257600080fd5b5061025f610401366004612065565b610b5e565b34801561041257600080fd5b5061025f61042136600461216d565b610d0a565b34801561043257600080fd5b506102e2610441366004612065565b610d75565b34801561045257600080fd5b50600f546102e290610100900460ff1681565b34801561047157600080fd5b50600a54610485906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b3480156104a957600080fd5b5061025f6104b8366004612115565b610d83565b3480156104c957600080fd5b5061025f6104d8366004612202565b610e0c565b3480156104e957600080fd5b506103276104f8366004612065565b6001600160a01b031660009081526001602052604090205490565b34801561051f57600080fd5b5061025f610e8d565b34801561053457600080fd5b5061025f610543366004612115565b610ec3565b34801561055457600080fd5b50600f546102e29060ff1681565b34801561056e57600080fd5b5061025f61057d3660046121a5565b610f18565b34801561058e57600080fd5b506000546001600160a01b0316610485565b3480156105ac57600080fd5b506102e26105bb366004612065565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105e557600080fd5b506040805180820190915260048152634849564560e01b6020820152610293565b34801561061257600080fd5b506102e2610621366004612142565b610f47565b34801561063257600080fd5b5061025f610641366004612065565b610f54565b34801561065257600080fd5b5047610327565b34801561066557600080fd5b506104856106743660046121a5565b610fe8565b34801561068557600080fd5b5061025f610694366004612065565b611012565b3480156106a557600080fd5b50600954610485906001600160a01b031681565b3480156106c557600080fd5b5061025f61108e565b3480156106da57600080fd5b506103276106e936600461209d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561072057600080fd5b5061032760105481565b34801561073657600080fd5b50600b54610485906001600160a01b031681565b34801561075657600080fd5b5061025f610765366004612065565b6110c0565b34801561077657600080fd5b5061025f610785366004612065565b611154565b34801561079657600080fd5b5061025f6107a536600461216d565b6111ef565b3480156107b657600080fd5b50600c54610485906001600160a01b031681565b6000546001600160a01b031633146107fd5760405162461bcd60e51b81526004016107f490612286565b60405180910390fd5b600e80548061081c57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055565b600061084d338484611262565b5060015b92915050565b600061088d606461088760085461088160075461088160065460055461138690919063ffffffff16565b90611386565b906113e5565b905090565b6001600160a01b03831660009081526002602090815260408083203384529091528120546000191461093f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260028252838120338252909152919091205461091a918490611427565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b61094a848484611461565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54909161088d916109c3906c01431e0fae6d7217caa00000009061184f565b9061184f565b6000546001600160a01b031633146109f35760405162461bcd60e51b81526004016107f490612286565b600980546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917fbe2b5c29e9a490c1772c736f2420e15cb41fdb25e6518f23433f03b125c747d19190a35050565b6000546001600160a01b03163314610a875760405162461bcd60e51b81526004016107f490612286565b478110610aec5760405162461bcd60e51b815260206004820152602d60248201527f484956453a2043616e206e6f742073656e64206d6f7265207468616e20636f6e60448201526c74726163742062616c616e636560981b60648201526084016107f4565b600b546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b26573d6000803e3d6000fd5b506040518181527f37e7145c08854d83de3c610e4a804c2cd5a0280e411042991ba02908917e02f8906020015b60405180910390a150565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016107f490612286565b6001600160a01b038116301415610bfc5760405162461bcd60e51b815260206004820152603260248201527f5468697320697320666f7220746f6b656e732073656e7420746f2074686520636044820152716f6e7472616374206279206d697374616b6560701b60648201526084016107f4565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610c3e57600080fd5b505afa158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7691906121bd565b90508015610d0657600b5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190612189565b505b5050565b6000546001600160a01b03163314610d345760405162461bcd60e51b81526004016107f490612286565b600f805460ff19168215159081179091556040519081527f1a41147a9f7da81de762374b357f65cb0091cde612f12c5efb2f45cffc94b8b390602001610b53565b600061085182600019610840565b6000546001600160a01b03163314610dad5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b03163314610e365760405162461bcd60e51b81526004016107f490612286565b60058490556006839055600782905560088190556040805183815260208101839052849186917f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe910160405180910390a350505050565b6000546001600160a01b03163314610eb75760405162461bcd60e51b81526004016107f490612286565b610ec16000611891565b565b6000546001600160a01b03163314610eed5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f425760405162461bcd60e51b81526004016107f490612286565b601055565b600061094d338484611461565b6000546001600160a01b03163314610f7e5760405162461bcd60e51b81526004016107f490612286565b600a80546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917f165f20ca26f0dc785b62df8c285bff5d2b653e0050cc84418aed0585ec25d9d39190a35050565b600e8181548110610ff857600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461103c5760405162461bcd60e51b81526004016107f490612286565b600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110b85760405162461bcd60e51b81526004016107f490612286565b610ec16118e1565b6000546001600160a01b031633146110ea5760405162461bcd60e51b81526004016107f490612286565b600b80546001600160a01b038381166001600160a01b031983168117909355600083815260036020526040808220805460ff191660011790555191909216929183917ff814e542e14c332b4a2776be84ba8f1764a228047e65dcd7a9ef759ddc9e89c29190a35050565b6000546001600160a01b0316331461117e5760405162461bcd60e51b81526004016107f490612286565b6001600160a01b0381166111e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b6111ec81611891565b50565b6000546001600160a01b031633146112195760405162461bcd60e51b81526004016107f490612286565b600f80548215156101000261ff00199091161790556040517f6614b840e348fc9387fe5e75126c9f2d8ae6b7e2de9b667576b26394c57dd89e90610b5390831515815260200190565b6001600160a01b0383166112c45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b6001600160a01b0382166113255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f4565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080611393838561232b565b90508381101561094d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f4565b600061094d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d3a565b6000818484111561144b5760405162461bcd60e51b81526004016107f49190612233565b5060006114588486612382565b95945050505050565b6001600160a01b03821660009081526004602052604081205460ff16156114c25760405162461bcd60e51b81526020600482015260156024820152741059191c995cdcc81a5cc81c995cdd1c9a58dd1959605a1b60448201526064016107f4565b600f5462010000900460ff16156114e5576114de848484611d68565b905061094d565b6114ed611e25565b156114fa576114fa6118e1565b6001600160a01b03841660009081526001602052604081205461151d908461184f565b10156115625760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107f4565b6001600160a01b038416600090815260016020526040902054611585908361184f565b6001600160a01b0385166000908152600160205260409020556115a88484611e7a565b156117d75760006115ca61271061088760055486611fe690919063ffffffff16565b905060006115e961271061088760065487611fe690919063ffffffff16565b9050600061160861271061088760075488611fe690919063ffffffff16565b9050600061162761271061088760085489611fe690919063ffffffff16565b9050600081611636848661232b565b611640919061232b565b9050600061164e828761232b565b3060009081526001602052604090205490915061166c90839061232b565b30600081815260016020526040908190209290925590516001600160a01b038c16906000805160206123ee833981519152906116ab9086815260200190565b60405180910390a361dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546116ea9087611386565b61dead600081905260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d919091556040516001600160a01b038c16906000805160206123ee83398151915290611747908a815260200190565b60405180910390a3600061175b828a612382565b6001600160a01b038b166000908152600160205260409020549091506117819082611386565b6001600160a01b03808c1660008181526001602052604090819020939093559151908d16906000805160206123ee833981519152906117c39085815260200190565b60405180910390a350505050505050611845565b6001600160a01b0383166000908152600160205260409020546117fa9083611386565b6001600160a01b0380851660008181526001602052604090819020939093559151908616906000805160206123ee8339815191529061183c9086815260200190565b60405180910390a35b5060019392505050565b600061094d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611427565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600f805462ff000019166201000017905530600090815260016020526040812054600854600754600654479492916119189161232b565b611922919061232b565b9050600061193f8261088760065486611fe690919063ffffffff16565b9050600061195c8361088760075487611fe690919063ffffffff16565b905060006119798461088760085488611fe690919063ffffffff16565b905060006119888360026113e5565b9050600082611997838761232b565b6119a1919061232b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119e957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611a3d57600080fd5b505afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190612081565b81600181518110611a9657634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c54611abc9130911684611262565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611af59085906000908690309042906004016122bb565b600060405180830381600087803b158015611b0f57600080fd5b505af1158015611b23573d6000803e3d6000fd5b505050506000611b3c8a4761184f90919063ffffffff16565b90508015611d2257600754600090611b559060026113e5565b600854600654611b65919061232b565b611b6f919061232b565b90506000611b8c8261088760085486611fe690919063ffffffff16565b90506000611ba98361088760065487611fe690919063ffffffff16565b90506000611bd184610887611bca60026007546113e590919063ffffffff16565b8890611fe6565b90508215611c1557600b546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611c13573d6000803e3d6000fd5b505b8115611c5757600a546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611c55573d6000803e3d6000fd5b505b8015611d1d57600c54611c759030906001600160a01b03168a611262565b600c5460095460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015611ce057600080fd5b505af1158015611cf4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d1991906121d5565b5050505b505050505b5050600f805462ff0000191690555050505050505050565b60008183611d5b5760405162461bcd60e51b81526004016107f49190612233565b5060006114588486612343565b600080611d8e836109c3876001600160a01b031660009081526001602052604090205490565b1015611dd35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107f4565b6001600160a01b038416600090815260016020526040902054611df6908361184f565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546117fa9083611386565b600d546000906001600160a01b03163314801590611e4c5750600f5462010000900460ff16155b8015611e5a5750600f5460ff165b801561088d57505060105430600090815260016020526040902054101590565b6001600160a01b03821660009081526003602052604081205460ff1680611eb957506001600160a01b03821660009081526003602052604090205460ff165b15611ec657506000610851565b6000600e805480602002602001604051908101604052809291908181526020018280548015611f1e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f00575b5050505050905060005b8151811015611fd257818181518110611f5157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316856001600160a01b03161480611fb05750818181518110611f9357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316846001600160a01b0316145b15611fc057600192505050610851565b80611fca81612399565b915050611f28565b5050600f54610100900460ff169392505050565b600082611ff557506000610851565b60006120018385612363565b90508261200e8583612343565b1461094d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f4565b600060208284031215612076578081fd5b813561094d816123ca565b600060208284031215612092578081fd5b815161094d816123ca565b600080604083850312156120af578081fd5b82356120ba816123ca565b915060208301356120ca816123ca565b809150509250929050565b6000806000606084860312156120e9578081fd5b83356120f4816123ca565b92506020840135612104816123ca565b929592945050506040919091013590565b60008060408385031215612127578182fd5b8235612132816123ca565b915060208301356120ca816123df565b60008060408385031215612154578182fd5b823561215f816123ca565b946020939093013593505050565b60006020828403121561217e578081fd5b813561094d816123df565b60006020828403121561219a578081fd5b815161094d816123df565b6000602082840312156121b6578081fd5b5035919050565b6000602082840312156121ce578081fd5b5051919050565b6000806000606084860312156121e9578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612217578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b8181101561225f57858101830151858201604001528201612243565b818111156122705783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561230a5784516001600160a01b0316835293830193918301916001016122e5565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561233e5761233e6123b4565b500190565b60008261235e57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561237d5761237d6123b4565b500290565b600082821015612394576123946123b4565b500390565b60006000198214156123ad576123ad6123b4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146111ec57600080fd5b80151581146111ec57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bee68ea7fb7ec9417814abb7a0db5e63722a70fb5d7d7392801a9c07d4aaf0ac64736f6c63430008040033

Deployed Bytecode Sourcemap

11061:13259:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22635:75;;;;;;;;;;;;;:::i;:::-;;13996:80;;;;;;;;;;-1:-1:-1;14068:5:0;;;;;;;;;;;;-1:-1:-1;;;14068:5:0;;;;13996:80;;;;;;;:::i;:::-;;;;;;;;23302:111;;;;;;;;;;-1:-1:-1;23302:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;23389:16:0;23365:4;23389:16;;;:11;:16;;;;;;;;;23302:111;;;;5038:14:1;;5031:22;5013:41;;5001:2;4986:18;23302:111:0;4968:92:1;14613:159:0;;;;;;;;;;-1:-1:-1;14613:159:0;;;;;:::i;:::-;;:::i;23030:143::-;;;;;;;;;;;;;:::i;:::-;;;9911:25:1;;;9899:2;9884:18;23030:143:0;9866:76:1;14172:88:0;;;;;;;;;;-1:-1:-1;11452:21:0;14172:88;;15068:364;;;;;;;;;;-1:-1:-1;15068:364:0;;;;;:::i;:::-;;:::i;22390:144::-;;;;;;;;;;;;;:::i;13910:80::-;;;;;;;;;;-1:-1:-1;13910:80:0;;11409:2;11330:36:1;;11318:2;11303:18;13910:80:0;11285:87:1;21826:275:0;;;;;;;;;;-1:-1:-1;21826:275:0;;;;;:::i;:::-;;:::i;23570:261::-;;;;;;;;;;-1:-1:-1;23570:261:0;;;;;:::i;:::-;;:::i;23924:355::-;;;;;;;;;;-1:-1:-1;23924:355:0;;;;;:::i;:::-;;:::i;21390:163::-;;;;;;;;;;-1:-1:-1;21390:163:0;;;;;:::i;:::-;;:::i;14780:116::-;;;;;;;;;;-1:-1:-1;14780:116:0;;;;;:::i;:::-;;:::i;12124:41::-;;;;;;;;;;-1:-1:-1;12124:41:0;;;;;;;;;;;11907:29;;;;;;;;;;-1:-1:-1;11907:29:0;;;;-1:-1:-1;;;;;11907:29:0;;;;;;-1:-1:-1;;;;;3938:32:1;;;3920:51;;3908:2;3893:18;11907:29:0;3875:102:1;20700:168:0;;;;;;;;;;-1:-1:-1;20700:168:0;;;;;:::i;:::-;;:::i;20876:376::-;;;;;;;;;;-1:-1:-1;20876:376:0;;;;;:::i;:::-;;:::i;13799:105::-;;;;;;;;;;-1:-1:-1;13799:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;13883:18:0;13865:7;13883:18;;;:9;:18;;;;;;;13799:105;8057:96;;;;;;;;;;;;;:::i;22899:123::-;;;;;;;;;;-1:-1:-1;22899:123:0;;;;;:::i;:::-;;:::i;12080:37::-;;;;;;;;;;-1:-1:-1;12080:37:0;;;;;;;;21260:122;;;;;;;;;;-1:-1:-1;21260:122:0;;;;;:::i;:::-;;:::i;7406:87::-;;;;;;;;;;-1:-1:-1;7452:7:0;7479:6;-1:-1:-1;;;;;7479:6:0;7406:87;;23181:113;;;;;;;;;;-1:-1:-1;23181:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;23269:17:0;23245:4;23269:17;;;:12;:17;;;;;;;;;23181:113;14082:84;;;;;;;;;;-1:-1:-1;14156:7:0;;;;;;;;;;;;-1:-1:-1;;;14156:7:0;;;;14082:84;;14904:156;;;;;;;;;;-1:-1:-1;14904:156:0;;;;;:::i;:::-;;:::i;21561:257::-;;;;;;;;;;-1:-1:-1;21561:257:0;;;;;:::i;:::-;;:::i;20591:101::-;;;;;;;;;;-1:-1:-1;20663:21:0;20591:101;;12049:22;;;;;;;;;;-1:-1:-1;12049:22:0;;;;;:::i;:::-;;:::i;22542:85::-;;;;;;;;;;-1:-1:-1;22542:85:0;;;;;:::i;:::-;;:::i;11864:36::-;;;;;;;;;;-1:-1:-1;11864:36:0;;;;-1:-1:-1;;;;;11864:36:0;;;18236:70;;;;;;;;;;;;;:::i;13660:133::-;;;;;;;;;;-1:-1:-1;13660:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13762:19:0;;;13744:7;13762:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13660:133;12253:59;;;;;;;;;;;;;;;;11943:35;;;;;;;;;;-1:-1:-1;11943:35:0;;;;-1:-1:-1;;;;;11943:35:0;;;22109:273;;;;;;;;;;-1:-1:-1;22109:273:0;;;;;:::i;:::-;;:::i;8308:194::-;;;;;;;;;;-1:-1:-1;8308:194:0;;;;;:::i;:::-;;:::i;22718:173::-;;;;;;;;;;-1:-1:-1;22718:173:0;;;;;:::i;:::-;;:::i;11987:24::-;;;;;;;;;;-1:-1:-1;11987:24:0;;;;-1:-1:-1;;;;;11987:24:0;;;22635:75;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;;;;;;;;;22691:5:::1;:11;;;;;-1:-1:-1::0;;;22691:11:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22691:11:0;;;;;-1:-1:-1;;;;;;22691:11:0::1;::::0;;;;;22635:75::o;14613:159::-;14688:4;14705:37;14714:10;14726:7;14735:6;14705:8;:37::i;:::-;-1:-1:-1;14760:4:0;14613:159;;;;;:::o;23030:143::-;23074:7;23101:64;23161:3;23101:55;23143:12;;23101:37;23125:12;;23101:19;23113:6;;23101:7;;:11;;:19;;;;:::i;:::-;:23;;:37::i;:55::-;:59;;:64::i;:::-;23094:71;;23030:143;:::o;15068:364::-;-1:-1:-1;;;;;15188:19:0;;15168:4;15188:19;;;:11;:19;;;;;;;;15208:10;15188:31;;;;;;;;-1:-1:-1;;15188:46:0;15185:180;;15284:69;;;;;;;;;;;-1:-1:-1;;;15284:69:0;;;;;;;;-1:-1:-1;;;;;15284:19:0;;-1:-1:-1;15284:19:0;;;:11;:19;;;;;15304:10;15284:31;;;;;;;;;;:69;;15320:6;;15284:35;:69::i;:::-;-1:-1:-1;;;;;15250:19:0;;;;;;:11;:19;;;;;;;;15270:10;15250:31;;;;;;;:103;15185:180;15384:40;15398:6;15406:9;15417:6;15384:13;:40::i;:::-;15377:47;;15068:364;;;;;;:::o;22390:144::-;13883:9;:18;;;;11173:42;22445:7;13883:18;;;;;22445:7;;22472:54;;:33;;11452:21;;22472:16;:33::i;:::-;:37;;:54::i;21826:275::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21926:21:::1;::::0;;-1:-1:-1;;;;;21958:33:0;;::::1;-1:-1:-1::0;;;;;;21958:33:0;::::1;::::0;::::1;::::0;;;21908:15:::1;22004:22:::0;;;:11:::1;:22;::::0;;;;;:29;;-1:-1:-1;;22004:29:0::1;21926:21:::0;22004:29:::1;::::0;;22051:42;21926:21;;;::::1;::::0;21958:33;21926:21;;22051:42:::1;::::0;21908:15;22051:42:::1;7697:1;21826:275:::0;:::o;23570:261::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;23656:21:::1;23647:6;:30;23639:88;;;::::0;-1:-1:-1;;;23639:88:0;;7686:2:1;23639:88:0::1;::::0;::::1;7668:21:1::0;7725:2;7705:18;;;7698:30;7764:34;7744:18;;;7737:62;-1:-1:-1;;;7815:18:1;;;7808:43;7868:19;;23639:88:0::1;7658:235:1::0;23639:88:0::1;23746:20;::::0;23738:46:::1;::::0;-1:-1:-1;;;;;23746:20:0;;::::1;::::0;23738:46;::::1;;;::::0;23777:6;;23746:20:::1;23738:46:::0;23746:20;23738:46;23777:6;23746:20;23738:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;23800:23:0::1;::::0;9911:25:1;;;23800:23:0::1;::::0;9899:2:1;9884:18;23800:23:0::1;;;;;;;;23570:261:::0;:::o;23924:355::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24005:26:0;::::1;24026:4;24005:26;;23997:89;;;::::0;-1:-1:-1;;;23997:89:0;;7267:2:1;23997:89:0::1;::::0;::::1;7249:21:1::0;7306:2;7286:18;;;7279:30;7345:34;7325:18;;;7318:62;-1:-1:-1;;;7396:18:1;;;7389:48;7454:19;;23997:89:0::1;7239:240:1::0;23997:89:0::1;24116:42;::::0;-1:-1:-1;;;24116:42:0;;24152:4:::1;24116:42;::::0;::::1;3920:51:1::0;24097:16:0::1;::::0;-1:-1:-1;;;;;24116:27:0;::::1;::::0;::::1;::::0;3893:18:1;;24116:42:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24097:61:::0;-1:-1:-1;24173:12:0;;24169:103:::1;;24229:20;::::0;24202:58:::1;::::0;-1:-1:-1;;;24202:58:0;;-1:-1:-1;;;;;24229:20:0;;::::1;24202:58;::::0;::::1;4156:51:1::0;4223:18;;;4216:34;;;24202:26:0;;::::1;::::0;::::1;::::0;4129:18:1;;24202:58:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24169:103;7697:1;23924:355:::0;:::o;21390:163::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21466:18:::1;:29:::0;;-1:-1:-1;;21466:29:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21511:34:::1;::::0;5013:41:1;;;21511:34:0::1;::::0;5001:2:1;4986:18;21511:34:0::1;4968:92:1::0;14780:116:0;14835:4;14859:29;14867:7;-1:-1:-1;;14859:7:0;:29::i;20700:168::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20783:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;20783:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20829:31;;5013:41:1;;;20829:31:0::1;::::0;4986:18:1;20829:31:0::1;;;;;;;20700:168:::0;;:::o;20876:376::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21047:7:::1;:18:::0;;;21076:6:::1;:16:::0;;;21103:12:::1;:28:::0;;;21142:12:::1;:28:::0;;;21188:56:::1;::::0;;11109:25:1;;;11165:2;11150:18;;11143:34;;;21076:16:0;;21047:18;;21188:56:::1;::::0;11082:18:1;21188:56:0::1;;;;;;;20876:376:::0;;;;:::o;8057:96::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;8124:21:::1;8142:1;8124:9;:21::i;:::-;8057:96::o:0;22899:123::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22984:17:0;;;::::1;;::::0;;;:12:::1;:17;::::0;;;;:30;;-1:-1:-1;;22984:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22899:123::o;21260:122::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21342:20:::1;:32:::0;21260:122::o;14904:156::-;14984:4;15008:44;15022:10;15034:9;15045:6;15008:13;:44::i;21561:257::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;21655:14:::1;::::0;;-1:-1:-1;;;;;21680:26:0;;::::1;-1:-1:-1::0;;;;;;21680:26:0;::::1;::::0;::::1;::::0;;;21637:15:::1;21727:22:::0;;;:11:::1;:22;::::0;;;;;:29;;-1:-1:-1;;21727:29:0::1;21655:14:::0;21727:29:::1;::::0;;21774:36;21655:14;;;::::1;::::0;21680:26;21655:14;;21774:36:::1;::::0;21637:15;21774:36:::1;7697:1;21561:257:::0;:::o;12049:22::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12049:22:0;;-1:-1:-1;12049:22:0;:::o;22542:85::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;22603:5:::1;:16:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;22603:16:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;22603:16:0::1;-1:-1:-1::0;;;;;22603:16:0;;;::::1;::::0;;;::::1;::::0;;22542:85::o;18236:70::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;18285:13:::1;:11;:13::i;22109:273::-:0;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;22209:20:::1;::::0;;-1:-1:-1;;;;;22240:32:0;;::::1;-1:-1:-1::0;;;;;;22240:32:0;::::1;::::0;::::1;::::0;;;22191:15:::1;22285:22:::0;;;:11:::1;:22;::::0;;;;;:29;;-1:-1:-1;;22285:29:0::1;22209:20:::0;22285:29:::1;::::0;;22332:42;22209:20;;;::::1;::::0;22240:32;22209:20;;22332:42:::1;::::0;22191:15;22332:42:::1;7697:1;22109:273:::0;:::o;8308:194::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8399:22:0;::::1;8391:73;;;::::0;-1:-1:-1;;;8391:73:0;;6101:2:1;8391:73:0::1;::::0;::::1;6083:21:1::0;6140:2;6120:18;;;6113:30;6179:34;6159:18;;;6152:62;-1:-1:-1;;;6230:18:1;;;6223:36;6276:19;;8391:73:0::1;6073:228:1::0;8391:73:0::1;8475:19;8485:8;8475:9;:19::i;:::-;8308:194:::0;:::o;22718:173::-;7452:7;7479:6;-1:-1:-1;;;;;7479:6:0;6978:10;7626:23;7618:68;;;;-1:-1:-1;;;7618:68:0;;;;;;;:::i;:::-;22797:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;22797:32:0;;::::1;;::::0;;22847:36:::1;::::0;::::1;::::0;::::1;::::0;22821:8;5038:14:1;5031:22;5013:41;;5001:2;4986:18;;4968:92;14268:337:0;-1:-1:-1;;;;;14361:19:0;;14353:68;;;;-1:-1:-1;;;14353:68:0;;9212:2:1;14353:68:0;;;9194:21:1;9251:2;9231:18;;;9224:30;9290:34;9270:18;;;9263:62;-1:-1:-1;;;9341:18:1;;;9334:34;9385:19;;14353:68:0;9184:226:1;14353:68:0;-1:-1:-1;;;;;14440:21:0;;14432:68;;;;-1:-1:-1;;;14432:68:0;;6508:2:1;14432:68:0;;;6490:21:1;6547:2;6527:18;;;6520:30;6586:34;6566:18;;;6559:62;-1:-1:-1;;;6637:18:1;;;6630:32;6679:19;;14432:68:0;6480:224:1;14432:68:0;-1:-1:-1;;;;;14513:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14565:32;;9911:25:1;;;14565:32:0;;9884:18:1;14565:32:0;;;;;;;14268:337;;;:::o;5592:181::-;5650:7;;5682:5;5686:1;5682;:5;:::i;:::-;5670:17;;5711:1;5706;:6;;5698:46;;;;-1:-1:-1;;;5698:46:0;;6911:2:1;5698:46:0;;;6893:21:1;6950:2;6930:18;;;6923:30;6989:29;6969:18;;;6962:57;7036:18;;5698:46:0;6883:177:1;6375:132:0;6433:7;6460:39;6464:1;6467;6460:39;;;;;;;;;;;;;;;;;:3;:39::i;5921:192::-;6007:7;6043:12;6035:6;;;;6027:29;;;;-1:-1:-1;;;6027:29:0;;;;;;;;:::i;:::-;-1:-1:-1;6067:9:0;6079:5;6083:1;6079;:5;:::i;:::-;6067:17;5921:192;-1:-1:-1;;;;;5921:192:0:o;15440:1747::-;-1:-1:-1;;;;;15558:23:0;;15532:4;15558:23;;;:12;:23;;;;;;;;15557:24;15549:58;;;;-1:-1:-1;;;15549:58:0;;9617:2:1;15549:58:0;;;9599:21:1;9656:2;9636:18;;;9629:30;-1:-1:-1;;;9675:18:1;;;9668:51;9736:18;;15549:58:0;9589:171:1;15549:58:0;15623:6;;;;;;;15620:63;;;15639:41;15654:6;15662:9;15673:6;15639:14;:41::i;:::-;15632:48;;;;15620:63;15698:19;:17;:19::i;:::-;15695:42;;;15721:13;:11;:13::i;:::-;-1:-1:-1;;;;;15757:17:0;;15790:1;15757:17;;;:9;:17;;;;;;:29;;15779:6;15757:21;:29::i;:::-;:34;;15749:67;;;;-1:-1:-1;;;15749:67:0;;8863:2:1;15749:67:0;;;8845:21:1;8902:2;8882:18;;;8875:30;-1:-1:-1;;;8921:18:1;;;8914:50;8981:18;;15749:67:0;8835:170:1;15749:67:0;-1:-1:-1;;;;;15847:17:0;;;;;;:9;:17;;;;;;:29;;15869:6;15847:21;:29::i;:::-;-1:-1:-1;;;;;15827:17:0;;;;;;:9;:17;;;;;:49;15893:32;15837:6;15915:9;15893:13;:32::i;:::-;15889:1267;;;15942:18;15963:39;11850:5;15963:19;15974:7;;15963:6;:10;;:19;;;;:::i;:39::-;15942:60;;16017:17;16037:38;11850:5;16037:18;16048:6;;16037;:10;;:18;;;;:::i;:38::-;16017:58;;16090:23;16116:44;11850:5;16116:24;16127:12;;16116:6;:10;;:24;;;;:::i;:44::-;16090:70;;16175:23;16201:44;11850:5;16201:24;16212:12;;16201:6;:10;;:24;;;;:::i;:44::-;16175:70;-1:-1:-1;16262:24:0;16175:70;16289:27;16301:15;16289:9;:27;:::i;:::-;:45;;;;:::i;:::-;16262:72;-1:-1:-1;16368:22:0;16393:29;16262:72;16393:10;:29;:::i;:::-;16507:4;16489:24;;;;:9;:24;;;;;;16368:54;;-1:-1:-1;16489:43:0;;16516:16;;16489:43;:::i;:::-;16480:4;16462:24;;;;:9;:24;;;;;;;:70;;;;16584:49;;-1:-1:-1;;;;;16584:49:0;;;-1:-1:-1;;;;;;;;;;;16584:49:0;;;16616:16;9911:25:1;;9899:2;9884:18;;9866:76;16584:49:0;;;;;;;;11173:42;16668:15;;:9;:15;;;;:31;;16688:10;16668:19;:31::i;:::-;11173:42;16650:15;;;;:9;:15;;;:49;;;;:15;16759:34;-1:-1:-1;;;;;16759:34:0;;;-1:-1:-1;;;;;;;;;;;16759:34:0;;;16782:10;9911:25:1;;9899:2;9884:18;;9866:76;16759:34:0;;;;;;;;16812:22;16837:23;16846:14;16837:6;:23;:::i;:::-;-1:-1:-1;;;;;16898:20:0;;;;;;:9;:20;;;;;;16812:48;;-1:-1:-1;16898:40:0;;16812:48;16898:24;:40::i;:::-;-1:-1:-1;;;;;16875:20:0;;;;;;;:9;:20;;;;;;;:63;;;;16958:43;;;;;;-1:-1:-1;;;;;;;;;;;16958:43:0;;;16986:14;9911:25:1;;9899:2;9884:18;;9866:76;16958:43:0;;;;;;;;15889:1267;;;;;;;;;;-1:-1:-1;;;;;17057:20:0;;;;;;:9;:20;;;;;;:32;;17082:6;17057:24;:32::i;:::-;-1:-1:-1;;;;;17034:20:0;;;;;;;:9;:20;;;;;;;:55;;;;17109:35;;;;;;-1:-1:-1;;;;;;;;;;;17109:35:0;;;17137:6;9911:25:1;;9899:2;9884:18;;9866:76;17109:35:0;;;;;;;;15889:1267;-1:-1:-1;17175:4:0;15440:1747;;;;;:::o;5779:136::-;5837:7;5864:43;5868:1;5871;5864:43;;;;;;;;;;;;;;;;;:3;:43::i;8510:173::-;8566:16;8585:6;;-1:-1:-1;;;;;8602:17:0;;;-1:-1:-1;;;;;;8602:17:0;;;;;;8635:40;;8585:6;;;;;;;8635:40;;8566:16;8635:40;8510:173;;:::o;18314:2269::-;12212:6;:13;;-1:-1:-1;;12212:13:0;;;;;18464:4:::1;12212:13:::0;18446:24;;;12221:4;18446:24:::1;::::0;;;;;18521:12:::1;::::0;18506::::1;::::0;18497:6:::1;::::0;18390:21:::1;::::0;12212:13;18521:12;18497:21:::1;::::0;::::1;:::i;:::-;:36;;;;:::i;:::-;18481:52;;18546:15;18564:34;18592:5;18564:23;18580:6;;18564:11;:15;;:23;;;;:::i;:34::-;18546:52;;18609:21;18633:40;18667:5;18633:29;18649:12;;18633:11;:15;;:29;;;;:::i;:40::-;18609:64;;18684:21;18708:40;18742:5;18708:29;18724:12;;18708:11;:15;;:29;;;;:::i;:40::-;18684:64:::0;-1:-1:-1;18761:23:0::1;18787:20;:13:::0;18805:1:::1;18787:17;:20::i;:::-;18761:46:::0;-1:-1:-1;18820:20:0::1;18871:13:::0;18843:25:::1;18761:46:::0;18843:7;:25:::1;:::i;:::-;:41;;;;:::i;:::-;18921:16;::::0;;18935:1:::1;18921:16:::0;;;;;::::1;::::0;;18820:64;;-1:-1:-1;18897:21:0::1;::::0;18921:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18921:16:0::1;18897:40;;18966:4;18948;18953:1;18948:7;;;;;;-1:-1:-1::0;;;18948:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;18948:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18992:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;18992:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;18948:7;;18992:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18982:4;18987:1;18982:7;;;;;;-1:-1:-1::0;;;18982:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;18982:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;19050:6:::1;::::0;19018:54:::1;::::0;19035:4:::1;::::0;19050:6:::1;19059:12:::0;19018:8:::1;:54::i;:::-;19085:6;::::0;:188:::1;::::0;-1:-1:-1;;;19085:188:0;;-1:-1:-1;;;;;19085:6:0;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;19157:12;;19085:6:::1;::::0;19200:4;;19227::::1;::::0;19247:15:::1;::::0;19085:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19286:23;19312:40;19338:13;19312:21;:25;;:40;;;;:::i;:::-;19286:66:::0;-1:-1:-1;19369:19:0;;19365:1211:::1;;19449:12;::::0;19405:16:::1;::::0;19449:19:::1;::::0;19466:1:::1;19449:16;:19::i;:::-;19434:12;;19425:6;;:21;;;;:::i;:::-;:43;;;;:::i;:::-;19405:63;;19485:30;19518:47;19556:8;19518:33;19538:12;;19518:15;:19;;:33;;;;:::i;:47::-;19485:80;;19601:24;19628:41;19660:8;19628:27;19648:6;;19628:15;:19;;:27;;;;:::i;:41::-;19601:68;;19699:20;19722:54;19767:8;19722:40;19742:19;19759:1;19742:12;;:16;;:19;;;;:::i;:::-;19722:15:::0;;:19:::1;:40::i;:54::-;19699:77:::0;-1:-1:-1;19817:26:0;;19813:172:::1;;19915:20;::::0;19907:62:::1;::::0;-1:-1:-1;;;;;19915:20:0;;::::1;::::0;19907:62;::::1;;;::::0;19946:22;;19915:20:::1;19907:62:::0;19915:20;19907:62;19946:22;19915:20;19907:62;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19813:172;20005:20:::0;;20001:148:::1;;20091:14;::::0;20083:50:::1;::::0;-1:-1:-1;;;;;20091:14:0;;::::1;::::0;20083:50;::::1;;;::::0;20116:16;;20091:14:::1;20083:50:::0;20091:14;20083:50;20116:16;20091:14;20083:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20001:148;20169:16:::0;;20165:400:::1;;20237:6;::::0;20205:57:::1;::::0;20222:4:::1;::::0;-1:-1:-1;;;;;20237:6:0::1;20246:15:::0;20205:8:::1;:57::i;:::-;20281:6;::::0;20471:21:::1;::::0;20281:268:::1;::::0;-1:-1:-1;;;20281:268:0;;20357:4:::1;20281:268;::::0;::::1;4602:34:1::0;4652:18;;;4645:34;;;20281:6:0::1;4695:18:1::0;;;4688:34;;;4738:18;;;4731:34;-1:-1:-1;;;;;20471:21:0;;::::1;4781:19:1::0;;;4774:44;20515:15:0::1;4834:19:1::0;;;4827:35;20281:6:0;::::1;::::0;:22:::1;::::0;20312:12;;4536:19:1;;20281:268:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20165:400;19365:1211;;;;;-1:-1:-1::0;;12230:6:0;:14;;-1:-1:-1;;12230:14:0;;;-1:-1:-1;;;;;;;;18314:2269:0:o;6513:345::-;6599:7;6701:12;6694:5;6686:28;;;;-1:-1:-1;;;6686:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6725:9:0;6737:5;6741:1;6737;:5;:::i;17195:384::-;17288:4;17346:1;17313:29;17335:6;17313:17;17323:6;-1:-1:-1;;;;;13883:18:0;13865:7;13883:18;;;:9;:18;;;;;;;13799:105;17313:29;:34;;17305:67;;;;-1:-1:-1;;;17305:67:0;;8863:2:1;17305:67:0;;;8845:21:1;8902:2;8882:18;;;8875:30;-1:-1:-1;;;8921:18:1;;;8914:50;8981:18;;17305:67:0;8835:170:1;17305:67:0;-1:-1:-1;;;;;17403:17:0;;;;;;:9;:17;;;;;;:29;;17425:6;17403:21;:29::i;:::-;-1:-1:-1;;;;;17383:17:0;;;;;;;:9;:17;;;;;;:49;;;;17466:20;;;;;;;:32;;17491:6;17466:24;:32::i;18002:226::-;18092:16;;18054:4;;-1:-1:-1;;;;;18092:16:0;18078:10;:30;;;;:50;;-1:-1:-1;18122:6:0;;;;;;;18121:7;18078:50;:81;;;;-1:-1:-1;18141:18:0;;;;18078:81;:142;;;;-1:-1:-1;;18200:20:0;;18190:4;18172:24;;;;:9;:24;;;;;;:48;;;18002:226::o;17587:407::-;-1:-1:-1;;;;;17689:19:0;;17668:4;17689:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;17712:22:0;;;;;;:11;:22;;;;;;;;17689:45;17685:63;;;-1:-1:-1;17743:5:0;17736:12;;17685:63;17761:25;17789:5;17761:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17761:33:0;;;;;;;;;;;;;;;;;;;;;;;17812:9;17807:139;17831:8;:15;17827:1;:19;17807:139;;;17882:8;17891:1;17882:11;;;;;;-1:-1:-1;;;17882:11:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17872:21:0;:6;-1:-1:-1;;;;;17872:21:0;;:49;;;;17910:8;17919:1;17910:11;;;;;;-1:-1:-1;;;17910:11:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17897:24:0;:9;-1:-1:-1;;;;;17897:24:0;;17872:49;17868:66;;;17930:4;17923:11;;;;;;17868:66;17848:3;;;;:::i;:::-;;;;17807:139;;;-1:-1:-1;;17965:21:0;;;;;;;;17587:407;-1:-1:-1;;;17587:407:0:o;6119:250::-;6177:7;6201:6;6197:47;;-1:-1:-1;6231:1:0;6224:8;;6197:47;6256:9;6268:5;6272:1;6268;:5;:::i;:::-;6256:17;-1:-1:-1;6301:1:0;6292:5;6296:1;6256:17;6292:5;:::i;:::-;:10;6284:56;;;;-1:-1:-1;;;6284:56:0;;8100:2:1;6284:56:0;;;8082:21:1;8139:2;8119:18;;;8112:30;8178:34;8158:18;;;8151:62;-1:-1:-1;;;8229:18:1;;;8222:31;8270:19;;6284:56:0;8072:223:1;14:257;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:1;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:1;1386:18;;;;1373:32;;1049:362::o;1416:392::-;1481:6;1489;1542:2;1530:9;1521:7;1517:23;1513:32;1510:2;;;1563:6;1555;1548:22;1510:2;1607:9;1594:23;1626:31;1651:5;1626:31;:::i;:::-;1676:5;-1:-1:-1;1733:2:1;1718:18;;1705:32;1746:30;1705:32;1746:30;:::i;1813:325::-;1881:6;1889;1942:2;1930:9;1921:7;1917:23;1913:32;1910:2;;;1963:6;1955;1948:22;1910:2;2007:9;1994:23;2026:31;2051:5;2026:31;:::i;:::-;2076:5;2128:2;2113:18;;;;2100:32;;-1:-1:-1;;;1900:238:1:o;2143:251::-;2199:6;2252:2;2240:9;2231:7;2227:23;2223:32;2220:2;;;2273:6;2265;2258:22;2220:2;2317:9;2304:23;2336:28;2358:5;2336:28;:::i;2399:255::-;2466:6;2519:2;2507:9;2498:7;2494:23;2490:32;2487:2;;;2540:6;2532;2525:22;2487:2;2577:9;2571:16;2596:28;2618:5;2596:28;:::i;2659:190::-;2718:6;2771:2;2759:9;2750:7;2746:23;2742:32;2739:2;;;2792:6;2784;2777:22;2739:2;-1:-1:-1;2820:23:1;;2729:120;-1:-1:-1;2729:120:1:o;2854:194::-;2924:6;2977:2;2965:9;2956:7;2952:23;2948:32;2945:2;;;2998:6;2990;2983:22;2945:2;-1:-1:-1;3026:16:1;;2935:113;-1:-1:-1;2935:113:1:o;3053:316::-;3141:6;3149;3157;3210:2;3198:9;3189:7;3185:23;3181:32;3178:2;;;3231:6;3223;3216:22;3178:2;3265:9;3259:16;3249:26;;3315:2;3304:9;3300:18;3294:25;3284:35;;3359:2;3348:9;3344:18;3338:25;3328:35;;3168:201;;;;;:::o;3374:395::-;3460:6;3468;3476;3484;3537:3;3525:9;3516:7;3512:23;3508:33;3505:2;;;3559:6;3551;3544:22;3505:2;-1:-1:-1;;3587:23:1;;;3657:2;3642:18;;3629:32;;-1:-1:-1;3708:2:1;3693:18;;3680:32;;3759:2;3744:18;3731:32;;-1:-1:-1;3495:274:1;-1:-1:-1;3495:274:1:o;5291:603::-;5403:4;5432:2;5461;5450:9;5443:21;5493:6;5487:13;5536:6;5531:2;5520:9;5516:18;5509:34;5561:4;5574:140;5588:6;5585:1;5582:13;5574:140;;;5683:14;;;5679:23;;5673:30;5649:17;;;5668:2;5645:26;5638:66;5603:10;;5574:140;;;5732:6;5729:1;5726:13;5723:2;;;5802:4;5797:2;5788:6;5777:9;5773:22;5769:31;5762:45;5723:2;-1:-1:-1;5878:2:1;5857:15;-1:-1:-1;;5853:29:1;5838:45;;;;5885:2;5834:54;;5412:482;-1:-1:-1;;;5412:482:1:o;8300:356::-;8502:2;8484:21;;;8521:18;;;8514:30;8580:34;8575:2;8560:18;;8553:62;8647:2;8632:18;;8474:182::o;9947:983::-;10209:4;10257:3;10246:9;10242:19;10288:6;10277:9;10270:25;10314:2;10352:6;10347:2;10336:9;10332:18;10325:34;10395:3;10390:2;10379:9;10375:18;10368:31;10419:6;10454;10448:13;10485:6;10477;10470:22;10523:3;10512:9;10508:19;10501:26;;10562:2;10554:6;10550:15;10536:29;;10583:4;10596:195;10610:6;10607:1;10604:13;10596:195;;;10675:13;;-1:-1:-1;;;;;10671:39:1;10659:52;;10766:15;;;;10731:12;;;;10707:1;10625:9;10596:195;;;-1:-1:-1;;;;;;;10847:32:1;;;;10842:2;10827:18;;10820:60;-1:-1:-1;;;10911:3:1;10896:19;10889:35;10808:3;10218:712;-1:-1:-1;;;10218:712:1:o;11377:128::-;11417:3;11448:1;11444:6;11441:1;11438:13;11435:2;;;11454:18;;:::i;:::-;-1:-1:-1;11490:9:1;;11425:80::o;11510:217::-;11550:1;11576;11566:2;;-1:-1:-1;;;11601:31:1;;11655:4;11652:1;11645:15;11683:4;11608:1;11673:15;11566:2;-1:-1:-1;11712:9:1;;11556:171::o;11732:168::-;11772:7;11838:1;11834;11830:6;11826:14;11823:1;11820:21;11815:1;11808:9;11801:17;11797:45;11794:2;;;11845:18;;:::i;:::-;-1:-1:-1;11885:9:1;;11784:116::o;11905:125::-;11945:4;11973:1;11970;11967:8;11964:2;;;11978:18;;:::i;:::-;-1:-1:-1;12015:9:1;;11954:76::o;12035:135::-;12074:3;-1:-1:-1;;12095:17:1;;12092:2;;;12115:18;;:::i;:::-;-1:-1:-1;12162:1:1;12151:13;;12082:88::o;12175:127::-;12236:10;12231:3;12227:20;12224:1;12217:31;12267:4;12264:1;12257:15;12291:4;12288:1;12281:15;12307:131;-1:-1:-1;;;;;12382:31:1;;12372:42;;12362:2;;12428:1;12425;12418:12;12443:118;12529:5;12522:13;12515:21;12508:5;12505:32;12495:2;;12551:1;12548;12541:12

Swarm Source

ipfs://bee68ea7fb7ec9417814abb7a0db5e63722a70fb5d7d7392801a9c07d4aaf0ac

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.