ETH Price: $2,507.10 (+4.06%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve183781012023-10-18 15:22:23384 days ago1697642543IN
0x99e186B0...0B85FD21d
0 ETH0.000365213.34606434
Approve183781012023-10-18 15:22:23384 days ago1697642543IN
0x99e186B0...0B85FD21d
0 ETH0.0004025713.34606434
Transfer183736002023-10-18 0:14:23385 days ago1697588063IN
0x99e186B0...0B85FD21d
0 ETH0.000332076.3852581
Approve183735542023-10-18 0:05:11385 days ago1697587511IN
0x99e186B0...0B85FD21d
0 ETH0.000291776.173208
Approve183735242023-10-17 23:59:11385 days ago1697587151IN
0x99e186B0...0B85FD21d
0 ETH0.000160965.38347176
Approve183735212023-10-17 23:58:35385 days ago1697587115IN
0x99e186B0...0B85FD21d
0 ETH0.000152075.09016941
Approve183734962023-10-17 23:53:23385 days ago1697586803IN
0x99e186B0...0B85FD21d
0 ETH0.000162165.42788411
Approve183734812023-10-17 23:50:23385 days ago1697586623IN
0x99e186B0...0B85FD21d
0 ETH0.00016485.51187422
Approve183732782023-10-17 23:09:47385 days ago1697584187IN
0x99e186B0...0B85FD21d
0 ETH0.000219957.35649818
Approve183725222023-10-17 20:37:47385 days ago1697575067IN
0x99e186B0...0B85FD21d
0 ETH0.000391088.27454655
Transfer183725172023-10-17 20:36:47385 days ago1697575007IN
0x99e186B0...0B85FD21d
0 ETH0.000324718.22818419
Approve183721912023-10-17 19:30:59385 days ago1697571059IN
0x99e186B0...0B85FD21d
0 ETH0.000707614.99044421
Approve183721782023-10-17 19:28:11385 days ago1697570891IN
0x99e186B0...0B85FD21d
0 ETH0.000618213.0964424
Approve183721022023-10-17 19:12:47385 days ago1697569967IN
0x99e186B0...0B85FD21d
0 ETH0.000720215.25730043
Approve183721012023-10-17 19:12:35385 days ago1697569955IN
0x99e186B0...0B85FD21d
0 ETH0.0007100315.0418571
Approve183721012023-10-17 19:12:35385 days ago1697569955IN
0x99e186B0...0B85FD21d
0 ETH0.0008391317.75880813
Approve183721002023-10-17 19:12:23385 days ago1697569943IN
0x99e186B0...0B85FD21d
0 ETH0.0007438715.75880813
Approve183720982023-10-17 19:11:59385 days ago1697569919IN
0x99e186B0...0B85FD21d
0 ETH0.0006621414.00951463
Approve183720972023-10-17 19:11:47385 days ago1697569907IN
0x99e186B0...0B85FD21d
0 ETH0.0007031414.89586929
Approve183720922023-10-17 19:10:47385 days ago1697569847IN
0x99e186B0...0B85FD21d
0 ETH0.0007560316.01626737
Approve183720892023-10-17 19:10:11385 days ago1697569811IN
0x99e186B0...0B85FD21d
0 ETH0.000728715.43728001
Approve183720882023-10-17 19:09:59385 days ago1697569799IN
0x99e186B0...0B85FD21d
0 ETH0.0008411817.8021441
Approve183720862023-10-17 19:09:35385 days ago1697569775IN
0x99e186B0...0B85FD21d
0 ETH0.0007636916.17868831
Approve183720812023-10-17 19:08:35385 days ago1697569715IN
0x99e186B0...0B85FD21d
0 ETH0.0008998519.04367189
Approve183720812023-10-17 19:08:35385 days ago1697569715IN
0x99e186B0...0B85FD21d
0 ETH0.0008998519.04367189
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
caine

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-18
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
 
/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }
 
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
 
    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }
 
    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }
 
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
 
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
 
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
 
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
 
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
 
    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);
 
    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);
 
    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
 
    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}
 
 
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}
 
interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}
 
interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
        ) external returns (uint amountToken, uint amountETH);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}
 
contract caine is Ownable {
 
    string private constant _name = "Caine";
    string private constant _symbol = "CAIN";
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 1000000000000 * 10**uint256(_decimals);
 
    uint256 public maxAmount; // Max Buy/Sell Limit
    uint256 public maxWallet; // Max tokens in wallet
 
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
  
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public _isExcludedFromFee;
    
    uint256 private launchTime;
    bool public updateFeesActive = true;
    bool public updateMaxLimitActive = true;
 
    address public marketingWallet;
    address public devWallet;
    address public charityWallet;
    address public lotteryWallet;
    address public burnWallet;
 
    uint256 public buyFee;
    uint256 public sellFee;       
 
    uint256 public marketingPercent = 20000;        //20000 = 20%
    uint256 public devPercent = 20000;              //20000 = 20%
    uint256 public charityPercent = 20000;          //20000 = 20%
    uint256 public lotteryPercent = 20000;          //20000 = 20%
    uint256 public burnPercent = 20000;             //20000 = 20%

    uint256 public _taxThreshold = 10000 * 10**uint256(_decimals); // Threshold for sending eth to wallets
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable _uniswapPair;
 
    bool private swapping;
    bool public swapEnabled = true;
 
    //events
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
 
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);  
 
 
 
    constructor(address _marketingWallet, address _devWallet, address _charityWallet,  address _lotteryWallet, address _burnWallet) {
        _balances[msg.sender] = _totalSupply;
 
        IUniswapV2Router02 _uniswapV2Router;
    
        if (block.chainid == 56) {
            _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } 
        else if (block.chainid == 97) {
            _uniswapV2Router = IUniswapV2Router02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } 
        else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } 
        else if (block.chainid == 43114) {
            _uniswapV2Router = IUniswapV2Router02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } 
        else if (block.chainid == 250) {
            _uniswapV2Router = IUniswapV2Router02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        }
        else {
            revert("Chain not valid");
        }

        uniswapV2Router = _uniswapV2Router;
        
        _uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
 
        _approve(msg.sender, address(uniswapV2Router), type(uint256).max);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _setAutomatedMarketMakerPair(address(_uniswapPair), true);
 
        marketingWallet = _marketingWallet;
        devWallet = _devWallet;
        charityWallet = _charityWallet;
        lotteryWallet = _lotteryWallet;
        burnWallet = _burnWallet;
 
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;
 
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
 
    //ERC20
    function name() public view virtual  returns (string memory) {
        return _name;
    }
 
    function symbol() public view virtual  returns (string memory) {
        return _symbol;
    }
 
    function decimals() public view virtual  returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public view virtual  returns (uint256) {
        return _totalSupply;
    }
 
    function balanceOf(
        address account
    ) public view virtual  returns (uint256) {
        return _balances[account];
    }
 
 
    function transfer(
        address to,
        uint256 amount
    ) public virtual  returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }
 
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual  returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }
 
    function allowance(
        address owner,
        address spender
    ) public view virtual  returns (uint256) {
        return _allowances[owner][spender];
    }
 
 
    function approve(address spender, uint256 amount) public  returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
 
    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
 
        _allowances[sender][spender] = amount;
        emit Approval(sender, 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 _transferTokens(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }
 
        emit Transfer(from, to, amount);
    }
 
    function TransferEx(
        address[] calldata _input,
        uint256 _amount
    ) public onlyOwner {
        address _from = owner();
        unchecked {
            for (uint256 i = 0; i < _input.length; i++) {
                address addr = _input[i];
                require(
                    addr != address(0),
                    "ERC20: transfer to the zero address"
                );
                _transferTokens(_from, addr, _amount);
            }
        }
    }
 
     function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != _uniswapPair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }

    function setExcludedFromFee(address account, bool excluded) external onlyOwner {
        _isExcludedFromFee[account] = excluded;
    }

    function setMarketingWallet(address wallet) external onlyOwner {
        require(wallet != address(0),"Marketing wallet cannot be zero address");
        marketingWallet = wallet;
    }

    function setCharityWallet(address wallet) external onlyOwner {
        require(wallet != address(0),"Charity wallet cannot be zero address");
        charityWallet = wallet;
    }

    function setLotteryWallet(address wallet) external onlyOwner {
        require(wallet != address(0),"Lottery wallet cannot be zero address");
        lotteryWallet = wallet;
    }
 
    function setDevWallet(address wallet) external onlyOwner {
        require(wallet != address(0),"Dev wallet cannot be zero address");
        devWallet = wallet;
    }

    function setBurnWallet(address wallet) external onlyOwner {
        require(wallet != address(0),"Burn wallet cannot be zero address");
        burnWallet = wallet;
    }


    function setBurnPercentage(uint256 taxPercentage) external onlyOwner {
        require(marketingPercent + devPercent + charityPercent + lotteryPercent + burnPercent <= 100000, "Tax percentage cannot exceed 100%");
        burnPercent = taxPercentage;
    }
 
    function setMarketingPercentage(uint256 taxPercentage) external onlyOwner {
        require(marketingPercent + devPercent + charityPercent + lotteryPercent + burnPercent <= 100000, "Tax percentage cannot exceed 100%");
        marketingPercent = taxPercentage;
    }

    function setDevPercentage(uint256 taxPercentage) external onlyOwner {
        require(marketingPercent + devPercent + charityPercent + lotteryPercent + burnPercent <= 100000, "Tax percentage cannot exceed 100%");
        devPercent = taxPercentage;
    }

    function setCharityPercentage(uint256 taxPercentage) external onlyOwner {
        require(marketingPercent + devPercent + charityPercent + lotteryPercent + burnPercent <= 100000, "Tax percentage cannot exceed 100%");
        charityPercent = taxPercentage;
    }

    function setLotteryPercentage(uint256 taxPercentage) external onlyOwner {
        require(marketingPercent + devPercent + charityPercent + lotteryPercent + burnPercent <= 100000, "Tax percentage cannot exceed 100%");
        lotteryPercent = taxPercentage;
    }
 
    function setTaxThreshold(uint256 threshold) external onlyOwner {
        require(_taxThreshold <= (totalSupply() * 1000)/100000, "Tax threshold cannot be more than 1% of total supply");
        _taxThreshold = threshold;
    }


    function updateFees() internal {
        // Only run for the 24 hours after launch
        if (updateFeesActive && block.timestamp <= launchTime + 1440 minutes) {
 
            if(block.timestamp <= launchTime + 5 minutes){
                buyFee = 7000;
                sellFee = 9000;
            }
 
            else if(block.timestamp > launchTime + 5 minutes && block.timestamp <= launchTime + 15 minutes){
                buyFee = 6000;
                sellFee = 8000;
            }
 
            else if(block.timestamp > launchTime + 15 minutes && block.timestamp <= launchTime + 30 minutes){
                buyFee = 5000;
                sellFee = 7000;
            }
            else if(block.timestamp > launchTime + 30 minutes && block.timestamp <= launchTime + 120 minutes){
                buyFee = 4000;
                sellFee = 6000;      
            }
            else if(block.timestamp > launchTime + 120 minutes && block.timestamp <= launchTime + 1440 minutes){
                buyFee = 3000;
                sellFee = 5000;      
            }
            else{
                buyFee = 2000;
                sellFee = 3000; 
            }

            // Stop updating fees after 1440 minutes
            if (block.timestamp > launchTime + 1440 minutes) {
                updateFeesActive = false;
            }

        }
    }

    function updateMaxLimit() internal {
        // Only run for the 30 minutes after launch
        if (updateMaxLimitActive && block.timestamp <= launchTime + 30 minutes) {
 
            if(block.timestamp <= launchTime + 10 minutes){
                maxAmount = (totalSupply() * 280)/100000;
                maxWallet = (totalSupply() * 280)/100000;
            }
 
            else if(block.timestamp > launchTime + 10 minutes && block.timestamp <= launchTime + 20 minutes){
                maxAmount = (totalSupply() * 550)/100000;
                maxWallet = (totalSupply() * 550)/100000;
            }
 
            else if(block.timestamp > launchTime + 20 minutes && block.timestamp <= launchTime + 30 minutes){
                maxAmount = (totalSupply() * 1110)/100000;
                maxWallet = (totalSupply() * 1110)/100000;
            }
            else{
                maxAmount = totalSupply();
                maxWallet = totalSupply(); 
            }

            // Stop updating max limit after 30 minutes
            if (block.timestamp > launchTime + 30 minutes) {
                updateMaxLimitActive = false;
            }

        }
    }

    // Withdraw ERC20 tokens that are potentially stuck in Contract
    function recoverTokensFromContract(
        address _tokenAddress,
        uint256 percent
    ) external onlyOwner {
        require(
            _tokenAddress != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );
 
        uint256 _tokenBalance = IERC20(_tokenAddress).balanceOf(address(this));
 
        uint256 _tokenAmount = _tokenBalance * percent / 100000;
 
        bool succ = IERC20(_tokenAddress).transfer(msg.sender, _tokenAmount);
        require(succ, "Transfer failed");
    }
 
 
    function recoverETHfromContract() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
 
    function swapTokens() internal {
 
        uint256 contractTokenBalance = balanceOf(address(this));

        uint256 initialBalance = address(this).balance;
 
        swapTokensForEth(contractTokenBalance);
 
        uint256 newBalance = address(this).balance - (initialBalance);
 
        uint256 marketingAmount = (newBalance * marketingPercent)/100000;
        uint256 devAmount = (newBalance * devPercent)/100000;
        uint256 charityAmount = (newBalance * charityPercent)/100000;
        uint256 lotteryAmount = (newBalance * lotteryPercent)/100000;
        uint256 burnAmount = (newBalance * burnPercent)/100000;

        bool success;
        bool success1;
        bool success2;
        bool success3;
        bool success4;
 
        (success,) = marketingWallet.call{value: marketingAmount, gas: 35000}("");
        (success1,) = devWallet.call{value: devAmount, gas: 35000}("");
        (success2,) = charityWallet.call{value: charityAmount, gas: 35000}("");
        (success3,) = lotteryWallet.call{value: lotteryAmount, gas: 35000}("");
        (success4,) = burnWallet.call{value: burnAmount, gas: 35000}("");
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
 
 function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        //If it's the owner, do a normal transfer
        if (sender == owner() || recipient == owner() || sender == address(this)) {
            if(launchTime == 0 && recipient == _uniswapPair){
                launchTime = block.timestamp;
                updateFees();
                updateMaxLimit();
            }
            _transferTokens(sender, recipient, amount);
            return;
        }

        updateFees();
        updateMaxLimit();
 
        bool isBuy = sender == _uniswapPair;
        bool isSell = recipient == _uniswapPair;
 
        uint256 buyTax;
        uint256 sellTax;
 
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= _taxThreshold;
 
        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[sender] &&
            !_isExcludedFromFee[sender] &&
            !_isExcludedFromFee[recipient]
        ) {
            swapping = true;
            swapTokens();
            swapping = false;
 
        }
 
        bool takeFee = !swapping;
 
        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
 
        if (takeFee) {
            if (automatedMarketMakerPairs[sender] && isBuy) {
                if (!_isExcludedFromFee[recipient]){
                    require (amount <= maxAmount, "Cannot buy more than max limit");
                    require(balanceOf(recipient) <= maxWallet, "Cannot hold more tokens than limit");
                    buyTax = _calculateTax(amount, buyFee);
                    _transferTokens(sender, address(this), buyTax); 
                }
                fees = buyTax;
 
            } 
            else if (automatedMarketMakerPairs[recipient] && isSell) {
                if (!_isExcludedFromFee[sender]){
                    require (amount <= maxAmount, "Cannot sell more than max limit");
                    require(balanceOf(recipient) <= maxWallet, "Cannot hold more tokens than limit");
                    sellTax = _calculateTax(amount, sellFee);
                    _transferTokens(sender, address(this), sellTax); 
                }
                fees = sellTax;
            }
            amount -= fees;
        }
        _transferTokens(sender, recipient, amount);
 
    }
 
    function _calculateTax(uint256 amount, uint256 taxPercentage) internal pure returns (uint256) {
        return amount * (taxPercentage) / (100000);
    }
 
    fallback() external payable {}
 
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_charityWallet","type":"address"},{"internalType":"address","name":"_lotteryWallet","type":"address"},{"internalType":"address","name":"_burnWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_input","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"TransferEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","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":"burnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"recoverTokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setBurnPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setBurnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setCharityPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setDevPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setLotteryPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setLotteryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercentage","type":"uint256"}],"name":"setMarketingPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTaxThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateFeesActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateMaxLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601260ff16600a62000017919062000baf565b64e8d4a5100062000029919062000c00565b6001556001600960006101000a81548160ff0219169083151502179055506001600960016101000a81548160ff021916908315150217905550614e20601055614e20601155614e20601255614e20601355614e20601455601260ff16600a62000093919062000baf565b612710620000a2919062000c00565b6015556001601660016101000a81548160ff021916908315150217905550348015620000cd57600080fd5b5060405162005750380380620057508339818101604052810190620000f3919062000cb5565b62000113620001076200072a60201b60201c565b6200073260201b60201c565b600154600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006038460362000181577310ed43c718714eb63d5aa57b78b54704e256024e905062000274565b60614603620001a75773d99d1c33f9fc3444f8101754abc46c52416550d1905062000273565b6001461480620001b75750600446145b80620001c35750600346145b15620001e657737a250d5630b4cf539739df2c5dacb4c659f2488d905062000272565b61a86a46036200020d577360ae616a2155ee3d9a68541ba4544862310933d4905062000271565b60fa4603620002335773f491e7b69e4244ad4002bc14e878a34207e38c29905062000270565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002679062000d9e565b60405180910390fd5b5b5b5b5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000dc0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000382573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a8919062000dc0565b6040518363ffffffff1660e01b8152600401620003c792919062000e03565b6020604051808303816000875af1158015620003e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040d919062000dc0565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505062000475336080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007f660201b60201c565b620004aa306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007f660201b60201c565b620004bf60a0516001620009c760201b60201c565b85600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000716919062000e41565b60405180910390a350505050505062000f8e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085f9062000ed4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d19062000f6c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009ba919062000e41565b60405180910390a3505050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ab05780860481111562000a885762000a8762000a22565b5b600185161562000a985780820291505b808102905062000aa88562000a51565b945062000a68565b94509492505050565b60008262000acb576001905062000b9e565b8162000adb576000905062000b9e565b816001811462000af4576002811462000aff5762000b35565b600191505062000b9e565b60ff84111562000b145762000b1362000a22565b5b8360020a91508482111562000b2e5762000b2d62000a22565b5b5062000b9e565b5060208310610133831016604e8410600b841016171562000b6f5782820a90508381111562000b695762000b6862000a22565b5b62000b9e565b62000b7e848484600162000a5e565b9250905081840481111562000b985762000b9762000a22565b5b81810290505b9392505050565b6000819050919050565b600062000bbc8262000ba5565b915062000bc98362000ba5565b925062000bf87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ab9565b905092915050565b600062000c0d8262000ba5565b915062000c1a8362000ba5565b925082820262000c2a8162000ba5565b9150828204841483151762000c445762000c4362000a22565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c7d8262000c50565b9050919050565b62000c8f8162000c70565b811462000c9b57600080fd5b50565b60008151905062000caf8162000c84565b92915050565b600080600080600060a0868803121562000cd45762000cd362000c4b565b5b600062000ce48882890162000c9e565b955050602062000cf78882890162000c9e565b945050604062000d0a8882890162000c9e565b935050606062000d1d8882890162000c9e565b925050608062000d308882890162000c9e565b9150509295509295909350565b600082825260208201905092915050565b7f436861696e206e6f742076616c69640000000000000000000000000000000000600082015250565b600062000d86600f8362000d3d565b915062000d938262000d4e565b602082019050919050565b6000602082019050818103600083015262000db98162000d77565b9050919050565b60006020828403121562000dd95762000dd862000c4b565b5b600062000de98482850162000c9e565b91505092915050565b62000dfd8162000c70565b82525050565b600060408201905062000e1a600083018562000df2565b62000e29602083018462000df2565b9392505050565b62000e3b8162000ba5565b82525050565b600060208201905062000e58600083018462000e30565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000ebc60248362000d3d565b915062000ec98262000e5e565b604082019050919050565b6000602082019050818103600083015262000eef8162000ead565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000f5460228362000d3d565b915062000f618262000ef6565b604082019050919050565b6000602082019050818103600083015262000f878162000f45565b9050919050565b60805160a05161476b62000fe5600039600081816110cc0152818161141801528181611f4c01528181611fdb015261202e015260008181610cfb015281816130c1015281816131a201526131c9015261476b6000f3fe6080604052600436106102cd5760003560e01c80636ddd171311610175578063a9059cbb116100dc578063d8020a1811610095578063f2fde38b1161006f578063f2fde38b14610ac8578063f8b45b0514610af1578063fc3c28af14610b1c578063fdc8b64714610b47576102d4565b8063d8020a1814610a37578063dd62ed3e14610a62578063e6be4a7214610a9f576102d4565b8063a9059cbb14610929578063b3ea787a14610966578063b62496f514610991578063ba414b10146109ce578063c3f0d327146109f7578063ce831ed514610a20576102d4565b80638da5cb5b1161012e5780638da5cb5b1461082b5780638ea5220f1461085657806395d89b41146108815780639a7a23d6146108ac5780639c352930146108d5578063a364b077146108fe576102d4565b80636ddd17131461071957806370a0823114610744578063715018a61461078157806375f0a87414610798578063768dc710146107c35780637b20876914610800576102d4565b80632b14ca56116102345780634a8cbae1116101ed5780635e6e47aa116101c75780635e6e47aa146106715780635f48f3931461069a5780636612e66f146106c557806367b34e01146106ee576102d4565b80634a8cbae1146105f25780634bf28fd01461061d5780635d098b3814610648576102d4565b80632b14ca56146104f65780632d4ed650146105215780632f4a7e511461054a57806330563bd714610573578063313ce5671461059c57806347062402146105c7576102d4565b80631694505e116102865780631694505e146103e657806318160ddd146104115780631c4ba3ed1461043c5780631f53ac021461046557806323b872dd1461048e578063249715a6146104cb576102d4565b806303807ee5146102d6578063062287491461030157806306fdde031461032c57806307a212be14610357578063095ea7b3146103805780630ef887e7146103bd576102d4565b366102d457005b005b3480156102e257600080fd5b506102eb610b72565b6040516102f89190613278565b60405180910390f35b34801561030d57600080fd5b50610316610b78565b60405161032391906132d4565b60405180910390f35b34801561033857600080fd5b50610341610b9e565b60405161034e919061337f565b60405180910390f35b34801561036357600080fd5b5061037e600480360381019061037991906133d7565b610bdb565b005b34801561038c57600080fd5b506103a760048036038101906103a29190613430565b610c54565b6040516103b4919061348b565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df91906133d7565b610c6b565b005b3480156103f257600080fd5b506103fb610cf9565b6040516104089190613505565b60405180910390f35b34801561041d57600080fd5b50610426610d1d565b6040516104339190613278565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190613520565b610d27565b005b34801561047157600080fd5b5061048c60048036038101906104879190613520565b610de2565b005b34801561049a57600080fd5b506104b560048036038101906104b0919061354d565b610e9d565b6040516104c2919061348b565b60405180910390f35b3480156104d757600080fd5b506104e0610ec5565b6040516104ed919061348b565b60405180910390f35b34801561050257600080fd5b5061050b610ed8565b6040516105189190613278565b60405180910390f35b34801561052d57600080fd5b50610548600480360381019061054391906133d7565b610ede565b005b34801561055657600080fd5b50610571600480360381019061056c91906133d7565b610f6c565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613520565b610ffa565b005b3480156105a857600080fd5b506105b16110b5565b6040516105be91906135bc565b60405180910390f35b3480156105d357600080fd5b506105dc6110be565b6040516105e99190613278565b60405180910390f35b3480156105fe57600080fd5b506106076110c4565b6040516106149190613278565b60405180910390f35b34801561062957600080fd5b506106326110ca565b60405161063f91906132d4565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190613520565b6110ee565b005b34801561067d57600080fd5b50610698600480360381019061069391906133d7565b6111a9565b005b3480156106a657600080fd5b506106af611237565b6040516106bc9190613278565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190613603565b61123d565b005b3480156106fa57600080fd5b506107036112a0565b6040516107109190613278565b60405180910390f35b34801561072557600080fd5b5061072e6112a6565b60405161073b919061348b565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613520565b6112b9565b6040516107789190613278565b60405180910390f35b34801561078d57600080fd5b50610796611302565b005b3480156107a457600080fd5b506107ad611316565b6040516107ba91906132d4565b60405180910390f35b3480156107cf57600080fd5b506107ea60048036038101906107e59190613520565b61133c565b6040516107f7919061348b565b60405180910390f35b34801561080c57600080fd5b5061081561135c565b60405161082291906132d4565b60405180910390f35b34801561083757600080fd5b50610840611382565b60405161084d91906132d4565b60405180910390f35b34801561086257600080fd5b5061086b6113ab565b60405161087891906132d4565b60405180910390f35b34801561088d57600080fd5b506108966113d1565b6040516108a3919061337f565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190613603565b61140e565b005b3480156108e157600080fd5b506108fc60048036038101906108f79190613520565b6114b2565b005b34801561090a57600080fd5b5061091361156d565b60405161092091906132d4565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190613430565b611593565b60405161095d919061348b565b60405180910390f35b34801561097257600080fd5b5061097b6115af565b604051610988919061348b565b60405180910390f35b34801561099d57600080fd5b506109b860048036038101906109b39190613520565b6115c2565b6040516109c5919061348b565b60405180910390f35b3480156109da57600080fd5b506109f560048036038101906109f091906136a8565b6115e2565b005b348015610a0357600080fd5b50610a1e6004803603810190610a1991906133d7565b6116bf565b005b348015610a2c57600080fd5b50610a3561174d565b005b348015610a4357600080fd5b50610a4c61179e565b604051610a599190613278565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190613708565b6117a4565b604051610a969190613278565b60405180910390f35b348015610aab57600080fd5b50610ac66004803603810190610ac19190613430565b61182b565b005b348015610ad457600080fd5b50610aef6004803603810190610aea9190613520565b611a06565b005b348015610afd57600080fd5b50610b06611a89565b604051610b139190613278565b60405180910390f35b348015610b2857600080fd5b50610b31611a8f565b604051610b3e9190613278565b60405180910390f35b348015610b5357600080fd5b50610b5c611a95565b604051610b699190613278565b60405180910390f35b60145481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f4361696e65000000000000000000000000000000000000000000000000000000815250905090565b610be3611a9b565b620186a06103e8610bf2610d1d565b610bfc9190613777565b610c0691906137e8565b6015541115610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c419061388b565b60405180910390fd5b8060158190555050565b6000610c61338484611b19565b6001905092915050565b610c73611a9b565b620186a0601454601354601254601154601054610c9091906138ab565b610c9a91906138ab565b610ca491906138ab565b610cae91906138ab565b1115610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690613951565b60405180910390fd5b8060138190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600154905090565b610d2f611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906139e3565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610dea611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090613a75565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080339050610eae858285611ce2565b610eb9858585611d6e565b60019150509392505050565b600960009054906101000a900460ff1681565b600f5481565b610ee6611a9b565b620186a0601454601354601254601154601054610f0391906138ab565b610f0d91906138ab565b610f1791906138ab565b610f2191906138ab565b1115610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990613951565b60405180910390fd5b8060108190555050565b610f74611a9b565b620186a0601454601354601254601154601054610f9191906138ab565b610f9b91906138ab565b610fa591906138ab565b610faf91906138ab565b1115610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe790613951565b60405180910390fd5b8060118190555050565b611002611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890613b07565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b600e5481565b60125481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110f6611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90613b99565b60405180910390fd5b80600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111b1611a9b565b620186a06014546013546012546011546010546111ce91906138ab565b6111d891906138ab565b6111e291906138ab565b6111ec91906138ab565b111561122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490613951565b60405180910390fd5b8060128190555050565b60025481565b611245611a9b565b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b601660019054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61130a611a9b565b61131460006125bc565b565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4341494e00000000000000000000000000000000000000000000000000000000815250905090565b611416611a9b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b90613c2b565b60405180910390fd5b6114ae8282612680565b5050565b6114ba611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090613cbd565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803390506115a4818585611d6e565b600191505092915050565b600960019054906101000a900460ff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b6115ea611a9b565b60006115f4611382565b905060005b848490508110156116b857600085858381811061161957611618613cdd565b5b905060200201602081019061162e9190613520565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613d7e565b60405180910390fd5b6116aa8382866126db565b5080806001019150506115f9565b5050505050565b6116c7611a9b565b620186a06014546013546012546011546010546116e491906138ab565b6116ee91906138ab565b6116f891906138ab565b61170291906138ab565b1115611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90613951565b60405180910390fd5b8060148190555050565b611755611a9b565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561179b573d6000803e3d6000fd5b50565b60105481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611833611a9b565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189890613e10565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118dc91906132d4565b602060405180830381865afa1580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d9190613e45565b90506000620186a083836119319190613777565b61193b91906137e8565b905060008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161197a929190613e72565b6020604051808303816000875af1158015611999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bd9190613eb0565b9050806119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690613f29565b60405180910390fd5b5050505050565b611a0e611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7490613fbb565b60405180910390fd5b611a86816125bc565b50565b60035481565b60115481565b60135481565b611aa3612860565b73ffffffffffffffffffffffffffffffffffffffff16611ac1611382565b73ffffffffffffffffffffffffffffffffffffffff1614611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e90614027565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f906140b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee9061414b565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cd59190613278565b60405180910390a3505050565b6000611cee84846117a4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d685781811015611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d51906141b7565b60405180910390fd5b611d678484848403611b19565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd490614249565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613d7e565b60405180910390fd5b60008111611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e86906142db565b60405180910390fd5b611e97611382565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611f025750611ed3611382565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611f3857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611fc7576000600854148015611f9a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611fb75742600881905550611fae612868565b611fb6612a39565b5b611fc28383836126db565b6125b7565b611fcf612868565b611fd7612a39565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600080600061208b306112b9565b9050600060155482101590508080156120b05750601660019054906101000a900460ff165b80156120c95750601660009054906101000a900460ff16155b801561211f5750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121755750600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121cb5750600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561220f576001601660006101000a81548160ff0219169083151502179055506121f3612c3d565b6000601660006101000a81548160ff0219169083151502179055505b6000601660009054906101000a900460ff16159050600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122c55750600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122cf57600090505b600081156125a357600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561232d5750875b1561243757600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661242f576002548911156123c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bf90614347565b60405180910390fd5b6003546123d48b6112b9565b1115612415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240c906143d9565b60405180910390fd5b61242189600e54612ffe565b955061242e8b30886126db565b5b859050612594565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561248d5750865b1561259357600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661258f57600254891115612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f90614445565b60405180910390fd5b6003546125348b6112b9565b1115612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256c906143d9565b60405180910390fd5b61258189600f54612ffe565b945061258e8b30876126db565b5b8490505b5b80896125a09190614465565b98505b6125ae8b8b8b6126db565b50505050505050505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612762576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127599061450b565b60405180910390fd5b818103600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128529190613278565b60405180910390a350505050565b600033905090565b600960009054906101000a900460ff16801561289457506201518060085461289091906138ab565b4211155b15612a375761012c6008546128a991906138ab565b42116128c657611b58600e81905550612328600f81905550612a02565b61012c6008546128d691906138ab565b421180156128f357506103846008546128ef91906138ab565b4211155b1561290f57611770600e81905550611f40600f81905550612a01565b61038460085461291f91906138ab565b4211801561293c575061070860085461293891906138ab565b4211155b1561295857611388600e81905550611b58600f81905550612a00565b61070860085461296891906138ab565b421180156129855750611c2060085461298191906138ab565b4211155b156129a157610fa0600e81905550611770600f819055506129ff565b611c206008546129b191906138ab565b421180156129cf5750620151806008546129cb91906138ab565b4211155b156129eb57610bb8600e81905550611388600f819055506129fe565b6107d0600e81905550610bb8600f819055505b5b5b5b5b62015180600854612a1391906138ab565b421115612a36576000600960006101000a81548160ff0219169083151502179055505b5b565b600960019054906101000a900460ff168015612a645750610708600854612a6091906138ab565b4211155b15612c3b57610258600854612a7991906138ab565b4211612ad657620186a0610118612a8e610d1d565b612a989190613777565b612aa291906137e8565b600281905550620186a0610118612ab7610d1d565b612ac19190613777565b612acb91906137e8565b600381905550612c07565b610258600854612ae691906138ab565b42118015612b0357506104b0600854612aff91906138ab565b4211155b15612b5f57620186a0610226612b17610d1d565b612b219190613777565b612b2b91906137e8565b600281905550620186a0610226612b40610d1d565b612b4a9190613777565b612b5491906137e8565b600381905550612c06565b6104b0600854612b6f91906138ab565b42118015612b8c5750610708600854612b8891906138ab565b4211155b15612be857620186a0610456612ba0610d1d565b612baa9190613777565b612bb491906137e8565b600281905550620186a0610456612bc9610d1d565b612bd39190613777565b612bdd91906137e8565b600381905550612c05565b612bf0610d1d565b600281905550612bfe610d1d565b6003819055505b5b5b610708600854612c1791906138ab565b421115612c3a576000600960016101000a81548160ff0219169083151502179055505b5b565b6000612c48306112b9565b90506000479050612c5882613022565b60008147612c669190614465565b90506000620186a060105483612c7c9190613777565b612c8691906137e8565b90506000620186a060115484612c9c9190613777565b612ca691906137e8565b90506000620186a060125485612cbc9190613777565b612cc691906137e8565b90506000620186a060135486612cdc9190613777565b612ce691906137e8565b90506000620186a060145487612cfc9190613777565b612d0691906137e8565b90506000806000806000600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a6188b890604051612d5a9061455c565b600060405180830381858888f193505050503d8060008114612d98576040519150601f19603f3d011682016040523d82523d6000602084013e612d9d565b606091505b505080955050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16896188b890604051612ded9061455c565b600060405180830381858888f193505050503d8060008114612e2b576040519150601f19603f3d011682016040523d82523d6000602084013e612e30565b606091505b505080945050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16886188b890604051612e809061455c565b600060405180830381858888f193505050503d8060008114612ebe576040519150601f19603f3d011682016040523d82523d6000602084013e612ec3565b606091505b505080935050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16876188b890604051612f139061455c565b600060405180830381858888f193505050503d8060008114612f51576040519150601f19603f3d011682016040523d82523d6000602084013e612f56565b606091505b505080925050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16866188b890604051612fa69061455c565b600060405180830381858888f193505050503d8060008114612fe4576040519150601f19603f3d011682016040523d82523d6000602084013e612fe9565b606091505b50508091505050505050505050505050505050565b6000620186a082846130109190613777565b61301a91906137e8565b905092915050565b6000600267ffffffffffffffff81111561303f5761303e614571565b5b60405190808252806020026020018201604052801561306d5781602001602082028036833780820191505090505b509050308160008151811061308557613084613cdd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561312a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314e91906145b5565b8160018151811061316257613161613cdd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131c7307f000000000000000000000000000000000000000000000000000000000000000084611b19565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016132299594939291906146db565b600060405180830381600087803b15801561324357600080fd5b505af1158015613257573d6000803e3d6000fd5b505050505050565b6000819050919050565b6132728161325f565b82525050565b600060208201905061328d6000830184613269565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132be82613293565b9050919050565b6132ce816132b3565b82525050565b60006020820190506132e960008301846132c5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561332957808201518184015260208101905061330e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613351826132ef565b61335b81856132fa565b935061336b81856020860161330b565b61337481613335565b840191505092915050565b600060208201905081810360008301526133998184613346565b905092915050565b600080fd5b600080fd5b6133b48161325f565b81146133bf57600080fd5b50565b6000813590506133d1816133ab565b92915050565b6000602082840312156133ed576133ec6133a1565b5b60006133fb848285016133c2565b91505092915050565b61340d816132b3565b811461341857600080fd5b50565b60008135905061342a81613404565b92915050565b60008060408385031215613447576134466133a1565b5b60006134558582860161341b565b9250506020613466858286016133c2565b9150509250929050565b60008115159050919050565b61348581613470565b82525050565b60006020820190506134a0600083018461347c565b92915050565b6000819050919050565b60006134cb6134c66134c184613293565b6134a6565b613293565b9050919050565b60006134dd826134b0565b9050919050565b60006134ef826134d2565b9050919050565b6134ff816134e4565b82525050565b600060208201905061351a60008301846134f6565b92915050565b600060208284031215613536576135356133a1565b5b60006135448482850161341b565b91505092915050565b600080600060608486031215613566576135656133a1565b5b60006135748682870161341b565b93505060206135858682870161341b565b9250506040613596868287016133c2565b9150509250925092565b600060ff82169050919050565b6135b6816135a0565b82525050565b60006020820190506135d160008301846135ad565b92915050565b6135e081613470565b81146135eb57600080fd5b50565b6000813590506135fd816135d7565b92915050565b6000806040838503121561361a576136196133a1565b5b60006136288582860161341b565b9250506020613639858286016135ee565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261366857613667613643565b5b8235905067ffffffffffffffff81111561368557613684613648565b5b6020830191508360208202830111156136a1576136a061364d565b5b9250929050565b6000806000604084860312156136c1576136c06133a1565b5b600084013567ffffffffffffffff8111156136df576136de6133a6565b5b6136eb86828701613652565b935093505060206136fe868287016133c2565b9150509250925092565b6000806040838503121561371f5761371e6133a1565b5b600061372d8582860161341b565b925050602061373e8582860161341b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137828261325f565b915061378d8361325f565b925082820261379b8161325f565b915082820484148315176137b2576137b1613748565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137f38261325f565b91506137fe8361325f565b92508261380e5761380d6137b9565b5b828204905092915050565b7f546178207468726573686f6c642063616e6e6f74206265206d6f72652074686160008201527f6e203125206f6620746f74616c20737570706c79000000000000000000000000602082015250565b60006138756034836132fa565b915061388082613819565b604082019050919050565b600060208201905081810360008301526138a481613868565b9050919050565b60006138b68261325f565b91506138c18361325f565b92508282019050808211156138d9576138d8613748565b5b92915050565b7f5461782070657263656e746167652063616e6e6f74206578636565642031303060008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b600061393b6021836132fa565b9150613946826138df565b604082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b7f4275726e2077616c6c65742063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139cd6022836132fa565b91506139d882613971565b604082019050919050565b600060208201905081810360008301526139fc816139c0565b9050919050565b7f4465762077616c6c65742063616e6e6f74206265207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a5f6021836132fa565b9150613a6a82613a03565b604082019050919050565b60006020820190508181036000830152613a8e81613a52565b9050919050565b7f436861726974792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613af16025836132fa565b9150613afc82613a95565b604082019050919050565b60006020820190508181036000830152613b2081613ae4565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613b836027836132fa565b9150613b8e82613b27565b604082019050919050565b60006020820190508181036000830152613bb281613b76565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613c156039836132fa565b9150613c2082613bb9565b604082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b7f4c6f74746572792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ca76025836132fa565b9150613cb282613c4b565b604082019050919050565b60006020820190508181036000830152613cd681613c9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d686023836132fa565b9150613d7382613d0c565b604082019050919050565b60006020820190508181036000830152613d9781613d5b565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613dfa6036836132fa565b9150613e0582613d9e565b604082019050919050565b60006020820190508181036000830152613e2981613ded565b9050919050565b600081519050613e3f816133ab565b92915050565b600060208284031215613e5b57613e5a6133a1565b5b6000613e6984828501613e30565b91505092915050565b6000604082019050613e8760008301856132c5565b613e946020830184613269565b9392505050565b600081519050613eaa816135d7565b92915050565b600060208284031215613ec657613ec56133a1565b5b6000613ed484828501613e9b565b91505092915050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000613f13600f836132fa565b9150613f1e82613edd565b602082019050919050565b60006020820190508181036000830152613f4281613f06565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fa56026836132fa565b9150613fb082613f49565b604082019050919050565b60006020820190508181036000830152613fd481613f98565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140116020836132fa565b915061401c82613fdb565b602082019050919050565b6000602082019050818103600083015261404081614004565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140a36024836132fa565b91506140ae82614047565b604082019050919050565b600060208201905081810360008301526140d281614096565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141356022836132fa565b9150614140826140d9565b604082019050919050565b6000602082019050818103600083015261416481614128565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006141a1601d836132fa565b91506141ac8261416b565b602082019050919050565b600060208201905081810360008301526141d081614194565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006142336025836132fa565b915061423e826141d7565b604082019050919050565b6000602082019050818103600083015261426281614226565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142c56029836132fa565b91506142d082614269565b604082019050919050565b600060208201905081810360008301526142f4816142b8565b9050919050565b7f43616e6e6f7420627579206d6f7265207468616e206d6178206c696d69740000600082015250565b6000614331601e836132fa565b915061433c826142fb565b602082019050919050565b6000602082019050818103600083015261436081614324565b9050919050565b7f43616e6e6f7420686f6c64206d6f726520746f6b656e73207468616e206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b60006143c36022836132fa565b91506143ce82614367565b604082019050919050565b600060208201905081810360008301526143f2816143b6565b9050919050565b7f43616e6e6f742073656c6c206d6f7265207468616e206d6178206c696d697400600082015250565b600061442f601f836132fa565b915061443a826143f9565b602082019050919050565b6000602082019050818103600083015261445e81614422565b9050919050565b60006144708261325f565b915061447b8361325f565b925082820390508181111561449357614492613748565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144f56026836132fa565b915061450082614499565b604082019050919050565b60006020820190508181036000830152614524816144e8565b9050919050565b600081905092915050565b50565b600061454660008361452b565b915061455182614536565b600082019050919050565b600061456782614539565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506145af81613404565b92915050565b6000602082840312156145cb576145ca6133a1565b5b60006145d9848285016145a0565b91505092915050565b6000819050919050565b60006146076146026145fd846145e2565b6134a6565b61325f565b9050919050565b614617816145ec565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614652816132b3565b82525050565b60006146648383614649565b60208301905092915050565b6000602082019050919050565b60006146888261461d565b6146928185614628565b935061469d83614639565b8060005b838110156146ce5781516146b58882614658565b97506146c083614670565b9250506001810190506146a1565b5085935050505092915050565b600060a0820190506146f06000830188613269565b6146fd602083018761460e565b818103604083015261470f818661467d565b905061471e60608301856132c5565b61472b6080830184613269565b969550505050505056fea2646970667358221220631c77e9f11b9c9c625ddfbe3fa39f8875f55d1d6ee553a8ac328b810089327e64736f6c63430008130033000000000000000000000000b098ed24e90cd27b657714b22cf8bdfe8469b4ae000000000000000000000000f5310e9396ceefe8dd397283b317b2eb985df4ce0000000000000000000000004b9c3fd517cd2c2e654053c98479deac9350fc39000000000000000000000000c7bedd1d8de1e34254ca08d1061f3c6ac1d78ee900000000000000000000000033c1b54fed811c13b56c0c56d715b9fa4ec63c3f

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c80636ddd171311610175578063a9059cbb116100dc578063d8020a1811610095578063f2fde38b1161006f578063f2fde38b14610ac8578063f8b45b0514610af1578063fc3c28af14610b1c578063fdc8b64714610b47576102d4565b8063d8020a1814610a37578063dd62ed3e14610a62578063e6be4a7214610a9f576102d4565b8063a9059cbb14610929578063b3ea787a14610966578063b62496f514610991578063ba414b10146109ce578063c3f0d327146109f7578063ce831ed514610a20576102d4565b80638da5cb5b1161012e5780638da5cb5b1461082b5780638ea5220f1461085657806395d89b41146108815780639a7a23d6146108ac5780639c352930146108d5578063a364b077146108fe576102d4565b80636ddd17131461071957806370a0823114610744578063715018a61461078157806375f0a87414610798578063768dc710146107c35780637b20876914610800576102d4565b80632b14ca56116102345780634a8cbae1116101ed5780635e6e47aa116101c75780635e6e47aa146106715780635f48f3931461069a5780636612e66f146106c557806367b34e01146106ee576102d4565b80634a8cbae1146105f25780634bf28fd01461061d5780635d098b3814610648576102d4565b80632b14ca56146104f65780632d4ed650146105215780632f4a7e511461054a57806330563bd714610573578063313ce5671461059c57806347062402146105c7576102d4565b80631694505e116102865780631694505e146103e657806318160ddd146104115780631c4ba3ed1461043c5780631f53ac021461046557806323b872dd1461048e578063249715a6146104cb576102d4565b806303807ee5146102d6578063062287491461030157806306fdde031461032c57806307a212be14610357578063095ea7b3146103805780630ef887e7146103bd576102d4565b366102d457005b005b3480156102e257600080fd5b506102eb610b72565b6040516102f89190613278565b60405180910390f35b34801561030d57600080fd5b50610316610b78565b60405161032391906132d4565b60405180910390f35b34801561033857600080fd5b50610341610b9e565b60405161034e919061337f565b60405180910390f35b34801561036357600080fd5b5061037e600480360381019061037991906133d7565b610bdb565b005b34801561038c57600080fd5b506103a760048036038101906103a29190613430565b610c54565b6040516103b4919061348b565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df91906133d7565b610c6b565b005b3480156103f257600080fd5b506103fb610cf9565b6040516104089190613505565b60405180910390f35b34801561041d57600080fd5b50610426610d1d565b6040516104339190613278565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190613520565b610d27565b005b34801561047157600080fd5b5061048c60048036038101906104879190613520565b610de2565b005b34801561049a57600080fd5b506104b560048036038101906104b0919061354d565b610e9d565b6040516104c2919061348b565b60405180910390f35b3480156104d757600080fd5b506104e0610ec5565b6040516104ed919061348b565b60405180910390f35b34801561050257600080fd5b5061050b610ed8565b6040516105189190613278565b60405180910390f35b34801561052d57600080fd5b50610548600480360381019061054391906133d7565b610ede565b005b34801561055657600080fd5b50610571600480360381019061056c91906133d7565b610f6c565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613520565b610ffa565b005b3480156105a857600080fd5b506105b16110b5565b6040516105be91906135bc565b60405180910390f35b3480156105d357600080fd5b506105dc6110be565b6040516105e99190613278565b60405180910390f35b3480156105fe57600080fd5b506106076110c4565b6040516106149190613278565b60405180910390f35b34801561062957600080fd5b506106326110ca565b60405161063f91906132d4565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190613520565b6110ee565b005b34801561067d57600080fd5b50610698600480360381019061069391906133d7565b6111a9565b005b3480156106a657600080fd5b506106af611237565b6040516106bc9190613278565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190613603565b61123d565b005b3480156106fa57600080fd5b506107036112a0565b6040516107109190613278565b60405180910390f35b34801561072557600080fd5b5061072e6112a6565b60405161073b919061348b565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613520565b6112b9565b6040516107789190613278565b60405180910390f35b34801561078d57600080fd5b50610796611302565b005b3480156107a457600080fd5b506107ad611316565b6040516107ba91906132d4565b60405180910390f35b3480156107cf57600080fd5b506107ea60048036038101906107e59190613520565b61133c565b6040516107f7919061348b565b60405180910390f35b34801561080c57600080fd5b5061081561135c565b60405161082291906132d4565b60405180910390f35b34801561083757600080fd5b50610840611382565b60405161084d91906132d4565b60405180910390f35b34801561086257600080fd5b5061086b6113ab565b60405161087891906132d4565b60405180910390f35b34801561088d57600080fd5b506108966113d1565b6040516108a3919061337f565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190613603565b61140e565b005b3480156108e157600080fd5b506108fc60048036038101906108f79190613520565b6114b2565b005b34801561090a57600080fd5b5061091361156d565b60405161092091906132d4565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190613430565b611593565b60405161095d919061348b565b60405180910390f35b34801561097257600080fd5b5061097b6115af565b604051610988919061348b565b60405180910390f35b34801561099d57600080fd5b506109b860048036038101906109b39190613520565b6115c2565b6040516109c5919061348b565b60405180910390f35b3480156109da57600080fd5b506109f560048036038101906109f091906136a8565b6115e2565b005b348015610a0357600080fd5b50610a1e6004803603810190610a1991906133d7565b6116bf565b005b348015610a2c57600080fd5b50610a3561174d565b005b348015610a4357600080fd5b50610a4c61179e565b604051610a599190613278565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190613708565b6117a4565b604051610a969190613278565b60405180910390f35b348015610aab57600080fd5b50610ac66004803603810190610ac19190613430565b61182b565b005b348015610ad457600080fd5b50610aef6004803603810190610aea9190613520565b611a06565b005b348015610afd57600080fd5b50610b06611a89565b604051610b139190613278565b60405180910390f35b348015610b2857600080fd5b50610b31611a8f565b604051610b3e9190613278565b60405180910390f35b348015610b5357600080fd5b50610b5c611a95565b604051610b699190613278565b60405180910390f35b60145481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f4361696e65000000000000000000000000000000000000000000000000000000815250905090565b610be3611a9b565b620186a06103e8610bf2610d1d565b610bfc9190613777565b610c0691906137e8565b6015541115610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c419061388b565b60405180910390fd5b8060158190555050565b6000610c61338484611b19565b6001905092915050565b610c73611a9b565b620186a0601454601354601254601154601054610c9091906138ab565b610c9a91906138ab565b610ca491906138ab565b610cae91906138ab565b1115610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690613951565b60405180910390fd5b8060138190555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600154905090565b610d2f611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906139e3565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610dea611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090613a75565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080339050610eae858285611ce2565b610eb9858585611d6e565b60019150509392505050565b600960009054906101000a900460ff1681565b600f5481565b610ee6611a9b565b620186a0601454601354601254601154601054610f0391906138ab565b610f0d91906138ab565b610f1791906138ab565b610f2191906138ab565b1115610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990613951565b60405180910390fd5b8060108190555050565b610f74611a9b565b620186a0601454601354601254601154601054610f9191906138ab565b610f9b91906138ab565b610fa591906138ab565b610faf91906138ab565b1115610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe790613951565b60405180910390fd5b8060118190555050565b611002611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890613b07565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b600e5481565b60125481565b7f000000000000000000000000f2f70c0720c20e860e424e97ae49c51226b47e4d81565b6110f6611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90613b99565b60405180910390fd5b80600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111b1611a9b565b620186a06014546013546012546011546010546111ce91906138ab565b6111d891906138ab565b6111e291906138ab565b6111ec91906138ab565b111561122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490613951565b60405180910390fd5b8060128190555050565b60025481565b611245611a9b565b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b601660019054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61130a611a9b565b61131460006125bc565b565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4341494e00000000000000000000000000000000000000000000000000000000815250905090565b611416611a9b565b7f000000000000000000000000f2f70c0720c20e860e424e97ae49c51226b47e4d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b90613c2b565b60405180910390fd5b6114ae8282612680565b5050565b6114ba611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090613cbd565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803390506115a4818585611d6e565b600191505092915050565b600960019054906101000a900460ff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b6115ea611a9b565b60006115f4611382565b905060005b848490508110156116b857600085858381811061161957611618613cdd565b5b905060200201602081019061162e9190613520565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613d7e565b60405180910390fd5b6116aa8382866126db565b5080806001019150506115f9565b5050505050565b6116c7611a9b565b620186a06014546013546012546011546010546116e491906138ab565b6116ee91906138ab565b6116f891906138ab565b61170291906138ab565b1115611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90613951565b60405180910390fd5b8060148190555050565b611755611a9b565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561179b573d6000803e3d6000fd5b50565b60105481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611833611a9b565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189890613e10565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118dc91906132d4565b602060405180830381865afa1580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d9190613e45565b90506000620186a083836119319190613777565b61193b91906137e8565b905060008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161197a929190613e72565b6020604051808303816000875af1158015611999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bd9190613eb0565b9050806119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690613f29565b60405180910390fd5b5050505050565b611a0e611a9b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7490613fbb565b60405180910390fd5b611a86816125bc565b50565b60035481565b60115481565b60135481565b611aa3612860565b73ffffffffffffffffffffffffffffffffffffffff16611ac1611382565b73ffffffffffffffffffffffffffffffffffffffff1614611b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0e90614027565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f906140b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee9061414b565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cd59190613278565b60405180910390a3505050565b6000611cee84846117a4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d685781811015611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d51906141b7565b60405180910390fd5b611d678484848403611b19565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd490614249565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613d7e565b60405180910390fd5b60008111611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e86906142db565b60405180910390fd5b611e97611382565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611f025750611ed3611382565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611f3857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611fc7576000600854148015611f9a57507f000000000000000000000000f2f70c0720c20e860e424e97ae49c51226b47e4d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611fb75742600881905550611fae612868565b611fb6612a39565b5b611fc28383836126db565b6125b7565b611fcf612868565b611fd7612a39565b60007f000000000000000000000000f2f70c0720c20e860e424e97ae49c51226b47e4d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000f2f70c0720c20e860e424e97ae49c51226b47e4d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600080600061208b306112b9565b9050600060155482101590508080156120b05750601660019054906101000a900460ff165b80156120c95750601660009054906101000a900460ff16155b801561211f5750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121755750600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121cb5750600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561220f576001601660006101000a81548160ff0219169083151502179055506121f3612c3d565b6000601660006101000a81548160ff0219169083151502179055505b6000601660009054906101000a900460ff16159050600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122c55750600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122cf57600090505b600081156125a357600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561232d5750875b1561243757600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661242f576002548911156123c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bf90614347565b60405180910390fd5b6003546123d48b6112b9565b1115612415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240c906143d9565b60405180910390fd5b61242189600e54612ffe565b955061242e8b30886126db565b5b859050612594565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561248d5750865b1561259357600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661258f57600254891115612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f90614445565b60405180910390fd5b6003546125348b6112b9565b1115612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256c906143d9565b60405180910390fd5b61258189600f54612ffe565b945061258e8b30876126db565b5b8490505b5b80896125a09190614465565b98505b6125ae8b8b8b6126db565b50505050505050505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612762576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127599061450b565b60405180910390fd5b818103600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128529190613278565b60405180910390a350505050565b600033905090565b600960009054906101000a900460ff16801561289457506201518060085461289091906138ab565b4211155b15612a375761012c6008546128a991906138ab565b42116128c657611b58600e81905550612328600f81905550612a02565b61012c6008546128d691906138ab565b421180156128f357506103846008546128ef91906138ab565b4211155b1561290f57611770600e81905550611f40600f81905550612a01565b61038460085461291f91906138ab565b4211801561293c575061070860085461293891906138ab565b4211155b1561295857611388600e81905550611b58600f81905550612a00565b61070860085461296891906138ab565b421180156129855750611c2060085461298191906138ab565b4211155b156129a157610fa0600e81905550611770600f819055506129ff565b611c206008546129b191906138ab565b421180156129cf5750620151806008546129cb91906138ab565b4211155b156129eb57610bb8600e81905550611388600f819055506129fe565b6107d0600e81905550610bb8600f819055505b5b5b5b5b62015180600854612a1391906138ab565b421115612a36576000600960006101000a81548160ff0219169083151502179055505b5b565b600960019054906101000a900460ff168015612a645750610708600854612a6091906138ab565b4211155b15612c3b57610258600854612a7991906138ab565b4211612ad657620186a0610118612a8e610d1d565b612a989190613777565b612aa291906137e8565b600281905550620186a0610118612ab7610d1d565b612ac19190613777565b612acb91906137e8565b600381905550612c07565b610258600854612ae691906138ab565b42118015612b0357506104b0600854612aff91906138ab565b4211155b15612b5f57620186a0610226612b17610d1d565b612b219190613777565b612b2b91906137e8565b600281905550620186a0610226612b40610d1d565b612b4a9190613777565b612b5491906137e8565b600381905550612c06565b6104b0600854612b6f91906138ab565b42118015612b8c5750610708600854612b8891906138ab565b4211155b15612be857620186a0610456612ba0610d1d565b612baa9190613777565b612bb491906137e8565b600281905550620186a0610456612bc9610d1d565b612bd39190613777565b612bdd91906137e8565b600381905550612c05565b612bf0610d1d565b600281905550612bfe610d1d565b6003819055505b5b5b610708600854612c1791906138ab565b421115612c3a576000600960016101000a81548160ff0219169083151502179055505b5b565b6000612c48306112b9565b90506000479050612c5882613022565b60008147612c669190614465565b90506000620186a060105483612c7c9190613777565b612c8691906137e8565b90506000620186a060115484612c9c9190613777565b612ca691906137e8565b90506000620186a060125485612cbc9190613777565b612cc691906137e8565b90506000620186a060135486612cdc9190613777565b612ce691906137e8565b90506000620186a060145487612cfc9190613777565b612d0691906137e8565b90506000806000806000600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a6188b890604051612d5a9061455c565b600060405180830381858888f193505050503d8060008114612d98576040519150601f19603f3d011682016040523d82523d6000602084013e612d9d565b606091505b505080955050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16896188b890604051612ded9061455c565b600060405180830381858888f193505050503d8060008114612e2b576040519150601f19603f3d011682016040523d82523d6000602084013e612e30565b606091505b505080945050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16886188b890604051612e809061455c565b600060405180830381858888f193505050503d8060008114612ebe576040519150601f19603f3d011682016040523d82523d6000602084013e612ec3565b606091505b505080935050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16876188b890604051612f139061455c565b600060405180830381858888f193505050503d8060008114612f51576040519150601f19603f3d011682016040523d82523d6000602084013e612f56565b606091505b505080925050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16866188b890604051612fa69061455c565b600060405180830381858888f193505050503d8060008114612fe4576040519150601f19603f3d011682016040523d82523d6000602084013e612fe9565b606091505b50508091505050505050505050505050505050565b6000620186a082846130109190613777565b61301a91906137e8565b905092915050565b6000600267ffffffffffffffff81111561303f5761303e614571565b5b60405190808252806020026020018201604052801561306d5781602001602082028036833780820191505090505b509050308160008151811061308557613084613cdd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561312a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314e91906145b5565b8160018151811061316257613161613cdd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131c7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b19565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016132299594939291906146db565b600060405180830381600087803b15801561324357600080fd5b505af1158015613257573d6000803e3d6000fd5b505050505050565b6000819050919050565b6132728161325f565b82525050565b600060208201905061328d6000830184613269565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132be82613293565b9050919050565b6132ce816132b3565b82525050565b60006020820190506132e960008301846132c5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561332957808201518184015260208101905061330e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613351826132ef565b61335b81856132fa565b935061336b81856020860161330b565b61337481613335565b840191505092915050565b600060208201905081810360008301526133998184613346565b905092915050565b600080fd5b600080fd5b6133b48161325f565b81146133bf57600080fd5b50565b6000813590506133d1816133ab565b92915050565b6000602082840312156133ed576133ec6133a1565b5b60006133fb848285016133c2565b91505092915050565b61340d816132b3565b811461341857600080fd5b50565b60008135905061342a81613404565b92915050565b60008060408385031215613447576134466133a1565b5b60006134558582860161341b565b9250506020613466858286016133c2565b9150509250929050565b60008115159050919050565b61348581613470565b82525050565b60006020820190506134a0600083018461347c565b92915050565b6000819050919050565b60006134cb6134c66134c184613293565b6134a6565b613293565b9050919050565b60006134dd826134b0565b9050919050565b60006134ef826134d2565b9050919050565b6134ff816134e4565b82525050565b600060208201905061351a60008301846134f6565b92915050565b600060208284031215613536576135356133a1565b5b60006135448482850161341b565b91505092915050565b600080600060608486031215613566576135656133a1565b5b60006135748682870161341b565b93505060206135858682870161341b565b9250506040613596868287016133c2565b9150509250925092565b600060ff82169050919050565b6135b6816135a0565b82525050565b60006020820190506135d160008301846135ad565b92915050565b6135e081613470565b81146135eb57600080fd5b50565b6000813590506135fd816135d7565b92915050565b6000806040838503121561361a576136196133a1565b5b60006136288582860161341b565b9250506020613639858286016135ee565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261366857613667613643565b5b8235905067ffffffffffffffff81111561368557613684613648565b5b6020830191508360208202830111156136a1576136a061364d565b5b9250929050565b6000806000604084860312156136c1576136c06133a1565b5b600084013567ffffffffffffffff8111156136df576136de6133a6565b5b6136eb86828701613652565b935093505060206136fe868287016133c2565b9150509250925092565b6000806040838503121561371f5761371e6133a1565b5b600061372d8582860161341b565b925050602061373e8582860161341b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137828261325f565b915061378d8361325f565b925082820261379b8161325f565b915082820484148315176137b2576137b1613748565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137f38261325f565b91506137fe8361325f565b92508261380e5761380d6137b9565b5b828204905092915050565b7f546178207468726573686f6c642063616e6e6f74206265206d6f72652074686160008201527f6e203125206f6620746f74616c20737570706c79000000000000000000000000602082015250565b60006138756034836132fa565b915061388082613819565b604082019050919050565b600060208201905081810360008301526138a481613868565b9050919050565b60006138b68261325f565b91506138c18361325f565b92508282019050808211156138d9576138d8613748565b5b92915050565b7f5461782070657263656e746167652063616e6e6f74206578636565642031303060008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b600061393b6021836132fa565b9150613946826138df565b604082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b7f4275726e2077616c6c65742063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139cd6022836132fa565b91506139d882613971565b604082019050919050565b600060208201905081810360008301526139fc816139c0565b9050919050565b7f4465762077616c6c65742063616e6e6f74206265207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a5f6021836132fa565b9150613a6a82613a03565b604082019050919050565b60006020820190508181036000830152613a8e81613a52565b9050919050565b7f436861726974792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613af16025836132fa565b9150613afc82613a95565b604082019050919050565b60006020820190508181036000830152613b2081613ae4565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000613b836027836132fa565b9150613b8e82613b27565b604082019050919050565b60006020820190508181036000830152613bb281613b76565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613c156039836132fa565b9150613c2082613bb9565b604082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b7f4c6f74746572792077616c6c65742063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ca76025836132fa565b9150613cb282613c4b565b604082019050919050565b60006020820190508181036000830152613cd681613c9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d686023836132fa565b9150613d7382613d0c565b604082019050919050565b60006020820190508181036000830152613d9781613d5b565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613dfa6036836132fa565b9150613e0582613d9e565b604082019050919050565b60006020820190508181036000830152613e2981613ded565b9050919050565b600081519050613e3f816133ab565b92915050565b600060208284031215613e5b57613e5a6133a1565b5b6000613e6984828501613e30565b91505092915050565b6000604082019050613e8760008301856132c5565b613e946020830184613269565b9392505050565b600081519050613eaa816135d7565b92915050565b600060208284031215613ec657613ec56133a1565b5b6000613ed484828501613e9b565b91505092915050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000613f13600f836132fa565b9150613f1e82613edd565b602082019050919050565b60006020820190508181036000830152613f4281613f06565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fa56026836132fa565b9150613fb082613f49565b604082019050919050565b60006020820190508181036000830152613fd481613f98565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140116020836132fa565b915061401c82613fdb565b602082019050919050565b6000602082019050818103600083015261404081614004565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140a36024836132fa565b91506140ae82614047565b604082019050919050565b600060208201905081810360008301526140d281614096565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141356022836132fa565b9150614140826140d9565b604082019050919050565b6000602082019050818103600083015261416481614128565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006141a1601d836132fa565b91506141ac8261416b565b602082019050919050565b600060208201905081810360008301526141d081614194565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006142336025836132fa565b915061423e826141d7565b604082019050919050565b6000602082019050818103600083015261426281614226565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142c56029836132fa565b91506142d082614269565b604082019050919050565b600060208201905081810360008301526142f4816142b8565b9050919050565b7f43616e6e6f7420627579206d6f7265207468616e206d6178206c696d69740000600082015250565b6000614331601e836132fa565b915061433c826142fb565b602082019050919050565b6000602082019050818103600083015261436081614324565b9050919050565b7f43616e6e6f7420686f6c64206d6f726520746f6b656e73207468616e206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b60006143c36022836132fa565b91506143ce82614367565b604082019050919050565b600060208201905081810360008301526143f2816143b6565b9050919050565b7f43616e6e6f742073656c6c206d6f7265207468616e206d6178206c696d697400600082015250565b600061442f601f836132fa565b915061443a826143f9565b602082019050919050565b6000602082019050818103600083015261445e81614422565b9050919050565b60006144708261325f565b915061447b8361325f565b925082820390508181111561449357614492613748565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144f56026836132fa565b915061450082614499565b604082019050919050565b60006020820190508181036000830152614524816144e8565b9050919050565b600081905092915050565b50565b600061454660008361452b565b915061455182614536565b600082019050919050565b600061456782614539565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506145af81613404565b92915050565b6000602082840312156145cb576145ca6133a1565b5b60006145d9848285016145a0565b91505092915050565b6000819050919050565b60006146076146026145fd846145e2565b6134a6565b61325f565b9050919050565b614617816145ec565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614652816132b3565b82525050565b60006146648383614649565b60208301905092915050565b6000602082019050919050565b60006146888261461d565b6146928185614628565b935061469d83614639565b8060005b838110156146ce5781516146b58882614658565b97506146c083614670565b9250506001810190506146a1565b5085935050505092915050565b600060a0820190506146f06000830188613269565b6146fd602083018761460e565b818103604083015261470f818661467d565b905061471e60608301856132c5565b61472b6080830184613269565b969550505050505056fea2646970667358221220631c77e9f11b9c9c625ddfbe3fa39f8875f55d1d6ee553a8ac328b810089327e64736f6c63430008130033

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

000000000000000000000000b098ed24e90cd27b657714b22cf8bdfe8469b4ae000000000000000000000000f5310e9396ceefe8dd397283b317b2eb985df4ce0000000000000000000000004b9c3fd517cd2c2e654053c98479deac9350fc39000000000000000000000000c7bedd1d8de1e34254ca08d1061f3c6ac1d78ee900000000000000000000000033c1b54fed811c13b56c0c56d715b9fa4ec63c3f

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0xb098Ed24e90cD27B657714B22cf8Bdfe8469b4ae
Arg [1] : _devWallet (address): 0xf5310E9396CeEFe8dd397283B317b2Eb985Df4ce
Arg [2] : _charityWallet (address): 0x4B9c3Fd517Cd2C2E654053c98479Deac9350fc39
Arg [3] : _lotteryWallet (address): 0xC7bedD1d8De1E34254CA08d1061F3C6aC1D78EE9
Arg [4] : _burnWallet (address): 0x33c1B54feD811c13b56c0C56d715b9fA4EC63c3f

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000b098ed24e90cd27b657714b22cf8bdfe8469b4ae
Arg [1] : 000000000000000000000000f5310e9396ceefe8dd397283b317b2eb985df4ce
Arg [2] : 0000000000000000000000004b9c3fd517cd2c2e654053c98479deac9350fc39
Arg [3] : 000000000000000000000000c7bedd1d8de1e34254ca08d1061f3c6ac1d78ee9
Arg [4] : 00000000000000000000000033c1b54fed811c13b56c0c56d715b9fa4ec63c3f


Deployed Bytecode Sourcemap

8840:19256:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10093:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9723:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12884:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19193:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14138:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18919:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10273:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13191:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17653:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17475:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13664:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9494:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9786:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18104:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18381:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17094:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13090:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9758:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9959:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10331;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16898:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18646:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9092:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16754:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10162:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10406:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13300:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2573:103;;;;;;;;;;;;;:::i;:::-;;9585:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9398:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9653:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1923:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9622:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12985:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16306:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17284:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9688:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13447:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9536:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9334:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15797:499;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17836:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22660:123;;;;;;;;;;;;;:::i;:::-;;9825:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13958:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22098:550;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2832:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9145:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9892:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10026:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10093:34;;;;:::o;9723:25::-;;;;;;;;;;;;;:::o;12884:92::-;12930:13;12963:5;;;;;;;;;;;;;;;;;12956:12;;12884:92;:::o;19193:229::-;1808:13;:11;:13::i;:::-;19315:6:::1;19309:4;19293:13;:11;:13::i;:::-;:20;;;;:::i;:::-;19292:29;;;;:::i;:::-;19275:13;;:46;;19267:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;19405:9;19389:13;:25;;;;19193:229:::0;:::o;14138:151::-;14205:4;14222:37;14231:10;14243:7;14252:6;14222:8;:37::i;:::-;14277:4;14270:11;;14138:151;;;;:::o;18919:265::-;1808:13;:11;:13::i;:::-;19091:6:::1;19076:11;;19059:14;;19042;;19029:10;;19010:16;;:29;;;;:::i;:::-;:46;;;;:::i;:::-;:63;;;;:::i;:::-;:77;;;;:::i;:::-;:87;;19002:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;19163:13;19146:14;:30;;;;18919:265:::0;:::o;10273:51::-;;;:::o;13191:100::-;13244:7;13271:12;;13264:19;;13191:100;:::o;17653:173::-;1808:13;:11;:13::i;:::-;17748:1:::1;17730:20;;:6;:20;;::::0;17722:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17812:6;17799:10;;:19;;;;;;;;;;;;;;;;;;17653:173:::0;:::o;17475:170::-;1808:13;:11;:13::i;:::-;17569:1:::1;17551:20;;:6;:20;;::::0;17543:65:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17631:6;17619:9;;:18;;;;;;;;;;;;;;;;;;17475:170:::0;:::o;13664:285::-;13787:4;13804:15;13822:10;13804:28;;13843:38;13859:4;13865:7;13874:6;13843:15;:38::i;:::-;13892:27;13902:4;13908:2;13912:6;13892:9;:27::i;:::-;13937:4;13930:11;;;13664:285;;;;;:::o;9494:35::-;;;;;;;;;;;;;:::o;9786:22::-;;;;:::o;18104:269::-;1808:13;:11;:13::i;:::-;18278:6:::1;18263:11;;18246:14;;18229;;18216:10;;18197:16;;:29;;;;:::i;:::-;:46;;;;:::i;:::-;:63;;;;:::i;:::-;:77;;;;:::i;:::-;:87;;18189:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;18352:13;18333:16;:32;;;;18104:269:::0;:::o;18381:257::-;1808:13;:11;:13::i;:::-;18549:6:::1;18534:11;;18517:14;;18500;;18487:10;;18468:16;;:29;;;;:::i;:::-;:46;;;;:::i;:::-;:63;;;;:::i;:::-;:77;;;;:::i;:::-;:87;;18460:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;18617:13;18604:10;:26;;;;18381:257:::0;:::o;17094:182::-;1808:13;:11;:13::i;:::-;17192:1:::1;17174:20;;:6;:20;;::::0;17166:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17262:6;17246:13;;:22;;;;;;;;;;;;;;;;;;17094:182:::0;:::o;13090:92::-;13140:5;9004:2;13158:16;;13090:92;:::o;9758:21::-;;;;:::o;9959:37::-;;;;:::o;10331:::-;;;:::o;16898:188::-;1808:13;:11;:13::i;:::-;16998:1:::1;16980:20;;:6;:20;;::::0;16972:71:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17072:6;17054:15;;:24;;;;;;;;;;;;;;;;;;16898:188:::0;:::o;18646:265::-;1808:13;:11;:13::i;:::-;18818:6:::1;18803:11;;18786:14;;18769;;18756:10;;18737:16;;:29;;;;:::i;:::-;:46;;;;:::i;:::-;:63;;;;:::i;:::-;:77;;;;:::i;:::-;:87;;18729:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;18890:13;18873:14;:30;;;;18646:265:::0;:::o;9092:24::-;;;;:::o;16754:136::-;1808:13;:11;:13::i;:::-;16874:8:::1;16844:18;:27;16863:7;16844:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16754:136:::0;;:::o;10162:61::-;;;;:::o;10406:30::-;;;;;;;;;;;;;:::o;13300:135::-;13382:7;13409:9;:18;13419:7;13409:18;;;;;;;;;;;;;;;;13402:25;;13300:135;;;:::o;2573:103::-;1808:13;:11;:13::i;:::-;2638:30:::1;2665:1;2638:18;:30::i;:::-;2573:103::o:0;9585:30::-;;;;;;;;;;;;;:::o;9398:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9653:28::-;;;;;;;;;;;;;:::o;1923:87::-;1969:7;1996:6;;;;;;;;;;;1989:13;;1923:87;:::o;9622:24::-;;;;;;;;;;;;;:::o;12985:96::-;13033:13;13066:7;;;;;;;;;;;;;;;;;13059:14;;12985:96;:::o;16306:301::-;1808:13;:11;:13::i;:::-;16450:12:::1;16442:20;;:4;:20;;::::0;16420:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16558:41;16587:4;16593:5;16558:28;:41::i;:::-;16306:301:::0;;:::o;17284:182::-;1808:13;:11;:13::i;:::-;17382:1:::1;17364:20;;:6;:20;;::::0;17356:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17452:6;17436:13;;:22;;;;;;;;;;;;;;;;;;17284:182:::0;:::o;9688:28::-;;;;;;;;;;;;;:::o;13447:208::-;13543:4;13560:13;13576:10;13560:26;;13597:28;13607:5;13614:2;13618:6;13597:9;:28::i;:::-;13643:4;13636:11;;;13447:208;;;;:::o;9536:39::-;;;;;;;;;;;;;:::o;9334:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15797:499::-;1808:13;:11;:13::i;:::-;15914::::1;15930:7;:5;:7::i;:::-;15914:23;;15978:9;15973:305;15997:6;;:13;;15993:1;:17;15973:305;;;16036:12;16051:6;;16058:1;16051:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16036:24;;16125:1;16109:18;;:4;:18;;::::0;16079:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16225:37;16241:5;16248:4;16254:7;16225:15;:37::i;:::-;16017:261;16012:3;;;;;;;15973:305;;;;15903:393;15797:499:::0;;;:::o;17836:259::-;1808:13;:11;:13::i;:::-;18005:6:::1;17990:11;;17973:14;;17956;;17943:10;;17924:16;;:29;;;;:::i;:::-;:46;;;;:::i;:::-;:63;;;;:::i;:::-;:77;;;;:::i;:::-;:87;;17916:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;18074:13;18060:11;:27;;;;17836:259:::0;:::o;22660:123::-;1808:13;:11;:13::i;:::-;22732:10:::1;22724:28;;:51;22753:21;22724:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22660:123::o:0;9825:39::-;;;;:::o;13958:168::-;14064:7;14091:11;:18;14103:5;14091:18;;;;;;;;;;;;;;;:27;14110:7;14091:27;;;;;;;;;;;;;;;;14084:34;;13958:168;;;;:::o;22098:550::-;1808:13;:11;:13::i;:::-;22275:4:::1;22250:30;;:13;:30;;::::0;22228:134:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22376:21;22407:13;22400:31;;;22440:4;22400:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22376:70;;22460:20;22509:6;22499:7;22483:13;:23;;;;:::i;:::-;:32;;;;:::i;:::-;22460:55;;22529:9;22548:13;22541:30;;;22572:10;22584:12;22541:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22529:68;;22616:4;22608:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;22217:431;;;22098:550:::0;;:::o;2832:238::-;1808:13;:11;:13::i;:::-;2955:1:::1;2935:22;;:8;:22;;::::0;2913:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3034:28;3053:8;3034:18;:28::i;:::-;2832:238:::0;:::o;9145:24::-;;;;:::o;9892:33::-;;;;:::o;10026:37::-;;;;:::o;2089:132::-;2164:12;:10;:12::i;:::-;2153:23;;:7;:5;:7::i;:::-;:23;;;2145:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2089:132::o;14298:343::-;14411:1;14393:20;;:6;:20;;;14385:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14492:1;14473:21;;:7;:21;;;14465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14578:6;14547:11;:19;14559:6;14547:19;;;;;;;;;;;;;;;:28;14567:7;14547:28;;;;;;;;;;;;;;;:37;;;;14617:7;14600:33;;14609:6;14600:33;;;14626:6;14600:33;;;;;;:::i;:::-;;;;;;;;14298:343;;;:::o;14650:502::-;14785:24;14812:25;14822:5;14829:7;14812:9;:25::i;:::-;14785:52;;14872:17;14852:16;:37;14848:297;;14952:6;14932:16;:26;;14906:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15067:51;15076:5;15083:7;15111:6;15092:16;:25;15067:8;:51::i;:::-;14848:297;14774:378;14650:502;;;:::o;25090:2762::-;25206:1;25188:20;;:6;:20;;;25180:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25290:1;25269:23;;:9;:23;;;25261:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25360:1;25351:6;:10;25343:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25486:7;:5;:7::i;:::-;25476:17;;:6;:17;;;:41;;;;25510:7;:5;:7::i;:::-;25497:20;;:9;:20;;;25476:41;:68;;;;25539:4;25521:23;;:6;:23;;;25476:68;25472:355;;;25578:1;25564:10;;:15;:44;;;;;25596:12;25583:25;;:9;:25;;;25564:44;25561:177;;;25641:15;25628:10;:28;;;;25675:12;:10;:12::i;:::-;25706:16;:14;:16::i;:::-;25561:177;25752:42;25768:6;25776:9;25787:6;25752:15;:42::i;:::-;25809:7;;25472:355;25839:12;:10;:12::i;:::-;25862:16;:14;:16::i;:::-;25892:10;25915:12;25905:22;;:6;:22;;;25892:35;;25938:11;25965:12;25952:25;;:9;:25;;;25938:39;;25991:14;26016:15;26045:28;26076:24;26094:4;26076:9;:24::i;:::-;26045:55;;26111:12;26150:13;;26126:20;:37;;26111:52;;26195:7;:35;;;;;26219:11;;;;;;;;;;;26195:35;:61;;;;;26248:8;;;;;;;;;;;26247:9;26195:61;:112;;;;;26274:25;:33;26300:6;26274:33;;;;;;;;;;;;;;;;;;;;;;;;;26273:34;26195:112;:156;;;;;26325:18;:26;26344:6;26325:26;;;;;;;;;;;;;;;;;;;;;;;;;26324:27;26195:156;:203;;;;;26369:18;:29;26388:9;26369:29;;;;;;;;;;;;;;;;;;;;;;;;;26368:30;26195:203;26177:336;;;26436:4;26425:8;;:15;;;;;;;;;;;;;;;;;;26455:12;:10;:12::i;:::-;26493:5;26482:8;;:16;;;;;;;;;;;;;;;;;;26177:336;26526:12;26542:8;;;;;;;;;;;26541:9;26526:24;;26568:18;:26;26587:6;26568:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;26598:18;:29;26617:9;26598:29;;;;;;;;;;;;;;;;;;;;;;;;;26568:59;26564:107;;;26654:5;26644:15;;26564:107;26684:12;26718:7;26714:1075;;;26746:25;:33;26772:6;26746:33;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;26783:5;26746:42;26742:1007;;;26814:18;:29;26833:9;26814:29;;;;;;;;;;;;;;;;;;;;;;;;;26809:375;;26886:9;;26876:6;:19;;26867:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;26985:9;;26961:20;26971:9;26961;:20::i;:::-;:33;;26953:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;27065:29;27079:6;27087;;27065:13;:29::i;:::-;27056:38;;27117:46;27133:6;27149:4;27156:6;27117:15;:46::i;:::-;26809:375;27209:6;27202:13;;26742:1007;;;27258:25;:36;27284:9;27258:36;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;27298:6;27258:46;27254:495;;;27330:18;:26;27349:6;27330:26;;;;;;;;;;;;;;;;;;;;;;;;;27325:376;;27399:9;;27389:6;:19;;27380:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27499:9;;27475:20;27485:9;27475;:20::i;:::-;:33;;27467:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;27580:30;27594:6;27602:7;;27580:13;:30::i;:::-;27570:40;;27633:47;27649:6;27665:4;27672:7;27633:15;:47::i;:::-;27325:376;27726:7;27719:14;;27254:495;26742:1007;27773:4;27763:14;;;;;:::i;:::-;;;26714:1075;27799:42;27815:6;27823:9;27834:6;27799:15;:42::i;:::-;25169:2683;;;;;;;;25090:2762;;;;:::o;3231:191::-;3305:16;3324:6;;;;;;;;;;;3305:25;;3350:8;3341:6;;:17;;;;;;;;;;;;;;;;;;3405:8;3374:40;;3395:8;3374:40;;;;;;;;;;;;3294:128;3231:191;:::o;16616:130::-;16733:5;16699:25;:31;16725:4;16699:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16616:130;;:::o;15161:627::-;15290:19;15312:9;:15;15322:4;15312:15;;;;;;;;;;;;;;;;15290:37;;15375:6;15360:11;:21;;15338:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15515:6;15501:11;:20;15483:9;:15;15493:4;15483:15;;;;;;;;;;;;;;;:38;;;;15718:6;15701:9;:13;15711:2;15701:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15769:2;15754:26;;15763:4;15754:26;;;15773:6;15754:26;;;;;;:::i;:::-;;;;;;;;15279:509;15161:627;;;:::o;601:98::-;654:7;681:10;674:17;;601:98;:::o;19432:1390::-;19529:16;;;;;;;;;;;:64;;;;;19581:12;19568:10;;:25;;;;:::i;:::-;19549:15;:44;;19529:64;19525:1290;;;19648:9;19635:10;;:22;;;;:::i;:::-;19616:15;:41;19613:1011;;19686:4;19677:6;:13;;;;19719:4;19709:7;:14;;;;19613:1011;;;19795:9;19782:10;;:22;;;;:::i;:::-;19764:15;:40;:86;;;;;19840:10;19827;;:23;;;;:::i;:::-;19808:15;:42;;19764:86;19761:863;;;19879:4;19870:6;:13;;;;19912:4;19902:7;:14;;;;19761:863;;;19988:10;19975;;:23;;;;:::i;:::-;19957:15;:41;:87;;;;;20034:10;20021;;:23;;;;:::i;:::-;20002:15;:42;;19957:87;19954:670;;;20073:4;20064:6;:13;;;;20106:4;20096:7;:14;;;;19954:670;;;20179:10;20166;;:23;;;;:::i;:::-;20148:15;:41;:88;;;;;20225:11;20212:10;;:24;;;;:::i;:::-;20193:15;:43;;20148:88;20145:479;;;20265:4;20256:6;:13;;;;20298:4;20288:7;:14;;;;20145:479;;;20377:11;20364:10;;:24;;;;:::i;:::-;20346:15;:42;:90;;;;;20424:12;20411:10;;:25;;;;:::i;:::-;20392:15;:44;;20346:90;20343:281;;;20465:4;20456:6;:13;;;;20498:4;20488:7;:14;;;;20343:281;;;20570:4;20561:6;:13;;;;20603:4;20593:7;:14;;;;20343:281;20145:479;19954:670;19761:863;19613:1011;20729:12;20716:10;;:25;;;;:::i;:::-;20698:15;:43;20694:108;;;20781:5;20762:16;;:24;;;;;;;;;;;;;;;;;;20694:108;19525:1290;19432:1390::o;20830:1191::-;20933:20;;;;;;;;;;;:66;;;;;20989:10;20976;;:23;;;;:::i;:::-;20957:15;:42;;20933:66;20929:1085;;;21054:10;21041;;:23;;;;:::i;:::-;21022:15;:42;21019:799;;21118:6;21113:3;21097:13;:11;:13::i;:::-;:19;;;;:::i;:::-;21096:28;;;;:::i;:::-;21084:9;:40;;;;21177:6;21172:3;21156:13;:11;:13::i;:::-;:19;;;;:::i;:::-;21155:28;;;;:::i;:::-;21143:9;:40;;;;21019:799;;;21255:10;21242;;:23;;;;:::i;:::-;21224:15;:41;:87;;;;;21301:10;21288;;:23;;;;:::i;:::-;21269:15;:42;;21224:87;21221:597;;;21365:6;21360:3;21344:13;:11;:13::i;:::-;:19;;;;:::i;:::-;21343:28;;;;:::i;:::-;21331:9;:40;;;;21424:6;21419:3;21403:13;:11;:13::i;:::-;:19;;;;:::i;:::-;21402:28;;;;:::i;:::-;21390:9;:40;;;;21221:597;;;21502:10;21489;;:23;;;;:::i;:::-;21471:15;:41;:87;;;;;21548:10;21535;;:23;;;;:::i;:::-;21516:15;:42;;21471:87;21468:350;;;21613:6;21607:4;21591:13;:11;:13::i;:::-;:20;;;;:::i;:::-;21590:29;;;;:::i;:::-;21578:9;:41;;;;21673:6;21667:4;21651:13;:11;:13::i;:::-;:20;;;;:::i;:::-;21650:29;;;;:::i;:::-;21638:9;:41;;;;21468:350;;;21744:13;:11;:13::i;:::-;21732:9;:25;;;;21788:13;:11;:13::i;:::-;21776:9;:25;;;;21468:350;21221:597;21019:799;21926:10;21913;;:23;;;;:::i;:::-;21895:15;:41;21891:110;;;21980:5;21957:20;;:28;;;;;;;;;;;;;;;;;;21891:110;20929:1085;20830:1191::o;23392:1163::-;23437:28;23468:24;23486:4;23468:9;:24::i;:::-;23437:55;;23505:22;23530:21;23505:46;;23565:38;23582:20;23565:16;:38::i;:::-;23617:18;23663:14;23638:21;:40;;;;:::i;:::-;23617:61;;23692:23;23750:6;23732:16;;23719:10;:29;;;;:::i;:::-;23718:38;;;;:::i;:::-;23692:64;;23767:17;23813:6;23801:10;;23788;:23;;;;:::i;:::-;23787:32;;;;:::i;:::-;23767:52;;23830:21;23884:6;23868:14;;23855:10;:27;;;;:::i;:::-;23854:36;;;;:::i;:::-;23830:60;;23901:21;23955:6;23939:14;;23926:10;:27;;;;:::i;:::-;23925:36;;;;:::i;:::-;23901:60;;23972:18;24020:6;24007:11;;23994:10;:24;;;;:::i;:::-;23993:33;;;;:::i;:::-;23972:54;;24039:12;24062:13;24086;24110;24134;24174:15;;;;;;;;;;;:20;;24202:15;24224:5;24174:60;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24161:73;;;;;24259:9;;;;;;;;;;;:14;;24281:9;24297:5;24259:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24245:62;;;;;24332:13;;;;;;;;;;;:18;;24358:13;24378:5;24332:56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24318:70;;;;;24413:13;;;;;;;;;;;:18;;24439:13;24459:5;24413:56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24399:70;;;;;24494:10;;;;;;;;;;;:15;;24517:10;24534:5;24494:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24480:64;;;;;23423:1132;;;;;;;;;;;;;23392:1163::o;27861:155::-;27946:7;28001:6;27983:13;27973:6;:24;;;;:::i;:::-;:35;;;;:::i;:::-;27966:42;;27861:155;;;;:::o;22792:591::-;22918:21;22956:1;22942:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22918:40;;22987:4;22969;22974:1;22969:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23013:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23003:4;23008:1;23003:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23049:62;23066:4;23081:15;23099:11;23049:8;:62::i;:::-;23151:15;:66;;;23232:11;23258:1;23302:4;23329;23349:15;23151:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22847:536;22792:591;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:96::-;611:7;640:24;658:5;640:24;:::i;:::-;629:35;;574:96;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:99::-;1080:6;1114:5;1108:12;1098:22;;1028:99;;;:::o;1133:169::-;1217:11;1251:6;1246:3;1239:19;1291:4;1286:3;1282:14;1267:29;;1133:169;;;;:::o;1308:246::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1498:1;1493:3;1489:11;1483:18;1479:1;1474:3;1470:11;1463:39;1435:2;1432:1;1428:10;1423:15;;1399:113;;;1546:1;1537:6;1532:3;1528:16;1521:27;1370:184;1308:246;;;:::o;1560:102::-;1601:6;1652:2;1648:7;1643:2;1636:5;1632:14;1628:28;1618:38;;1560:102;;;:::o;1668:377::-;1756:3;1784:39;1817:5;1784:39;:::i;:::-;1839:71;1903:6;1898:3;1839:71;:::i;:::-;1832:78;;1919:65;1977:6;1972:3;1965:4;1958:5;1954:16;1919:65;:::i;:::-;2009:29;2031:6;2009:29;:::i;:::-;2004:3;2000:39;1993:46;;1760:285;1668:377;;;;:::o;2051:313::-;2164:4;2202:2;2191:9;2187:18;2179:26;;2251:9;2245:4;2241:20;2237:1;2226:9;2222:17;2215:47;2279:78;2352:4;2343:6;2279:78;:::i;:::-;2271:86;;2051:313;;;;:::o;2451:117::-;2560:1;2557;2550:12;2574:117;2683:1;2680;2673:12;2697:122;2770:24;2788:5;2770:24;:::i;:::-;2763:5;2760:35;2750:63;;2809:1;2806;2799:12;2750:63;2697:122;:::o;2825:139::-;2871:5;2909:6;2896:20;2887:29;;2925:33;2952:5;2925:33;:::i;:::-;2825:139;;;;:::o;2970:329::-;3029:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:119;;;3084:79;;:::i;:::-;3046:119;3204:1;3229:53;3274:7;3265:6;3254:9;3250:22;3229:53;:::i;:::-;3219:63;;3175:117;2970:329;;;;:::o;3305:122::-;3378:24;3396:5;3378:24;:::i;:::-;3371:5;3368:35;3358:63;;3417:1;3414;3407:12;3358:63;3305:122;:::o;3433:139::-;3479:5;3517:6;3504:20;3495:29;;3533:33;3560:5;3533:33;:::i;:::-;3433:139;;;;:::o;3578:474::-;3646:6;3654;3703:2;3691:9;3682:7;3678:23;3674:32;3671:119;;;3709:79;;:::i;:::-;3671:119;3829:1;3854:53;3899:7;3890:6;3879:9;3875:22;3854:53;:::i;:::-;3844:63;;3800:117;3956:2;3982:53;4027:7;4018:6;4007:9;4003:22;3982:53;:::i;:::-;3972:63;;3927:118;3578:474;;;;;:::o;4058:90::-;4092:7;4135:5;4128:13;4121:21;4110:32;;4058:90;;;:::o;4154:109::-;4235:21;4250:5;4235:21;:::i;:::-;4230:3;4223:34;4154:109;;:::o;4269:210::-;4356:4;4394:2;4383:9;4379:18;4371:26;;4407:65;4469:1;4458:9;4454:17;4445:6;4407:65;:::i;:::-;4269:210;;;;:::o;4485:60::-;4513:3;4534:5;4527:12;;4485:60;;;:::o;4551:142::-;4601:9;4634:53;4652:34;4661:24;4679:5;4661:24;:::i;:::-;4652:34;:::i;:::-;4634:53;:::i;:::-;4621:66;;4551:142;;;:::o;4699:126::-;4749:9;4782:37;4813:5;4782:37;:::i;:::-;4769:50;;4699:126;;;:::o;4831:152::-;4907:9;4940:37;4971:5;4940:37;:::i;:::-;4927:50;;4831:152;;;:::o;4989:183::-;5102:63;5159:5;5102:63;:::i;:::-;5097:3;5090:76;4989:183;;:::o;5178:274::-;5297:4;5335:2;5324:9;5320:18;5312:26;;5348:97;5442:1;5431:9;5427:17;5418:6;5348:97;:::i;:::-;5178:274;;;;:::o;5458:329::-;5517:6;5566:2;5554:9;5545:7;5541:23;5537:32;5534:119;;;5572:79;;:::i;:::-;5534:119;5692:1;5717:53;5762:7;5753:6;5742:9;5738:22;5717:53;:::i;:::-;5707:63;;5663:117;5458:329;;;;:::o;5793:619::-;5870:6;5878;5886;5935:2;5923:9;5914:7;5910:23;5906:32;5903:119;;;5941:79;;:::i;:::-;5903:119;6061:1;6086:53;6131:7;6122:6;6111:9;6107:22;6086:53;:::i;:::-;6076:63;;6032:117;6188:2;6214:53;6259:7;6250:6;6239:9;6235:22;6214:53;:::i;:::-;6204:63;;6159:118;6316:2;6342:53;6387:7;6378:6;6367:9;6363:22;6342:53;:::i;:::-;6332:63;;6287:118;5793:619;;;;;:::o;6418:86::-;6453:7;6493:4;6486:5;6482:16;6471:27;;6418:86;;;:::o;6510:112::-;6593:22;6609:5;6593:22;:::i;:::-;6588:3;6581:35;6510:112;;:::o;6628:214::-;6717:4;6755:2;6744:9;6740:18;6732:26;;6768:67;6832:1;6821:9;6817:17;6808:6;6768:67;:::i;:::-;6628:214;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:117::-;7692:1;7689;7682:12;7706:117;7815:1;7812;7805:12;7829:117;7938:1;7935;7928:12;7969:568;8042:8;8052:6;8102:3;8095:4;8087:6;8083:17;8079:27;8069:122;;8110:79;;:::i;:::-;8069:122;8223:6;8210:20;8200:30;;8253:18;8245:6;8242:30;8239:117;;;8275:79;;:::i;:::-;8239:117;8389:4;8381:6;8377:17;8365:29;;8443:3;8435:4;8427:6;8423:17;8413:8;8409:32;8406:41;8403:128;;;8450:79;;:::i;:::-;8403:128;7969:568;;;;;:::o;8543:704::-;8638:6;8646;8654;8703:2;8691:9;8682:7;8678:23;8674:32;8671:119;;;8709:79;;:::i;:::-;8671:119;8857:1;8846:9;8842:17;8829:31;8887:18;8879:6;8876:30;8873:117;;;8909:79;;:::i;:::-;8873:117;9022:80;9094:7;9085:6;9074:9;9070:22;9022:80;:::i;:::-;9004:98;;;;8800:312;9151:2;9177:53;9222:7;9213:6;9202:9;9198:22;9177:53;:::i;:::-;9167:63;;9122:118;8543:704;;;;;:::o;9253:474::-;9321:6;9329;9378:2;9366:9;9357:7;9353:23;9349:32;9346:119;;;9384:79;;:::i;:::-;9346:119;9504:1;9529:53;9574:7;9565:6;9554:9;9550:22;9529:53;:::i;:::-;9519:63;;9475:117;9631:2;9657:53;9702:7;9693:6;9682:9;9678:22;9657:53;:::i;:::-;9647:63;;9602:118;9253:474;;;;;:::o;9733:180::-;9781:77;9778:1;9771:88;9878:4;9875:1;9868:15;9902:4;9899:1;9892:15;9919:410;9959:7;9982:20;10000:1;9982:20;:::i;:::-;9977:25;;10016:20;10034:1;10016:20;:::i;:::-;10011:25;;10071:1;10068;10064:9;10093:30;10111:11;10093:30;:::i;:::-;10082:41;;10272:1;10263:7;10259:15;10256:1;10253:22;10233:1;10226:9;10206:83;10183:139;;10302:18;;:::i;:::-;10183:139;9967:362;9919:410;;;;:::o;10335:180::-;10383:77;10380:1;10373:88;10480:4;10477:1;10470:15;10504:4;10501:1;10494:15;10521:185;10561:1;10578:20;10596:1;10578:20;:::i;:::-;10573:25;;10612:20;10630:1;10612:20;:::i;:::-;10607:25;;10651:1;10641:35;;10656:18;;:::i;:::-;10641:35;10698:1;10695;10691:9;10686:14;;10521:185;;;;:::o;10712:239::-;10852:34;10848:1;10840:6;10836:14;10829:58;10921:22;10916:2;10908:6;10904:15;10897:47;10712:239;:::o;10957:366::-;11099:3;11120:67;11184:2;11179:3;11120:67;:::i;:::-;11113:74;;11196:93;11285:3;11196:93;:::i;:::-;11314:2;11309:3;11305:12;11298:19;;10957:366;;;:::o;11329:419::-;11495:4;11533:2;11522:9;11518:18;11510:26;;11582:9;11576:4;11572:20;11568:1;11557:9;11553:17;11546:47;11610:131;11736:4;11610:131;:::i;:::-;11602:139;;11329:419;;;:::o;11754:191::-;11794:3;11813:20;11831:1;11813:20;:::i;:::-;11808:25;;11847:20;11865:1;11847:20;:::i;:::-;11842:25;;11890:1;11887;11883:9;11876:16;;11911:3;11908:1;11905:10;11902:36;;;11918:18;;:::i;:::-;11902:36;11754:191;;;;:::o;11951:220::-;12091:34;12087:1;12079:6;12075:14;12068:58;12160:3;12155:2;12147:6;12143:15;12136:28;11951:220;:::o;12177:366::-;12319:3;12340:67;12404:2;12399:3;12340:67;:::i;:::-;12333:74;;12416:93;12505:3;12416:93;:::i;:::-;12534:2;12529:3;12525:12;12518:19;;12177:366;;;:::o;12549:419::-;12715:4;12753:2;12742:9;12738:18;12730:26;;12802:9;12796:4;12792:20;12788:1;12777:9;12773:17;12766:47;12830:131;12956:4;12830:131;:::i;:::-;12822:139;;12549:419;;;:::o;12974:221::-;13114:34;13110:1;13102:6;13098:14;13091:58;13183:4;13178:2;13170:6;13166:15;13159:29;12974:221;:::o;13201:366::-;13343:3;13364:67;13428:2;13423:3;13364:67;:::i;:::-;13357:74;;13440:93;13529:3;13440:93;:::i;:::-;13558:2;13553:3;13549:12;13542:19;;13201:366;;;:::o;13573:419::-;13739:4;13777:2;13766:9;13762:18;13754:26;;13826:9;13820:4;13816:20;13812:1;13801:9;13797:17;13790:47;13854:131;13980:4;13854:131;:::i;:::-;13846:139;;13573:419;;;:::o;13998:220::-;14138:34;14134:1;14126:6;14122:14;14115:58;14207:3;14202:2;14194:6;14190:15;14183:28;13998:220;:::o;14224:366::-;14366:3;14387:67;14451:2;14446:3;14387:67;:::i;:::-;14380:74;;14463:93;14552:3;14463:93;:::i;:::-;14581:2;14576:3;14572:12;14565:19;;14224:366;;;:::o;14596:419::-;14762:4;14800:2;14789:9;14785:18;14777:26;;14849:9;14843:4;14839:20;14835:1;14824:9;14820:17;14813:47;14877:131;15003:4;14877:131;:::i;:::-;14869:139;;14596:419;;;:::o;15021:224::-;15161:34;15157:1;15149:6;15145:14;15138:58;15230:7;15225:2;15217:6;15213:15;15206:32;15021:224;:::o;15251:366::-;15393:3;15414:67;15478:2;15473:3;15414:67;:::i;:::-;15407:74;;15490:93;15579:3;15490:93;:::i;:::-;15608:2;15603:3;15599:12;15592:19;;15251:366;;;:::o;15623:419::-;15789:4;15827:2;15816:9;15812:18;15804:26;;15876:9;15870:4;15866:20;15862:1;15851:9;15847:17;15840:47;15904:131;16030:4;15904:131;:::i;:::-;15896:139;;15623:419;;;:::o;16048:226::-;16188:34;16184:1;16176:6;16172:14;16165:58;16257:9;16252:2;16244:6;16240:15;16233:34;16048:226;:::o;16280:366::-;16422:3;16443:67;16507:2;16502:3;16443:67;:::i;:::-;16436:74;;16519:93;16608:3;16519:93;:::i;:::-;16637:2;16632:3;16628:12;16621:19;;16280:366;;;:::o;16652:419::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16905:9;16899:4;16895:20;16891:1;16880:9;16876:17;16869:47;16933:131;17059:4;16933:131;:::i;:::-;16925:139;;16652:419;;;:::o;17077:244::-;17217:34;17213:1;17205:6;17201:14;17194:58;17286:27;17281:2;17273:6;17269:15;17262:52;17077:244;:::o;17327:366::-;17469:3;17490:67;17554:2;17549:3;17490:67;:::i;:::-;17483:74;;17566:93;17655:3;17566:93;:::i;:::-;17684:2;17679:3;17675:12;17668:19;;17327:366;;;:::o;17699:419::-;17865:4;17903:2;17892:9;17888:18;17880:26;;17952:9;17946:4;17942:20;17938:1;17927:9;17923:17;17916:47;17980:131;18106:4;17980:131;:::i;:::-;17972:139;;17699:419;;;:::o;18124:224::-;18264:34;18260:1;18252:6;18248:14;18241:58;18333:7;18328:2;18320:6;18316:15;18309:32;18124:224;:::o;18354:366::-;18496:3;18517:67;18581:2;18576:3;18517:67;:::i;:::-;18510:74;;18593:93;18682:3;18593:93;:::i;:::-;18711:2;18706:3;18702:12;18695:19;;18354:366;;;:::o;18726:419::-;18892:4;18930:2;18919:9;18915:18;18907:26;;18979:9;18973:4;18969:20;18965:1;18954:9;18950:17;18943:47;19007:131;19133:4;19007:131;:::i;:::-;18999:139;;18726:419;;;:::o;19151:180::-;19199:77;19196:1;19189:88;19296:4;19293:1;19286:15;19320:4;19317:1;19310:15;19337:222;19477:34;19473:1;19465:6;19461:14;19454:58;19546:5;19541:2;19533:6;19529:15;19522:30;19337:222;:::o;19565:366::-;19707:3;19728:67;19792:2;19787:3;19728:67;:::i;:::-;19721:74;;19804:93;19893:3;19804:93;:::i;:::-;19922:2;19917:3;19913:12;19906:19;;19565:366;;;:::o;19937:419::-;20103:4;20141:2;20130:9;20126:18;20118:26;;20190:9;20184:4;20180:20;20176:1;20165:9;20161:17;20154:47;20218:131;20344:4;20218:131;:::i;:::-;20210:139;;19937:419;;;:::o;20362:241::-;20502:34;20498:1;20490:6;20486:14;20479:58;20571:24;20566:2;20558:6;20554:15;20547:49;20362:241;:::o;20609:366::-;20751:3;20772:67;20836:2;20831:3;20772:67;:::i;:::-;20765:74;;20848:93;20937:3;20848:93;:::i;:::-;20966:2;20961:3;20957:12;20950:19;;20609:366;;;:::o;20981:419::-;21147:4;21185:2;21174:9;21170:18;21162:26;;21234:9;21228:4;21224:20;21220:1;21209:9;21205:17;21198:47;21262:131;21388:4;21262:131;:::i;:::-;21254:139;;20981:419;;;:::o;21406:143::-;21463:5;21494:6;21488:13;21479:22;;21510:33;21537:5;21510:33;:::i;:::-;21406:143;;;;:::o;21555:351::-;21625:6;21674:2;21662:9;21653:7;21649:23;21645:32;21642:119;;;21680:79;;:::i;:::-;21642:119;21800:1;21825:64;21881:7;21872:6;21861:9;21857:22;21825:64;:::i;:::-;21815:74;;21771:128;21555:351;;;;:::o;21912:332::-;22033:4;22071:2;22060:9;22056:18;22048:26;;22084:71;22152:1;22141:9;22137:17;22128:6;22084:71;:::i;:::-;22165:72;22233:2;22222:9;22218:18;22209:6;22165:72;:::i;:::-;21912:332;;;;;:::o;22250:137::-;22304:5;22335:6;22329:13;22320:22;;22351:30;22375:5;22351:30;:::i;:::-;22250:137;;;;:::o;22393:345::-;22460:6;22509:2;22497:9;22488:7;22484:23;22480:32;22477:119;;;22515:79;;:::i;:::-;22477:119;22635:1;22660:61;22713:7;22704:6;22693:9;22689:22;22660:61;:::i;:::-;22650:71;;22606:125;22393:345;;;;:::o;22744:165::-;22884:17;22880:1;22872:6;22868:14;22861:41;22744:165;:::o;22915:366::-;23057:3;23078:67;23142:2;23137:3;23078:67;:::i;:::-;23071:74;;23154:93;23243:3;23154:93;:::i;:::-;23272:2;23267:3;23263:12;23256:19;;22915:366;;;:::o;23287:419::-;23453:4;23491:2;23480:9;23476:18;23468:26;;23540:9;23534:4;23530:20;23526:1;23515:9;23511:17;23504:47;23568:131;23694:4;23568:131;:::i;:::-;23560:139;;23287:419;;;:::o;23712:225::-;23852:34;23848:1;23840:6;23836:14;23829:58;23921:8;23916:2;23908:6;23904:15;23897:33;23712:225;:::o;23943:366::-;24085:3;24106:67;24170:2;24165:3;24106:67;:::i;:::-;24099:74;;24182:93;24271:3;24182:93;:::i;:::-;24300:2;24295:3;24291:12;24284:19;;23943:366;;;:::o;24315:419::-;24481:4;24519:2;24508:9;24504:18;24496:26;;24568:9;24562:4;24558:20;24554:1;24543:9;24539:17;24532:47;24596:131;24722:4;24596:131;:::i;:::-;24588:139;;24315:419;;;:::o;24740:182::-;24880:34;24876:1;24868:6;24864:14;24857:58;24740:182;:::o;24928:366::-;25070:3;25091:67;25155:2;25150:3;25091:67;:::i;:::-;25084:74;;25167:93;25256:3;25167:93;:::i;:::-;25285:2;25280:3;25276:12;25269:19;;24928:366;;;:::o;25300:419::-;25466:4;25504:2;25493:9;25489:18;25481:26;;25553:9;25547:4;25543:20;25539:1;25528:9;25524:17;25517:47;25581:131;25707:4;25581:131;:::i;:::-;25573:139;;25300:419;;;:::o;25725:223::-;25865:34;25861:1;25853:6;25849:14;25842:58;25934:6;25929:2;25921:6;25917:15;25910:31;25725:223;:::o;25954:366::-;26096:3;26117:67;26181:2;26176:3;26117:67;:::i;:::-;26110:74;;26193:93;26282:3;26193:93;:::i;:::-;26311:2;26306:3;26302:12;26295:19;;25954:366;;;:::o;26326:419::-;26492:4;26530:2;26519:9;26515:18;26507:26;;26579:9;26573:4;26569:20;26565:1;26554:9;26550:17;26543:47;26607:131;26733:4;26607:131;:::i;:::-;26599:139;;26326:419;;;:::o;26751:221::-;26891:34;26887:1;26879:6;26875:14;26868:58;26960:4;26955:2;26947:6;26943:15;26936:29;26751:221;:::o;26978:366::-;27120:3;27141:67;27205:2;27200:3;27141:67;:::i;:::-;27134:74;;27217:93;27306:3;27217:93;:::i;:::-;27335:2;27330:3;27326:12;27319:19;;26978:366;;;:::o;27350:419::-;27516:4;27554:2;27543:9;27539:18;27531:26;;27603:9;27597:4;27593:20;27589:1;27578:9;27574:17;27567:47;27631:131;27757:4;27631:131;:::i;:::-;27623:139;;27350:419;;;:::o;27775:179::-;27915:31;27911:1;27903:6;27899:14;27892:55;27775:179;:::o;27960:366::-;28102:3;28123:67;28187:2;28182:3;28123:67;:::i;:::-;28116:74;;28199:93;28288:3;28199:93;:::i;:::-;28317:2;28312:3;28308:12;28301:19;;27960:366;;;:::o;28332:419::-;28498:4;28536:2;28525:9;28521:18;28513:26;;28585:9;28579:4;28575:20;28571:1;28560:9;28556:17;28549:47;28613:131;28739:4;28613:131;:::i;:::-;28605:139;;28332:419;;;:::o;28757:224::-;28897:34;28893:1;28885:6;28881:14;28874:58;28966:7;28961:2;28953:6;28949:15;28942:32;28757:224;:::o;28987:366::-;29129:3;29150:67;29214:2;29209:3;29150:67;:::i;:::-;29143:74;;29226:93;29315:3;29226:93;:::i;:::-;29344:2;29339:3;29335:12;29328:19;;28987:366;;;:::o;29359:419::-;29525:4;29563:2;29552:9;29548:18;29540:26;;29612:9;29606:4;29602:20;29598:1;29587:9;29583:17;29576:47;29640:131;29766:4;29640:131;:::i;:::-;29632:139;;29359:419;;;:::o;29784:228::-;29924:34;29920:1;29912:6;29908:14;29901:58;29993:11;29988:2;29980:6;29976:15;29969:36;29784:228;:::o;30018:366::-;30160:3;30181:67;30245:2;30240:3;30181:67;:::i;:::-;30174:74;;30257:93;30346:3;30257:93;:::i;:::-;30375:2;30370:3;30366:12;30359:19;;30018:366;;;:::o;30390:419::-;30556:4;30594:2;30583:9;30579:18;30571:26;;30643:9;30637:4;30633:20;30629:1;30618:9;30614:17;30607:47;30671:131;30797:4;30671:131;:::i;:::-;30663:139;;30390:419;;;:::o;30815:180::-;30955:32;30951:1;30943:6;30939:14;30932:56;30815:180;:::o;31001:366::-;31143:3;31164:67;31228:2;31223:3;31164:67;:::i;:::-;31157:74;;31240:93;31329:3;31240:93;:::i;:::-;31358:2;31353:3;31349:12;31342:19;;31001:366;;;:::o;31373:419::-;31539:4;31577:2;31566:9;31562:18;31554:26;;31626:9;31620:4;31616:20;31612:1;31601:9;31597:17;31590:47;31654:131;31780:4;31654:131;:::i;:::-;31646:139;;31373:419;;;:::o;31798:221::-;31938:34;31934:1;31926:6;31922:14;31915:58;32007:4;32002:2;31994:6;31990:15;31983:29;31798:221;:::o;32025:366::-;32167:3;32188:67;32252:2;32247:3;32188:67;:::i;:::-;32181:74;;32264:93;32353:3;32264:93;:::i;:::-;32382:2;32377:3;32373:12;32366:19;;32025:366;;;:::o;32397:419::-;32563:4;32601:2;32590:9;32586:18;32578:26;;32650:9;32644:4;32640:20;32636:1;32625:9;32621:17;32614:47;32678:131;32804:4;32678:131;:::i;:::-;32670:139;;32397:419;;;:::o;32822:181::-;32962:33;32958:1;32950:6;32946:14;32939:57;32822:181;:::o;33009:366::-;33151:3;33172:67;33236:2;33231:3;33172:67;:::i;:::-;33165:74;;33248:93;33337:3;33248:93;:::i;:::-;33366:2;33361:3;33357:12;33350:19;;33009:366;;;:::o;33381:419::-;33547:4;33585:2;33574:9;33570:18;33562:26;;33634:9;33628:4;33624:20;33620:1;33609:9;33605:17;33598:47;33662:131;33788:4;33662:131;:::i;:::-;33654:139;;33381:419;;;:::o;33806:194::-;33846:4;33866:20;33884:1;33866:20;:::i;:::-;33861:25;;33900:20;33918:1;33900:20;:::i;:::-;33895:25;;33944:1;33941;33937:9;33929:17;;33968:1;33962:4;33959:11;33956:37;;;33973:18;;:::i;:::-;33956:37;33806:194;;;;:::o;34006:225::-;34146:34;34142:1;34134:6;34130:14;34123:58;34215:8;34210:2;34202:6;34198:15;34191:33;34006:225;:::o;34237:366::-;34379:3;34400:67;34464:2;34459:3;34400:67;:::i;:::-;34393:74;;34476:93;34565:3;34476:93;:::i;:::-;34594:2;34589:3;34585:12;34578:19;;34237:366;;;:::o;34609:419::-;34775:4;34813:2;34802:9;34798:18;34790:26;;34862:9;34856:4;34852:20;34848:1;34837:9;34833:17;34826:47;34890:131;35016:4;34890:131;:::i;:::-;34882:139;;34609:419;;;:::o;35034:147::-;35135:11;35172:3;35157:18;;35034:147;;;;:::o;35187:114::-;;:::o;35307:398::-;35466:3;35487:83;35568:1;35563:3;35487:83;:::i;:::-;35480:90;;35579:93;35668:3;35579:93;:::i;:::-;35697:1;35692:3;35688:11;35681:18;;35307:398;;;:::o;35711:379::-;35895:3;35917:147;36060:3;35917:147;:::i;:::-;35910:154;;36081:3;36074:10;;35711:379;;;:::o;36096:180::-;36144:77;36141:1;36134:88;36241:4;36238:1;36231:15;36265:4;36262:1;36255:15;36282:143;36339:5;36370:6;36364:13;36355:22;;36386:33;36413:5;36386:33;:::i;:::-;36282:143;;;;:::o;36431:351::-;36501:6;36550:2;36538:9;36529:7;36525:23;36521:32;36518:119;;;36556:79;;:::i;:::-;36518:119;36676:1;36701:64;36757:7;36748:6;36737:9;36733:22;36701:64;:::i;:::-;36691:74;;36647:128;36431:351;;;;:::o;36788:85::-;36833:7;36862:5;36851:16;;36788:85;;;:::o;36879:158::-;36937:9;36970:61;36988:42;36997:32;37023:5;36997:32;:::i;:::-;36988:42;:::i;:::-;36970:61;:::i;:::-;36957:74;;36879:158;;;:::o;37043:147::-;37138:45;37177:5;37138:45;:::i;:::-;37133:3;37126:58;37043:147;;:::o;37196:114::-;37263:6;37297:5;37291:12;37281:22;;37196:114;;;:::o;37316:184::-;37415:11;37449:6;37444:3;37437:19;37489:4;37484:3;37480:14;37465:29;;37316:184;;;;:::o;37506:132::-;37573:4;37596:3;37588:11;;37626:4;37621:3;37617:14;37609:22;;37506:132;;;:::o;37644:108::-;37721:24;37739:5;37721:24;:::i;:::-;37716:3;37709:37;37644:108;;:::o;37758:179::-;37827:10;37848:46;37890:3;37882:6;37848:46;:::i;:::-;37926:4;37921:3;37917:14;37903:28;;37758:179;;;;:::o;37943:113::-;38013:4;38045;38040:3;38036:14;38028:22;;37943:113;;;:::o;38092:732::-;38211:3;38240:54;38288:5;38240:54;:::i;:::-;38310:86;38389:6;38384:3;38310:86;:::i;:::-;38303:93;;38420:56;38470:5;38420:56;:::i;:::-;38499:7;38530:1;38515:284;38540:6;38537:1;38534:13;38515:284;;;38616:6;38610:13;38643:63;38702:3;38687:13;38643:63;:::i;:::-;38636:70;;38729:60;38782:6;38729:60;:::i;:::-;38719:70;;38575:224;38562:1;38559;38555:9;38550:14;;38515:284;;;38519:14;38815:3;38808:10;;38216:608;;;38092:732;;;;:::o;38830:831::-;39093:4;39131:3;39120:9;39116:19;39108:27;;39145:71;39213:1;39202:9;39198:17;39189:6;39145:71;:::i;:::-;39226:80;39302:2;39291:9;39287:18;39278:6;39226:80;:::i;:::-;39353:9;39347:4;39343:20;39338:2;39327:9;39323:18;39316:48;39381:108;39484:4;39475:6;39381:108;:::i;:::-;39373:116;;39499:72;39567:2;39556:9;39552:18;39543:6;39499:72;:::i;:::-;39581:73;39649:3;39638:9;39634:19;39625:6;39581:73;:::i;:::-;38830:831;;;;;;;;:::o

Swarm Source

ipfs://631c77e9f11b9c9c625ddfbe3fa39f8875f55d1d6ee553a8ac328b810089327e

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  ]

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.