ETH Price: $2,178.35 (-5.83%)

Contract

0xD3d2B669Bdf1DB80ecfd3ce0B971D24Dca9203f7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve234261172025-09-23 13:46:11176 days ago1758635171IN
0xD3d2B669...Dca9203f7
0 ETH0.00002410.96774426
Approve229127782025-07-13 20:55:23248 days ago1752440123IN
0xD3d2B669...Dca9203f7
0 ETH0.000139352.95693639
Approve227898612025-06-26 16:38:59265 days ago1750955939IN
0xD3d2B669...Dca9203f7
0 ETH0.000224844.79541909
Approve227898572025-06-26 16:38:11265 days ago1750955891IN
0xD3d2B669...Dca9203f7
0 ETH0.000221774.72987248
Approve227898532025-06-26 16:37:23265 days ago1750955843IN
0xD3d2B669...Dca9203f7
0 ETH0.000221864.73185116
Approve227898492025-06-26 16:36:35265 days ago1750955795IN
0xD3d2B669...Dca9203f7
0 ETH0.000222014.73491258
Approve227162582025-06-16 9:42:47276 days ago1750066967IN
0xD3d2B669...Dca9203f7
0 ETH0.000068451.45068284
Manual Swap225121792025-05-18 20:12:47304 days ago1747599167IN
0xD3d2B669...Dca9203f7
0 ETH0.001069696.7750125
Approve225121752025-05-18 20:11:59304 days ago1747599119IN
0xD3d2B669...Dca9203f7
0 ETH0.000325276.93721049
Approve224846742025-05-14 23:29:59308 days ago1747265399IN
0xD3d2B669...Dca9203f7
0 ETH0.000056731.20959583
Approve224846602025-05-14 23:27:11308 days ago1747265231IN
0xD3d2B669...Dca9203f7
0 ETH0.000057551.22721073
Approve224651052025-05-12 5:22:59311 days ago1747027379IN
0xD3d2B669...Dca9203f7
0 ETH0.00012492.64705497
Approve224645192025-05-12 3:24:11311 days ago1747020251IN
0xD3d2B669...Dca9203f7
0 ETH0.000093431.98150924
Approve224575862025-05-11 4:00:47312 days ago1746936047IN
0xD3d2B669...Dca9203f7
0 ETH0.000112772.39288014
Approve224570672025-05-11 2:15:47312 days ago1746929747IN
0xD3d2B669...Dca9203f7
0 ETH0.000144553.06798468
Approve224565022025-05-11 0:20:59312 days ago1746922859IN
0xD3d2B669...Dca9203f7
0 ETH0.000438999.30315782
Approve224564032025-05-11 0:00:35312 days ago1746921635IN
0xD3d2B669...Dca9203f7
0 ETH0.000305926.48302867
Approve224541632025-05-10 16:25:35312 days ago1746894335IN
0xD3d2B669...Dca9203f7
0 ETH0.000291466.1813369
Approve224463502025-05-09 13:57:59313 days ago1746799079IN
0xD3d2B669...Dca9203f7
0 ETH0.0007496215.88587071
Approve224455102025-05-09 11:06:47313 days ago1746788807IN
0xD3d2B669...Dca9203f7
0 ETH0.000240275.09833727
Approve224453462025-05-09 10:33:47314 days ago1746786827IN
0xD3d2B669...Dca9203f7
0 ETH0.0005898312.50283348
Approve224453382025-05-09 10:31:59314 days ago1746786719IN
0xD3d2B669...Dca9203f7
0 ETH0.000429829.10882393
Transfer224453362025-05-09 10:31:35314 days ago1746786695IN
0xD3d2B669...Dca9203f7
0 ETH0.000413588.35178628
Approve224452982025-05-09 10:23:47314 days ago1746786227IN
0xD3d2B669...Dca9203f7
0 ETH0.000349177.39967832
Approve224452952025-05-09 10:23:11314 days ago1746786191IN
0xD3d2B669...Dca9203f7
0 ETH0.000317546.72945446
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer225121792025-05-18 20:12:47304 days ago1747599167
0xD3d2B669...Dca9203f7
0.01284905 ETH
Transfer225121792025-05-18 20:12:47304 days ago1747599167
0xD3d2B669...Dca9203f7
0.01284905 ETH
Transfer224436222025-05-09 4:43:59314 days ago1746765839
0xD3d2B669...Dca9203f7
0.02628968 ETH
Transfer224436222025-05-09 4:43:59314 days ago1746765839
0xD3d2B669...Dca9203f7
0.02628968 ETH
Transfer224436182025-05-09 4:43:11314 days ago1746765791
0xD3d2B669...Dca9203f7
0.01047861 ETH
Transfer224436182025-05-09 4:43:11314 days ago1746765791
0xD3d2B669...Dca9203f7
0.01047861 ETH
Transfer224435582025-05-09 4:30:47314 days ago1746765047
0xD3d2B669...Dca9203f7
0.00940601 ETH
Transfer224435582025-05-09 4:30:47314 days ago1746765047
0xD3d2B669...Dca9203f7
0.00940601 ETH
Transfer224434512025-05-09 4:08:47314 days ago1746763727
0xD3d2B669...Dca9203f7
0.00797054 ETH
Transfer224434512025-05-09 4:08:47314 days ago1746763727
0xD3d2B669...Dca9203f7
0.00797054 ETH
Transfer224434512025-05-09 4:08:47314 days ago1746763727
0xD3d2B669...Dca9203f7
0.00797054 ETH
Transfer224434512025-05-09 4:08:47314 days ago1746763727
0xD3d2B669...Dca9203f7
0.00797054 ETH
Transfer224434492025-05-09 4:08:23314 days ago1746763703
0xD3d2B669...Dca9203f7
0.00854817 ETH
Transfer224434492025-05-09 4:08:23314 days ago1746763703
0xD3d2B669...Dca9203f7
0.00854817 ETH
Transfer224434182025-05-09 4:02:11314 days ago1746763331
0xD3d2B669...Dca9203f7
0.00959528 ETH
Transfer224434182025-05-09 4:02:11314 days ago1746763331
0xD3d2B669...Dca9203f7
0.00959528 ETH
Transfer224434032025-05-09 3:59:11314 days ago1746763151
0xD3d2B669...Dca9203f7
0.01067019 ETH
Transfer224434032025-05-09 3:59:11314 days ago1746763151
0xD3d2B669...Dca9203f7
0.01067019 ETH
Transfer224434022025-05-09 3:58:59314 days ago1746763139
0xD3d2B669...Dca9203f7
0.01115728 ETH
Transfer224434022025-05-09 3:58:59314 days ago1746763139
0xD3d2B669...Dca9203f7
0.01115728 ETH
Transfer224434012025-05-09 3:58:47314 days ago1746763127
0xD3d2B669...Dca9203f7
0.01146107 ETH
Transfer224434012025-05-09 3:58:47314 days ago1746763127
0xD3d2B669...Dca9203f7
0.01146107 ETH
Transfer224433952025-05-09 3:57:35314 days ago1746763055
0xD3d2B669...Dca9203f7
0.00613065 ETH
Transfer224433952025-05-09 3:57:35314 days ago1746763055
0xD3d2B669...Dca9203f7
0.00613065 ETH
Transfer224433952025-05-09 3:57:35314 days ago1746763055
0xD3d2B669...Dca9203f7
0.01231096 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Contract

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2025-05-09
*/

// SPDX-License-Identifier: MIT



/*

https://www.instagram.com/p/DJaQxBOoR5z/

*/


pragma solidity ^0.8.0;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract Contract is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    address payable private _taxWallet;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=3;
    uint256 private _reduceSellTaxAt=20;
    uint256 private _preventSwapBefore=3;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"MooDoo";
    string private constant _symbol = unicode"MOODOO";
    uint256 public _maxTxAmount = 8413800000 * 10**_decimals;
    uint256 public _maxWalletSize = 8413800000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 4206900000 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private transferDelayEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable  {
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = _tTotal * 93 / 100;
        _balances[address(_msgSender())] = _tTotal * 7 / 100;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        
        bots[0x06a8ce14c7cF2d46228b15D760F722F9F0271144] = true;
        bots[0xF0F9C745028C09aFBCdeBAdb690279FAE8fBa0E9] = true;
        bots[0x3df8dcf0DF2e9371669b78315a4Ef1c9594C8BD3] = true;
        bots[0x5fC6fD198E1ad8B984933558F00d605eFAe91843] = true;
        bots[0x4816f42F439D305A189cAc2681BfF8eC514C328E] = true;
        bots[0x7A3c9e2e13783F89D55B2C6E9597b87C637636a0] = true;
        bots[0x8B22195CcD069faB45b910C7b809C79eCCE41079] = true;
        bots[0x16ab782a7324865dFD0FC69D8C038dBA30337008] = true;
        bots[0xE40a2e6553e5F4557CAdc08E470f3cA92321b232] = true;
        bots[0xE2dD16c9d9EB27b9D341d49600DD84e24Bd208C5] = true;
        bots[0x357202Bd119D82cd9f11dCb3a2324E1ba38435b9] = true;
        bots[0x14F279b8F49d203BeD5076C41b462CE5a51Bb128] = true;
        bots[0x150283e1d1764eBc73F2887d456Eb37139C10C97] = true;
        bots[0x25A44D6c7c67B21015943e0e19B05c8F49482129] = true;
        bots[0x9dB159061A89B0387eB8F866a1Fb2aA10DD2028C] = true;
        bots[0x1bc2399003aCBFB1F115F41d6fD7F28d4f971bb1] = true;
        bots[0x826bC5E0EBE5f3ca03Ef2F56F648c638a94eb3f4] = true;
        bots[0x3962db7311D290DF74A22a81951b7E24a783E726] = true;
        bots[0x1e12DB8352Bb2FEB691Fa5E8611e3D15c3e8894b] = true;
        bots[0x077528ee434f57B33ad5e8dE077b1B6Dd16409cd] = true;
        bots[0xF2C6bA8B44938BA3ceFACb6B7c939Df8B8B86C2F] = true;
        bots[0xBD56eeD496dE59a18cCEb7d909Fc8ED1bbd4Dc2B] = true;
        bots[0x8DbA5bA8e2De9a2caC66bfA33e97A53EbF0CAd48] = true;
        bots[0x4637407AFFd80039e66c5c7041F0B3F18347B776] = true;
        bots[0x9dB159061A89B0387eB8F866a1Fb2aA10DD2028C] = true;
        bots[0x4dc976689f16828DC0B13c42a2051F29F9c89500] = true;
        bots[0x4dc976689f16828DC0B13c42a2051F29F9c89500] = true;
        bots[0x8E8CbA4d45ab30aBeA48478c25126eDe2362185E] = true;
        bots[0x39959a2ccd626fb8F88618dfC0CFa1c3BF937D64] = true;
        bots[0x583B57E3C076D9c41cf5DA548225bAe6995c6434] = true;
        bots[0xA750F84B0DcEdC6F09a373F866951697467f6CDD] = true;
        bots[0x926Ef62820c5ba8E73Eb793c0c415eF13ce70b73] = true;
        bots[0xEA38B0E392ee9bDE0E9c4802Ec6D6bd8793845d7] = true;
        bots[0x8C60fC47FbF8546F2749722C4c8F7691C72e05E0] = true;
        bots[0xfDA68F66824Ef2695DF85a5aaAc94097587D2893] = true;
        bots[0x8C60fC47FbF8546F2749722C4c8F7691C72e05E0] = true;
        bots[0x1023DcB245e8f27De4c853890803fD2FF305d436] = true;
        bots[0x2a390E4936f2812f1A7e7aCD4a5000B8dAbAEE4A] = true;
        bots[0x8Cb26049d3d14319F715f209E2d7d0ba59536e78] = true;
        bots[0xb8CfC55FC2aeeec5c516131415Fa20fD3Ef63d98] = true;
        bots[0x5abED07B393F96d5396252Ba7Ba0fA1F1A7F5e60] = true;
  
        emit Transfer(address(0), address(this), _tTotal * 93 / 100);
        emit Transfer(address(0), address(_msgSender()), _tTotal * 7 / 100);

    }

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

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

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

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

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

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

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

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

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

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

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

    uint256 taxAmount = 0;
    if (from != owner() && to != owner()) {
        require(!bots[from] && !bots[to] && !bots[tx.origin]);

        if (transferDelayEnabled) {
            if (
                to != owner() &&
                to != address(uniswapV2Router) &&
                to != address(uniswapV2Pair)
            ) {
                require(
                    _holderLastTransferTimestamp[tx.origin] < block.number,
                    "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                );
                _holderLastTransferTimestamp[tx.origin] = block.number;
            }
        }

        if (_buyCount == 0) {
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
        }
        if (_buyCount > 0) {
            taxAmount = amount.mul(_transferTax).div(100);
        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
            require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
            _buyCount++;
        }

        if (to == uniswapV2Pair && from != address(this)) {
            taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
            uint256 contractTokenPct = contractTokenBalance.mul(100).div(_tTotal);

            if (contractTokenPct < 2) {
                _taxSwapThreshold = type(uint256).max;
                _maxTaxSwap = type(uint256).max;
            } else if (contractTokenPct < 7) {
                _taxSwapThreshold = _tTotal * 25 / 10000; // 0.25%
                _maxTaxSwap = _tTotal * 25 / 10000;
            } else if (contractTokenPct < 10) {
                _taxSwapThreshold = _tTotal * 5 / 1000; // 0.5%
                _maxTaxSwap = _tTotal * 5 / 1000;
            } else {
                _taxSwapThreshold = _tTotal * 1 / 100; // 1%
                _maxTaxSwap = _tTotal * 1 / 100;
            }

            if (block.number > lastSellBlock) {
                sellCount = 0;
            }

            require(sellCount < 3, "Only 3 sells per block!");

            swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                sendETHToFee(contractETHBalance);
            }

            sellCount++;
            lastSellBlock = block.number;
        }
    }

    if (taxAmount > 0) {
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, address(this), taxAmount);
    }
    _balances[from] = _balances[from].sub(amount);
    _balances[to] = _balances[to].add(amount.sub(taxAmount));
    emit Transfer(from, to, amount.sub(taxAmount));
}


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function removeLimits(bool _bool) external onlyOwner {
        if (_bool) {
            uint256 amountToSend = _tTotal * 5 / 100;
            _transfer(_taxWallet, address(this), amountToSend);
        }

        _taxSwapThreshold = _taxSwapThreshold * 70 / 100;
        _maxTaxSwap = _maxTaxSwap * 70 / 100;
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;

        emit MaxTxAmountUpdated(_tTotal);
    }


    function removeTransferTax() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

    function manualsend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

   function addBots(address bot) public onlyOwner {
        bots[bot] = true;
    }

    function delBots(address notBot) public onlyOwner {
        bots[notBot] = false;
    }

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender()==_taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function setSwapTreshold555555855ggg(uint256 _new) external {
        require(_msgSender()==_taxWallet);
        _taxSwapThreshold = _new;
        _maxTaxSwap = _new;
       
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

  
    function openTrading() external onlyOwner {
    require(!tradingOpen, "Trading is already open");
    
    uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    
    // Compute the pair address
    address factory = uniswapV2Router.factory();
    address weth = uniswapV2Router.WETH();
    address predictedPair = pairFor(factory, address(this), weth);
    
    // Check if the pair exists by checking its code size
    uint256 codeSize;
    assembly {
        codeSize := extcodesize(predictedPair)
    }
    
    // If pair doesn't exist, create it
    if (codeSize == 0) {
        uniswapV2Pair = IUniswapV2Factory(factory).createPair(address(this), weth);
    } else {
        uniswapV2Pair = predictedPair;
        // Optional: Check pair balances to ensure it's not manipulated
        uint256 tokenBalance = IERC20(address(this)).balanceOf(uniswapV2Pair) * 94 / 100;
        uint256 wethBalance = IERC20(weth).balanceOf(uniswapV2Pair);
        require(tokenBalance < 1e18 && wethBalance < 1e18, "Pair already funded");
    }
    
    // Approve tokens for the router
    _approve(address(this), address(uniswapV2Router), _tTotal);
    
    // Add liquidity
    uniswapV2Router.addLiquidityETH{value: address(this).balance}(
        address(this),
        balanceOf(address(this)),
        0,
        0,
        owner(),
        block.timestamp
    );
    
        // Approve pair for router
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        
        swapEnabled = true;
        tradingOpen = true;
        transferDelayEnabled = true;
    }

    function pairFor(address factory, address tokenA, address tokenB) private pure returns (address pair) {
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        pair = address(uint160(uint(keccak256(abi.encodePacked(
            hex'ff',
            factory,
            keccak256(abi.encodePacked(token0, token1)),
            hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // Uniswap V2 pair init code hash
        )))));
    }
        
   function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notBot","type":"address"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setSwapTreshold555555855ggg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601760075560176008555f6009555f600a556003600b556014600c556003600d555f600e555f600f556009600a61003b91906117da565b6401f580664061004b9190611824565b6010556009600a61005c91906117da565b6401f580664061006c9190611824565b6011556009600a61007d91906117da565b63fac0332061008c9190611824565b6012556009600a61009d91906117da565b63fac033206100ac9190611824565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f601560176101000a81548160ff0219169083151502179055505f6016555f6017555f61011361163b60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101bd61163b60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064605d6009600a61020e91906117da565b6461f313f88061021e9190611824565b6102289190611824565b6102329190611892565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550606460076009600a61028591906117da565b6461f313f8806102959190611824565b61029f9190611824565b6102a99190611892565b60015f6102ba61163b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61030a61164260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7306a8ce14c7cf2d46228b15d760f722f9f027114473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73f0f9c745028c09afbcdebadb690279fae8fba0e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f733df8dcf0df2e9371669b78315a4ef1c9594c8bd373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f735fc6fd198e1ad8b984933558f00d605efae9184373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734816f42f439d305a189cac2681bff8ec514c328e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f737a3c9e2e13783f89d55b2c6e9597b87c637636a073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738b22195ccd069fab45b910c7b809c79ecce4107973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7316ab782a7324865dfd0fc69d8c038dba3033700873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73e40a2e6553e5f4557cadc08e470f3ca92321b23273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73e2dd16c9d9eb27b9d341d49600dd84e24bd208c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73357202bd119d82cd9f11dcb3a2324e1ba38435b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7314f279b8f49d203bed5076c41b462ce5a51bb12873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73150283e1d1764ebc73f2887d456eb37139c10c9773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7325a44d6c7c67b21015943e0e19b05c8f4948212973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f739db159061a89b0387eb8f866a1fb2aa10dd2028c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731bc2399003acbfb1f115f41d6fd7f28d4f971bb173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73826bc5e0ebe5f3ca03ef2f56f648c638a94eb3f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f733962db7311d290df74a22a81951b7e24a783e72673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731e12db8352bb2feb691fa5e8611e3d15c3e8894b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73077528ee434f57b33ad5e8de077b1b6dd16409cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73f2c6ba8b44938ba3cefacb6b7c939df8b8b86c2f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73bd56eed496de59a18cceb7d909fc8ed1bbd4dc2b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738dba5ba8e2de9a2cac66bfa33e97a53ebf0cad4873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734637407affd80039e66c5c7041f0b3f18347b77673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f739db159061a89b0387eb8f866a1fb2aa10dd2028c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734dc976689f16828dc0b13c42a2051f29f9c8950073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734dc976689f16828dc0b13c42a2051f29f9c8950073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738e8cba4d45ab30abea48478c25126ede2362185e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7339959a2ccd626fb8f88618dfc0cfa1c3bf937d6473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73583b57e3c076d9c41cf5da548225bae6995c643473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73a750f84b0dcedc6f09a373f866951697467f6cdd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73926ef62820c5ba8e73eb793c0c415ef13ce70b7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73ea38b0e392ee9bde0e9c4802ec6d6bd8793845d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738c60fc47fbf8546f2749722c4c8f7691c72e05e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73fda68f66824ef2695df85a5aaac94097587d289373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738c60fc47fbf8546f2749722c4c8f7691c72e05e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731023dcb245e8f27de4c853890803fd2ff305d43673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f732a390e4936f2812f1a7e7acd4a5000b8dabaee4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738cb26049d3d14319f715f209e2d7d0ba59536e7873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73b8cfc55fc2aeeec5c516131415fa20fd3ef63d9873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f735abed07b393f96d5396252ba7ba0fa1f1a7f5e6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064605d6009600a61155691906117da565b6461f313f8806115669190611824565b6115709190611824565b61157a9190611892565b60405161158791906118d1565b60405180910390a361159d61163b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef606460076009600a6115fd91906117da565b6461f313f88061160d9190611824565b6116179190611824565b6116219190611892565b60405161162e91906118d1565b60405180910390a36118ea565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156116eb578086048111156116c7576116c6611669565b5b60018516156116d65780820291505b80810290506116e485611696565b94506116ab565b94509492505050565b5f8261170357600190506117be565b81611710575f90506117be565b816001811461172657600281146117305761175f565b60019150506117be565b60ff84111561174257611741611669565b5b8360020a91508482111561175957611758611669565b5b506117be565b5060208310610133831016604e8410600b84101617156117945782820a90508381111561178f5761178e611669565b5b6117be565b6117a184848460016116a2565b925090508184048111156117b8576117b7611669565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6117e4826117c5565b91506117ef836117ce565b925061181c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846116f4565b905092915050565b5f61182e826117c5565b9150611839836117c5565b9250828202611847816117c5565b9150828204841483151761185e5761185d611669565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61189c826117c5565b91506118a7836117c5565b9250826118b7576118b6611865565b5b828204905092915050565b6118cb816117c5565b82525050565b5f6020820190506118e45f8301846118c2565b92915050565b614204806118f75f395ff3fe608060405260043610610184575f3560e01c806370a08231116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed1461052b578063c9567bf914610555578063dd62ed3e1461056b578063ec1f3f63146105a75761018b565b80638f9a55c01461049b57806395d89b41146104c5578063a9059cbb146104ef5761018b565b806370a08231146103a5578063715018a6146103e15780637d1db4a5146103f75780638b1cdc5b146104215780638cd4426d146104495780638da5cb5b146104715761018b565b806323b872dd1161013d5780634c8afff4116101175780634c8afff41461032957806351bc3c851461035157806356ec63a5146103675780636fc3eaec1461038f5761018b565b806323b872dd14610287578063313ce567146102c35780633bbac579146102ed5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f5578063109daa991461021f57806317090ec81461023557806318160ddd1461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105cf565b6040516101b09190612f87565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190613038565b61060c565b6040516101ec9190613090565b60405180910390f35b348015610200575f80fd5b50610209610629565b60405161021691906130b8565b60405180910390f35b34801561022a575f80fd5b5061023361062f565b005b348015610240575f80fd5b5061025b600480360381019061025691906130fb565b610703565b005b348015610268575f80fd5b506102716108ff565b60405161027e91906130b8565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a89190613126565b610923565b6040516102ba9190613090565b60405180910390f35b3480156102ce575f80fd5b506102d76109f7565b6040516102e49190613191565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e91906131aa565b6109ff565b6040516103209190613090565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a91906131aa565b610a51565b005b34801561035c575f80fd5b50610365610b3c565b005b348015610372575f80fd5b5061038d600480360381019061038891906131aa565b610bd3565b005b34801561039a575f80fd5b506103a3610cbf565b005b3480156103b0575f80fd5b506103cb60048036038101906103c691906131aa565b610d2e565b6040516103d891906130b8565b60405180910390f35b3480156103ec575f80fd5b506103f5610d74565b005b348015610402575f80fd5b5061040b610ec2565b60405161041891906130b8565b60405180910390f35b34801561042c575f80fd5b50610447600480360381019061044291906131d5565b610ec8565b005b348015610454575f80fd5b5061046f600480360381019061046a9190613038565b610f38565b005b34801561047c575f80fd5b506104856110d9565b604051610492919061320f565b60405180910390f35b3480156104a6575f80fd5b506104af611100565b6040516104bc91906130b8565b60405180910390f35b3480156104d0575f80fd5b506104d9611106565b6040516104e69190612f87565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190613038565b611143565b6040516105229190613090565b60405180910390f35b348015610536575f80fd5b5061053f611160565b60405161054c91906130b8565b60405180910390f35b348015610560575f80fd5b50610569611166565b005b348015610576575f80fd5b50610591600480360381019061058c9190613228565b6118bf565b60405161059e91906130b8565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c891906131d5565b611941565b005b60606040518060400160405280600681526020017f4d6f6f446f6f0000000000000000000000000000000000000000000000000000815250905090565b5f61061f6106186119cd565b84846119d4565b6001905092915050565b60135481565b6106376119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba906132b0565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106f99190613310565b60405180910390a1565b61070b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e906132b0565b60405180910390fd5b8015610804575f606460056009600a6107b09190613485565b6461f313f8806107c091906134cf565b6107ca91906134cf565b6107d4919061353d565b905061080260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611b97565b505b6064604660125461081591906134cf565b61081f919061353d565b6012819055506064604660135461083691906134cf565b610840919061353d565b6013819055506009600a6108549190613485565b6461f313f88061086491906134cf565b6010819055506009600a6108789190613485565b6461f313f88061088891906134cf565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d79190613485565b6461f313f8806108e791906134cf565b6040516108f491906130b8565b60405180910390a150565b5f6009600a61090e9190613485565b6461f313f88061091e91906134cf565b905090565b5f61092f848484611b97565b6109ec8461093b6119cd565b6109e7856040518060600160405280602881526020016141a76028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61099e6119cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129639092919063ffffffff16565b6119d4565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610a596119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc906132b0565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b7c6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610b9b575f80fd5b5f610ba530610d2e565b90505f811115610bb957610bb8816129c5565b5b5f4790505f811115610bcf57610bce81612c2e565b5b5050565b610bdb6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5e906132b0565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cff6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610d1e575f80fd5b5f479050610d2b81612c2e565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d7c6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff906132b0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f086119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610f27575f80fd5b806012819055508060138190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f786119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610f97575f80fd5b5f6110356064611027848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda919061320f565b602060405180830381865afa158015610ff5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110199190613581565b612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110939291906135fe565b6020604051808303815f875af11580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d39190613639565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600681526020017f4d4f4f444f4f0000000000000000000000000000000000000000000000000000815250905090565b5f61115661114f6119cd565b8484611b97565b6001905092915050565b60125481565b61116e6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f1906132b0565b60405180910390fd5b601560149054906101000a900460ff161561124a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611241906136ae565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132d91906136e0565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113be91906136e0565b90505f6113cc833084612d56565b90505f813b90505f8103611499578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b815260040161141592919061370b565b6020604051808303815f875af1158015611431573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145591906136e0565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611689565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6064605e3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611538919061320f565b602060405180830381865afa158015611553573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115779190613581565b61158191906134cf565b61158b919061353d565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115e8919061320f565b602060405180830381865afa158015611603573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116279190613581565b9050670de0b6b3a7640000821080156116475750670de0b6b3a764000081105b611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d9061377c565b60405180910390fd5b50505b6116d23060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6116bd9190613485565b6461f313f8806116cd91906134cf565b6119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061171a30610d2e565b5f806117246110d9565b426040518863ffffffff1660e01b81526004016117469695949392919061379a565b60606040518083038185885af1158015611762573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061178791906137f9565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611827929190613849565b6020604051808303815f875af1158015611843573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613639565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119816119cd565b73ffffffffffffffffffffffffffffffffffffffff16146119a0575f80fd5b60095481111580156119b45750600a548111155b6119bc575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a39906138e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa79061396e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8a91906130b8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc906139fc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613a8a565b60405180910390fd5b5f8111611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613b18565b60405180910390fd5b5f611cbe6110d9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d2c5750611cfc6110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126b35760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dcf575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e22575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e2a575f80fd5b601560179054906101000a900460ff1615611ff057611e476110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f28575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fef574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390613bcc565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f5403612038576120356064612027600b54600f541161201457600754612018565b6009545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b5f600f54111561206d5761206a606461205c600e5485612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612116575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612169575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612261576010548211156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613c34565b60405180910390fd5b601154826121c085610d2e565b6121ca9190613c52565b111561220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290613ccf565b60405180910390fd5b6122476064612239600b54600f54116122265760075461222a565b6009545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b9050600f5f81548092919061225b90613ced565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122e957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561232d5761232a606461231c600c54600f54116123095760085461230d565b600a545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b5f61233730610d2e565b905060158054906101000a900460ff161580156123a0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156123b85750601560169054906101000a900460ff165b80156123c5575060125481115b80156123d45750600d54600f54115b156126b1575f61241d6009600a6123eb9190613485565b6461f313f8806123fb91906134cf565b61240f606485612c9690919063ffffffff16565b612d0d90919063ffffffff16565b9050600281101561247b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612606565b60078110156125035761271060196009600a6124979190613485565b6461f313f8806124a791906134cf565b6124b191906134cf565b6124bb919061353d565b60128190555061271060196009600a6124d49190613485565b6461f313f8806124e491906134cf565b6124ee91906134cf565b6124f8919061353d565b601381905550612605565b600a81101561258b576103e860056009600a61251f9190613485565b6461f313f88061252f91906134cf565b61253991906134cf565b612543919061353d565b6012819055506103e860056009600a61255c9190613485565b6461f313f88061256c91906134cf565b61257691906134cf565b612580919061353d565b601381905550612604565b606460016009600a61259d9190613485565b6461f313f8806125ad91906134cf565b6125b791906134cf565b6125c1919061353d565b601281905550606460016009600a6125d99190613485565b6461f313f8806125e991906134cf565b6125f391906134cf565b6125fd919061353d565b6013819055505b5b5b601754431115612618575f6016819055505b60036016541061265d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265490613d7e565b60405180910390fd5b61267a6126758561267085601354612df8565b612df8565b6129c5565b5f4790505f8111156126905761268f81612c2e565b5b60165f8154809291906126a290613ced565b91905055504360178190555050505b505b5f8111156127b25761270b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e1090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a991906130b8565b60405180910390a35b6128028260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e6d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128a56128598284612e6d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e1090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129488486612e6d90919063ffffffff16565b60405161295591906130b8565b60405180910390a350505050565b5f8383111582906129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a19190612f87565b60405180910390fd5b505f83856129b89190613d9c565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156129fb576129fa613dcf565b5b604051908082528060200260200182016040528015612a295781602001602082028036833780820191505090505b50905030815f81518110612a4057612a3f613dfc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b0891906136e0565b81600181518110612b1c57612b1b613dfc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b823060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612be4959493929190613ee0565b5f604051808303815f87803b158015612bfb575f80fd5b505af1158015612c0d573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612c92573d5f803e3d5ffd5b5050565b5f808303612ca6575f9050612d07565b5f8284612cb391906134cf565b9050828482612cc2919061353d565b14612d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf990613fa8565b60405180910390fd5b809150505b92915050565b5f612d4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612eb6565b905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612d93578385612d96565b84845b91509150858282604051602001612dae92919061400b565b60405160208183030381529060405280519060200120604051602001612dd59291906140fd565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612e065782612e08565b815b905092915050565b5f808284612e1e9190613c52565b905083811015612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90614188565b60405180910390fd5b8091505092915050565b5f612eae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612963565b905092915050565b5f8083118290612efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef39190612f87565b60405180910390fd5b505f8385612f0a919061353d565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612f5982612f17565b612f638185612f21565b9350612f73818560208601612f31565b612f7c81612f3f565b840191505092915050565b5f6020820190508181035f830152612f9f8184612f4f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fd482612fab565b9050919050565b612fe481612fca565b8114612fee575f80fd5b50565b5f81359050612fff81612fdb565b92915050565b5f819050919050565b61301781613005565b8114613021575f80fd5b50565b5f813590506130328161300e565b92915050565b5f806040838503121561304e5761304d612fa7565b5b5f61305b85828601612ff1565b925050602061306c85828601613024565b9150509250929050565b5f8115159050919050565b61308a81613076565b82525050565b5f6020820190506130a35f830184613081565b92915050565b6130b281613005565b82525050565b5f6020820190506130cb5f8301846130a9565b92915050565b6130da81613076565b81146130e4575f80fd5b50565b5f813590506130f5816130d1565b92915050565b5f602082840312156131105761310f612fa7565b5b5f61311d848285016130e7565b91505092915050565b5f805f6060848603121561313d5761313c612fa7565b5b5f61314a86828701612ff1565b935050602061315b86828701612ff1565b925050604061316c86828701613024565b9150509250925092565b5f60ff82169050919050565b61318b81613176565b82525050565b5f6020820190506131a45f830184613182565b92915050565b5f602082840312156131bf576131be612fa7565b5b5f6131cc84828501612ff1565b91505092915050565b5f602082840312156131ea576131e9612fa7565b5b5f6131f784828501613024565b91505092915050565b61320981612fca565b82525050565b5f6020820190506132225f830184613200565b92915050565b5f806040838503121561323e5761323d612fa7565b5b5f61324b85828601612ff1565b925050602061325c85828601612ff1565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61329a602083612f21565b91506132a582613266565b602082019050919050565b5f6020820190508181035f8301526132c78161328e565b9050919050565b5f819050919050565b5f819050919050565b5f6132fa6132f56132f0846132ce565b6132d7565b613005565b9050919050565b61330a816132e0565b82525050565b5f6020820190506133235f830184613301565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156133ab5780860481111561338757613386613329565b5b60018516156133965780820291505b80810290506133a485613356565b945061336b565b94509492505050565b5f826133c3576001905061347e565b816133d0575f905061347e565b81600181146133e657600281146133f05761341f565b600191505061347e565b60ff84111561340257613401613329565b5b8360020a91508482111561341957613418613329565b5b5061347e565b5060208310610133831016604e8410600b84101617156134545782820a90508381111561344f5761344e613329565b5b61347e565b6134618484846001613362565b9250905081840481111561347857613477613329565b5b81810290505b9392505050565b5f61348f82613005565b915061349a83613176565b92506134c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133b4565b905092915050565b5f6134d982613005565b91506134e483613005565b92508282026134f281613005565b9150828204841483151761350957613508613329565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61354782613005565b915061355283613005565b92508261356257613561613510565b5b828204905092915050565b5f8151905061357b8161300e565b92915050565b5f6020828403121561359657613595612fa7565b5b5f6135a38482850161356d565b91505092915050565b5f6135c66135c16135bc84612fab565b6132d7565b612fab565b9050919050565b5f6135d7826135ac565b9050919050565b5f6135e8826135cd565b9050919050565b6135f8816135de565b82525050565b5f6040820190506136115f8301856135ef565b61361e60208301846130a9565b9392505050565b5f81519050613633816130d1565b92915050565b5f6020828403121561364e5761364d612fa7565b5b5f61365b84828501613625565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613698601783612f21565b91506136a382613664565b602082019050919050565b5f6020820190508181035f8301526136c58161368c565b9050919050565b5f815190506136da81612fdb565b92915050565b5f602082840312156136f5576136f4612fa7565b5b5f613702848285016136cc565b91505092915050565b5f60408201905061371e5f830185613200565b61372b6020830184613200565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f613766601383612f21565b915061377182613732565b602082019050919050565b5f6020820190508181035f8301526137938161375a565b9050919050565b5f60c0820190506137ad5f830189613200565b6137ba60208301886130a9565b6137c76040830187613301565b6137d46060830186613301565b6137e16080830185613200565b6137ee60a08301846130a9565b979650505050505050565b5f805f606084860312156138105761380f612fa7565b5b5f61381d8682870161356d565b935050602061382e8682870161356d565b925050604061383f8682870161356d565b9150509250925092565b5f60408201905061385c5f830185613200565b61386960208301846130a9565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138ca602483612f21565b91506138d582613870565b604082019050919050565b5f6020820190508181035f8301526138f7816138be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613958602283612f21565b9150613963826138fe565b604082019050919050565b5f6020820190508181035f8301526139858161394c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139e6602583612f21565b91506139f18261398c565b604082019050919050565b5f6020820190508181035f830152613a13816139da565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a74602383612f21565b9150613a7f82613a1a565b604082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b02602983612f21565b9150613b0d82613aa8565b604082019050919050565b5f6020820190508181035f830152613b2f81613af6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613bb6604983612f21565b9150613bc182613b36565b606082019050919050565b5f6020820190508181035f830152613be381613baa565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c1e601983612f21565b9150613c2982613bea565b602082019050919050565b5f6020820190508181035f830152613c4b81613c12565b9050919050565b5f613c5c82613005565b9150613c6783613005565b9250828201905080821115613c7f57613c7e613329565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613cb9601a83612f21565b9150613cc482613c85565b602082019050919050565b5f6020820190508181035f830152613ce681613cad565b9050919050565b5f613cf782613005565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d2957613d28613329565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d68601783612f21565b9150613d7382613d34565b602082019050919050565b5f6020820190508181035f830152613d9581613d5c565b9050919050565b5f613da682613005565b9150613db183613005565b9250828203905081811115613dc957613dc8613329565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e5b81612fca565b82525050565b5f613e6c8383613e52565b60208301905092915050565b5f602082019050919050565b5f613e8e82613e29565b613e988185613e33565b9350613ea383613e43565b805f5b83811015613ed3578151613eba8882613e61565b9750613ec583613e78565b925050600181019050613ea6565b5085935050505092915050565b5f60a082019050613ef35f8301886130a9565b613f006020830187613301565b8181036040830152613f128186613e84565b9050613f216060830185613200565b613f2e60808301846130a9565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f92602183612f21565b9150613f9d82613f38565b604082019050919050565b5f6020820190508181035f830152613fbf81613f86565b9050919050565b5f8160601b9050919050565b5f613fdc82613fc6565b9050919050565b5f613fed82613fd2565b9050919050565b61400561400082612fca565b613fe3565b82525050565b5f6140168285613ff4565b6014820191506140268284613ff4565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614074600183614036565b915061407f82614040565b600182019050919050565b5f819050919050565b5f819050919050565b6140ad6140a88261408a565b614093565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f6140e7602083614036565b91506140f2826140b3565b602082019050919050565b5f61410782614068565b91506141138285613ff4565b601482019150614123828461409c565b602082019150614132826140db565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614172601b83612f21565b915061417d8261413e565b602082019050919050565b5f6020820190508181035f83015261419f81614166565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220970be71254eea8191ddabf026be1c83da8234121beddf884e46159c1fc8b411064736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806370a08231116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed1461052b578063c9567bf914610555578063dd62ed3e1461056b578063ec1f3f63146105a75761018b565b80638f9a55c01461049b57806395d89b41146104c5578063a9059cbb146104ef5761018b565b806370a08231146103a5578063715018a6146103e15780637d1db4a5146103f75780638b1cdc5b146104215780638cd4426d146104495780638da5cb5b146104715761018b565b806323b872dd1161013d5780634c8afff4116101175780634c8afff41461032957806351bc3c851461035157806356ec63a5146103675780636fc3eaec1461038f5761018b565b806323b872dd14610287578063313ce567146102c35780633bbac579146102ed5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f5578063109daa991461021f57806317090ec81461023557806318160ddd1461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105cf565b6040516101b09190612f87565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190613038565b61060c565b6040516101ec9190613090565b60405180910390f35b348015610200575f80fd5b50610209610629565b60405161021691906130b8565b60405180910390f35b34801561022a575f80fd5b5061023361062f565b005b348015610240575f80fd5b5061025b600480360381019061025691906130fb565b610703565b005b348015610268575f80fd5b506102716108ff565b60405161027e91906130b8565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a89190613126565b610923565b6040516102ba9190613090565b60405180910390f35b3480156102ce575f80fd5b506102d76109f7565b6040516102e49190613191565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e91906131aa565b6109ff565b6040516103209190613090565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a91906131aa565b610a51565b005b34801561035c575f80fd5b50610365610b3c565b005b348015610372575f80fd5b5061038d600480360381019061038891906131aa565b610bd3565b005b34801561039a575f80fd5b506103a3610cbf565b005b3480156103b0575f80fd5b506103cb60048036038101906103c691906131aa565b610d2e565b6040516103d891906130b8565b60405180910390f35b3480156103ec575f80fd5b506103f5610d74565b005b348015610402575f80fd5b5061040b610ec2565b60405161041891906130b8565b60405180910390f35b34801561042c575f80fd5b50610447600480360381019061044291906131d5565b610ec8565b005b348015610454575f80fd5b5061046f600480360381019061046a9190613038565b610f38565b005b34801561047c575f80fd5b506104856110d9565b604051610492919061320f565b60405180910390f35b3480156104a6575f80fd5b506104af611100565b6040516104bc91906130b8565b60405180910390f35b3480156104d0575f80fd5b506104d9611106565b6040516104e69190612f87565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190613038565b611143565b6040516105229190613090565b60405180910390f35b348015610536575f80fd5b5061053f611160565b60405161054c91906130b8565b60405180910390f35b348015610560575f80fd5b50610569611166565b005b348015610576575f80fd5b50610591600480360381019061058c9190613228565b6118bf565b60405161059e91906130b8565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c891906131d5565b611941565b005b60606040518060400160405280600681526020017f4d6f6f446f6f0000000000000000000000000000000000000000000000000000815250905090565b5f61061f6106186119cd565b84846119d4565b6001905092915050565b60135481565b6106376119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba906132b0565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106f99190613310565b60405180910390a1565b61070b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e906132b0565b60405180910390fd5b8015610804575f606460056009600a6107b09190613485565b6461f313f8806107c091906134cf565b6107ca91906134cf565b6107d4919061353d565b905061080260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611b97565b505b6064604660125461081591906134cf565b61081f919061353d565b6012819055506064604660135461083691906134cf565b610840919061353d565b6013819055506009600a6108549190613485565b6461f313f88061086491906134cf565b6010819055506009600a6108789190613485565b6461f313f88061088891906134cf565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d79190613485565b6461f313f8806108e791906134cf565b6040516108f491906130b8565b60405180910390a150565b5f6009600a61090e9190613485565b6461f313f88061091e91906134cf565b905090565b5f61092f848484611b97565b6109ec8461093b6119cd565b6109e7856040518060600160405280602881526020016141a76028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61099e6119cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129639092919063ffffffff16565b6119d4565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610a596119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc906132b0565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b7c6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610b9b575f80fd5b5f610ba530610d2e565b90505f811115610bb957610bb8816129c5565b5b5f4790505f811115610bcf57610bce81612c2e565b5b5050565b610bdb6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5e906132b0565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cff6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610d1e575f80fd5b5f479050610d2b81612c2e565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d7c6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff906132b0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f086119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610f27575f80fd5b806012819055508060138190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f786119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610f97575f80fd5b5f6110356064611027848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda919061320f565b602060405180830381865afa158015610ff5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110199190613581565b612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110939291906135fe565b6020604051808303815f875af11580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d39190613639565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600681526020017f4d4f4f444f4f0000000000000000000000000000000000000000000000000000815250905090565b5f61115661114f6119cd565b8484611b97565b6001905092915050565b60125481565b61116e6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f1906132b0565b60405180910390fd5b601560149054906101000a900460ff161561124a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611241906136ae565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132d91906136e0565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113be91906136e0565b90505f6113cc833084612d56565b90505f813b90505f8103611499578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b815260040161141592919061370b565b6020604051808303815f875af1158015611431573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145591906136e0565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611689565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6064605e3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611538919061320f565b602060405180830381865afa158015611553573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115779190613581565b61158191906134cf565b61158b919061353d565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115e8919061320f565b602060405180830381865afa158015611603573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116279190613581565b9050670de0b6b3a7640000821080156116475750670de0b6b3a764000081105b611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d9061377c565b60405180910390fd5b50505b6116d23060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6116bd9190613485565b6461f313f8806116cd91906134cf565b6119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061171a30610d2e565b5f806117246110d9565b426040518863ffffffff1660e01b81526004016117469695949392919061379a565b60606040518083038185885af1158015611762573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061178791906137f9565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611827929190613849565b6020604051808303815f875af1158015611843573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613639565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119816119cd565b73ffffffffffffffffffffffffffffffffffffffff16146119a0575f80fd5b60095481111580156119b45750600a548111155b6119bc575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a39906138e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa79061396e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8a91906130b8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc906139fc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613a8a565b60405180910390fd5b5f8111611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613b18565b60405180910390fd5b5f611cbe6110d9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d2c5750611cfc6110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126b35760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dcf575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e22575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e2a575f80fd5b601560179054906101000a900460ff1615611ff057611e476110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f28575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fef574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390613bcc565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f5403612038576120356064612027600b54600f541161201457600754612018565b6009545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b5f600f54111561206d5761206a606461205c600e5485612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612116575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612169575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612261576010548211156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613c34565b60405180910390fd5b601154826121c085610d2e565b6121ca9190613c52565b111561220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290613ccf565b60405180910390fd5b6122476064612239600b54600f54116122265760075461222a565b6009545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b9050600f5f81548092919061225b90613ced565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122e957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561232d5761232a606461231c600c54600f54116123095760085461230d565b600a545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b5f61233730610d2e565b905060158054906101000a900460ff161580156123a0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156123b85750601560169054906101000a900460ff165b80156123c5575060125481115b80156123d45750600d54600f54115b156126b1575f61241d6009600a6123eb9190613485565b6461f313f8806123fb91906134cf565b61240f606485612c9690919063ffffffff16565b612d0d90919063ffffffff16565b9050600281101561247b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612606565b60078110156125035761271060196009600a6124979190613485565b6461f313f8806124a791906134cf565b6124b191906134cf565b6124bb919061353d565b60128190555061271060196009600a6124d49190613485565b6461f313f8806124e491906134cf565b6124ee91906134cf565b6124f8919061353d565b601381905550612605565b600a81101561258b576103e860056009600a61251f9190613485565b6461f313f88061252f91906134cf565b61253991906134cf565b612543919061353d565b6012819055506103e860056009600a61255c9190613485565b6461f313f88061256c91906134cf565b61257691906134cf565b612580919061353d565b601381905550612604565b606460016009600a61259d9190613485565b6461f313f8806125ad91906134cf565b6125b791906134cf565b6125c1919061353d565b601281905550606460016009600a6125d99190613485565b6461f313f8806125e991906134cf565b6125f391906134cf565b6125fd919061353d565b6013819055505b5b5b601754431115612618575f6016819055505b60036016541061265d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265490613d7e565b60405180910390fd5b61267a6126758561267085601354612df8565b612df8565b6129c5565b5f4790505f8111156126905761268f81612c2e565b5b60165f8154809291906126a290613ced565b91905055504360178190555050505b505b5f8111156127b25761270b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e1090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a991906130b8565b60405180910390a35b6128028260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e6d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128a56128598284612e6d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e1090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129488486612e6d90919063ffffffff16565b60405161295591906130b8565b60405180910390a350505050565b5f8383111582906129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a19190612f87565b60405180910390fd5b505f83856129b89190613d9c565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156129fb576129fa613dcf565b5b604051908082528060200260200182016040528015612a295781602001602082028036833780820191505090505b50905030815f81518110612a4057612a3f613dfc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b0891906136e0565b81600181518110612b1c57612b1b613dfc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b823060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612be4959493929190613ee0565b5f604051808303815f87803b158015612bfb575f80fd5b505af1158015612c0d573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612c92573d5f803e3d5ffd5b5050565b5f808303612ca6575f9050612d07565b5f8284612cb391906134cf565b9050828482612cc2919061353d565b14612d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf990613fa8565b60405180910390fd5b809150505b92915050565b5f612d4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612eb6565b905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612d93578385612d96565b84845b91509150858282604051602001612dae92919061400b565b60405160208183030381529060405280519060200120604051602001612dd59291906140fd565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612e065782612e08565b815b905092915050565b5f808284612e1e9190613c52565b905083811015612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90614188565b60405180910390fd5b8091505092915050565b5f612eae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612963565b905092915050565b5f8083118290612efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef39190612f87565b60405180910390fd5b505f8385612f0a919061353d565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612f5982612f17565b612f638185612f21565b9350612f73818560208601612f31565b612f7c81612f3f565b840191505092915050565b5f6020820190508181035f830152612f9f8184612f4f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fd482612fab565b9050919050565b612fe481612fca565b8114612fee575f80fd5b50565b5f81359050612fff81612fdb565b92915050565b5f819050919050565b61301781613005565b8114613021575f80fd5b50565b5f813590506130328161300e565b92915050565b5f806040838503121561304e5761304d612fa7565b5b5f61305b85828601612ff1565b925050602061306c85828601613024565b9150509250929050565b5f8115159050919050565b61308a81613076565b82525050565b5f6020820190506130a35f830184613081565b92915050565b6130b281613005565b82525050565b5f6020820190506130cb5f8301846130a9565b92915050565b6130da81613076565b81146130e4575f80fd5b50565b5f813590506130f5816130d1565b92915050565b5f602082840312156131105761310f612fa7565b5b5f61311d848285016130e7565b91505092915050565b5f805f6060848603121561313d5761313c612fa7565b5b5f61314a86828701612ff1565b935050602061315b86828701612ff1565b925050604061316c86828701613024565b9150509250925092565b5f60ff82169050919050565b61318b81613176565b82525050565b5f6020820190506131a45f830184613182565b92915050565b5f602082840312156131bf576131be612fa7565b5b5f6131cc84828501612ff1565b91505092915050565b5f602082840312156131ea576131e9612fa7565b5b5f6131f784828501613024565b91505092915050565b61320981612fca565b82525050565b5f6020820190506132225f830184613200565b92915050565b5f806040838503121561323e5761323d612fa7565b5b5f61324b85828601612ff1565b925050602061325c85828601612ff1565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61329a602083612f21565b91506132a582613266565b602082019050919050565b5f6020820190508181035f8301526132c78161328e565b9050919050565b5f819050919050565b5f819050919050565b5f6132fa6132f56132f0846132ce565b6132d7565b613005565b9050919050565b61330a816132e0565b82525050565b5f6020820190506133235f830184613301565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156133ab5780860481111561338757613386613329565b5b60018516156133965780820291505b80810290506133a485613356565b945061336b565b94509492505050565b5f826133c3576001905061347e565b816133d0575f905061347e565b81600181146133e657600281146133f05761341f565b600191505061347e565b60ff84111561340257613401613329565b5b8360020a91508482111561341957613418613329565b5b5061347e565b5060208310610133831016604e8410600b84101617156134545782820a90508381111561344f5761344e613329565b5b61347e565b6134618484846001613362565b9250905081840481111561347857613477613329565b5b81810290505b9392505050565b5f61348f82613005565b915061349a83613176565b92506134c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133b4565b905092915050565b5f6134d982613005565b91506134e483613005565b92508282026134f281613005565b9150828204841483151761350957613508613329565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61354782613005565b915061355283613005565b92508261356257613561613510565b5b828204905092915050565b5f8151905061357b8161300e565b92915050565b5f6020828403121561359657613595612fa7565b5b5f6135a38482850161356d565b91505092915050565b5f6135c66135c16135bc84612fab565b6132d7565b612fab565b9050919050565b5f6135d7826135ac565b9050919050565b5f6135e8826135cd565b9050919050565b6135f8816135de565b82525050565b5f6040820190506136115f8301856135ef565b61361e60208301846130a9565b9392505050565b5f81519050613633816130d1565b92915050565b5f6020828403121561364e5761364d612fa7565b5b5f61365b84828501613625565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613698601783612f21565b91506136a382613664565b602082019050919050565b5f6020820190508181035f8301526136c58161368c565b9050919050565b5f815190506136da81612fdb565b92915050565b5f602082840312156136f5576136f4612fa7565b5b5f613702848285016136cc565b91505092915050565b5f60408201905061371e5f830185613200565b61372b6020830184613200565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f613766601383612f21565b915061377182613732565b602082019050919050565b5f6020820190508181035f8301526137938161375a565b9050919050565b5f60c0820190506137ad5f830189613200565b6137ba60208301886130a9565b6137c76040830187613301565b6137d46060830186613301565b6137e16080830185613200565b6137ee60a08301846130a9565b979650505050505050565b5f805f606084860312156138105761380f612fa7565b5b5f61381d8682870161356d565b935050602061382e8682870161356d565b925050604061383f8682870161356d565b9150509250925092565b5f60408201905061385c5f830185613200565b61386960208301846130a9565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138ca602483612f21565b91506138d582613870565b604082019050919050565b5f6020820190508181035f8301526138f7816138be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613958602283612f21565b9150613963826138fe565b604082019050919050565b5f6020820190508181035f8301526139858161394c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139e6602583612f21565b91506139f18261398c565b604082019050919050565b5f6020820190508181035f830152613a13816139da565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a74602383612f21565b9150613a7f82613a1a565b604082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b02602983612f21565b9150613b0d82613aa8565b604082019050919050565b5f6020820190508181035f830152613b2f81613af6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613bb6604983612f21565b9150613bc182613b36565b606082019050919050565b5f6020820190508181035f830152613be381613baa565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c1e601983612f21565b9150613c2982613bea565b602082019050919050565b5f6020820190508181035f830152613c4b81613c12565b9050919050565b5f613c5c82613005565b9150613c6783613005565b9250828201905080821115613c7f57613c7e613329565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613cb9601a83612f21565b9150613cc482613c85565b602082019050919050565b5f6020820190508181035f830152613ce681613cad565b9050919050565b5f613cf782613005565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d2957613d28613329565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d68601783612f21565b9150613d7382613d34565b602082019050919050565b5f6020820190508181035f830152613d9581613d5c565b9050919050565b5f613da682613005565b9150613db183613005565b9250828203905081811115613dc957613dc8613329565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e5b81612fca565b82525050565b5f613e6c8383613e52565b60208301905092915050565b5f602082019050919050565b5f613e8e82613e29565b613e988185613e33565b9350613ea383613e43565b805f5b83811015613ed3578151613eba8882613e61565b9750613ec583613e78565b925050600181019050613ea6565b5085935050505092915050565b5f60a082019050613ef35f8301886130a9565b613f006020830187613301565b8181036040830152613f128186613e84565b9050613f216060830185613200565b613f2e60808301846130a9565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f92602183612f21565b9150613f9d82613f38565b604082019050919050565b5f6020820190508181035f830152613fbf81613f86565b9050919050565b5f8160601b9050919050565b5f613fdc82613fc6565b9050919050565b5f613fed82613fd2565b9050919050565b61400561400082612fca565b613fe3565b82525050565b5f6140168285613ff4565b6014820191506140268284613ff4565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614074600183614036565b915061407f82614040565b600182019050919050565b5f819050919050565b5f819050919050565b6140ad6140a88261408a565b614093565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f6140e7602083614036565b91506140f2826140b3565b602082019050919050565b5f61410782614068565b91506141138285613ff4565b601482019150614123828461409c565b602082019150614132826140db565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614172601b83612f21565b915061417d8261413e565b602082019050919050565b5f6020820190508181035f83015261419f81614166565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220970be71254eea8191ddabf026be1c83da8234121beddf884e46159c1fc8b411064736f6c634300081a0033

Deployed Bytecode Sourcemap

3535:15426:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8640:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9473:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4849:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14981:119;;;;;;;;;;;;;:::i;:::-;;14497:474;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8917:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9642:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8826:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15492:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18610:348;;;;;;;;;;;;;:::i;:::-;;15402:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15108:187;;;;;;;;;;;;;:::i;:::-;;9020:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2616:148;;;;;;;;;;;;;:::i;:::-;;4654:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15863:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15589:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2402:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4717:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8731:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9147:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4782:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16151:1664;;;;;;;;;;;;;:::i;:::-;;9322:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18347:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8640:83;8677:13;8710:5;;;;;;;;;;;;;;;;;8703:12;;8640:83;:::o;9473:161::-;9548:4;9565:39;9574:12;:10;:12::i;:::-;9588:7;9597:6;9565:8;:39::i;:::-;9622:4;9615:11;;9473:161;;;;:::o;4849:54::-;;;;:::o;14981:119::-;2539:12;:10;:12::i;:::-;2529:22;;:6;;;;;;;;;;:22;;;2521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15054:1:::1;15039:12;:16;;;;15071:21;15090:1;15071:21;;;;;;:::i;:::-;;;;;;;;14981:119::o:0;14497:474::-;2539:12;:10;:12::i;:::-;2529:22;;:6;;;;;;;;;;:22;;;2521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14565:5:::1;14561:143;;;14587:20;14624:3;14620:1;4466;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;14610:11;;;;:::i;:::-;:17;;;;:::i;:::-;14587:40;;14642:50;14652:10;;;;;;;;;;;14672:4;14679:12;14642:9;:50::i;:::-;14572:132;14561:143;14761:3;14756:2;14736:17;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;14716:17;:48;;;;14808:3;14803:2;14789:11;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;14775:11;:36;;;;4466:1;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;14822:12;:22;;;;4466:1;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;14855:14;:24;;;;14913:5;14890:20;;:28;;;;;;;;;;;;;;;;;;14936:27;4466:1;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;14936:27;;;;;;:::i;:::-;;;;;;;;14497:474:::0;:::o;8917:95::-;8970:7;4466:1;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;8990:14;;8917:95;:::o;9642:313::-;9740:4;9757:36;9767:6;9775:9;9786:6;9757:9;:36::i;:::-;9804:121;9813:6;9821:12;:10;:12::i;:::-;9835:89;9873:6;9835:89;;;;;;;;;;;;;;;;;:11;:19;9847:6;9835:19;;;;;;;;;;;;;;;:33;9855:12;:10;:12::i;:::-;9835:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9804:8;:121::i;:::-;9943:4;9936:11;;9642:313;;;;;:::o;8826:83::-;8867:5;4466:1;8885:16;;8826:83;:::o;16056:::-;16103:4;16124;:7;16129:1;16124:7;;;;;;;;;;;;;;;;;;;;;;;;;16117:14;;16056:83;;;:::o;15492:89::-;2539:12;:10;:12::i;:::-;2529:22;;:6;;;;;;;;;;:22;;;2521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15568:5:::1;15553:4;:12;15558:6;15553:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15492:89:::0;:::o;18610:348::-;18674:10;;;;;;;;;;;18660:24;;:12;:10;:12::i;:::-;:24;;;18652:33;;;;;;18696:20;18717:24;18735:4;18717:9;:24::i;:::-;18696:45;;18768:1;18755:12;:14;18752:73;;;18783:30;18800:12;18783:16;:30::i;:::-;18752:73;18835:18;18854:21;18835:40;;18900:1;18889:10;:12;18886:65;;;18915:24;18928:10;18915:12;:24::i;:::-;18886:65;18641:317;;18610:348::o;15402:82::-;2539:12;:10;:12::i;:::-;2529:22;;:6;;;;;;;;;;:22;;;2521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15472:4:::1;15460;:9;15465:3;15460:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;15402:82:::0;:::o;15108:187::-;15172:10;;;;;;;;;;;15158:24;;:12;:10;:12::i;:::-;:24;;;15150:33;;;;;;15194:26;15223:21;15194:50;;15255:32;15268:18;15255:12;:32::i;:::-;15139:156;15108:187::o;9020:119::-;9086:7;9113:9;:18;9123:7;9113:18;;;;;;;;;;;;;;;;9106:25;;9020:119;;;:::o;2616:148::-;2539:12;:10;:12::i;:::-;2529:22;;:6;;;;;;;;;;:22;;;2521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2723:1:::1;2686:40;;2707:6;::::0;::::1;;;;;;;;2686:40;;;;;;;;;;;;2754:1;2737:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2616:148::o:0;4654:56::-;;;;:::o;15863:185::-;15956:10;;;;;;;;;;;15942:24;;:12;:10;:12::i;:::-;:24;;;15934:33;;;;;;15998:4;15978:17;:24;;;;16027:4;16013:11;:18;;;;15863:185;:::o;15589:266::-;15687:10;;;;;;;;;;;15673:24;;:12;:10;:12::i;:::-;:24;;;15665:33;;;;;;15709:15;15727:63;15786:3;15727:54;15773:7;15734:8;15727:26;;;15762:4;15727:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;15709:81;;15808:8;15801:25;;;15827:10;;;;;;;;;;;15839:7;15801:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15654:201;15589:266;;:::o;2402:79::-;2440:7;2467:6;;;;;;;;;;;2460:13;;2402:79;:::o;4717:58::-;;;;:::o;8731:87::-;8770:13;8803:7;;;;;;;;;;;;;;;;;8796:14;;8731:87;:::o;9147:167::-;9225:4;9242:42;9252:12;:10;:12::i;:::-;9266:9;9277:6;9242:9;:42::i;:::-;9302:4;9295:11;;9147:167;;;;:::o;4782:60::-;;;;:::o;16151:1664::-;2539:12;:10;:12::i;:::-;2529:22;;:6;;;;;;;;;;:22;;;2521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16209:11:::1;;;;;;;;;;;16208:12;16200:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16298:42;16261:15;;:80;;;;;;;;;;;;;;;;;;16387:15;16405;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16387:43;;16437:12;16452:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16437:37;;16481:21;16505:37;16513:7;16530:4;16537;16505:7;:37::i;:::-;16481:61;;16614:16;16681:13;16669:26;16657:38;;16771:1;16759:8;:13:::0;16755:484:::1;;16819:7;16801:37;;;16847:4;16854;16801:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16785:13;;:74;;;;;;;;;;;;;;;;;;16755:484;;;16900:13;16884;;:29;;;;;;;;;;;;;;;;;;16997:20;17074:3;17069:2;17035:4;17020:31;;;17052:13;;;;;;;;;;;17020:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;:57;;;;:::i;:::-;16997:80;;17088:19;17117:4;17110:22;;;17133:13;;;;;;;;;;;17110:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17088:59;;17181:4;17166:12;:19;:41;;;;;17203:4;17189:11;:18;17166:41;17158:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16873:366;;16755:484;17289:58;17306:4;17321:15;;;;;;;;;;;4466:1;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;17289:8;:58::i;:::-;17382:15;;;;;;;;;;;:31;;;17421:21;17462:4;17478:24;17496:4;17478:9;:24::i;:::-;17513:1;17525::::0;17537:7:::1;:5;:7::i;:::-;17555:15;17382:195;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17637:13;;;;;;;;;;;17630:29;;;17668:15;;;;;;;;;;;17686:14;17630:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17736:4;17722:11;;:18;;;;;;;;;;;;;;;;;;17765:4;17751:11;;:18;;;;;;;;;;;;;;;;;;17803:4;17780:20;;:27;;;;;;;;;;;;;;;;;;16193:1622;;;;16151:1664::o:0;9322:143::-;9403:7;9430:11;:18;9442:5;9430:18;;;;;;;;;;;;;;;:27;9449:7;9430:27;;;;;;;;;;;;;;;;9423:34;;9322:143;;;;:::o;18347:218::-;18422:10;;;;;;;;;;;18408:24;;:12;:10;:12::i;:::-;:24;;;18400:33;;;;;;18459:12;;18450:7;:21;;:47;;;;;18484:13;;18475:7;:22;;18450:47;18442:56;;;;;;18520:7;18507:12;:20;;;;18550:7;18536:13;:21;;;;18347:218;:::o;157:98::-;210:7;237:10;230:17;;157:98;:::o;9963:335::-;10073:1;10056:19;;:5;:19;;;10048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10154:1;10135:21;;:7;:21;;;10127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10236:6;10206:11;:18;10218:5;10206:18;;;;;;;;;;;;;;;:27;10225:7;10206:27;;;;;;;;;;;;;;;:36;;;;10274:7;10258:32;;10267:5;10258:32;;;10283:6;10258:32;;;;;;:::i;:::-;;;;;;;;9963:335;;;:::o;10306:3584::-;10406:1;10390:18;;:4;:18;;;10382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10479:1;10465:16;;:2;:16;;;10457:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10545:1;10536:6;:10;10528:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10601:17;10641:7;:5;:7::i;:::-;10633:15;;:4;:15;;;;:32;;;;;10658:7;:5;:7::i;:::-;10652:13;;:2;:13;;;;10633:32;10629:2922;;;10687:4;:10;10692:4;10687:10;;;;;;;;;;;;;;;;;;;;;;;;;10686:11;:24;;;;;10702:4;:8;10707:2;10702:8;;;;;;;;;;;;;;;;;;;;;;;;;10701:9;10686:24;:44;;;;;10715:4;:15;10720:9;10715:15;;;;;;;;;;;;;;;;;;;;;;;;;10714:16;10686:44;10678:53;;;;;;10748:20;;;;;;;;;;;10744:512;;;10813:7;:5;:7::i;:::-;10807:13;;:2;:13;;;;:64;;;;;10855:15;;;;;;;;;;;10841:30;;:2;:30;;;;10807:64;:113;;;;;10906:13;;;;;;;;;;;10892:28;;:2;:28;;;;10807:113;10785:460;;;11027:12;10985:28;:39;11014:9;10985:39;;;;;;;;;;;;;;;;:54;10955:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;11217:12;11175:28;:39;11204:9;11175:39;;;;;;;;;;;;;;;:54;;;;10785:460;10744:512;11285:1;11272:9;;:14;11268:141;;11315:82;11393:3;11315:73;11339:15;;11327:9;;:27;11326:61;;11373:14;;11326:61;;;11358:12;;11326:61;11315:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;11303:94;;11268:141;11435:1;11423:9;;:13;11419:91;;;11465:33;11494:3;11465:24;11476:12;;11465:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;11453:45;;11419:91;11534:13;;;;;;;;;;;11526:21;;:4;:21;;;:55;;;;;11565:15;;;;;;;;;;;11551:30;;:2;:30;;;;11526:55;:82;;;;;11586:18;:22;11605:2;11586:22;;;;;;;;;;;;;;;;;;;;;;;;;11585:23;11526:82;11522:404;;;11643:12;;11633:6;:22;;11625:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11734:14;;11724:6;11708:13;11718:2;11708:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;11700:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11806:82;11884:3;11806:73;11830:15;;11818:9;;:27;11817:61;;11864:14;;11817:61;;;11849:12;;11817:61;11806:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;11794:94;;11903:9;;:11;;;;;;;;;:::i;:::-;;;;;;11522:404;11948:13;;;;;;;;;;;11942:19;;:2;:19;;;:44;;;;;11981:4;11965:21;;:4;:21;;;;11942:44;11938:174;;;12015:85;12096:3;12015:76;12039:16;;12027:9;;:28;12026:64;;12075:15;;12026:64;;;12059:13;;12026:64;12015:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;12003:97;;11938:174;12124:28;12155:24;12173:4;12155:9;:24::i;:::-;12124:55;;12197:6;;;;;;;;;;12196:7;:30;;;;;12213:13;;;;;;;;;;;12207:19;;:2;:19;;;12196:30;:45;;;;;12230:11;;;;;;;;;;;12196:45;:89;;;;;12268:17;;12245:20;:40;12196:89;:123;;;;;12301:18;;12289:9;;:30;12196:123;12192:1352;;;12336:24;12363:42;4466:1;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;12363:29;12388:3;12363:20;:24;;:29;;;;:::i;:::-;:33;;:42;;;;:::i;:::-;12336:69;;12445:1;12426:16;:20;12422:616;;;12487:17;12467;:37;;;;12537:17;12523:11;:31;;;;12422:616;;;12599:1;12580:16;:20;12576:462;;;12656:5;12651:2;4466:1;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;12641:12;;;;:::i;:::-;:20;;;;:::i;:::-;12621:17;:40;;;;12718:5;12713:2;4466:1;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;12703:12;;;;:::i;:::-;:20;;;;:::i;:::-;12689:11;:34;;;;12576:462;;;12768:2;12749:16;:21;12745:293;;;12825:4;12821:1;4466;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;12811:11;;;;:::i;:::-;:18;;;;:::i;:::-;12791:17;:38;;;;12884:4;12880:1;4466;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;12870:11;;;;:::i;:::-;:18;;;;:::i;:::-;12856:11;:32;;;;12745:293;;;12963:3;12959:1;4466;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;12949:11;;;;:::i;:::-;:17;;;;:::i;:::-;12929;:37;;;;13019:3;13015:1;4466;4524:2;:13;;;;:::i;:::-;4509:12;:28;;;;:::i;:::-;13005:11;;;;:::i;:::-;:17;;;;:::i;:::-;12991:11;:31;;;;12745:293;12576:462;12422:616;13073:13;;13058:12;:28;13054:82;;;13119:1;13107:9;:13;;;;13054:82;13172:1;13160:9;;:13;13152:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13218:69;13235:51;13239:6;13247:38;13251:20;13273:11;;13247:3;:38::i;:::-;13235:3;:51::i;:::-;13218:16;:69::i;:::-;13302:26;13331:21;13302:50;;13392:1;13371:18;:22;13367:95;;;13414:32;13427:18;13414:12;:32::i;:::-;13367:95;13478:9;;:11;;;;;;;;;:::i;:::-;;;;;;13520:12;13504:13;:28;;;;12321:1223;;12192:1352;10667:2884;10629:2922;13575:1;13563:9;:13;13559:160;;;13616:39;13645:9;13616;:24;13634:4;13616:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13589:9;:24;13607:4;13589:24;;;;;;;;;;;;;;;:66;;;;13694:4;13671:40;;13680:4;13671:40;;;13701:9;13671:40;;;;;;:::i;:::-;;;;;;;;13559:160;13743:27;13763:6;13743:9;:15;13753:4;13743:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13725:9;:15;13735:4;13725:15;;;;;;;;;;;;;;;:45;;;;13793:40;13811:21;13822:9;13811:6;:10;;:21;;;;:::i;:::-;13793:9;:13;13803:2;13793:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;13777:9;:13;13787:2;13777:13;;;;;;;;;;;;;;;:56;;;;13860:2;13845:41;;13854:4;13845:41;;;13864:21;13875:9;13864:6;:10;;:21;;;;:::i;:::-;13845:41;;;;;;:::i;:::-;;;;;;;;10375:3515;10306:3584;;;:::o;1294:190::-;1380:7;1413:1;1408;:6;;1416:12;1400:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1440:9;1456:1;1452;:5;;;;:::i;:::-;1440:17;;1475:1;1468:8;;;1294:190;;;;;:::o;14006:483::-;5364:4;5355:6;;:13;;;;;;;;;;;;;;;;;;14084:21:::1;14122:1;14108:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14084:40;;14153:4;14135;14140:1;14135:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14179:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14169:4;14174:1;14169:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14212:62;14229:4;14244:15;;;;;;;;;;;14262:11;14212:8;:62::i;:::-;14285:15;;;;;;;;;;;:66;;;14366:11;14392:1;14408:4;14435;14455:15;14285:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14073:416;5400:5:::0;5391:6;;:14;;;;;;;;;;;;;;;;;;14006:483;:::o;15303:92::-;15360:10;;;;;;;;;;;:19;;:27;15380:6;15360:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15303:92;:::o;1492:246::-;1550:7;1579:1;1574;:6;1570:47;;1604:1;1597:8;;;;1570:47;1627:9;1643:1;1639;:5;;;;:::i;:::-;1627:17;;1672:1;1667;1663;:5;;;;:::i;:::-;:10;1655:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1729:1;1722:8;;;1492:246;;;;;:::o;1746:132::-;1804:7;1831:39;1835:1;1838;1831:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1824:46;;1746:132;;;;:::o;17823:509::-;17911:12;17937:14;17953;17980:6;17971:15;;:6;:15;;;:53;;18009:6;18017;17971:53;;;17990:6;17998;17971:53;17936:88;;;;18126:7;18175:6;18183;18158:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18148:43;;;;;;18073:247;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18063:258;;;;;;18058:264;;18035:289;;17925:407;;17823:509;;;;;:::o;13900:98::-;13957:7;13984:1;13982;:3;13981:9;;13989:1;13981:9;;;13987:1;13981:9;13974:16;;13900:98;;;;:::o;963:179::-;1021:7;1041:9;1057:1;1053;:5;;;;:::i;:::-;1041:17;;1082:1;1077;:6;;1069:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:1;1126:8;;;963:179;;;;:::o;1150:136::-;1208:7;1235:43;1239:1;1242;1235:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1228:50;;1150:136;;;;:::o;1886:189::-;1972:7;2004:1;2000;:5;2007:12;1992:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2031:9;2047:1;2043;:5;;;;:::i;:::-;2031:17;;2066:1;2059:8;;;1886:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:116::-;3761:21;3776:5;3761:21;:::i;:::-;3754:5;3751:32;3741:60;;3797:1;3794;3787:12;3741:60;3691:116;:::o;3813:133::-;3856:5;3894:6;3881:20;3872:29;;3910:30;3934:5;3910:30;:::i;:::-;3813:133;;;;:::o;3952:323::-;4008:6;4057:2;4045:9;4036:7;4032:23;4028:32;4025:119;;;4063:79;;:::i;:::-;4025:119;4183:1;4208:50;4250:7;4241:6;4230:9;4226:22;4208:50;:::i;:::-;4198:60;;4154:114;3952:323;;;;:::o;4281:619::-;4358:6;4366;4374;4423:2;4411:9;4402:7;4398:23;4394:32;4391:119;;;4429:79;;:::i;:::-;4391:119;4549:1;4574:53;4619:7;4610:6;4599:9;4595:22;4574:53;:::i;:::-;4564:63;;4520:117;4676:2;4702:53;4747:7;4738:6;4727:9;4723:22;4702:53;:::i;:::-;4692:63;;4647:118;4804:2;4830:53;4875:7;4866:6;4855:9;4851:22;4830:53;:::i;:::-;4820:63;;4775:118;4281:619;;;;;:::o;4906:86::-;4941:7;4981:4;4974:5;4970:16;4959:27;;4906:86;;;:::o;4998:112::-;5081:22;5097:5;5081:22;:::i;:::-;5076:3;5069:35;4998:112;;:::o;5116:214::-;5205:4;5243:2;5232:9;5228:18;5220:26;;5256:67;5320:1;5309:9;5305:17;5296:6;5256:67;:::i;:::-;5116:214;;;;:::o;5336:329::-;5395:6;5444:2;5432:9;5423:7;5419:23;5415:32;5412:119;;;5450:79;;:::i;:::-;5412:119;5570:1;5595:53;5640:7;5631:6;5620:9;5616:22;5595:53;:::i;:::-;5585:63;;5541:117;5336:329;;;;:::o;5671:::-;5730:6;5779:2;5767:9;5758:7;5754:23;5750:32;5747:119;;;5785:79;;:::i;:::-;5747:119;5905:1;5930:53;5975:7;5966:6;5955:9;5951:22;5930:53;:::i;:::-;5920:63;;5876:117;5671:329;;;;:::o;6006:118::-;6093:24;6111:5;6093:24;:::i;:::-;6088:3;6081:37;6006:118;;:::o;6130:222::-;6223:4;6261:2;6250:9;6246:18;6238:26;;6274:71;6342:1;6331:9;6327:17;6318:6;6274:71;:::i;:::-;6130:222;;;;:::o;6358:474::-;6426:6;6434;6483:2;6471:9;6462:7;6458:23;6454:32;6451:119;;;6489:79;;:::i;:::-;6451:119;6609:1;6634:53;6679:7;6670:6;6659:9;6655:22;6634:53;:::i;:::-;6624:63;;6580:117;6736:2;6762:53;6807:7;6798:6;6787:9;6783:22;6762:53;:::i;:::-;6752:63;;6707:118;6358:474;;;;;:::o;6838:182::-;6978:34;6974:1;6966:6;6962:14;6955:58;6838:182;:::o;7026:366::-;7168:3;7189:67;7253:2;7248:3;7189:67;:::i;:::-;7182:74;;7265:93;7354:3;7265:93;:::i;:::-;7383:2;7378:3;7374:12;7367:19;;7026:366;;;:::o;7398:419::-;7564:4;7602:2;7591:9;7587:18;7579:26;;7651:9;7645:4;7641:20;7637:1;7626:9;7622:17;7615:47;7679:131;7805:4;7679:131;:::i;:::-;7671:139;;7398:419;;;:::o;7823:85::-;7868:7;7897:5;7886:16;;7823:85;;;:::o;7914:60::-;7942:3;7963:5;7956:12;;7914:60;;;:::o;7980:158::-;8038:9;8071:61;8089:42;8098:32;8124:5;8098:32;:::i;:::-;8089:42;:::i;:::-;8071:61;:::i;:::-;8058:74;;7980:158;;;:::o;8144:147::-;8239:45;8278:5;8239:45;:::i;:::-;8234:3;8227:58;8144:147;;:::o;8297:238::-;8398:4;8436:2;8425:9;8421:18;8413:26;;8449:79;8525:1;8514:9;8510:17;8501:6;8449:79;:::i;:::-;8297:238;;;;:::o;8541:180::-;8589:77;8586:1;8579:88;8686:4;8683:1;8676:15;8710:4;8707:1;8700:15;8727:102;8769:8;8816:5;8813:1;8809:13;8788:34;;8727:102;;;:::o;8835:848::-;8896:5;8903:4;8927:6;8918:15;;8951:5;8942:14;;8965:712;8986:1;8976:8;8973:15;8965:712;;;9081:4;9076:3;9072:14;9066:4;9063:24;9060:50;;;9090:18;;:::i;:::-;9060:50;9140:1;9130:8;9126:16;9123:451;;;9555:4;9548:5;9544:16;9535:25;;9123:451;9605:4;9599;9595:15;9587:23;;9635:32;9658:8;9635:32;:::i;:::-;9623:44;;8965:712;;;8835:848;;;;;;;:::o;9689:1073::-;9743:5;9934:8;9924:40;;9955:1;9946:10;;9957:5;;9924:40;9983:4;9973:36;;10000:1;9991:10;;10002:5;;9973:36;10069:4;10117:1;10112:27;;;;10153:1;10148:191;;;;10062:277;;10112:27;10130:1;10121:10;;10132:5;;;10148:191;10193:3;10183:8;10180:17;10177:43;;;10200:18;;:::i;:::-;10177:43;10249:8;10246:1;10242:16;10233:25;;10284:3;10277:5;10274:14;10271:40;;;10291:18;;:::i;:::-;10271:40;10324:5;;;10062:277;;10448:2;10438:8;10435:16;10429:3;10423:4;10420:13;10416:36;10398:2;10388:8;10385:16;10380:2;10374:4;10371:12;10367:35;10351:111;10348:246;;;10504:8;10498:4;10494:19;10485:28;;10539:3;10532:5;10529:14;10526:40;;;10546:18;;:::i;:::-;10526:40;10579:5;;10348:246;10619:42;10657:3;10647:8;10641:4;10638:1;10619:42;:::i;:::-;10604:57;;;;10693:4;10688:3;10684:14;10677:5;10674:25;10671:51;;;10702:18;;:::i;:::-;10671:51;10751:4;10744:5;10740:16;10731:25;;9689:1073;;;;;;:::o;10768:281::-;10826:5;10850:23;10868:4;10850:23;:::i;:::-;10842:31;;10894:25;10910:8;10894:25;:::i;:::-;10882:37;;10938:104;10975:66;10965:8;10959:4;10938:104;:::i;:::-;10929:113;;10768:281;;;;:::o;11055:410::-;11095:7;11118:20;11136:1;11118:20;:::i;:::-;11113:25;;11152:20;11170:1;11152:20;:::i;:::-;11147:25;;11207:1;11204;11200:9;11229:30;11247:11;11229:30;:::i;:::-;11218:41;;11408:1;11399:7;11395:15;11392:1;11389:22;11369:1;11362:9;11342:83;11319:139;;11438:18;;:::i;:::-;11319:139;11103:362;11055:410;;;;:::o;11471:180::-;11519:77;11516:1;11509:88;11616:4;11613:1;11606:15;11640:4;11637:1;11630:15;11657:185;11697:1;11714:20;11732:1;11714:20;:::i;:::-;11709:25;;11748:20;11766:1;11748:20;:::i;:::-;11743:25;;11787:1;11777:35;;11792:18;;:::i;:::-;11777:35;11834:1;11831;11827:9;11822:14;;11657:185;;;;:::o;11848:143::-;11905:5;11936:6;11930:13;11921:22;;11952:33;11979:5;11952:33;:::i;:::-;11848:143;;;;:::o;11997:351::-;12067:6;12116:2;12104:9;12095:7;12091:23;12087:32;12084:119;;;12122:79;;:::i;:::-;12084:119;12242:1;12267:64;12323:7;12314:6;12303:9;12299:22;12267:64;:::i;:::-;12257:74;;12213:128;11997:351;;;;:::o;12354:142::-;12404:9;12437:53;12455:34;12464:24;12482:5;12464:24;:::i;:::-;12455:34;:::i;:::-;12437:53;:::i;:::-;12424:66;;12354:142;;;:::o;12502:126::-;12552:9;12585:37;12616:5;12585:37;:::i;:::-;12572:50;;12502:126;;;:::o;12634:134::-;12692:9;12725:37;12756:5;12725:37;:::i;:::-;12712:50;;12634:134;;;:::o;12774:147::-;12869:45;12908:5;12869:45;:::i;:::-;12864:3;12857:58;12774:147;;:::o;12927:348::-;13056:4;13094:2;13083:9;13079:18;13071:26;;13107:79;13183:1;13172:9;13168:17;13159:6;13107:79;:::i;:::-;13196:72;13264:2;13253:9;13249:18;13240:6;13196:72;:::i;:::-;12927:348;;;;;:::o;13281:137::-;13335:5;13366:6;13360:13;13351:22;;13382:30;13406:5;13382:30;:::i;:::-;13281:137;;;;:::o;13424:345::-;13491:6;13540:2;13528:9;13519:7;13515:23;13511:32;13508:119;;;13546:79;;:::i;:::-;13508:119;13666:1;13691:61;13744:7;13735:6;13724:9;13720:22;13691:61;:::i;:::-;13681:71;;13637:125;13424:345;;;;:::o;13775:173::-;13915:25;13911:1;13903:6;13899:14;13892:49;13775:173;:::o;13954:366::-;14096:3;14117:67;14181:2;14176:3;14117:67;:::i;:::-;14110:74;;14193:93;14282:3;14193:93;:::i;:::-;14311:2;14306:3;14302:12;14295:19;;13954:366;;;:::o;14326:419::-;14492:4;14530:2;14519:9;14515:18;14507:26;;14579:9;14573:4;14569:20;14565:1;14554:9;14550:17;14543:47;14607:131;14733:4;14607:131;:::i;:::-;14599:139;;14326:419;;;:::o;14751:143::-;14808:5;14839:6;14833:13;14824:22;;14855:33;14882:5;14855:33;:::i;:::-;14751:143;;;;:::o;14900:351::-;14970:6;15019:2;15007:9;14998:7;14994:23;14990:32;14987:119;;;15025:79;;:::i;:::-;14987:119;15145:1;15170:64;15226:7;15217:6;15206:9;15202:22;15170:64;:::i;:::-;15160:74;;15116:128;14900:351;;;;:::o;15257:332::-;15378:4;15416:2;15405:9;15401:18;15393:26;;15429:71;15497:1;15486:9;15482:17;15473:6;15429:71;:::i;:::-;15510:72;15578:2;15567:9;15563:18;15554:6;15510:72;:::i;:::-;15257:332;;;;;:::o;15595:169::-;15735:21;15731:1;15723:6;15719:14;15712:45;15595:169;:::o;15770:366::-;15912:3;15933:67;15997:2;15992:3;15933:67;:::i;:::-;15926:74;;16009:93;16098:3;16009:93;:::i;:::-;16127:2;16122:3;16118:12;16111:19;;15770:366;;;:::o;16142:419::-;16308:4;16346:2;16335:9;16331:18;16323:26;;16395:9;16389:4;16385:20;16381:1;16370:9;16366:17;16359:47;16423:131;16549:4;16423:131;:::i;:::-;16415:139;;16142:419;;;:::o;16567:807::-;16816:4;16854:3;16843:9;16839:19;16831:27;;16868:71;16936:1;16925:9;16921:17;16912:6;16868:71;:::i;:::-;16949:72;17017:2;17006:9;17002:18;16993:6;16949:72;:::i;:::-;17031:80;17107:2;17096:9;17092:18;17083:6;17031:80;:::i;:::-;17121;17197:2;17186:9;17182:18;17173:6;17121:80;:::i;:::-;17211:73;17279:3;17268:9;17264:19;17255:6;17211:73;:::i;:::-;17294;17362:3;17351:9;17347:19;17338:6;17294:73;:::i;:::-;16567:807;;;;;;;;;:::o;17380:663::-;17468:6;17476;17484;17533:2;17521:9;17512:7;17508:23;17504:32;17501:119;;;17539:79;;:::i;:::-;17501:119;17659:1;17684:64;17740:7;17731:6;17720:9;17716:22;17684:64;:::i;:::-;17674:74;;17630:128;17797:2;17823:64;17879:7;17870:6;17859:9;17855:22;17823:64;:::i;:::-;17813:74;;17768:129;17936:2;17962:64;18018:7;18009:6;17998:9;17994:22;17962:64;:::i;:::-;17952:74;;17907:129;17380:663;;;;;:::o;18049:332::-;18170:4;18208:2;18197:9;18193:18;18185:26;;18221:71;18289:1;18278:9;18274:17;18265:6;18221:71;:::i;:::-;18302:72;18370:2;18359:9;18355:18;18346:6;18302:72;:::i;:::-;18049:332;;;;;:::o;18387:223::-;18527:34;18523:1;18515:6;18511:14;18504:58;18596:6;18591:2;18583:6;18579:15;18572:31;18387:223;:::o;18616:366::-;18758:3;18779:67;18843:2;18838:3;18779:67;:::i;:::-;18772:74;;18855:93;18944:3;18855:93;:::i;:::-;18973:2;18968:3;18964:12;18957:19;;18616:366;;;:::o;18988:419::-;19154:4;19192:2;19181:9;19177:18;19169:26;;19241:9;19235:4;19231:20;19227:1;19216:9;19212:17;19205:47;19269:131;19395:4;19269:131;:::i;:::-;19261:139;;18988:419;;;:::o;19413:221::-;19553:34;19549:1;19541:6;19537:14;19530:58;19622:4;19617:2;19609:6;19605:15;19598:29;19413:221;:::o;19640:366::-;19782:3;19803:67;19867:2;19862:3;19803:67;:::i;:::-;19796:74;;19879:93;19968:3;19879:93;:::i;:::-;19997:2;19992:3;19988:12;19981:19;;19640:366;;;:::o;20012:419::-;20178:4;20216:2;20205:9;20201:18;20193:26;;20265:9;20259:4;20255:20;20251:1;20240:9;20236:17;20229:47;20293:131;20419:4;20293:131;:::i;:::-;20285:139;;20012:419;;;:::o;20437:224::-;20577:34;20573:1;20565:6;20561:14;20554:58;20646:7;20641:2;20633:6;20629:15;20622:32;20437:224;:::o;20667:366::-;20809:3;20830:67;20894:2;20889:3;20830:67;:::i;:::-;20823:74;;20906:93;20995:3;20906:93;:::i;:::-;21024:2;21019:3;21015:12;21008:19;;20667:366;;;:::o;21039:419::-;21205:4;21243:2;21232:9;21228:18;21220:26;;21292:9;21286:4;21282:20;21278:1;21267:9;21263:17;21256:47;21320:131;21446:4;21320:131;:::i;:::-;21312:139;;21039:419;;;:::o;21464:222::-;21604:34;21600:1;21592:6;21588:14;21581:58;21673:5;21668:2;21660:6;21656:15;21649:30;21464:222;:::o;21692:366::-;21834:3;21855:67;21919:2;21914:3;21855:67;:::i;:::-;21848:74;;21931:93;22020:3;21931:93;:::i;:::-;22049:2;22044:3;22040:12;22033:19;;21692:366;;;:::o;22064:419::-;22230:4;22268:2;22257:9;22253:18;22245:26;;22317:9;22311:4;22307:20;22303:1;22292:9;22288:17;22281:47;22345:131;22471:4;22345:131;:::i;:::-;22337:139;;22064:419;;;:::o;22489:228::-;22629:34;22625:1;22617:6;22613:14;22606:58;22698:11;22693:2;22685:6;22681:15;22674:36;22489:228;:::o;22723:366::-;22865:3;22886:67;22950:2;22945:3;22886:67;:::i;:::-;22879:74;;22962:93;23051:3;22962:93;:::i;:::-;23080:2;23075:3;23071:12;23064:19;;22723:366;;;:::o;23095:419::-;23261:4;23299:2;23288:9;23284:18;23276:26;;23348:9;23342:4;23338:20;23334:1;23323:9;23319:17;23312:47;23376:131;23502:4;23376:131;:::i;:::-;23368:139;;23095:419;;;:::o;23520:297::-;23660:34;23656:1;23648:6;23644:14;23637:58;23729:34;23724:2;23716:6;23712:15;23705:59;23798:11;23793:2;23785:6;23781:15;23774:36;23520:297;:::o;23823:366::-;23965:3;23986:67;24050:2;24045:3;23986:67;:::i;:::-;23979:74;;24062:93;24151:3;24062:93;:::i;:::-;24180:2;24175:3;24171:12;24164:19;;23823:366;;;:::o;24195:419::-;24361:4;24399:2;24388:9;24384:18;24376:26;;24448:9;24442:4;24438:20;24434:1;24423:9;24419:17;24412:47;24476:131;24602:4;24476:131;:::i;:::-;24468:139;;24195:419;;;:::o;24620:175::-;24760:27;24756:1;24748:6;24744:14;24737:51;24620:175;:::o;24801:366::-;24943:3;24964:67;25028:2;25023:3;24964:67;:::i;:::-;24957:74;;25040:93;25129:3;25040:93;:::i;:::-;25158:2;25153:3;25149:12;25142:19;;24801:366;;;:::o;25173:419::-;25339:4;25377:2;25366:9;25362:18;25354:26;;25426:9;25420:4;25416:20;25412:1;25401:9;25397:17;25390:47;25454:131;25580:4;25454:131;:::i;:::-;25446:139;;25173:419;;;:::o;25598:191::-;25638:3;25657:20;25675:1;25657:20;:::i;:::-;25652:25;;25691:20;25709:1;25691:20;:::i;:::-;25686:25;;25734:1;25731;25727:9;25720:16;;25755:3;25752:1;25749:10;25746:36;;;25762:18;;:::i;:::-;25746:36;25598:191;;;;:::o;25795:176::-;25935:28;25931:1;25923:6;25919:14;25912:52;25795:176;:::o;25977:366::-;26119:3;26140:67;26204:2;26199:3;26140:67;:::i;:::-;26133:74;;26216:93;26305:3;26216:93;:::i;:::-;26334:2;26329:3;26325:12;26318:19;;25977:366;;;:::o;26349:419::-;26515:4;26553:2;26542:9;26538:18;26530:26;;26602:9;26596:4;26592:20;26588:1;26577:9;26573:17;26566:47;26630:131;26756:4;26630:131;:::i;:::-;26622:139;;26349:419;;;:::o;26774:233::-;26813:3;26836:24;26854:5;26836:24;:::i;:::-;26827:33;;26882:66;26875:5;26872:77;26869:103;;26952:18;;:::i;:::-;26869:103;26999:1;26992:5;26988:13;26981:20;;26774:233;;;:::o;27013:173::-;27153:25;27149:1;27141:6;27137:14;27130:49;27013:173;:::o;27192:366::-;27334:3;27355:67;27419:2;27414:3;27355:67;:::i;:::-;27348:74;;27431:93;27520:3;27431:93;:::i;:::-;27549:2;27544:3;27540:12;27533:19;;27192:366;;;:::o;27564:419::-;27730:4;27768:2;27757:9;27753:18;27745:26;;27817:9;27811:4;27807:20;27803:1;27792:9;27788:17;27781:47;27845:131;27971:4;27845:131;:::i;:::-;27837:139;;27564:419;;;:::o;27989:194::-;28029:4;28049:20;28067:1;28049:20;:::i;:::-;28044:25;;28083:20;28101:1;28083:20;:::i;:::-;28078:25;;28127:1;28124;28120:9;28112:17;;28151:1;28145:4;28142:11;28139:37;;;28156:18;;:::i;:::-;28139:37;27989:194;;;;:::o;28189:180::-;28237:77;28234:1;28227:88;28334:4;28331:1;28324:15;28358:4;28355:1;28348:15;28375:180;28423:77;28420:1;28413:88;28520:4;28517:1;28510:15;28544:4;28541:1;28534:15;28561:114;28628:6;28662:5;28656:12;28646:22;;28561:114;;;:::o;28681:184::-;28780:11;28814:6;28809:3;28802:19;28854:4;28849:3;28845:14;28830:29;;28681:184;;;;:::o;28871:132::-;28938:4;28961:3;28953:11;;28991:4;28986:3;28982:14;28974:22;;28871:132;;;:::o;29009:108::-;29086:24;29104:5;29086:24;:::i;:::-;29081:3;29074:37;29009:108;;:::o;29123:179::-;29192:10;29213:46;29255:3;29247:6;29213:46;:::i;:::-;29291:4;29286:3;29282:14;29268:28;;29123:179;;;;:::o;29308:113::-;29378:4;29410;29405:3;29401:14;29393:22;;29308:113;;;:::o;29457:732::-;29576:3;29605:54;29653:5;29605:54;:::i;:::-;29675:86;29754:6;29749:3;29675:86;:::i;:::-;29668:93;;29785:56;29835:5;29785:56;:::i;:::-;29864:7;29895:1;29880:284;29905:6;29902:1;29899:13;29880:284;;;29981:6;29975:13;30008:63;30067:3;30052:13;30008:63;:::i;:::-;30001:70;;30094:60;30147:6;30094:60;:::i;:::-;30084:70;;29940:224;29927:1;29924;29920:9;29915:14;;29880:284;;;29884:14;30180:3;30173:10;;29581:608;;;29457:732;;;;:::o;30195:831::-;30458:4;30496:3;30485:9;30481:19;30473:27;;30510:71;30578:1;30567:9;30563:17;30554:6;30510:71;:::i;:::-;30591:80;30667:2;30656:9;30652:18;30643:6;30591:80;:::i;:::-;30718:9;30712:4;30708:20;30703:2;30692:9;30688:18;30681:48;30746:108;30849:4;30840:6;30746:108;:::i;:::-;30738:116;;30864:72;30932:2;30921:9;30917:18;30908:6;30864:72;:::i;:::-;30946:73;31014:3;31003:9;30999:19;30990:6;30946:73;:::i;:::-;30195:831;;;;;;;;:::o;31032:220::-;31172:34;31168:1;31160:6;31156:14;31149:58;31241:3;31236:2;31228:6;31224:15;31217:28;31032:220;:::o;31258:366::-;31400:3;31421:67;31485:2;31480:3;31421:67;:::i;:::-;31414:74;;31497:93;31586:3;31497:93;:::i;:::-;31615:2;31610:3;31606:12;31599:19;;31258:366;;;:::o;31630:419::-;31796:4;31834:2;31823:9;31819:18;31811:26;;31883:9;31877:4;31873:20;31869:1;31858:9;31854:17;31847:47;31911:131;32037:4;31911:131;:::i;:::-;31903:139;;31630:419;;;:::o;32055:94::-;32088:8;32136:5;32132:2;32128:14;32107:35;;32055:94;;;:::o;32155:::-;32194:7;32223:20;32237:5;32223:20;:::i;:::-;32212:31;;32155:94;;;:::o;32255:100::-;32294:7;32323:26;32343:5;32323:26;:::i;:::-;32312:37;;32255:100;;;:::o;32361:157::-;32466:45;32486:24;32504:5;32486:24;:::i;:::-;32466:45;:::i;:::-;32461:3;32454:58;32361:157;;:::o;32524:397::-;32664:3;32679:75;32750:3;32741:6;32679:75;:::i;:::-;32779:2;32774:3;32770:12;32763:19;;32792:75;32863:3;32854:6;32792:75;:::i;:::-;32892:2;32887:3;32883:12;32876:19;;32912:3;32905:10;;32524:397;;;;;:::o;32927:148::-;33029:11;33066:3;33051:18;;32927:148;;;;:::o;33081:214::-;33221:66;33217:1;33209:6;33205:14;33198:90;33081:214;:::o;33301:400::-;33461:3;33482:84;33564:1;33559:3;33482:84;:::i;:::-;33475:91;;33575:93;33664:3;33575:93;:::i;:::-;33693:1;33688:3;33684:11;33677:18;;33301:400;;;:::o;33707:77::-;33744:7;33773:5;33762:16;;33707:77;;;:::o;33790:79::-;33829:7;33858:5;33847:16;;33790:79;;;:::o;33875:157::-;33980:45;34000:24;34018:5;34000:24;:::i;:::-;33980:45;:::i;:::-;33975:3;33968:58;33875:157;;:::o;34038:214::-;34178:66;34174:1;34166:6;34162:14;34155:90;34038:214;:::o;34258:402::-;34418:3;34439:85;34521:2;34516:3;34439:85;:::i;:::-;34432:92;;34533:93;34622:3;34533:93;:::i;:::-;34651:2;34646:3;34642:12;34635:19;;34258:402;;;:::o;34666:929::-;35008:3;35030:148;35174:3;35030:148;:::i;:::-;35023:155;;35188:75;35259:3;35250:6;35188:75;:::i;:::-;35288:2;35283:3;35279:12;35272:19;;35301:75;35372:3;35363:6;35301:75;:::i;:::-;35401:2;35396:3;35392:12;35385:19;;35421:148;35565:3;35421:148;:::i;:::-;35414:155;;35586:3;35579:10;;34666:929;;;;;:::o;35601:177::-;35741:29;35737:1;35729:6;35725:14;35718:53;35601:177;:::o;35784:366::-;35926:3;35947:67;36011:2;36006:3;35947:67;:::i;:::-;35940:74;;36023:93;36112:3;36023:93;:::i;:::-;36141:2;36136:3;36132:12;36125:19;;35784:366;;;:::o;36156:419::-;36322:4;36360:2;36349:9;36345:18;36337:26;;36409:9;36403:4;36399:20;36395:1;36384:9;36380:17;36373:47;36437:131;36563:4;36437:131;:::i;:::-;36429:139;;36156:419;;;:::o

Swarm Source

ipfs://970be71254eea8191ddabf026be1c83da8234121beddf884e46159c1fc8b4110

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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