ETH Price: $3,352.72 (-1.07%)

Contract

0x214b04F550046FFf9C0339E8B368BC700dce0497
 

Overview

ETH Balance

0.000000655339572917 ETH

Eth Value

Less Than $0.01 (@ $3,352.72/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve190072452024-01-14 19:35:11349 days ago1705260911IN
0x214b04F5...00dce0497
0 ETH0.0012564226.73024274
Transfer190072212024-01-14 19:30:23349 days ago1705260623IN
0x214b04F5...00dce0497
0 ETH0.0012314229.43534892
Transfer190072012024-01-14 19:26:23349 days ago1705260383IN
0x214b04F5...00dce0497
0 ETH0.0012629530.19762282
Approve190016272024-01-14 0:44:23350 days ago1705193063IN
0x214b04F5...00dce0497
0 ETH0.0007713916.41555297
Approve189930542024-01-12 19:58:47351 days ago1705089527IN
0x214b04F5...00dce0497
0 ETH0.0009772220.79562243
Approve189905082024-01-12 11:26:23352 days ago1705058783IN
0x214b04F5...00dce0497
0 ETH0.0010750322.74910021
Approve189885432024-01-12 4:50:23352 days ago1705035023IN
0x214b04F5...00dce0497
0 ETH0.0007727716.35292653
Transfer189884902024-01-12 4:39:47352 days ago1705034387IN
0x214b04F5...00dce0497
0 ETH0.0006381715.2678033
Approve189811592024-01-11 3:57:59353 days ago1704945479IN
0x214b04F5...00dce0497
0 ETH0.0012494126.4392307
Approve189764352024-01-10 12:05:23354 days ago1704888323IN
0x214b04F5...00dce0497
0 ETH0.001207925.704466
Approve189762322024-01-10 11:24:35354 days ago1704885875IN
0x214b04F5...00dce0497
0 ETH0.0006830822.84252744
Transfer189761062024-01-10 10:58:59354 days ago1704884339IN
0x214b04F5...00dce0497
0 ETH0.000936622.38819145
Approve188935272023-12-29 20:12:59365 days ago1703880779IN
0x214b04F5...00dce0497
0 ETH0.0009824520.79004488
Approve188606222023-12-25 5:17:23370 days ago1703481443IN
0x214b04F5...00dce0497
0 ETH0.0006559313.88052348
Approve188606012023-12-25 5:12:59370 days ago1703481179IN
0x214b04F5...00dce0497
0 ETH0.0005967612.62825728
Approve188605882023-12-25 5:10:23370 days ago1703481023IN
0x214b04F5...00dce0497
0 ETH0.0006208313.13762342
Approve188395852023-12-22 6:24:47373 days ago1703226287IN
0x214b04F5...00dce0497
0 ETH0.0012225.81699404
Approve187393642023-12-08 5:10:23387 days ago1702012223IN
0x214b04F5...00dce0497
0 ETH0.0019870142.04798874
Approve187070092023-12-03 16:19:47392 days ago1701620387IN
0x214b04F5...00dce0497
0 ETH0.0018655239.70894583
Approve186703662023-11-28 13:17:11397 days ago1701177431IN
0x214b04F5...00dce0497
0 ETH0.0015563233.11897832
Approve186356022023-11-23 16:23:59402 days ago1700756639IN
0x214b04F5...00dce0497
0 ETH0.0018662539.49243534
Approve186301952023-11-22 22:15:23402 days ago1700691323IN
0x214b04F5...00dce0497
0 ETH0.0018258938.85541308
Approve186301832023-11-22 22:12:59402 days ago1700691179IN
0x214b04F5...00dce0497
0 ETH0.0018174138.67498914
Approve186301742023-11-22 22:11:11402 days ago1700691071IN
0x214b04F5...00dce0497
0 ETH0.0020058542.68505444
Approve186283672023-11-22 16:08:35403 days ago1700669315IN
0x214b04F5...00dce0497
0 ETH0.0035190674.46809416
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
190072472024-01-14 19:35:35349 days ago1705260935
0x214b04F5...00dce0497
0.00254296 ETH
190072472024-01-14 19:35:35349 days ago1705260935
0x214b04F5...00dce0497
0.00000063 ETH
190072472024-01-14 19:35:35349 days ago1705260935
0x214b04F5...00dce0497
0.00000318 ETH
190072472024-01-14 19:35:35349 days ago1705260935
0x214b04F5...00dce0497
0.00000065 ETH
190072472024-01-14 19:35:35349 days ago1705260935
0x214b04F5...00dce0497
0.00000127 ETH
190072472024-01-14 19:35:35349 days ago1705260935
0x214b04F5...00dce0497
0.00254731 ETH
190016232024-01-14 0:43:35350 days ago1705193015
0x214b04F5...00dce0497
0.0030732 ETH
190016232024-01-14 0:43:35350 days ago1705193015
0x214b04F5...00dce0497
0.00000076 ETH
190016232024-01-14 0:43:35350 days ago1705193015
0x214b04F5...00dce0497
0.00000384 ETH
190016232024-01-14 0:43:35350 days ago1705193015
0x214b04F5...00dce0497
0.00000074 ETH
190016232024-01-14 0:43:35350 days ago1705193015
0x214b04F5...00dce0497
0.00000153 ETH
190016232024-01-14 0:43:35350 days ago1705193015
0x214b04F5...00dce0497
0.00307842 ETH
189843502024-01-11 14:42:35353 days ago1704984155
0x214b04F5...00dce0497
0.0038803 ETH
189843502024-01-11 14:42:35353 days ago1704984155
0x214b04F5...00dce0497
0.00000097 ETH
189843502024-01-11 14:42:35353 days ago1704984155
0x214b04F5...00dce0497
0.00000486 ETH
189843502024-01-11 14:42:35353 days ago1704984155
0x214b04F5...00dce0497
0.00000094 ETH
189843502024-01-11 14:42:35353 days ago1704984155
0x214b04F5...00dce0497
0.00000194 ETH
189843502024-01-11 14:42:35353 days ago1704984155
0x214b04F5...00dce0497
0.00388659 ETH
189762552024-01-10 11:29:11354 days ago1704886151
0x214b04F5...00dce0497
0.00612534 ETH
189762552024-01-10 11:29:11354 days ago1704886151
0x214b04F5...00dce0497
0.00000153 ETH
189762552024-01-10 11:29:11354 days ago1704886151
0x214b04F5...00dce0497
0.00000767 ETH
189762552024-01-10 11:29:11354 days ago1704886151
0x214b04F5...00dce0497
0.00000148 ETH
189762552024-01-10 11:29:11354 days ago1704886151
0x214b04F5...00dce0497
0.00000306 ETH
189762552024-01-10 11:29:11354 days ago1704886151
0x214b04F5...00dce0497
0.00613662 ETH
189256352024-01-03 8:25:59361 days ago1704270359
0x214b04F5...00dce0497
0.00407921 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
X7G

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : X7G.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/*
  __  __     ____   _   _      _      _   _     ____  U _____ u
  \ \/"/  U /"___| |'| |'| U  /"\  u | \ |"| U /"___|u\| ___"|/
  /\  /\  \| | u  /| |_| |\ \/ _ \/ <|  \| |>\| |  _ / |  _|"
 U /  \ u  | |/__ U|  _  |u / ___ \ U| |\  |u | |_| |  | |___
  /_/\_\    \____| |_| |_| /_/   \_\ |_| \_|   \____|  |_____|
,-,>> \\_  _// \\  //   \\  \\    >> ||   \\,-._)(|_   <<   >>
 \_)  (__)(__)(__)(_") ("_)(__)  (__)(_")  (_/(__)__) (__) (__)
           ____      _      __  __  U _____ u ____
        U /"___|uU  /"\  uU|' \/ '|u\| ___"|// __"| u
        \| |  _ / \/ _ \/ \| |\/| |/ |  _|" <\___ \/
         | |_| |  / ___ \  | |  | |  | |___  u___) |
          \____| /_/   \_\ |_|  |_|  |_____| |____/>>
          _)(|_   \\    >><<,-,,-.   <<   >>  )(  (__)
         (__)__) (__)  (__)(./  \.) (__) (__)(__)

 Contract: X7G token
 Created by: https://t.me/smart_bart
*/

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

interface IRouter {
    function factory() external view returns (address);

    function WETH() external view returns (address);

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

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

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

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

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

interface IWETH is IERC20 {
    function withdraw(uint256) external;
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(owner, spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[from] = fromBalance - amount;
        _balances[to] += amount;
    }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
    unchecked {
        _balances[account] += amount;
    }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;
    }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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 _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
        unchecked {
            _approve(owner, spender, currentAllowance - amount);
        }
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract X7G is ERC20, Ownable {
    modifier lockTheSwap() {
        processingFees = true;
        _;
        processingFees = false;
    }

    bool private processingFees = false;

    IRouter public router;
    address public automatedMarketMakerAddress;
    mapping(address => bool) public automatedMarketMakerPair;

    uint256 private _maxFee = 7000;
    uint256 public fee;
    uint256 public burnAndLiquidityShare;
    uint256 public treasuryShare;
    uint256 public operationsShare;

    uint256 public maxWallet;
    uint256 public thresholdToProcessFees;

    address public treasury;
    address public operations;
    address public x7rContract;

    mapping(address => bool) excludedAddresses;

    bool public tradingEnabled = false;

    event AMMSet(address indexed pairAddress, bool isAMM);
    event TradingEnabled();
    event NewTreasurySet(address newTreasury);
    event NewOperationsWalletSet(address newOperationsWallet);
    event ThresholdToProcessFeesSet(uint256 oldThreshold, uint256 newThreshold);
    event MaxWalletSet(uint256 oldMaxWallet, uint256 newMaxWallet);
    event FeeSet(uint256 oldFee, uint256 newFee);
    event FeeSharesSet(
        uint256 newBurnAndLiquidityShare,
        uint256 newTreasuryShare,
        uint256 newOpsShare
    );
    event FeesProcessed();
    event ExcludedAddressSet(address indexed excludedAddress, bool isExcluded);
    event Launched();

    constructor()
    ERC20("Xchange Games", "X7G")
    {
        _mint(_msgSender(), 100000000 * 1e18);

        excludedAddresses[address(_msgSender())] = true;
        excludedAddresses[address(0x740015c39da5D148fcA25A467399D00bcE10c001)] = true;
        x7rContract = address(0x70008F18Fc58928dcE982b0A69C2c21ff80Dca54);
    }

    receive() external payable {}

    function launch() public onlyOwner {
        // Create Xchange pair and set AMM in contract
        router = IRouter(0x7DE8063E9fB43321d2100e8Ddae5167F56A50060);
        address _pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        setAMM(address(_pair), true);

        // Set wallet addresses
        treasury = address(0x47689fbAE45816Ea67c3C29BC46D2ff0961cb513);
        operations = address(0x87b49D6A6910547493f841A95b4Ed94d2A5942DD);

        // exclude router, lending pool, treasury and operations addresses
        excludedAddresses[address(router)] = true;
        excludedAddresses[address(treasury)] = true;
        excludedAddresses[address(operations)] = true;

        // set fee and fee shares
        fee = 3000;
        burnAndLiquidityShare = 33333;
        treasuryShare = 33333;
        operationsShare = 33334;

        // set maxWallet and thresholdToProcessFees
        maxWallet = 1000000 * 1e18;
        thresholdToProcessFees = 50000 * 1e18;

        emit Launched();
    }

    function setExcludedAddress(address excludedAddress, bool isExcluded) public onlyOwner {
        require(excludedAddress != address(0), "X7G: (New) excluded address can not be address 0x");
        excludedAddresses[excludedAddress] = isExcluded;
        emit ExcludedAddressSet(excludedAddress, isExcluded);
    }

    function setAMM(address ammAddress, bool isAMM) public onlyOwner {
        require(ammAddress != address(0), "X7G: (New) AMM address can not be address 0x");
        automatedMarketMakerPair[ammAddress] = isAMM;
        automatedMarketMakerAddress = ammAddress;
        emit AMMSet(ammAddress, isAMM);
    }

    function setThresholdToProcessFees(uint256 newThreshold) external onlyOwner {
        require(newThreshold >= 1000 * 1e18, "X7G: 1000 X7G is the minmum");
        uint256 _oldThreshold = thresholdToProcessFees;
        thresholdToProcessFees = newThreshold;
        emit ThresholdToProcessFeesSet(_oldThreshold, newThreshold);
    }

    function setMaxWallet(uint256 _newMaxWallet) external onlyOwner {
        require(_newMaxWallet >= 500000 * 1e18, "X7G: Max wallet is less the minimum then 0,5% of totalSupply");
        require(_newMaxWallet <= 25000000 * 1e18, "X7G: Max wallet is more the maximum than 25% of totalSupply");

        uint256 oldMaxWallet = maxWallet;
        maxWallet = _newMaxWallet;
        emit MaxWalletSet(oldMaxWallet, _newMaxWallet);
    }

    function setFee(uint256 newFee) external onlyOwner {
        require(newFee <= _maxFee, "X7G: Fee can not be set higher then the maximum of 7%");
        require(newFee >= 0, "X7G: Fee is less than 0");
        require(newFee != fee, "X7G: Fee is already that percentage");

        uint256 _oldFee = fee;
        fee = newFee;
        emit FeeSet(_oldFee, fee);
    }

    function setFeeShares(uint256 _newBurnAndLiquidityShare, uint256 _newTreasuryShare, uint256 _newOperationsShare) external onlyOwner {
        require(_newBurnAndLiquidityShare + _newTreasuryShare + _newOperationsShare == 100000,
            "X7G: Summed fee shares are not 100% (100000)!"
        );

        burnAndLiquidityShare = _newBurnAndLiquidityShare;
        treasuryShare = _newTreasuryShare;
        operationsShare = _newOperationsShare;

        emit FeeSharesSet(
            _newBurnAndLiquidityShare,
            _newTreasuryShare,
            _newOperationsShare
        );
    }

    function setTreasuryWallet(address _newTreasury) public onlyOwner {
        require(_newTreasury != address(0), "X7G: New treasury can not be address 0x");
        excludedAddresses[address(treasury)] = false;
        treasury = _newTreasury;
        excludedAddresses[address(_newTreasury)] = true;
        emit NewTreasurySet(_newTreasury);
    }

    function setOperationsWallet(address _newOperationsWallet) public onlyOwner {
        require(_newOperationsWallet != address(0), "X7G: New operations wallet can not be address 0x");
        excludedAddresses[address(treasury)] = false;
        operations = _newOperationsWallet;
        excludedAddresses[address(_newOperationsWallet)] = true;
        emit NewOperationsWalletSet(_newOperationsWallet);
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "X7G: Trading is already enabled");
        tradingEnabled = true;
        emit TradingEnabled();
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(tradingEnabled || from == owner(), "X7G: Trading will be enabled when the amm pair is set.");

        if (excludedAddresses[from] || excludedAddresses[to]) {
            super._transfer(from, to, amount);
            return;
        }

        uint256 _transferAmount = amount;

        if (automatedMarketMakerPair[from] || automatedMarketMakerPair[to]) {
            uint256 txnFee = (_transferAmount * fee) / 100000;

            _transferAmount = _transferAmount - txnFee;

            if (automatedMarketMakerPair[from]) {
                require(balanceOf(automatedMarketMakerPair[from] ? to : from) + _transferAmount <= maxWallet,
                    "X7G: transaction exceeds max wallet");
            }

            super._transfer(from, address(this), txnFee);
        }

        if (automatedMarketMakerPair[to] && !processingFees && balanceOf(address(this)) >= thresholdToProcessFees) {
            processFees();
        }

        super._transfer(from, to, _transferAmount);
    }

    function processFees() public lockTheSwap {
        uint256 _contractBalance = balanceOf(address(this));

        require(_contractBalance != 0, "X7G: cannot process fees if X7G balance is 0");

        // Calculate number of tokens
        uint256 _X7GLiquidityTokens = (_contractBalance * (((burnAndLiquidityShare / 2) / 2))) / 100000;

        // Swap for ETH
        _swapTokensForEth(_contractBalance - _X7GLiquidityTokens);

        // Calculate ETH balances
        uint256 _balance = address(this).balance;

        require(_balance != 0, "X7G: cannot process fees if ETH balance is 0");

        uint256 _ethForTreasury = (_balance * (treasuryShare / 4)) / 100000;
        uint256 _ethForOperations = (_balance * operationsShare) / 100000;
        uint256 _ethForX7GLiquidity = (_balance * (burnAndLiquidityShare / 2)) / 100000;
        uint256 _ethForX7RBurn = (_balance * (burnAndLiquidityShare / 2)) / 100000;
        uint256 _ethForX7RBuy = (_balance * (treasuryShare / 4) * 3) / 100000;

        // Add liquidity
        _addLiquidityETH(
            address(this),
            _X7GLiquidityTokens,
            _ethForX7GLiquidity
        );

        // Swap ETH for X7R and burn some and send some to the treasury
        _swapEthForTokens(
            _ethForX7RBurn + _ethForX7RBuy,
            address(x7rContract)
        );

        uint256 _x7rBalance = IERC20(x7rContract).balanceOf(address(this));
        uint256 _total = _ethForX7RBurn + _ethForX7RBuy;
        uint256 _burnRatio;
        uint256 _treasuryRatio;

        if (_total > 0) {
            _burnRatio = (_ethForX7RBurn * 1e18 / _total);
            _treasuryRatio = (_ethForX7RBuy * 1e18 / _total);
        }

        uint256 _x7rForBurn = (_x7rBalance * _burnRatio) / 1e18;
        uint256 _x7rForTreasury = (_x7rBalance * _treasuryRatio) / 1e18;

        IERC20(x7rContract).transfer(address(0x000000000000000000000000000000000000dEaD), _x7rForBurn);
        IERC20(x7rContract).transfer(address(treasury), _x7rForTreasury);

        // Send ETH to treasury, dev and marketing
        (bool treasurySendSuccess,) = treasury.call{value : _ethForTreasury}("");
        require(treasurySendSuccess, "X7G: Transfer to treasury wallet failed.");
        (bool operationsWalletSendSuccess,) = operations.call{value : _ethForOperations}("");
        require(operationsWalletSendSuccess, "X7G: Transfer to dev wallet failed.");

        emit FeesProcessed();
    }

    function _swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _swapEthForTokens(uint256 ethAmount, address tokenAddress) internal {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = tokenAddress;
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value : ethAmount}(
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidityETH(address token, uint256 tokenAmount, uint256 ethAmount) internal {
        IERC20(token).approve(address(router), tokenAmount);
        router.addLiquidityETH{value : ethAmount}(
            token,
            tokenAmount,
            0,
            0,
            address(0),
            block.timestamp
        );
    }

    function rescueWETH() external {
        address _weth = router.WETH();
        IWETH(_weth).withdraw(
            IERC20(_weth).balanceOf(address(this))
        );
    }

    function rescueETH() external {
        uint256 _balance = address(this).balance;
        require(_balance > 0, "X7G: No ETH to withdraw");

        (bool success,) = msg.sender.call{value : _balance}("");
        require(success, "X7G: ETH transfer failed");
    }

}

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pairAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isAMM","type":"bool"}],"name":"AMMSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"excludedAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"FeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBurnAndLiquidityShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTreasuryShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newOpsShare","type":"uint256"}],"name":"FeeSharesSet","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesProcessed","type":"event"},{"anonymous":false,"inputs":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMaxWallet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"MaxWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"NewOperationsWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"NewTreasurySet","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":"oldThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"ThresholdToProcessFeesSet","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"automatedMarketMakerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"burnAndLiquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operations","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ammAddress","type":"address"},{"internalType":"bool","name":"isAMM","type":"bool"}],"name":"setAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"setExcludedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBurnAndLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"_newTreasuryShare","type":"uint256"},{"internalType":"uint256","name":"_newOperationsShare","type":"uint256"}],"name":"setFeeShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperationsWallet","type":"address"}],"name":"setOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"setThresholdToProcessFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTreasury","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thresholdToProcessFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"x7rContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600560146101000a81548160ff021916908315150217905550611b586009556000601460006101000a81548160ff0219169083151502179055503480156200004d57600080fd5b506040518060400160405280600d81526020017f586368616e67652047616d6573000000000000000000000000000000000000008152506040518060400160405280600381526020017f58374700000000000000000000000000000000000000000000000000000000008152508160039081620000cb919062000719565b508060049081620000dd919062000719565b50505062000100620000f46200025a60201b60201c565b6200026260201b60201c565b6200012c620001146200025a60201b60201c565b6a52b7d2dcc80cd2e40000006200032860201b60201c565b600160136000620001426200025a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600073740015c39da5d148fca25a467399d00bce10c00173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507370008f18fc58928dce982b0a69c2c21ff80dca54601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200091b565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200039a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003919062000861565b60405180910390fd5b620003ae600083836200049560201b60201c565b8060026000828254620003c29190620008b2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004759190620008fe565b60405180910390a362000491600083836200049a60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200052157607f821691505b602082108103620005375762000536620004d9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000562565b620005ad868362000562565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005fa620005f4620005ee84620005c5565b620005cf565b620005c5565b9050919050565b6000819050919050565b6200061683620005d9565b6200062e620006258262000601565b8484546200056f565b825550505050565b600090565b6200064562000636565b620006528184846200060b565b505050565b5b818110156200067a576200066e6000826200063b565b60018101905062000658565b5050565b601f821115620006c95762000693816200053d565b6200069e8462000552565b81016020851015620006ae578190505b620006c6620006bd8562000552565b83018262000657565b50505b505050565b600082821c905092915050565b6000620006ee60001984600802620006ce565b1980831691505092915050565b6000620007098383620006db565b9150826002028217905092915050565b62000724826200049f565b67ffffffffffffffff81111562000740576200073f620004aa565b5b6200074c825462000508565b620007598282856200067e565b600060209050601f8311600181146200079157600084156200077c578287015190505b620007888582620006fb565b865550620007f8565b601f198416620007a1866200053d565b60005b82811015620007cb57848901518255600182019150602085019450602081019050620007a4565b86831015620007eb5784890151620007e7601f891682620006db565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000849601f8362000800565b9150620008568262000811565b602082019050919050565b600060208201905081810360008301526200087c816200083a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008bf82620005c5565b9150620008cc83620005c5565b9250828201905080821115620008e757620008e662000883565b5b92915050565b620008f881620005c5565b82525050565b6000602082019050620009156000830184620008ed565b92915050565b614fa5806200092b6000396000f3fe60806040526004361061023f5760003560e01c80638da5cb5b1161012e578063d368371e116100ab578063f196782c1161006f578063f196782c14610838578063f28f797214610861578063f2fde38b1461088a578063f887ea40146108b3578063f8b45b05146108de57610246565b8063d368371e14610751578063dd4f61801461077c578063dd62ed3e146107a7578063ddca3f43146107e4578063ee5ecc891461080f57610246565b8063a8602fea116100f2578063a8602fea14610694578063a9059cbb146106bd578063a9d3cd8a146106fa578063ba69ebed14610723578063c38ec0b61461073a57610246565b80638da5cb5b1461059957806390aa2ea6146105c457806395937a491461060157806395d89b411461062c578063a457c2d71461065757610246565b80634ada218b116101bc57806370a082311161018057806370a08231146104d8578063715018a6146105155780637796ff371461052c5780638a8c523c146105575780638b33b4b21461056e57610246565b80634ada218b1461040757806350b9a9f5146104325780635d0044ca1461045b57806361d027b31461048457806369fe0e2d146104af57610246565b806318160ddd1161020357806318160ddd1461032057806320800a001461034b57806323b872dd14610362578063313ce5671461039f57806339509351146103ca57610246565b806301339c211461024b57806306fdde0314610262578063095ea7b31461028d5780630ac249d5146102ca5780630daa9205146102f557610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610909565b005b34801561026e57600080fd5b50610277610da0565b6040516102849190613605565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af91906136c0565b610e32565b6040516102c1919061371b565b60405180910390f35b3480156102d657600080fd5b506102df610e55565b6040516102ec9190613745565b60405180910390f35b34801561030157600080fd5b5061030a610e7b565b604051610317919061376f565b60405180910390f35b34801561032c57600080fd5b50610335610e81565b604051610342919061376f565b60405180910390f35b34801561035757600080fd5b50610360610e8b565b005b34801561036e57600080fd5b506103896004803603810190610384919061378a565b610f83565b604051610396919061371b565b60405180910390f35b3480156103ab57600080fd5b506103b4610fb2565b6040516103c191906137f9565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec91906136c0565b610fbb565b6040516103fe919061371b565b60405180910390f35b34801561041357600080fd5b5061041c610ff2565b604051610429919061371b565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190613814565b611005565b005b34801561046757600080fd5b50610482600480360381019061047d9190613814565b6110a4565b005b34801561049057600080fd5b50610499611192565b6040516104a69190613745565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613814565b6111b8565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190613841565b6112da565b60405161050c919061376f565b60405180910390f35b34801561052157600080fd5b5061052a611322565b005b34801561053857600080fd5b50610541611336565b60405161054e919061376f565b60405180910390f35b34801561056357600080fd5b5061056c61133c565b005b34801561057a57600080fd5b506105836113dd565b6040516105909190613745565b60405180910390f35b3480156105a557600080fd5b506105ae611403565b6040516105bb9190613745565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613841565b61142d565b6040516105f8919061371b565b60405180910390f35b34801561060d57600080fd5b5061061661144d565b6040516106239190613745565b60405180910390f35b34801561063857600080fd5b50610641611473565b60405161064e9190613605565b60405180910390f35b34801561066357600080fd5b5061067e600480360381019061067991906136c0565b611505565b60405161068b919061371b565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190613841565b61157c565b005b3480156106c957600080fd5b506106e460048036038101906106df91906136c0565b611740565b6040516106f1919061371b565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c919061389a565b611763565b005b34801561072f57600080fd5b506107386118c4565b005b34801561074657600080fd5b5061074f611f80565b005b34801561075d57600080fd5b506107666120fc565b604051610773919061376f565b60405180910390f35b34801561078857600080fd5b50610791612102565b60405161079e919061376f565b60405180910390f35b3480156107b357600080fd5b506107ce60048036038101906107c991906138da565b612108565b6040516107db919061376f565b60405180910390f35b3480156107f057600080fd5b506107f961218f565b604051610806919061376f565b60405180910390f35b34801561081b57600080fd5b5061083660048036038101906108319190613841565b612195565b005b34801561084457600080fd5b5061085f600480360381019061085a919061389a565b612359565b005b34801561086d57600080fd5b506108886004803603810190610883919061391a565b612479565b005b34801561089657600080fd5b506108b160048036038101906108ac9190613841565b612531565b005b3480156108bf57600080fd5b506108c86125b4565b6040516108d591906139cc565b60405180910390f35b3480156108ea57600080fd5b506108f36125da565b604051610900919061376f565b60405180910390f35b6109116125e0565b737de8063e9fb43321d2100e8ddae5167f56a50060600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f991906139fc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa691906139fc565b6040518363ffffffff1660e01b8152600401610ac3929190613a29565b6020604051808303816000875af1158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0691906139fc565b9050610b13816001611763565b7347689fbae45816ea67c3c29bc46d2ff0961cb513601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507387b49d6a6910547493f841a95b4ed94d2a5942dd601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160136000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610bb8600a81905550618235600b81905550618235600c81905550618236600d8190555069d3c21bcecceda1000000600e81905550690a968163f0a57b400000600f819055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a150565b606060038054610daf90613a81565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddb90613a81565b8015610e285780601f10610dfd57610100808354040283529160200191610e28565b820191906000526020600020905b815481529060010190602001808311610e0b57829003601f168201915b5050505050905090565b600080610e3d61265e565b9050610e4a818585612666565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000600254905090565b600047905060008111610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90613afe565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1682604051610ef990613b4f565b60006040518083038185875af1925050503d8060008114610f36576040519150601f19603f3d011682016040523d82523d6000602084013e610f3b565b606091505b5050905080610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7690613bb0565b60405180910390fd5b5050565b600080610f8e61265e565b9050610f9b85828561282f565b610fa68585856128bb565b60019150509392505050565b60006012905090565b600080610fc661265e565b9050610fe7818585610fd88589612108565b610fe29190613bff565b612666565b600191505092915050565b601460009054906101000a900460ff1681565b61100d6125e0565b683635c9adc5dea00000811015611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090613c7f565b60405180910390fd5b6000600f54905081600f819055507f046078a3b350ab7ef8b49720ee84ad777c5172459d33cff8e353c3b9b04757ea8183604051611098929190613c9f565b60405180910390a15050565b6110ac6125e0565b6969e10de76676d08000008110156110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f090613d3a565b60405180910390fd5b6a14adf4b7320334b9000000811115611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90613dcc565b60405180910390fd5b6000600e54905081600e819055507f35f2577625659032d553fbc001320996b756a5dae410a0b74e931934e020464b8183604051611186929190613c9f565b60405180910390a15050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111c06125e0565b600954811115611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90613e5e565b60405180910390fd5b6000811015611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090613eca565b60405180910390fd5b600a54810361128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490613f5c565b60405180910390fd5b6000600a54905081600a819055507f74dbbbe280ef27b79a8a0c449d5ae2ba7a31849103241d0f98df70bbc9d03e3781600a546040516112ce929190613c9f565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61132a6125e0565b6113346000612c82565b565b600c5481565b6113446125e0565b601460009054906101000a900460ff1615611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90613fc8565b60405180910390fd5b6001601460006101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60086020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461148290613a81565b80601f01602080910402602001604051908101604052809291908181526020018280546114ae90613a81565b80156114fb5780601f106114d0576101008083540402835291602001916114fb565b820191906000526020600020905b8154815290600101906020018083116114de57829003601f168201915b5050505050905090565b60008061151061265e565b9050600061151e8286612108565b905083811015611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a9061405a565b60405180910390fd5b6115708286868403612666565b60019250505092915050565b6115846125e0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea906140ec565b60405180910390fd5b600060136000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa74e71df5980104def7b321d0fa7d4b885191d40a2ae420acb543c3eba542532816040516117359190613745565b60405180910390a150565b60008061174b61265e565b90506117588185856128bb565b600191505092915050565b61176b6125e0565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d19061417e565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f52f7750de642e169ff687a199cc8453a96d938130a797c0a11ea42a4d1659d87826040516118b8919061371b565b60405180910390a25050565b6001600560146101000a81548160ff02191690831515021790555060006118ea306112da565b90506000810361192f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192690614210565b60405180910390fd5b6000620186a0600280600b54611945919061425f565b61194f919061425f565b8361195a9190614290565b611964919061425f565b905061197a818361197591906142d2565b612d48565b6000479050600081036119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b990614378565b60405180910390fd5b6000620186a06004600c546119d7919061425f565b836119e29190614290565b6119ec919061425f565b90506000620186a0600d5484611a029190614290565b611a0c919061425f565b90506000620186a06002600b54611a23919061425f565b85611a2e9190614290565b611a38919061425f565b90506000620186a06002600b54611a4f919061425f565b86611a5a9190614290565b611a64919061425f565b90506000620186a060036004600c54611a7d919061425f565b88611a889190614290565b611a929190614290565b611a9c919061425f565b9050611aa9308885612f8b565b611ae08183611ab89190613bff565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130df565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b3d9190613745565b602060405180830381865afa158015611b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7e91906143ad565b905060008284611b8e9190613bff565b90506000806000831115611bdf5782670de0b6b3a764000087611bb19190614290565b611bbb919061425f565b915082670de0b6b3a764000086611bd29190614290565b611bdc919061425f565b90505b6000670de0b6b3a76400008386611bf69190614290565b611c00919061425f565b90506000670de0b6b3a76400008387611c199190614290565b611c23919061425f565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead846040518363ffffffff1660e01b8152600401611c849291906143da565b6020604051808303816000875af1158015611ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc79190614418565b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611d479291906143da565b6020604051808303816000875af1158015611d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8a9190614418565b506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c604051611dd390613b4f565b60006040518083038185875af1925050503d8060008114611e10576040519150601f19603f3d011682016040523d82523d6000602084013e611e15565b606091505b5050905080611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e50906144b7565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c604051611ea190613b4f565b60006040518083038185875af1925050503d8060008114611ede576040519150601f19603f3d011682016040523d82523d6000602084013e611ee3565b606091505b5050905080611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e90614549565b60405180910390fd5b7f073f67f6b2a495a773c8f33582c762d9c1a89fec310d1e2ce2808b4ff65d829060405160405180910390a1505050505050505050505050505050506000600560146101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201391906139fc565b90508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161206a9190613745565b602060405180830381865afa158015612087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ab91906143ad565b6040518263ffffffff1660e01b81526004016120c7919061376f565b600060405180830381600087803b1580156120e157600080fd5b505af11580156120f5573d6000803e3d6000fd5b5050505050565b600f5481565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61219d6125e0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361220c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612203906145db565b60405180910390fd5b600060136000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdccc025e6e980de101657e1295cfa32a304434c2ca37130de5942fb8fb2b390a8160405161234e9190613745565b60405180910390a150565b6123616125e0565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c79061466d565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f33e99dbd8a2fdf021abaf8531c98838a37f8e85fd3cbf0e897047074f9c4ecf48260405161246d919061371b565b60405180910390a25050565b6124816125e0565b620186a08183856124929190613bff565b61249c9190613bff565b146124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d3906146ff565b60405180910390fd5b82600b8190555081600c8190555080600d819055507f192b126d6d86e50716742827858f2c3edda14906a341f1fc234c27fc1e4c8f8b8383836040516125249392919061471f565b60405180910390a1505050565b6125396125e0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259f906147c8565b60405180910390fd5b6125b181612c82565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6125e861265e565b73ffffffffffffffffffffffffffffffffffffffff16612606611403565b73ffffffffffffffffffffffffffffffffffffffff161461265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265390614834565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cc906148c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b90614958565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612822919061376f565b60405180910390a3505050565b600061283b8484612108565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146128b557818110156128a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289e906149c4565b60405180910390fd5b6128b48484848403612666565b5b50505050565b601460009054906101000a900460ff168061290857506128d9611403565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b612947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293e90614a56565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129e85750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129fd576129f88383836132f5565b612c7d565b6000819050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612aa35750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612be6576000620186a0600a5483612abc9190614290565b612ac6919061425f565b90508082612ad491906142d2565b9150600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bd957600e5482612b8d600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b865787612b88565b865b6112da565b612b979190613bff565b1115612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614ae8565b60405180910390fd5b5b612be48530836132f5565b505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c4c5750600560149054906101000a900460ff16155b8015612c625750600f54612c5f306112da565b10155b15612c7057612c6f6118c4565b5b612c7b8484836132f5565b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff811115612d6557612d64614b08565b5b604051908082528060200260200182016040528015612d935781602001602082028036833780820191505090505b5090503081600081518110612dab57612daa614b37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7691906139fc565b81600181518110612e8a57612e89614b37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ef130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612666565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f55959493929190614c5f565b600060405180830381600087803b158015612f6f57600080fd5b505af1158015612f83573d6000803e3d6000fd5b505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612fe89291906143da565b6020604051808303816000875af1158015613007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302b9190614418565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198285856000806000426040518863ffffffff1660e01b815260040161309496959493929190614cb9565b60606040518083038185885af11580156130b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130d79190614d1a565b505050505050565b6000600267ffffffffffffffff8111156130fc576130fb614b08565b5b60405190808252806020026020018201604052801561312a5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561319a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131be91906139fc565b816000815181106131d2576131d1614b37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061322157613220614b37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016132be9493929190614d6d565b6000604051808303818588803b1580156132d757600080fd5b505af11580156132eb573d6000803e3d6000fd5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335b90614e2b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ca90614ebd565b60405180910390fd5b6133de83838361356b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345b90614f4f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613552919061376f565b60405180910390a3613565848484613570565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135af578082015181840152602081019050613594565b60008484015250505050565b6000601f19601f8301169050919050565b60006135d782613575565b6135e18185613580565b93506135f1818560208601613591565b6135fa816135bb565b840191505092915050565b6000602082019050818103600083015261361f81846135cc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136578261362c565b9050919050565b6136678161364c565b811461367257600080fd5b50565b6000813590506136848161365e565b92915050565b6000819050919050565b61369d8161368a565b81146136a857600080fd5b50565b6000813590506136ba81613694565b92915050565b600080604083850312156136d7576136d6613627565b5b60006136e585828601613675565b92505060206136f6858286016136ab565b9150509250929050565b60008115159050919050565b61371581613700565b82525050565b6000602082019050613730600083018461370c565b92915050565b61373f8161364c565b82525050565b600060208201905061375a6000830184613736565b92915050565b6137698161368a565b82525050565b60006020820190506137846000830184613760565b92915050565b6000806000606084860312156137a3576137a2613627565b5b60006137b186828701613675565b93505060206137c286828701613675565b92505060406137d3868287016136ab565b9150509250925092565b600060ff82169050919050565b6137f3816137dd565b82525050565b600060208201905061380e60008301846137ea565b92915050565b60006020828403121561382a57613829613627565b5b6000613838848285016136ab565b91505092915050565b60006020828403121561385757613856613627565b5b600061386584828501613675565b91505092915050565b61387781613700565b811461388257600080fd5b50565b6000813590506138948161386e565b92915050565b600080604083850312156138b1576138b0613627565b5b60006138bf85828601613675565b92505060206138d085828601613885565b9150509250929050565b600080604083850312156138f1576138f0613627565b5b60006138ff85828601613675565b925050602061391085828601613675565b9150509250929050565b60008060006060848603121561393357613932613627565b5b6000613941868287016136ab565b9350506020613952868287016136ab565b9250506040613963868287016136ab565b9150509250925092565b6000819050919050565b600061399261398d6139888461362c565b61396d565b61362c565b9050919050565b60006139a482613977565b9050919050565b60006139b682613999565b9050919050565b6139c6816139ab565b82525050565b60006020820190506139e160008301846139bd565b92915050565b6000815190506139f68161365e565b92915050565b600060208284031215613a1257613a11613627565b5b6000613a20848285016139e7565b91505092915050565b6000604082019050613a3e6000830185613736565b613a4b6020830184613736565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a9957607f821691505b602082108103613aac57613aab613a52565b5b50919050565b7f5837473a204e6f2045544820746f207769746864726177000000000000000000600082015250565b6000613ae8601783613580565b9150613af382613ab2565b602082019050919050565b60006020820190508181036000830152613b1781613adb565b9050919050565b600081905092915050565b50565b6000613b39600083613b1e565b9150613b4482613b29565b600082019050919050565b6000613b5a82613b2c565b9150819050919050565b7f5837473a20455448207472616e73666572206661696c65640000000000000000600082015250565b6000613b9a601883613580565b9150613ba582613b64565b602082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c0a8261368a565b9150613c158361368a565b9250828201905080821115613c2d57613c2c613bd0565b5b92915050565b7f5837473a20313030302058374720697320746865206d696e6d756d0000000000600082015250565b6000613c69601b83613580565b9150613c7482613c33565b602082019050919050565b60006020820190508181036000830152613c9881613c5c565b9050919050565b6000604082019050613cb46000830185613760565b613cc16020830184613760565b9392505050565b7f5837473a204d61782077616c6c6574206973206c65737320746865206d696e6960008201527f6d756d207468656e20302c3525206f6620746f74616c537570706c7900000000602082015250565b6000613d24603c83613580565b9150613d2f82613cc8565b604082019050919050565b60006020820190508181036000830152613d5381613d17565b9050919050565b7f5837473a204d61782077616c6c6574206973206d6f726520746865206d61786960008201527f6d756d207468616e20323525206f6620746f74616c537570706c790000000000602082015250565b6000613db6603b83613580565b9150613dc182613d5a565b604082019050919050565b60006020820190508181036000830152613de581613da9565b9050919050565b7f5837473a204665652063616e206e6f742062652073657420686967686572207460008201527f68656e20746865206d6178696d756d206f662037250000000000000000000000602082015250565b6000613e48603583613580565b9150613e5382613dec565b604082019050919050565b60006020820190508181036000830152613e7781613e3b565b9050919050565b7f5837473a20466565206973206c657373207468616e2030000000000000000000600082015250565b6000613eb4601783613580565b9150613ebf82613e7e565b602082019050919050565b60006020820190508181036000830152613ee381613ea7565b9050919050565b7f5837473a2046656520697320616c726561647920746861742070657263656e7460008201527f6167650000000000000000000000000000000000000000000000000000000000602082015250565b6000613f46602383613580565b9150613f5182613eea565b604082019050919050565b60006020820190508181036000830152613f7581613f39565b9050919050565b7f5837473a2054726164696e6720697320616c726561647920656e61626c656400600082015250565b6000613fb2601f83613580565b9150613fbd82613f7c565b602082019050919050565b60006020820190508181036000830152613fe181613fa5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614044602583613580565b915061404f82613fe8565b604082019050919050565b6000602082019050818103600083015261407381614037565b9050919050565b7f5837473a204e65772074726561737572792063616e206e6f742062652061646460008201527f7265737320307800000000000000000000000000000000000000000000000000602082015250565b60006140d6602783613580565b91506140e18261407a565b604082019050919050565b60006020820190508181036000830152614105816140c9565b9050919050565b7f5837473a20284e65772920414d4d20616464726573732063616e206e6f74206260008201527f6520616464726573732030780000000000000000000000000000000000000000602082015250565b6000614168602c83613580565b91506141738261410c565b604082019050919050565b600060208201905081810360008301526141978161415b565b9050919050565b7f5837473a2063616e6e6f742070726f636573732066656573206966205837472060008201527f62616c616e636520697320300000000000000000000000000000000000000000602082015250565b60006141fa602c83613580565b91506142058261419e565b604082019050919050565b60006020820190508181036000830152614229816141ed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061426a8261368a565b91506142758361368a565b92508261428557614284614230565b5b828204905092915050565b600061429b8261368a565b91506142a68361368a565b92508282026142b48161368a565b915082820484148315176142cb576142ca613bd0565b5b5092915050565b60006142dd8261368a565b91506142e88361368a565b9250828203905081811115614300576142ff613bd0565b5b92915050565b7f5837473a2063616e6e6f742070726f636573732066656573206966204554482060008201527f62616c616e636520697320300000000000000000000000000000000000000000602082015250565b6000614362602c83613580565b915061436d82614306565b604082019050919050565b6000602082019050818103600083015261439181614355565b9050919050565b6000815190506143a781613694565b92915050565b6000602082840312156143c3576143c2613627565b5b60006143d184828501614398565b91505092915050565b60006040820190506143ef6000830185613736565b6143fc6020830184613760565b9392505050565b6000815190506144128161386e565b92915050565b60006020828403121561442e5761442d613627565b5b600061443c84828501614403565b91505092915050565b7f5837473a205472616e7366657220746f2074726561737572792077616c6c657460008201527f206661696c65642e000000000000000000000000000000000000000000000000602082015250565b60006144a1602883613580565b91506144ac82614445565b604082019050919050565b600060208201905081810360008301526144d081614494565b9050919050565b7f5837473a205472616e7366657220746f206465762077616c6c6574206661696c60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b6000614533602383613580565b915061453e826144d7565b604082019050919050565b6000602082019050818103600083015261456281614526565b9050919050565b7f5837473a204e6577206f7065726174696f6e732077616c6c65742063616e206e60008201527f6f74206265206164647265737320307800000000000000000000000000000000602082015250565b60006145c5603083613580565b91506145d082614569565b604082019050919050565b600060208201905081810360008301526145f4816145b8565b9050919050565b7f5837473a20284e657729206578636c7564656420616464726573732063616e2060008201527f6e6f742062652061646472657373203078000000000000000000000000000000602082015250565b6000614657603183613580565b9150614662826145fb565b604082019050919050565b600060208201905081810360008301526146868161464a565b9050919050565b7f5837473a2053756d6d6564206665652073686172657320617265206e6f74203160008201527f3030252028313030303030292100000000000000000000000000000000000000602082015250565b60006146e9602d83613580565b91506146f48261468d565b604082019050919050565b60006020820190508181036000830152614718816146dc565b9050919050565b60006060820190506147346000830186613760565b6147416020830185613760565b61474e6040830184613760565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147b2602683613580565b91506147bd82614756565b604082019050919050565b600060208201905081810360008301526147e1816147a5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061481e602083613580565b9150614829826147e8565b602082019050919050565b6000602082019050818103600083015261484d81614811565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006148b0602483613580565b91506148bb82614854565b604082019050919050565b600060208201905081810360008301526148df816148a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614942602283613580565b915061494d826148e6565b604082019050919050565b6000602082019050818103600083015261497181614935565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006149ae601d83613580565b91506149b982614978565b602082019050919050565b600060208201905081810360008301526149dd816149a1565b9050919050565b7f5837473a2054726164696e672077696c6c20626520656e61626c65642077686560008201527f6e2074686520616d6d2070616972206973207365742e00000000000000000000602082015250565b6000614a40603683613580565b9150614a4b826149e4565b604082019050919050565b60006020820190508181036000830152614a6f81614a33565b9050919050565b7f5837473a207472616e73616374696f6e2065786365656473206d61782077616c60008201527f6c65740000000000000000000000000000000000000000000000000000000000602082015250565b6000614ad2602383613580565b9150614add82614a76565b604082019050919050565b60006020820190508181036000830152614b0181614ac5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614b8b614b86614b8184614b66565b61396d565b61368a565b9050919050565b614b9b81614b70565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614bd68161364c565b82525050565b6000614be88383614bcd565b60208301905092915050565b6000602082019050919050565b6000614c0c82614ba1565b614c168185614bac565b9350614c2183614bbd565b8060005b83811015614c52578151614c398882614bdc565b9750614c4483614bf4565b925050600181019050614c25565b5085935050505092915050565b600060a082019050614c746000830188613760565b614c816020830187614b92565b8181036040830152614c938186614c01565b9050614ca26060830185613736565b614caf6080830184613760565b9695505050505050565b600060c082019050614cce6000830189613736565b614cdb6020830188613760565b614ce86040830187614b92565b614cf56060830186614b92565b614d026080830185613736565b614d0f60a0830184613760565b979650505050505050565b600080600060608486031215614d3357614d32613627565b5b6000614d4186828701614398565b9350506020614d5286828701614398565b9250506040614d6386828701614398565b9150509250925092565b6000608082019050614d826000830187614b92565b8181036020830152614d948186614c01565b9050614da36040830185613736565b614db06060830184613760565b95945050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e15602583613580565b9150614e2082614db9565b604082019050919050565b60006020820190508181036000830152614e4481614e08565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea7602383613580565b9150614eb282614e4b565b604082019050919050565b60006020820190508181036000830152614ed681614e9a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614f39602683613580565b9150614f4482614edd565b604082019050919050565b60006020820190508181036000830152614f6881614f2c565b905091905056fea26469706673582212203ae418932636ff8ebcfd9e8758aedd92ffe3105584b11f65f0b57608f38ad57064736f6c63430008140033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80638da5cb5b1161012e578063d368371e116100ab578063f196782c1161006f578063f196782c14610838578063f28f797214610861578063f2fde38b1461088a578063f887ea40146108b3578063f8b45b05146108de57610246565b8063d368371e14610751578063dd4f61801461077c578063dd62ed3e146107a7578063ddca3f43146107e4578063ee5ecc891461080f57610246565b8063a8602fea116100f2578063a8602fea14610694578063a9059cbb146106bd578063a9d3cd8a146106fa578063ba69ebed14610723578063c38ec0b61461073a57610246565b80638da5cb5b1461059957806390aa2ea6146105c457806395937a491461060157806395d89b411461062c578063a457c2d71461065757610246565b80634ada218b116101bc57806370a082311161018057806370a08231146104d8578063715018a6146105155780637796ff371461052c5780638a8c523c146105575780638b33b4b21461056e57610246565b80634ada218b1461040757806350b9a9f5146104325780635d0044ca1461045b57806361d027b31461048457806369fe0e2d146104af57610246565b806318160ddd1161020357806318160ddd1461032057806320800a001461034b57806323b872dd14610362578063313ce5671461039f57806339509351146103ca57610246565b806301339c211461024b57806306fdde0314610262578063095ea7b31461028d5780630ac249d5146102ca5780630daa9205146102f557610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610909565b005b34801561026e57600080fd5b50610277610da0565b6040516102849190613605565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af91906136c0565b610e32565b6040516102c1919061371b565b60405180910390f35b3480156102d657600080fd5b506102df610e55565b6040516102ec9190613745565b60405180910390f35b34801561030157600080fd5b5061030a610e7b565b604051610317919061376f565b60405180910390f35b34801561032c57600080fd5b50610335610e81565b604051610342919061376f565b60405180910390f35b34801561035757600080fd5b50610360610e8b565b005b34801561036e57600080fd5b506103896004803603810190610384919061378a565b610f83565b604051610396919061371b565b60405180910390f35b3480156103ab57600080fd5b506103b4610fb2565b6040516103c191906137f9565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec91906136c0565b610fbb565b6040516103fe919061371b565b60405180910390f35b34801561041357600080fd5b5061041c610ff2565b604051610429919061371b565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190613814565b611005565b005b34801561046757600080fd5b50610482600480360381019061047d9190613814565b6110a4565b005b34801561049057600080fd5b50610499611192565b6040516104a69190613745565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613814565b6111b8565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190613841565b6112da565b60405161050c919061376f565b60405180910390f35b34801561052157600080fd5b5061052a611322565b005b34801561053857600080fd5b50610541611336565b60405161054e919061376f565b60405180910390f35b34801561056357600080fd5b5061056c61133c565b005b34801561057a57600080fd5b506105836113dd565b6040516105909190613745565b60405180910390f35b3480156105a557600080fd5b506105ae611403565b6040516105bb9190613745565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613841565b61142d565b6040516105f8919061371b565b60405180910390f35b34801561060d57600080fd5b5061061661144d565b6040516106239190613745565b60405180910390f35b34801561063857600080fd5b50610641611473565b60405161064e9190613605565b60405180910390f35b34801561066357600080fd5b5061067e600480360381019061067991906136c0565b611505565b60405161068b919061371b565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190613841565b61157c565b005b3480156106c957600080fd5b506106e460048036038101906106df91906136c0565b611740565b6040516106f1919061371b565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c919061389a565b611763565b005b34801561072f57600080fd5b506107386118c4565b005b34801561074657600080fd5b5061074f611f80565b005b34801561075d57600080fd5b506107666120fc565b604051610773919061376f565b60405180910390f35b34801561078857600080fd5b50610791612102565b60405161079e919061376f565b60405180910390f35b3480156107b357600080fd5b506107ce60048036038101906107c991906138da565b612108565b6040516107db919061376f565b60405180910390f35b3480156107f057600080fd5b506107f961218f565b604051610806919061376f565b60405180910390f35b34801561081b57600080fd5b5061083660048036038101906108319190613841565b612195565b005b34801561084457600080fd5b5061085f600480360381019061085a919061389a565b612359565b005b34801561086d57600080fd5b506108886004803603810190610883919061391a565b612479565b005b34801561089657600080fd5b506108b160048036038101906108ac9190613841565b612531565b005b3480156108bf57600080fd5b506108c86125b4565b6040516108d591906139cc565b60405180910390f35b3480156108ea57600080fd5b506108f36125da565b604051610900919061376f565b60405180910390f35b6109116125e0565b737de8063e9fb43321d2100e8ddae5167f56a50060600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f991906139fc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa691906139fc565b6040518363ffffffff1660e01b8152600401610ac3929190613a29565b6020604051808303816000875af1158015610ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0691906139fc565b9050610b13816001611763565b7347689fbae45816ea67c3c29bc46d2ff0961cb513601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507387b49d6a6910547493f841a95b4ed94d2a5942dd601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160136000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610bb8600a81905550618235600b81905550618235600c81905550618236600d8190555069d3c21bcecceda1000000600e81905550690a968163f0a57b400000600f819055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a150565b606060038054610daf90613a81565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddb90613a81565b8015610e285780601f10610dfd57610100808354040283529160200191610e28565b820191906000526020600020905b815481529060010190602001808311610e0b57829003601f168201915b5050505050905090565b600080610e3d61265e565b9050610e4a818585612666565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000600254905090565b600047905060008111610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90613afe565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1682604051610ef990613b4f565b60006040518083038185875af1925050503d8060008114610f36576040519150601f19603f3d011682016040523d82523d6000602084013e610f3b565b606091505b5050905080610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7690613bb0565b60405180910390fd5b5050565b600080610f8e61265e565b9050610f9b85828561282f565b610fa68585856128bb565b60019150509392505050565b60006012905090565b600080610fc661265e565b9050610fe7818585610fd88589612108565b610fe29190613bff565b612666565b600191505092915050565b601460009054906101000a900460ff1681565b61100d6125e0565b683635c9adc5dea00000811015611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090613c7f565b60405180910390fd5b6000600f54905081600f819055507f046078a3b350ab7ef8b49720ee84ad777c5172459d33cff8e353c3b9b04757ea8183604051611098929190613c9f565b60405180910390a15050565b6110ac6125e0565b6969e10de76676d08000008110156110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f090613d3a565b60405180910390fd5b6a14adf4b7320334b9000000811115611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90613dcc565b60405180910390fd5b6000600e54905081600e819055507f35f2577625659032d553fbc001320996b756a5dae410a0b74e931934e020464b8183604051611186929190613c9f565b60405180910390a15050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111c06125e0565b600954811115611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90613e5e565b60405180910390fd5b6000811015611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090613eca565b60405180910390fd5b600a54810361128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490613f5c565b60405180910390fd5b6000600a54905081600a819055507f74dbbbe280ef27b79a8a0c449d5ae2ba7a31849103241d0f98df70bbc9d03e3781600a546040516112ce929190613c9f565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61132a6125e0565b6113346000612c82565b565b600c5481565b6113446125e0565b601460009054906101000a900460ff1615611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90613fc8565b60405180910390fd5b6001601460006101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60086020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461148290613a81565b80601f01602080910402602001604051908101604052809291908181526020018280546114ae90613a81565b80156114fb5780601f106114d0576101008083540402835291602001916114fb565b820191906000526020600020905b8154815290600101906020018083116114de57829003601f168201915b5050505050905090565b60008061151061265e565b9050600061151e8286612108565b905083811015611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a9061405a565b60405180910390fd5b6115708286868403612666565b60019250505092915050565b6115846125e0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea906140ec565b60405180910390fd5b600060136000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa74e71df5980104def7b321d0fa7d4b885191d40a2ae420acb543c3eba542532816040516117359190613745565b60405180910390a150565b60008061174b61265e565b90506117588185856128bb565b600191505092915050565b61176b6125e0565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d19061417e565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f52f7750de642e169ff687a199cc8453a96d938130a797c0a11ea42a4d1659d87826040516118b8919061371b565b60405180910390a25050565b6001600560146101000a81548160ff02191690831515021790555060006118ea306112da565b90506000810361192f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192690614210565b60405180910390fd5b6000620186a0600280600b54611945919061425f565b61194f919061425f565b8361195a9190614290565b611964919061425f565b905061197a818361197591906142d2565b612d48565b6000479050600081036119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b990614378565b60405180910390fd5b6000620186a06004600c546119d7919061425f565b836119e29190614290565b6119ec919061425f565b90506000620186a0600d5484611a029190614290565b611a0c919061425f565b90506000620186a06002600b54611a23919061425f565b85611a2e9190614290565b611a38919061425f565b90506000620186a06002600b54611a4f919061425f565b86611a5a9190614290565b611a64919061425f565b90506000620186a060036004600c54611a7d919061425f565b88611a889190614290565b611a929190614290565b611a9c919061425f565b9050611aa9308885612f8b565b611ae08183611ab89190613bff565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166130df565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b3d9190613745565b602060405180830381865afa158015611b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7e91906143ad565b905060008284611b8e9190613bff565b90506000806000831115611bdf5782670de0b6b3a764000087611bb19190614290565b611bbb919061425f565b915082670de0b6b3a764000086611bd29190614290565b611bdc919061425f565b90505b6000670de0b6b3a76400008386611bf69190614290565b611c00919061425f565b90506000670de0b6b3a76400008387611c199190614290565b611c23919061425f565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead846040518363ffffffff1660e01b8152600401611c849291906143da565b6020604051808303816000875af1158015611ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc79190614418565b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611d479291906143da565b6020604051808303816000875af1158015611d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8a9190614418565b506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c604051611dd390613b4f565b60006040518083038185875af1925050503d8060008114611e10576040519150601f19603f3d011682016040523d82523d6000602084013e611e15565b606091505b5050905080611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e50906144b7565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c604051611ea190613b4f565b60006040518083038185875af1925050503d8060008114611ede576040519150601f19603f3d011682016040523d82523d6000602084013e611ee3565b606091505b5050905080611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e90614549565b60405180910390fd5b7f073f67f6b2a495a773c8f33582c762d9c1a89fec310d1e2ce2808b4ff65d829060405160405180910390a1505050505050505050505050505050506000600560146101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201391906139fc565b90508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161206a9190613745565b602060405180830381865afa158015612087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ab91906143ad565b6040518263ffffffff1660e01b81526004016120c7919061376f565b600060405180830381600087803b1580156120e157600080fd5b505af11580156120f5573d6000803e3d6000fd5b5050505050565b600f5481565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61219d6125e0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361220c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612203906145db565b60405180910390fd5b600060136000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdccc025e6e980de101657e1295cfa32a304434c2ca37130de5942fb8fb2b390a8160405161234e9190613745565b60405180910390a150565b6123616125e0565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c79061466d565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f33e99dbd8a2fdf021abaf8531c98838a37f8e85fd3cbf0e897047074f9c4ecf48260405161246d919061371b565b60405180910390a25050565b6124816125e0565b620186a08183856124929190613bff565b61249c9190613bff565b146124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d3906146ff565b60405180910390fd5b82600b8190555081600c8190555080600d819055507f192b126d6d86e50716742827858f2c3edda14906a341f1fc234c27fc1e4c8f8b8383836040516125249392919061471f565b60405180910390a1505050565b6125396125e0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259f906147c8565b60405180910390fd5b6125b181612c82565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6125e861265e565b73ffffffffffffffffffffffffffffffffffffffff16612606611403565b73ffffffffffffffffffffffffffffffffffffffff161461265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265390614834565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cc906148c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b90614958565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612822919061376f565b60405180910390a3505050565b600061283b8484612108565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146128b557818110156128a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289e906149c4565b60405180910390fd5b6128b48484848403612666565b5b50505050565b601460009054906101000a900460ff168061290857506128d9611403565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b612947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293e90614a56565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129e85750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129fd576129f88383836132f5565b612c7d565b6000819050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612aa35750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612be6576000620186a0600a5483612abc9190614290565b612ac6919061425f565b90508082612ad491906142d2565b9150600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bd957600e5482612b8d600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b865787612b88565b865b6112da565b612b979190613bff565b1115612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614ae8565b60405180910390fd5b5b612be48530836132f5565b505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c4c5750600560149054906101000a900460ff16155b8015612c625750600f54612c5f306112da565b10155b15612c7057612c6f6118c4565b5b612c7b8484836132f5565b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff811115612d6557612d64614b08565b5b604051908082528060200260200182016040528015612d935781602001602082028036833780820191505090505b5090503081600081518110612dab57612daa614b37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7691906139fc565b81600181518110612e8a57612e89614b37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ef130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612666565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f55959493929190614c5f565b600060405180830381600087803b158015612f6f57600080fd5b505af1158015612f83573d6000803e3d6000fd5b505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612fe89291906143da565b6020604051808303816000875af1158015613007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302b9190614418565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198285856000806000426040518863ffffffff1660e01b815260040161309496959493929190614cb9565b60606040518083038185885af11580156130b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130d79190614d1a565b505050505050565b6000600267ffffffffffffffff8111156130fc576130fb614b08565b5b60405190808252806020026020018201604052801561312a5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561319a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131be91906139fc565b816000815181106131d2576131d1614b37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061322157613220614b37565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016132be9493929190614d6d565b6000604051808303818588803b1580156132d757600080fd5b505af11580156132eb573d6000803e3d6000fd5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335b90614e2b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ca90614ebd565b60405180910390fd5b6133de83838361356b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345b90614f4f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613552919061376f565b60405180910390a3613565848484613570565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135af578082015181840152602081019050613594565b60008484015250505050565b6000601f19601f8301169050919050565b60006135d782613575565b6135e18185613580565b93506135f1818560208601613591565b6135fa816135bb565b840191505092915050565b6000602082019050818103600083015261361f81846135cc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136578261362c565b9050919050565b6136678161364c565b811461367257600080fd5b50565b6000813590506136848161365e565b92915050565b6000819050919050565b61369d8161368a565b81146136a857600080fd5b50565b6000813590506136ba81613694565b92915050565b600080604083850312156136d7576136d6613627565b5b60006136e585828601613675565b92505060206136f6858286016136ab565b9150509250929050565b60008115159050919050565b61371581613700565b82525050565b6000602082019050613730600083018461370c565b92915050565b61373f8161364c565b82525050565b600060208201905061375a6000830184613736565b92915050565b6137698161368a565b82525050565b60006020820190506137846000830184613760565b92915050565b6000806000606084860312156137a3576137a2613627565b5b60006137b186828701613675565b93505060206137c286828701613675565b92505060406137d3868287016136ab565b9150509250925092565b600060ff82169050919050565b6137f3816137dd565b82525050565b600060208201905061380e60008301846137ea565b92915050565b60006020828403121561382a57613829613627565b5b6000613838848285016136ab565b91505092915050565b60006020828403121561385757613856613627565b5b600061386584828501613675565b91505092915050565b61387781613700565b811461388257600080fd5b50565b6000813590506138948161386e565b92915050565b600080604083850312156138b1576138b0613627565b5b60006138bf85828601613675565b92505060206138d085828601613885565b9150509250929050565b600080604083850312156138f1576138f0613627565b5b60006138ff85828601613675565b925050602061391085828601613675565b9150509250929050565b60008060006060848603121561393357613932613627565b5b6000613941868287016136ab565b9350506020613952868287016136ab565b9250506040613963868287016136ab565b9150509250925092565b6000819050919050565b600061399261398d6139888461362c565b61396d565b61362c565b9050919050565b60006139a482613977565b9050919050565b60006139b682613999565b9050919050565b6139c6816139ab565b82525050565b60006020820190506139e160008301846139bd565b92915050565b6000815190506139f68161365e565b92915050565b600060208284031215613a1257613a11613627565b5b6000613a20848285016139e7565b91505092915050565b6000604082019050613a3e6000830185613736565b613a4b6020830184613736565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a9957607f821691505b602082108103613aac57613aab613a52565b5b50919050565b7f5837473a204e6f2045544820746f207769746864726177000000000000000000600082015250565b6000613ae8601783613580565b9150613af382613ab2565b602082019050919050565b60006020820190508181036000830152613b1781613adb565b9050919050565b600081905092915050565b50565b6000613b39600083613b1e565b9150613b4482613b29565b600082019050919050565b6000613b5a82613b2c565b9150819050919050565b7f5837473a20455448207472616e73666572206661696c65640000000000000000600082015250565b6000613b9a601883613580565b9150613ba582613b64565b602082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c0a8261368a565b9150613c158361368a565b9250828201905080821115613c2d57613c2c613bd0565b5b92915050565b7f5837473a20313030302058374720697320746865206d696e6d756d0000000000600082015250565b6000613c69601b83613580565b9150613c7482613c33565b602082019050919050565b60006020820190508181036000830152613c9881613c5c565b9050919050565b6000604082019050613cb46000830185613760565b613cc16020830184613760565b9392505050565b7f5837473a204d61782077616c6c6574206973206c65737320746865206d696e6960008201527f6d756d207468656e20302c3525206f6620746f74616c537570706c7900000000602082015250565b6000613d24603c83613580565b9150613d2f82613cc8565b604082019050919050565b60006020820190508181036000830152613d5381613d17565b9050919050565b7f5837473a204d61782077616c6c6574206973206d6f726520746865206d61786960008201527f6d756d207468616e20323525206f6620746f74616c537570706c790000000000602082015250565b6000613db6603b83613580565b9150613dc182613d5a565b604082019050919050565b60006020820190508181036000830152613de581613da9565b9050919050565b7f5837473a204665652063616e206e6f742062652073657420686967686572207460008201527f68656e20746865206d6178696d756d206f662037250000000000000000000000602082015250565b6000613e48603583613580565b9150613e5382613dec565b604082019050919050565b60006020820190508181036000830152613e7781613e3b565b9050919050565b7f5837473a20466565206973206c657373207468616e2030000000000000000000600082015250565b6000613eb4601783613580565b9150613ebf82613e7e565b602082019050919050565b60006020820190508181036000830152613ee381613ea7565b9050919050565b7f5837473a2046656520697320616c726561647920746861742070657263656e7460008201527f6167650000000000000000000000000000000000000000000000000000000000602082015250565b6000613f46602383613580565b9150613f5182613eea565b604082019050919050565b60006020820190508181036000830152613f7581613f39565b9050919050565b7f5837473a2054726164696e6720697320616c726561647920656e61626c656400600082015250565b6000613fb2601f83613580565b9150613fbd82613f7c565b602082019050919050565b60006020820190508181036000830152613fe181613fa5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614044602583613580565b915061404f82613fe8565b604082019050919050565b6000602082019050818103600083015261407381614037565b9050919050565b7f5837473a204e65772074726561737572792063616e206e6f742062652061646460008201527f7265737320307800000000000000000000000000000000000000000000000000602082015250565b60006140d6602783613580565b91506140e18261407a565b604082019050919050565b60006020820190508181036000830152614105816140c9565b9050919050565b7f5837473a20284e65772920414d4d20616464726573732063616e206e6f74206260008201527f6520616464726573732030780000000000000000000000000000000000000000602082015250565b6000614168602c83613580565b91506141738261410c565b604082019050919050565b600060208201905081810360008301526141978161415b565b9050919050565b7f5837473a2063616e6e6f742070726f636573732066656573206966205837472060008201527f62616c616e636520697320300000000000000000000000000000000000000000602082015250565b60006141fa602c83613580565b91506142058261419e565b604082019050919050565b60006020820190508181036000830152614229816141ed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061426a8261368a565b91506142758361368a565b92508261428557614284614230565b5b828204905092915050565b600061429b8261368a565b91506142a68361368a565b92508282026142b48161368a565b915082820484148315176142cb576142ca613bd0565b5b5092915050565b60006142dd8261368a565b91506142e88361368a565b9250828203905081811115614300576142ff613bd0565b5b92915050565b7f5837473a2063616e6e6f742070726f636573732066656573206966204554482060008201527f62616c616e636520697320300000000000000000000000000000000000000000602082015250565b6000614362602c83613580565b915061436d82614306565b604082019050919050565b6000602082019050818103600083015261439181614355565b9050919050565b6000815190506143a781613694565b92915050565b6000602082840312156143c3576143c2613627565b5b60006143d184828501614398565b91505092915050565b60006040820190506143ef6000830185613736565b6143fc6020830184613760565b9392505050565b6000815190506144128161386e565b92915050565b60006020828403121561442e5761442d613627565b5b600061443c84828501614403565b91505092915050565b7f5837473a205472616e7366657220746f2074726561737572792077616c6c657460008201527f206661696c65642e000000000000000000000000000000000000000000000000602082015250565b60006144a1602883613580565b91506144ac82614445565b604082019050919050565b600060208201905081810360008301526144d081614494565b9050919050565b7f5837473a205472616e7366657220746f206465762077616c6c6574206661696c60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b6000614533602383613580565b915061453e826144d7565b604082019050919050565b6000602082019050818103600083015261456281614526565b9050919050565b7f5837473a204e6577206f7065726174696f6e732077616c6c65742063616e206e60008201527f6f74206265206164647265737320307800000000000000000000000000000000602082015250565b60006145c5603083613580565b91506145d082614569565b604082019050919050565b600060208201905081810360008301526145f4816145b8565b9050919050565b7f5837473a20284e657729206578636c7564656420616464726573732063616e2060008201527f6e6f742062652061646472657373203078000000000000000000000000000000602082015250565b6000614657603183613580565b9150614662826145fb565b604082019050919050565b600060208201905081810360008301526146868161464a565b9050919050565b7f5837473a2053756d6d6564206665652073686172657320617265206e6f74203160008201527f3030252028313030303030292100000000000000000000000000000000000000602082015250565b60006146e9602d83613580565b91506146f48261468d565b604082019050919050565b60006020820190508181036000830152614718816146dc565b9050919050565b60006060820190506147346000830186613760565b6147416020830185613760565b61474e6040830184613760565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147b2602683613580565b91506147bd82614756565b604082019050919050565b600060208201905081810360008301526147e1816147a5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061481e602083613580565b9150614829826147e8565b602082019050919050565b6000602082019050818103600083015261484d81614811565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006148b0602483613580565b91506148bb82614854565b604082019050919050565b600060208201905081810360008301526148df816148a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614942602283613580565b915061494d826148e6565b604082019050919050565b6000602082019050818103600083015261497181614935565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006149ae601d83613580565b91506149b982614978565b602082019050919050565b600060208201905081810360008301526149dd816149a1565b9050919050565b7f5837473a2054726164696e672077696c6c20626520656e61626c65642077686560008201527f6e2074686520616d6d2070616972206973207365742e00000000000000000000602082015250565b6000614a40603683613580565b9150614a4b826149e4565b604082019050919050565b60006020820190508181036000830152614a6f81614a33565b9050919050565b7f5837473a207472616e73616374696f6e2065786365656473206d61782077616c60008201527f6c65740000000000000000000000000000000000000000000000000000000000602082015250565b6000614ad2602383613580565b9150614add82614a76565b604082019050919050565b60006020820190508181036000830152614b0181614ac5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614b8b614b86614b8184614b66565b61396d565b61368a565b9050919050565b614b9b81614b70565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614bd68161364c565b82525050565b6000614be88383614bcd565b60208301905092915050565b6000602082019050919050565b6000614c0c82614ba1565b614c168185614bac565b9350614c2183614bbd565b8060005b83811015614c52578151614c398882614bdc565b9750614c4483614bf4565b925050600181019050614c25565b5085935050505092915050565b600060a082019050614c746000830188613760565b614c816020830187614b92565b8181036040830152614c938186614c01565b9050614ca26060830185613736565b614caf6080830184613760565b9695505050505050565b600060c082019050614cce6000830189613736565b614cdb6020830188613760565b614ce86040830187614b92565b614cf56060830186614b92565b614d026080830185613736565b614d0f60a0830184613760565b979650505050505050565b600080600060608486031215614d3357614d32613627565b5b6000614d4186828701614398565b9350506020614d5286828701614398565b9250506040614d6386828701614398565b9150509250925092565b6000608082019050614d826000830187614b92565b8181036020830152614d948186614c01565b9050614da36040830185613736565b614db06060830184613760565b95945050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e15602583613580565b9150614e2082614db9565b604082019050919050565b60006020820190508181036000830152614e4481614e08565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea7602383613580565b9150614eb282614e4b565b604082019050919050565b60006020820190508181036000830152614ed681614e9a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614f39602683613580565b9150614f4482614edd565b604082019050919050565b60006020820190508181036000830152614f6881614f2c565b905091905056fea26469706673582212203ae418932636ff8ebcfd9e8758aedd92ffe3105584b11f65f0b57608f38ad57064736f6c63430008140033

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.