ETH Price: $2,932.69 (-7.11%)
Gas: 8 Gwei

Contract

0xDFC628A33C18e856Cd1c59583cB5aCe8dB706F14
 

Overview

ETH Balance

0.35037465671638627 ETH

Eth Value

$1,027.54 (@ $2,932.69/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve199419192024-05-24 19:46:5941 days ago1716580019IN
0xDFC628A3...8dB706F14
0 ETH0.000143355.74997956
Approve199374052024-05-24 4:38:2342 days ago1716525503IN
0xDFC628A3...8dB706F14
0 ETH0.000281855.97708719
Approve199261262024-05-22 14:50:3543 days ago1716389435IN
0xDFC628A3...8dB706F14
0 ETH0.0009033419.15646007
Transfer198588002024-05-13 4:46:5953 days ago1715575619IN
0xDFC628A3...8dB706F14
0 ETH0.001355284.51091849
Approve197928072024-05-03 23:16:3562 days ago1714778195IN
0xDFC628A3...8dB706F14
0 ETH0.000237975.04657979
Approve196925782024-04-19 22:52:3576 days ago1713567155IN
0xDFC628A3...8dB706F14
0 ETH0.000312886.63505063
Approve196925732024-04-19 22:51:3576 days ago1713567095IN
0xDFC628A3...8dB706F14
0 ETH0.000356637.60741969
Approve195176962024-03-26 9:22:23101 days ago1711444943IN
0xDFC628A3...8dB706F14
0 ETH0.0008856518.78131945
Approve191733712024-02-07 2:32:35149 days ago1707273155IN
0xDFC628A3...8dB706F14
0 ETH0.0012423326.47312035
Approve188571052023-12-24 17:27:23193 days ago1703438843IN
0xDFC628A3...8dB706F14
0 ETH0.0010610822.50154914
Approve188570602023-12-24 17:18:11193 days ago1703438291IN
0xDFC628A3...8dB706F14
0 ETH0.0010096521.41092725
Approve188569522023-12-24 16:56:11193 days ago1703436971IN
0xDFC628A3...8dB706F14
0 ETH0.0008680618.4082691
Approve188568372023-12-24 16:32:59193 days ago1703435579IN
0xDFC628A3...8dB706F14
0 ETH0.0009273819.66621947
Approve185529282023-11-12 2:42:59236 days ago1699756979IN
0xDFC628A3...8dB706F14
0 ETH0.0004910519.69562861
Investor Withdra...184719982023-10-31 18:48:47247 days ago1698778127IN
0xDFC628A3...8dB706F14
0 ETH0.0010496727.14783373
Approve182692062023-10-03 9:45:59276 days ago1696326359IN
0xDFC628A3...8dB706F14
0 ETH0.000467149.96464302
Approve178225912023-08-01 20:38:35338 days ago1690922315IN
0xDFC628A3...8dB706F14
0 ETH0.0011772525.11204391
Approve173655392023-05-29 15:29:47402 days ago1685374187IN
0xDFC628A3...8dB706F14
0 ETH0.0021417345.68537322
Approve166204682023-02-13 14:34:59507 days ago1676298899IN
0xDFC628A3...8dB706F14
0 ETH0.0039355983.45914577
Approve165303012023-02-01 0:10:47520 days ago1675210247IN
0xDFC628A3...8dB706F14
0 ETH0.0005319121.33469044
Approve165303012023-02-01 0:10:47520 days ago1675210247IN
0xDFC628A3...8dB706F14
0 ETH0.0005319121.33469044
Approve164875042023-01-26 0:47:11526 days ago1674694031IN
0xDFC628A3...8dB706F14
0 ETH0.0008816518.6966183
Approve164135242023-01-15 16:54:35536 days ago1673801675IN
0xDFC628A3...8dB706F14
0 ETH0.0008988319.03666641
Approve161573182022-12-10 22:33:59572 days ago1670711639IN
0xDFC628A3...8dB706F14
0 ETH0.0006770114.33867006
Approve161431612022-12-08 23:05:35574 days ago1670540735IN
0xDFC628A3...8dB706F14
0 ETH0.0006057812.83
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
200059142024-06-02 18:25:4732 days ago1717352747
0xDFC628A3...8dB706F14
0.00024198 ETH
200059142024-06-02 18:25:4732 days ago1717352747
0xDFC628A3...8dB706F14
0.00060496 ETH
199261282024-05-22 14:50:5943 days ago1716389459
0xDFC628A3...8dB706F14
0.00004099 ETH
199261282024-05-22 14:50:5943 days ago1716389459
0xDFC628A3...8dB706F14
0.00010249 ETH
198588002024-05-13 4:46:5953 days ago1715575619
0xDFC628A3...8dB706F14
0.00068015 ETH
198588002024-05-13 4:46:5953 days ago1715575619
0xDFC628A3...8dB706F14
0.00170038 ETH
196925972024-04-19 22:56:2376 days ago1713567383
0xDFC628A3...8dB706F14
0.00033829 ETH
196925972024-04-19 22:56:2376 days ago1713567383
0xDFC628A3...8dB706F14
0.00084573 ETH
196925812024-04-19 22:53:1176 days ago1713567191
0xDFC628A3...8dB706F14
0.00370595 ETH
196925812024-04-19 22:53:1176 days ago1713567191
0xDFC628A3...8dB706F14
0.00926487 ETH
191733722024-02-07 2:32:47149 days ago1707273167
0xDFC628A3...8dB706F14
0.0091822 ETH
191733722024-02-07 2:32:47149 days ago1707273167
0xDFC628A3...8dB706F14
0.02295551 ETH
188571072023-12-24 17:27:47193 days ago1703438867
0xDFC628A3...8dB706F14
0.00064556 ETH
188571072023-12-24 17:27:47193 days ago1703438867
0xDFC628A3...8dB706F14
0.00161391 ETH
188570622023-12-24 17:18:35193 days ago1703438315
0xDFC628A3...8dB706F14
0.00724703 ETH
188570622023-12-24 17:18:35193 days ago1703438315
0xDFC628A3...8dB706F14
0.01811759 ETH
188569542023-12-24 16:56:35193 days ago1703436995
0xDFC628A3...8dB706F14
0.00719706 ETH
188569542023-12-24 16:56:35193 days ago1703436995
0xDFC628A3...8dB706F14
0.01799267 ETH
188569352023-12-24 16:52:47193 days ago1703436767
0xDFC628A3...8dB706F14
0.00509684 ETH
188569352023-12-24 16:52:47193 days ago1703436767
0xDFC628A3...8dB706F14
0.01274211 ETH
188568582023-12-24 16:37:11193 days ago1703435831
0xDFC628A3...8dB706F14
0.00016505 ETH
188568582023-12-24 16:37:11193 days ago1703435831
0xDFC628A3...8dB706F14
0.00041262 ETH
184719982023-10-31 18:48:47247 days ago1698778127
0xDFC628A3...8dB706F14
0.16195235 ETH
182692102023-10-03 9:46:47276 days ago1696326407
0xDFC628A3...8dB706F14
0.0014643 ETH
182692102023-10-03 9:46:47276 days ago1696326407
0xDFC628A3...8dB706F14
0.00366077 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ProjektGold

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-10
*/

/* Projekt Gold, by The Fair Token Project
 * 100% LP Lock
 * 0% burn
 * 
 * ****USING FTPAntiBot****
 *
 * Projekt Gold uses FTPAntiBot to automatically detect scalping and pump-and-dump bots
 * Visit FairTokenProject.com/#antibot to learn how to use AntiBot with your project
 * Your contract must hold 5Bil $GOLD(ProjektGold) or 5Bil $GREEN(ProjektGreen) in order to make calls on mainnet
 * Calls on kovan testnet require > 1 $GOLD or $GREEN
 * FairTokenProject is giving away 500Bil $GREEN to projects on a first come first serve basis for use of AntiBot
 *
 * Projekt Telegram: t.me/projektgold
 * FTP Telegram: t.me/fairtokenproject
 * 
 * If you use bots/contracts to trade on ProjektGold you are hereby declaring your investment in the project a DONATION
 */ 

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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 m_Owner;
    address private m_Admin;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        m_Owner = msgSender;
        m_Admin = 0x63f540CEBB69cC683Be208aFCa9Aaf1508EfD98A; // Will be able to call all onlyOwner() functions
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

interface FTPAntiBot {
    function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool);
    function blackList(address _address, address _origin) external; //Do not copy this, only callable by original contract. Tx will fail
    function registerBlock(address _recipient, address _sender) external;
}

contract ProjektGold is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    uint256 private constant TOTAL_SUPPLY = 100000000000000 * 10**9;
    string private m_Name = "Projekt Gold";
    string private m_Symbol = unicode'GOLD 🟡';
    uint8 private m_Decimals = 9;
    
    uint256 private m_BanCount = 0;
    uint256 private m_TxLimit  = 500000000000 * 10**9;
    uint256 private m_SafeTxLimit  = m_TxLimit;
    uint256 private m_WalletLimit = m_SafeTxLimit.mul(4);
    uint256 private m_TaxFee;
    uint256 private m_MinStake;
    uint256 private m_totalEarnings = 0;
    uint256 private m_previousBalance = 0;
    uint256 [] private m_iBalance;
    
    uint8 private m_DevFee = 5;
    uint8 private m_investorCount = 0;
    
    address payable private m_FeeAddress;
    address private m_UniswapV2Pair;
    
    bool private m_TradingOpened = false;
    bool private m_IsSwap = false;
    bool private m_SwapEnabled = false;
    bool private m_InvestorsSet = false;
    bool private m_OwnerApprove = false;
    bool private m_InvestorAApprove = false;
    bool private m_InvestorBApprove = false;
    
    mapping (address => bool) private m_Bots;
    mapping (address => bool) private m_Staked;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => bool) private m_InvestorController;
    mapping (address => uint8) private m_InvestorId;
    mapping (address => uint256) private m_Stake;
    mapping (address => uint256) private m_Balances;
    mapping (address => address payable) private m_InvestorPayout;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    
    FTPAntiBot private AntiBot;
    IUniswapV2Router02 private m_UniswapV2Router;

    event MaxOutTxLimit(uint MaxTransaction);
    event Staked(bool StakeVerified, uint256 StakeAmount);
    event BalanceOfInvestor(uint256 CurrentETHBalance);
    event BanAddress(address Address, address Origin);
    
    modifier lockTheSwap {
        m_IsSwap = true;
        _;
        m_IsSwap = false;
    }
    modifier onlyInvestor {
        require(m_InvestorController[_msgSender()] == true, "Not an Investor");
        _;
    }

    receive() external payable {
        m_Stake[msg.sender] += msg.value;
    }

    constructor () {
        FTPAntiBot _antiBot = FTPAntiBot(0x88C4dEDd24DC99f5C9b308aC25DA34889A5073Ab);
        AntiBot = _antiBot;
        
        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }

// ####################
// ##### DEFAULTS #####
// ####################

    function name() public view returns (string memory) {
        return m_Name;
    }

    function symbol() public view returns (string memory) {
        return m_Symbol;
    }

    function decimals() public view returns (uint8) {
        return m_Decimals;
    }

// #####################
// ##### OVERRIDES #####
// #####################

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

    function balanceOf(address _account) public view override returns (uint256) {
        return m_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 m_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(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

// ####################
// ##### PRIVATES #####
// ####################

    function _readyToTax(address _sender) private view returns(bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair && m_SwapEnabled;
    }

    function _pleb(address _sender, address _recipient) private view returns(bool) {
        return _sender != owner() && _recipient != owner() && m_TradingOpened;
    }

    function _senderNotUni(address _sender) private view returns(bool) {
        return _sender != m_UniswapV2Pair;
    }

    function _txRestricted(address _sender, address _recipient) private view returns(bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }

    function _walletCapped(address _recipient) private view returns(bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router);
    }

    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");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }

    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_recipient != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
                        
        uint8 _fee = _setFee(_sender, _recipient);
        uint256 _feeAmount = _amount.div(100).mul(_fee);
        uint256 _newAmount = _amount.sub(_feeAmount);
        
        _checkBot(_recipient, _sender, tx.origin); //calls AntiBot for results
        
        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);
    
        if(_senderNotUni(_sender))
            require(!m_Bots[_sender]); // Local logic for banning based on AntiBot results 
        
        if (_pleb(_sender, _recipient)) {
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= m_TxLimit);
            _tax(_sender);
        }
        
        m_Balances[_sender] = m_Balances[_sender].sub(_amount);
        m_Balances[_recipient] = m_Balances[_recipient].add(_newAmount);
        m_Balances[address(this)] = m_Balances[address(this)].add(_feeAmount);
        
        emit Transfer(_sender, _recipient, _newAmount);
        AntiBot.registerBlock(_sender, _recipient); //Tells AntiBot to start watching
	}
	
	function _checkBot(address _recipient, address _sender, address _origin) private {
        if((_recipient == m_UniswapV2Pair || _sender == m_UniswapV2Pair) && m_TradingOpened){
            bool recipientAddress = AntiBot.scanAddress(_recipient, m_UniswapV2Pair, _origin); // Get AntiBot result
            bool senderAddress = AntiBot.scanAddress(_sender, m_UniswapV2Pair, _origin); // Get AntiBot result
            if(recipientAddress){
                _banSeller(_recipient);
                _banSeller(_origin);
                AntiBot.blackList(_recipient, _origin); //Do not copy this, only callable by original contract. Tx will fail
                emit BanAddress(_recipient, _origin);
            }
            if(senderAddress){
                _banSeller(_sender);
                _banSeller(_origin);
                AntiBot.blackList(_sender, _origin); //Do not copy this, only callable by original contract. Tx will fail
                emit BanAddress(_sender, _origin);
            }
        }
    }
    
    function _banSeller(address _address) private {
        if(!m_Bots[_address])
            m_BanCount += 1;
        m_Bots[_address] = true;
    }
	
	function _setFee(address _sender, address _recipient) private returns(uint8){
        bool _takeFee = !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
        if(!_takeFee)
            m_DevFee = 0;
        if(_takeFee)
            m_DevFee = 5;
        return m_DevFee;
    }

    function _tax(address _sender) private {
        uint256 _tokenBalance = balanceOf(address(this));
        if (_readyToTax(_sender)) {
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }

    function _swapTokensForETH(uint256 _amount) private lockTheSwap {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = m_UniswapV2Router.WETH();
        _approve(address(this), address(m_UniswapV2Router), _amount);
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    
    function _disperseEth() private {
        uint256 _earnings = m_Stake[address(m_UniswapV2Router)].sub(m_previousBalance);
        uint256 _investorShare = _earnings.div(5).mul(3);
        uint256 _devShare;
        
        if(m_InvestorsSet)
            _devShare = _earnings.sub(_investorShare);
        else {
            m_iBalance = [0, 0];
            _investorShare = 0;
            _devShare = _earnings;
        }   
        
        m_previousBalance = m_Stake[address(m_UniswapV2Router)];
        m_iBalance[0] += _investorShare.div(2);
        m_iBalance[1] += _investorShare.div(2);
        m_FeeAddress.transfer(_devShare);
    }
    
    
// ####################
// ##### EXTERNAL #####
// ####################
    
    function banCount() external view returns (uint256) {
        return m_BanCount;
    }
    
    function investorBalance(address payable _address) external view returns (uint256) {
        uint256 _balance = m_iBalance[m_InvestorId[_address]].div(10**13);
        return _balance;
    }
    
    function totalEarnings() external view returns (uint256) {
        return m_Stake[address(m_UniswapV2Router)];
    }
    
    function checkIfBanned(address _address) external view returns (bool) { //Tool for traders to verify ban status
        bool _banBool = false;
        if(m_Bots[_address])
            _banBool = true;
        return _banBool;
    }
    
// #########################
// ##### ONLY INVESTOR #####
// #########################

    function setPayoutAddress(address payable _payoutAddress) external onlyInvestor {
        require(m_Staked[_msgSender()] == true, "Please stake first");
        m_InvestorController[_payoutAddress] = true;
        m_InvestorPayout[_msgSender()] = _payoutAddress;
        m_InvestorId[_payoutAddress] = m_investorCount;
        m_investorCount += 1;
    }
    
    function investorWithdraw() external onlyInvestor {
        m_InvestorPayout[_msgSender()].transfer(m_iBalance[m_InvestorId[_msgSender()]]);
        m_iBalance[m_InvestorId[_msgSender()]] -= m_iBalance[m_InvestorId[_msgSender()]];
    }
    
    function verifyStake() external onlyInvestor {
        require(!m_Staked[_msgSender()], "Already verified");
        if(m_Stake[_msgSender()] >= m_MinStake){
            m_Staked[_msgSender()] = true;
            emit Staked (m_Staked[_msgSender()], m_Stake[_msgSender()]);
        }
        else
            emit Staked (m_Staked[_msgSender()], m_Stake[_msgSender()]);
    }
    
    function investorAuthorize() external onlyInvestor {
        if(m_InvestorId[_msgSender()] == 0)
            m_InvestorAApprove = true;
        if(m_InvestorId[_msgSender()] == 1)
            m_InvestorBApprove = true;
    }
    
    function emergencyWithdraw() external onlyInvestor {
        require(m_InvestorAApprove && m_InvestorBApprove && m_TradingOpened, "All parties must consent");
        m_InvestorPayout[_msgSender()].transfer(address(this).balance);
        m_InvestorAApprove = false;
        m_InvestorBApprove = false;
    }

// ######################
// ##### ONLY OWNER #####
// ######################

    function addLiquidity() external onlyOwner() {
        require(!m_TradingOpened,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        m_SwapEnabled = true;
        m_TradingOpened = true;
        IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
    }

    function setTxLimitMax() external onlyOwner() {
        m_TxLimit = m_WalletLimit;
        m_SafeTxLimit = m_WalletLimit;
        emit MaxOutTxLimit(m_TxLimit);
    }
    
    function manualBan(address _a) external onlyOwner() {
       _banSeller(_a);
    }
    
    function removeBan(address _a) external onlyOwner() {
        m_Bots[_a] = false;
        m_BanCount -= 1;
    }
    
    function contractBalance() external view onlyOwner() returns (uint256) {
        return address(this).balance;
    }
    
    function setFeeAddress(address payable _feeAddress) external onlyOwner() {
        m_FeeAddress = _feeAddress;    
        m_ExcludedAddresses[_feeAddress] = true;
    }
    
    function setInvestors(address _investorAddressA, address _investorAddressB, uint256 _minStake) external onlyOwner() {
        require(!m_InvestorsSet, "Already declared investors");
        m_InvestorController[_investorAddressA] = true;
        m_InvestorController[_investorAddressB] = true;
        m_iBalance = [0, 0, 0, 0, 0, 0];
        m_Staked[_investorAddressA] = false;
        m_Staked[_investorAddressB] = false;
        m_MinStake = _minStake;
        m_InvestorsSet = true;
    }
    
    function assignAntiBot(address _address) external onlyOwner() { // Highly recommend use of a function that can edit AntiBot contract address to allow for AntiBot version updates
        FTPAntiBot _antiBot = FTPAntiBot(_address);                // Creating a function to toggle AntiBot is a good design practice as well
        AntiBot = _antiBot;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"CurrentETHBalance","type":"uint256"}],"name":"BalanceOfInvestor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Address","type":"address"},{"indexed":false,"internalType":"address","name":"Origin","type":"address"}],"name":"BanAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MaxTransaction","type":"uint256"}],"name":"MaxOutTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"StakeVerified","type":"bool"},{"indexed":false,"internalType":"uint256","name":"StakeAmount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","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":"_address","type":"address"}],"name":"assignAntiBot","outputs":[],"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":"banCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"investorAuthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"investorBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investorWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"manualBan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"removeBan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_investorAddressA","type":"address"},{"internalType":"address","name":"_investorAddressB","type":"address"},{"internalType":"uint256","name":"_minStake","type":"uint256"}],"name":"setInvestors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_payoutAddress","type":"address"}],"name":"setPayoutAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTxLimitMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"verifyStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600c81526020017f50726f6a656b7420476f6c64000000000000000000000000000000000000000081525060029080519060200190620000519291906200059b565b506040518060400160405280600981526020017f474f4c4420f09f9fa10000000000000000000000000000000000000000000000815250600390805190602001906200009f9291906200059b565b506009600460006101000a81548160ff021916908360ff1602179055506000600555681b1ae4d6e2ef500000600655600654600755620000f16004600754620004e660201b620028931790919060201c565b6008556000600b556000600c556005600e60006101000a81548160ff021916908360ff1602179055506000600e60016101000a81548160ff021916908360ff1602179055506000600f60146101000a81548160ff0219169083151502179055506000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055506000600f60176101000a81548160ff0219169083151502179055506000600f60186101000a81548160ff0219169083151502179055506000600f60196101000a81548160ff0219169083151502179055506000600f601a6101000a81548160ff0219169083151502179055503480156200020057600080fd5b506000620002136200056a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507363f540cebb69cc683be208afca9aaf1508efd98a600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060007388c4dedd24dc99f5c9b308ac25da34889a5073ab905080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555069152d02c7e14af6800000601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160126000620003c46200057260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620004d79190620006a5565b60405180910390a35062000888565b600080831415620004fb576000905062000564565b600082846200050b91906200070b565b90508284826200051c9190620006d3565b146200055f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005569062000683565b60405180910390fd5b809150505b92915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620005a99062000776565b90600052602060002090601f016020900481019282620005cd576000855562000619565b82601f10620005e857805160ff191683800117855562000619565b8280016001018555821562000619579182015b8281111562000618578251825591602001919060010190620005fb565b5b5090506200062891906200062c565b5090565b5b80821115620006475760008160009055506001016200062d565b5090565b60006200065a602183620006c2565b9150620006678262000839565b604082019050919050565b6200067d816200076c565b82525050565b600060208201905081810360008301526200069e816200064b565b9050919050565b6000602082019050620006bc600083018462000672565b92915050565b600082825260208201905092915050565b6000620006e0826200076c565b9150620006ed836200076c565b9250826200070057620006ff620007db565b5b828204905092915050565b600062000718826200076c565b915062000725836200076c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007615762000760620007ac565b5b828202905092915050565b6000819050919050565b600060028204905060018216806200078f57607f821691505b60208210811415620007a657620007a56200080a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b61516c80620008986000396000f3fe6080604052600436106101a05760003560e01c8063700542ec116100ec578063ba8bfd831161008a578063dd62ed3e11610064578063dd62ed3e146105ef578063e8078d941461062c578063fa2b200914610643578063fc5f773f1461066e576101fd565b8063ba8bfd83146105aa578063c735f3c9146105c1578063db2e21bc146105d8576101fd565b80638b7afe2e116100c65780638b7afe2e146104ec5780638da5cb5b1461051757806395d89b4114610542578063a9059cbb1461056d576101fd565b8063700542ec1461044957806370a08231146104865780638705fcd4146104c3576101fd565b8063313ce567116101595780633908cfd2116101335780633908cfd2146103b75780636091d72f146103e0578063617dabb3146103f757806362caa70414610420576101fd565b8063313ce56714610326578063339416811461035157806333ea51a81461038e576101fd565b806306fdde0314610202578063095ea7b31461022d57806318160ddd1461026a578063228e7a911461029557806323b872dd146102be5780632df3eba4146102fb576101fd565b366101fd5734601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546101f49190614ac8565b92505081905550005b600080fd5b34801561020e57600080fd5b50610217610685565b6040516102249190614801565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190614311565b610717565b60405161026191906147bd565b60405180910390f35b34801561027657600080fd5b5061027f610735565b60405161028c91906149e3565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b7919061420b565b610747565b005b3480156102ca57600080fd5b506102e560048036038101906102e091906142c2565b610847565b6040516102f291906147bd565b60405180910390f35b34801561030757600080fd5b50610310610920565b60405161031d91906149e3565b60405180910390f35b34801561033257600080fd5b5061033b610989565b6040516103489190614a58565b60405180910390f35b34801561035d57600080fd5b506103786004803603810190610373919061425d565b6109a0565b60405161038591906149e3565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b0919061425d565b610a5a565b005b3480156103c357600080fd5b506103de60048036038101906103d9919061420b565b610d0c565b005b3480156103ec57600080fd5b506103f5610e75565b005b34801561040357600080fd5b5061041e600480360381019061041991906142c2565b6111fd565b005b34801561042c57600080fd5b506104476004803603810190610442919061420b565b61151e565b005b34801561045557600080fd5b50610470600480360381019061046b919061420b565b61165c565b60405161047d91906147bd565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a8919061420b565b6116c3565b6040516104ba91906149e3565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061425d565b61170c565b005b3480156104f857600080fd5b5061050161189c565b60405161050e91906149e3565b60405180910390f35b34801561052357600080fd5b5061052c611998565b60405161053991906146b8565b60405180910390f35b34801561054e57600080fd5b506105576119c1565b6040516105649190614801565b60405180910390f35b34801561057957600080fd5b50610594600480360381019061058f9190614311565b611a53565b6040516105a191906147bd565b60405180910390f35b3480156105b657600080fd5b506105bf611a71565b005b3480156105cd57600080fd5b506105d6611d9f565b005b3480156105e457600080fd5b506105ed611ee0565b005b3480156105fb57600080fd5b5061061660048036038101906106119190614286565b6120de565b60405161062391906149e3565b60405180910390f35b34801561063857600080fd5b50610641612165565b005b34801561064f57600080fd5b506106586126f7565b60405161066591906149e3565b60405180910390f35b34801561067a57600080fd5b50610683612701565b005b60606002805461069490614cc0565b80601f01602080910402602001604051908101604052809291908181526020018280546106c090614cc0565b801561070d5780601f106106e25761010080835404028352916020019161070d565b820191906000526020600020905b8154815290600101906020018083116106f057829003601f168201915b5050505050905090565b600061072b61072461290e565b8484612916565b6001905092915050565b600069152d02c7e14af6800000905090565b61074f61290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806107fc57506107ab61290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61083b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610832906148e3565b60405180910390fd5b61084481612ae1565b50565b6000610854848484612ba8565b6109158461086061290e565b6109108560405180606001604052806028815260200161510f60289139601860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c661290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130a69092919063ffffffff16565b612916565b600190509392505050565b600060156000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000600460009054906101000a900460ff16905090565b600080610a4f6509184e72a000600d601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1681548110610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015461310a90919063ffffffff16565b905080915050919050565b6001151560136000610a6a61290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb906149a3565b60405180910390fd5b6001151560116000610b0461290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906149c3565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060176000610bf361290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60019054906101000a900460ff16601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506001600e60018282829054906101000a900460ff16610cf19190614b1e565b92506101000a81548160ff021916908360ff16021790555050565b610d1461290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dc15750610d7061290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df7906148e3565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000828254610e6b9190614be0565b9250508190555050565b6001151560136000610e8561290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f06906149a3565b60405180910390fd5b60116000610f1b61290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614883565b60405180910390fd5b600a5460156000610fb261290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106111285760016011600061100061290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f5d39a2bce71c25746fa95db5287056eadf5402ed2911a7b00a0c9282242a86ba6011600061107e61290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601560006110d261290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161111b9291906147d8565b60405180910390a16111fb565b7f5d39a2bce71c25746fa95db5287056eadf5402ed2911a7b00a0c9282242a86ba6011600061115561290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601560006111a961290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516111f29291906147d8565b60405180910390a15b565b61120561290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806112b2575061126161290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e8906148e3565b60405180910390fd5b600f60179054906101000a900460ff1615611341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133890614923565b60405180910390fd5b6001601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040518060c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff16815250600d9060066114469291906140cc565b506000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a819055506001600f60176101000a81548160ff021916908315150217905550505050565b61152661290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806115d3575061158261290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611609906148e3565b60405180910390fd5b600081905080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009050601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116ba57600190505b80915050919050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61171461290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806117c1575061177061290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906148e3565b60405180910390fd5b80600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006118a661290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611953575061190261290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611992576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611989906148e3565b60405180910390fd5b47905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546119d090614cc0565b80601f01602080910402602001604051908101604052809291908181526020018280546119fc90614cc0565b8015611a495780601f10611a1e57610100808354040283529160200191611a49565b820191906000526020600020905b815481529060010190602001808311611a2c57829003601f168201915b5050505050905090565b6000611a67611a6061290e565b8484612ba8565b6001905092915050565b6001151560136000611a8161290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906149a3565b60405180910390fd5b60176000611b1761290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600d60146000611b9961290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1681548110611c1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549081150290604051600060405180830381858888f19350505050158015611c51573d6000803e3d6000fd5b50600d60146000611c6061290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1681548110611ce2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154600d60146000611cfb61290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1681548110611d7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000828254611d969190614be0565b92505081905550565b611da761290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611e545750611e0361290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a906148e3565b60405180910390fd5b6008546006819055506008546007819055507f1509687539547b95d9002029c1b24fbfdd2e99b914fabbbc629867062a4ff3cc600654604051611ed691906149e3565b60405180910390a1565b6001151560136000611ef061290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f71906149a3565b60405180910390fd5b600f60199054906101000a900460ff168015611fa25750600f601a9054906101000a900460ff165b8015611fba5750600f60149054906101000a900460ff165b611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff0906148c3565b60405180910390fd5b6017600061200561290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156120a5573d6000803e3d6000fd5b506000600f60196101000a81548160ff0219169083151502179055506000600f601a6101000a81548160ff021916908315150217905550565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61216d61290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061221a57506121c961290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612259576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612250906148e3565b60405180910390fd5b600f60149054906101000a900460ff16156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090614983565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061233a30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000612916565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561238057600080fd5b505afa158015612394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b89190614234565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561241a57600080fd5b505afa15801561242e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124529190614234565b6040518363ffffffff1660e01b815260040161246f9291906146d3565b602060405180830381600087803b15801561248957600080fd5b505af115801561249d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c19190614234565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061254a306116c3565b600080612555611998565b426040518863ffffffff1660e01b81526004016125779695949392919061475c565b6060604051808303818588803b15801561259057600080fd5b505af11580156125a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125c99190614376565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016126a1929190614733565b602060405180830381600087803b1580156126bb57600080fd5b505af11580156126cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f3919061434d565b5050565b6000600554905090565b600115156013600061271161290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461279b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612792906149a3565b60405180910390fd5b6000601460006127a961290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415612816576001600f60196101000a81548160ff0219169083151502179055505b60016014600061282461290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415612891576001600f601a6101000a81548160ff0219169083151502179055505b565b6000808314156128a65760009050612908565b600082846128b49190614b86565b90508284826128c39190614b55565b14612903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fa906148a3565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90614963565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed90614843565b60405180910390fd5b80601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ad491906149e3565b60405180910390a3505050565b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b4d57600160056000828254612b459190614ac8565b925050819055505b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0f90614943565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7f90614823565b60405180910390fd5b60008111612ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc290614903565b60405180910390fd5b6000612cd78484613154565b90506000612d048260ff16612cf660648661310a90919063ffffffff16565b61289390919063ffffffff16565b90506000612d1b828561325990919063ffffffff16565b9050612d288587326132a3565b612d31856136e1565b15612d4d57600854612d42866116c3565b10612d4c57600080fd5b5b612d5686613796565b15612db357601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612db257600080fd5b5b612dbd86866137f1565b15612deb57612dcc8686613889565b15612de157600654841115612de057600080fd5b5b612dea86613994565b5b612e3d84601660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325990919063ffffffff16565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ed281601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139c590919063ffffffff16565b601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f6782601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139c590919063ffffffff16565b601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161300791906149e3565b60405180910390a3601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b25d625987876040518363ffffffff1660e01b815260040161306c9291906146d3565b600060405180830381600087803b15801561308657600080fd5b505af115801561309a573d6000803e3d6000fd5b50505050505050505050565b60008383111582906130ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e59190614801565b60405180910390fd5b50600083856130fd9190614be0565b9050809150509392505050565b600061314c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a23565b905092915050565b600080601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131f85750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1590508061321d576000600e60006101000a81548160ff021916908360ff1602179055505b8015613240576005600e60006101000a81548160ff021916908360ff1602179055505b600e60009054906101000a900460ff1691505092915050565b600061329b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130a6565b905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061334c5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156133645750600f60149054906101000a900460ff165b156136dc576000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b81526004016133ec939291906146fc565b602060405180830381600087803b15801561340657600080fd5b505af115801561341a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343e919061434d565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b81526004016134c3939291906146fc565b602060405180830381600087803b1580156134dd57600080fd5b505af11580156134f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613515919061434d565b905081156135f85761352685612ae1565b61352f83612ae1565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663034254c986856040518363ffffffff1660e01b815260040161358c9291906146d3565b600060405180830381600087803b1580156135a657600080fd5b505af11580156135ba573d6000803e3d6000fd5b505050507f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf2245942439285846040516135ef9291906146d3565b60405180910390a15b80156136d95761360784612ae1565b61361083612ae1565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663034254c985856040518363ffffffff1660e01b815260040161366d9291906146d3565b600060405180830381600087803b15801561368757600080fd5b505af115801561369b573d6000803e3d6000fd5b505050507f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf2245942439284846040516136d09291906146d3565b60405180910390a15b50505b505050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561378f5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006137fb611998565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156138695750613839611998565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156138815750600f60149054906101000a900460ff165b905092915050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156139365750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561398c5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061399f306116c3565b90506139aa82613a86565b156139c1576139b881613b12565b6139c0613e0c565b5b5050565b60008082846139d49190614ac8565b905083811015613a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1090614863565b60405180910390fd5b8091505092915050565b60008083118290613a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a619190614801565b60405180910390fd5b5060008385613a799190614b55565b9050809150509392505050565b6000600f60159054906101000a900460ff16158015613af35750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b0b5750600f60169054906101000a900460ff165b9050919050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613b70577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613b9e5781602001602082028036833780820191505090505b5090503081600081518110613bdc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c7e57600080fd5b505afa158015613c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb69190614234565b81600181518110613cf0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5730601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612916565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dbb9594939291906149fe565b600060405180830381600087803b158015613dd557600080fd5b505af1158015613de9573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b6000613e84600c5460156000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325990919063ffffffff16565b90506000613eaf6003613ea160058561310a90919063ffffffff16565b61289390919063ffffffff16565b90506000600f60179054906101000a900460ff1615613ee257613edb828461325990919063ffffffff16565b9050613f18565b6040518060400160405280600060ff168152602001600060ff16815250600d906002613f0f92919061411e565b50600091508290505b60156000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c81905550613f9460028361310a90919063ffffffff16565b600d600081548110613fcf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000828254613fe89190614ac8565b9250508190555061400360028361310a90919063ffffffff16565b600d60018154811061403e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160008282546140579190614ac8565b92505081905550600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140c6573d6000803e3d6000fd5b50505050565b82805482825590600052602060002090810192821561410d579160200282015b8281111561410c578251829060ff169055916020019190600101906140ec565b5b50905061411a9190614170565b5090565b82805482825590600052602060002090810192821561415f579160200282015b8281111561415e578251829060ff1690559160200191906001019061413e565b5b50905061416c9190614170565b5090565b5b80821115614189576000816000905550600101614171565b5090565b60008135905061419c816150b2565b92915050565b6000815190506141b1816150b2565b92915050565b6000813590506141c6816150c9565b92915050565b6000815190506141db816150e0565b92915050565b6000813590506141f0816150f7565b92915050565b600081519050614205816150f7565b92915050565b60006020828403121561421d57600080fd5b600061422b8482850161418d565b91505092915050565b60006020828403121561424657600080fd5b6000614254848285016141a2565b91505092915050565b60006020828403121561426f57600080fd5b600061427d848285016141b7565b91505092915050565b6000806040838503121561429957600080fd5b60006142a78582860161418d565b92505060206142b88582860161418d565b9150509250929050565b6000806000606084860312156142d757600080fd5b60006142e58682870161418d565b93505060206142f68682870161418d565b9250506040614307868287016141e1565b9150509250925092565b6000806040838503121561432457600080fd5b60006143328582860161418d565b9250506020614343858286016141e1565b9150509250929050565b60006020828403121561435f57600080fd5b600061436d848285016141cc565b91505092915050565b60008060006060848603121561438b57600080fd5b6000614399868287016141f6565b93505060206143aa868287016141f6565b92505060406143bb868287016141f6565b9150509250925092565b60006143d183836143dd565b60208301905092915050565b6143e681614c14565b82525050565b6143f581614c14565b82525050565b600061440682614a83565b6144108185614aa6565b935061441b83614a73565b8060005b8381101561444c57815161443388826143c5565b975061443e83614a99565b92505060018101905061441f565b5085935050505092915050565b61446281614c38565b82525050565b61447181614c7b565b82525050565b600061448282614a8e565b61448c8185614ab7565b935061449c818560208601614c8d565b6144a581614d7f565b840191505092915050565b60006144bd602383614ab7565b91506144c882614d90565b604082019050919050565b60006144e0602283614ab7565b91506144eb82614ddf565b604082019050919050565b6000614503601b83614ab7565b915061450e82614e2e565b602082019050919050565b6000614526601083614ab7565b915061453182614e57565b602082019050919050565b6000614549602183614ab7565b915061455482614e80565b604082019050919050565b600061456c601883614ab7565b915061457782614ecf565b602082019050919050565b600061458f602083614ab7565b915061459a82614ef8565b602082019050919050565b60006145b2602983614ab7565b91506145bd82614f21565b604082019050919050565b60006145d5601a83614ab7565b91506145e082614f70565b602082019050919050565b60006145f8602583614ab7565b915061460382614f99565b604082019050919050565b600061461b602483614ab7565b915061462682614fe8565b604082019050919050565b600061463e601783614ab7565b915061464982615037565b602082019050919050565b6000614661600f83614ab7565b915061466c82615060565b602082019050919050565b6000614684601283614ab7565b915061468f82615089565b602082019050919050565b6146a381614c64565b82525050565b6146b281614c6e565b82525050565b60006020820190506146cd60008301846143ec565b92915050565b60006040820190506146e860008301856143ec565b6146f560208301846143ec565b9392505050565b600060608201905061471160008301866143ec565b61471e60208301856143ec565b61472b60408301846143ec565b949350505050565b600060408201905061474860008301856143ec565b614755602083018461469a565b9392505050565b600060c08201905061477160008301896143ec565b61477e602083018861469a565b61478b6040830187614468565b6147986060830186614468565b6147a560808301856143ec565b6147b260a083018461469a565b979650505050505050565b60006020820190506147d26000830184614459565b92915050565b60006040820190506147ed6000830185614459565b6147fa602083018461469a565b9392505050565b6000602082019050818103600083015261481b8184614477565b905092915050565b6000602082019050818103600083015261483c816144b0565b9050919050565b6000602082019050818103600083015261485c816144d3565b9050919050565b6000602082019050818103600083015261487c816144f6565b9050919050565b6000602082019050818103600083015261489c81614519565b9050919050565b600060208201905081810360008301526148bc8161453c565b9050919050565b600060208201905081810360008301526148dc8161455f565b9050919050565b600060208201905081810360008301526148fc81614582565b9050919050565b6000602082019050818103600083015261491c816145a5565b9050919050565b6000602082019050818103600083015261493c816145c8565b9050919050565b6000602082019050818103600083015261495c816145eb565b9050919050565b6000602082019050818103600083015261497c8161460e565b9050919050565b6000602082019050818103600083015261499c81614631565b9050919050565b600060208201905081810360008301526149bc81614654565b9050919050565b600060208201905081810360008301526149dc81614677565b9050919050565b60006020820190506149f8600083018461469a565b92915050565b600060a082019050614a13600083018861469a565b614a206020830187614468565b8181036040830152614a3281866143fb565b9050614a4160608301856143ec565b614a4e608083018461469a565b9695505050505050565b6000602082019050614a6d60008301846146a9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614ad382614c64565b9150614ade83614c64565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b1357614b12614cf2565b5b828201905092915050565b6000614b2982614c6e565b9150614b3483614c6e565b92508260ff03821115614b4a57614b49614cf2565b5b828201905092915050565b6000614b6082614c64565b9150614b6b83614c64565b925082614b7b57614b7a614d21565b5b828204905092915050565b6000614b9182614c64565b9150614b9c83614c64565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bd557614bd4614cf2565b5b828202905092915050565b6000614beb82614c64565b9150614bf683614c64565b925082821015614c0957614c08614cf2565b5b828203905092915050565b6000614c1f82614c44565b9050919050565b6000614c3182614c44565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c8682614c64565b9050919050565b60005b83811015614cab578082015181840152602081019050614c90565b83811115614cba576000848401525b50505050565b60006002820490506001821680614cd857607f821691505b60208210811415614cec57614ceb614d50565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416c726561647920766572696669656400000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f416c6c2070617274696573206d75737420636f6e73656e740000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f416c7265616479206465636c6172656420696e766573746f7273000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4e6f7420616e20496e766573746f720000000000000000000000000000000000600082015250565b7f506c65617365207374616b652066697273740000000000000000000000000000600082015250565b6150bb81614c14565b81146150c657600080fd5b50565b6150d281614c26565b81146150dd57600080fd5b50565b6150e981614c38565b81146150f457600080fd5b50565b61510081614c64565b811461510b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220acf19ae1863bcb556106bd6b7e483c6f025e9a6249e4e88996a3ecf5ab5a4a4b64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063700542ec116100ec578063ba8bfd831161008a578063dd62ed3e11610064578063dd62ed3e146105ef578063e8078d941461062c578063fa2b200914610643578063fc5f773f1461066e576101fd565b8063ba8bfd83146105aa578063c735f3c9146105c1578063db2e21bc146105d8576101fd565b80638b7afe2e116100c65780638b7afe2e146104ec5780638da5cb5b1461051757806395d89b4114610542578063a9059cbb1461056d576101fd565b8063700542ec1461044957806370a08231146104865780638705fcd4146104c3576101fd565b8063313ce567116101595780633908cfd2116101335780633908cfd2146103b75780636091d72f146103e0578063617dabb3146103f757806362caa70414610420576101fd565b8063313ce56714610326578063339416811461035157806333ea51a81461038e576101fd565b806306fdde0314610202578063095ea7b31461022d57806318160ddd1461026a578063228e7a911461029557806323b872dd146102be5780632df3eba4146102fb576101fd565b366101fd5734601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546101f49190614ac8565b92505081905550005b600080fd5b34801561020e57600080fd5b50610217610685565b6040516102249190614801565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190614311565b610717565b60405161026191906147bd565b60405180910390f35b34801561027657600080fd5b5061027f610735565b60405161028c91906149e3565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b7919061420b565b610747565b005b3480156102ca57600080fd5b506102e560048036038101906102e091906142c2565b610847565b6040516102f291906147bd565b60405180910390f35b34801561030757600080fd5b50610310610920565b60405161031d91906149e3565b60405180910390f35b34801561033257600080fd5b5061033b610989565b6040516103489190614a58565b60405180910390f35b34801561035d57600080fd5b506103786004803603810190610373919061425d565b6109a0565b60405161038591906149e3565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b0919061425d565b610a5a565b005b3480156103c357600080fd5b506103de60048036038101906103d9919061420b565b610d0c565b005b3480156103ec57600080fd5b506103f5610e75565b005b34801561040357600080fd5b5061041e600480360381019061041991906142c2565b6111fd565b005b34801561042c57600080fd5b506104476004803603810190610442919061420b565b61151e565b005b34801561045557600080fd5b50610470600480360381019061046b919061420b565b61165c565b60405161047d91906147bd565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a8919061420b565b6116c3565b6040516104ba91906149e3565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061425d565b61170c565b005b3480156104f857600080fd5b5061050161189c565b60405161050e91906149e3565b60405180910390f35b34801561052357600080fd5b5061052c611998565b60405161053991906146b8565b60405180910390f35b34801561054e57600080fd5b506105576119c1565b6040516105649190614801565b60405180910390f35b34801561057957600080fd5b50610594600480360381019061058f9190614311565b611a53565b6040516105a191906147bd565b60405180910390f35b3480156105b657600080fd5b506105bf611a71565b005b3480156105cd57600080fd5b506105d6611d9f565b005b3480156105e457600080fd5b506105ed611ee0565b005b3480156105fb57600080fd5b5061061660048036038101906106119190614286565b6120de565b60405161062391906149e3565b60405180910390f35b34801561063857600080fd5b50610641612165565b005b34801561064f57600080fd5b506106586126f7565b60405161066591906149e3565b60405180910390f35b34801561067a57600080fd5b50610683612701565b005b60606002805461069490614cc0565b80601f01602080910402602001604051908101604052809291908181526020018280546106c090614cc0565b801561070d5780601f106106e25761010080835404028352916020019161070d565b820191906000526020600020905b8154815290600101906020018083116106f057829003601f168201915b5050505050905090565b600061072b61072461290e565b8484612916565b6001905092915050565b600069152d02c7e14af6800000905090565b61074f61290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806107fc57506107ab61290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61083b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610832906148e3565b60405180910390fd5b61084481612ae1565b50565b6000610854848484612ba8565b6109158461086061290e565b6109108560405180606001604052806028815260200161510f60289139601860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c661290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130a69092919063ffffffff16565b612916565b600190509392505050565b600060156000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000600460009054906101000a900460ff16905090565b600080610a4f6509184e72a000600d601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1681548110610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015461310a90919063ffffffff16565b905080915050919050565b6001151560136000610a6a61290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb906149a3565b60405180910390fd5b6001151560116000610b0461290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906149c3565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060176000610bf361290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60019054906101000a900460ff16601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506001600e60018282829054906101000a900460ff16610cf19190614b1e565b92506101000a81548160ff021916908360ff16021790555050565b610d1461290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dc15750610d7061290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df7906148e3565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000828254610e6b9190614be0565b9250508190555050565b6001151560136000610e8561290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f06906149a3565b60405180910390fd5b60116000610f1b61290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614883565b60405180910390fd5b600a5460156000610fb261290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106111285760016011600061100061290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f5d39a2bce71c25746fa95db5287056eadf5402ed2911a7b00a0c9282242a86ba6011600061107e61290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601560006110d261290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161111b9291906147d8565b60405180910390a16111fb565b7f5d39a2bce71c25746fa95db5287056eadf5402ed2911a7b00a0c9282242a86ba6011600061115561290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601560006111a961290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516111f29291906147d8565b60405180910390a15b565b61120561290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806112b2575061126161290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e8906148e3565b60405180910390fd5b600f60179054906101000a900460ff1615611341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133890614923565b60405180910390fd5b6001601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040518060c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff16815250600d9060066114469291906140cc565b506000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a819055506001600f60176101000a81548160ff021916908315150217905550505050565b61152661290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806115d3575061158261290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611609906148e3565b60405180910390fd5b600081905080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009050601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116ba57600190505b80915050919050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61171461290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806117c1575061177061290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906148e3565b60405180910390fd5b80600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006118a661290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611953575061190261290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611992576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611989906148e3565b60405180910390fd5b47905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546119d090614cc0565b80601f01602080910402602001604051908101604052809291908181526020018280546119fc90614cc0565b8015611a495780601f10611a1e57610100808354040283529160200191611a49565b820191906000526020600020905b815481529060010190602001808311611a2c57829003601f168201915b5050505050905090565b6000611a67611a6061290e565b8484612ba8565b6001905092915050565b6001151560136000611a8161290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b02906149a3565b60405180910390fd5b60176000611b1761290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600d60146000611b9961290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1681548110611c1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549081150290604051600060405180830381858888f19350505050158015611c51573d6000803e3d6000fd5b50600d60146000611c6061290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1681548110611ce2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154600d60146000611cfb61290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1681548110611d7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000828254611d969190614be0565b92505081905550565b611da761290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611e545750611e0361290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a906148e3565b60405180910390fd5b6008546006819055506008546007819055507f1509687539547b95d9002029c1b24fbfdd2e99b914fabbbc629867062a4ff3cc600654604051611ed691906149e3565b60405180910390a1565b6001151560136000611ef061290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f71906149a3565b60405180910390fd5b600f60199054906101000a900460ff168015611fa25750600f601a9054906101000a900460ff165b8015611fba5750600f60149054906101000a900460ff165b611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff0906148c3565b60405180910390fd5b6017600061200561290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156120a5573d6000803e3d6000fd5b506000600f60196101000a81548160ff0219169083151502179055506000600f601a6101000a81548160ff021916908315150217905550565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61216d61290e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061221a57506121c961290e565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612259576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612250906148e3565b60405180910390fd5b600f60149054906101000a900460ff16156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090614983565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061233a30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000612916565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561238057600080fd5b505afa158015612394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b89190614234565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561241a57600080fd5b505afa15801561242e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124529190614234565b6040518363ffffffff1660e01b815260040161246f9291906146d3565b602060405180830381600087803b15801561248957600080fd5b505af115801561249d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c19190614234565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061254a306116c3565b600080612555611998565b426040518863ffffffff1660e01b81526004016125779695949392919061475c565b6060604051808303818588803b15801561259057600080fd5b505af11580156125a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125c99190614376565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016126a1929190614733565b602060405180830381600087803b1580156126bb57600080fd5b505af11580156126cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f3919061434d565b5050565b6000600554905090565b600115156013600061271161290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461279b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612792906149a3565b60405180910390fd5b6000601460006127a961290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415612816576001600f60196101000a81548160ff0219169083151502179055505b60016014600061282461290e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415612891576001600f601a6101000a81548160ff0219169083151502179055505b565b6000808314156128a65760009050612908565b600082846128b49190614b86565b90508284826128c39190614b55565b14612903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fa906148a3565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90614963565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed90614843565b60405180910390fd5b80601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ad491906149e3565b60405180910390a3505050565b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b4d57600160056000828254612b459190614ac8565b925050819055505b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0f90614943565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7f90614823565b60405180910390fd5b60008111612ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc290614903565b60405180910390fd5b6000612cd78484613154565b90506000612d048260ff16612cf660648661310a90919063ffffffff16565b61289390919063ffffffff16565b90506000612d1b828561325990919063ffffffff16565b9050612d288587326132a3565b612d31856136e1565b15612d4d57600854612d42866116c3565b10612d4c57600080fd5b5b612d5686613796565b15612db357601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612db257600080fd5b5b612dbd86866137f1565b15612deb57612dcc8686613889565b15612de157600654841115612de057600080fd5b5b612dea86613994565b5b612e3d84601660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325990919063ffffffff16565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ed281601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139c590919063ffffffff16565b601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f6782601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139c590919063ffffffff16565b601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161300791906149e3565b60405180910390a3601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b25d625987876040518363ffffffff1660e01b815260040161306c9291906146d3565b600060405180830381600087803b15801561308657600080fd5b505af115801561309a573d6000803e3d6000fd5b50505050505050505050565b60008383111582906130ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e59190614801565b60405180910390fd5b50600083856130fd9190614be0565b9050809150509392505050565b600061314c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a23565b905092915050565b600080601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131f85750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1590508061321d576000600e60006101000a81548160ff021916908360ff1602179055505b8015613240576005600e60006101000a81548160ff021916908360ff1602179055505b600e60009054906101000a900460ff1691505092915050565b600061329b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130a6565b905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061334c5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156133645750600f60149054906101000a900460ff165b156136dc576000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b81526004016133ec939291906146fc565b602060405180830381600087803b15801561340657600080fd5b505af115801561341a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343e919061434d565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b81526004016134c3939291906146fc565b602060405180830381600087803b1580156134dd57600080fd5b505af11580156134f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613515919061434d565b905081156135f85761352685612ae1565b61352f83612ae1565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663034254c986856040518363ffffffff1660e01b815260040161358c9291906146d3565b600060405180830381600087803b1580156135a657600080fd5b505af11580156135ba573d6000803e3d6000fd5b505050507f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf2245942439285846040516135ef9291906146d3565b60405180910390a15b80156136d95761360784612ae1565b61361083612ae1565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663034254c985856040518363ffffffff1660e01b815260040161366d9291906146d3565b600060405180830381600087803b15801561368757600080fd5b505af115801561369b573d6000803e3d6000fd5b505050507f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf2245942439284846040516136d09291906146d3565b60405180910390a15b50505b505050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561378f5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006137fb611998565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156138695750613839611998565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156138815750600f60149054906101000a900460ff165b905092915050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156139365750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561398c5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061399f306116c3565b90506139aa82613a86565b156139c1576139b881613b12565b6139c0613e0c565b5b5050565b60008082846139d49190614ac8565b905083811015613a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1090614863565b60405180910390fd5b8091505092915050565b60008083118290613a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a619190614801565b60405180910390fd5b5060008385613a799190614b55565b9050809150509392505050565b6000600f60159054906101000a900460ff16158015613af35750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b0b5750600f60169054906101000a900460ff165b9050919050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613b70577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613b9e5781602001602082028036833780820191505090505b5090503081600081518110613bdc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c7e57600080fd5b505afa158015613c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb69190614234565b81600181518110613cf0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5730601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612916565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dbb9594939291906149fe565b600060405180830381600087803b158015613dd557600080fd5b505af1158015613de9573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b6000613e84600c5460156000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325990919063ffffffff16565b90506000613eaf6003613ea160058561310a90919063ffffffff16565b61289390919063ffffffff16565b90506000600f60179054906101000a900460ff1615613ee257613edb828461325990919063ffffffff16565b9050613f18565b6040518060400160405280600060ff168152602001600060ff16815250600d906002613f0f92919061411e565b50600091508290505b60156000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c81905550613f9460028361310a90919063ffffffff16565b600d600081548110613fcf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000828254613fe89190614ac8565b9250508190555061400360028361310a90919063ffffffff16565b600d60018154811061403e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160008282546140579190614ac8565b92505081905550600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140c6573d6000803e3d6000fd5b50505050565b82805482825590600052602060002090810192821561410d579160200282015b8281111561410c578251829060ff169055916020019190600101906140ec565b5b50905061411a9190614170565b5090565b82805482825590600052602060002090810192821561415f579160200282015b8281111561415e578251829060ff1690559160200191906001019061413e565b5b50905061416c9190614170565b5090565b5b80821115614189576000816000905550600101614171565b5090565b60008135905061419c816150b2565b92915050565b6000815190506141b1816150b2565b92915050565b6000813590506141c6816150c9565b92915050565b6000815190506141db816150e0565b92915050565b6000813590506141f0816150f7565b92915050565b600081519050614205816150f7565b92915050565b60006020828403121561421d57600080fd5b600061422b8482850161418d565b91505092915050565b60006020828403121561424657600080fd5b6000614254848285016141a2565b91505092915050565b60006020828403121561426f57600080fd5b600061427d848285016141b7565b91505092915050565b6000806040838503121561429957600080fd5b60006142a78582860161418d565b92505060206142b88582860161418d565b9150509250929050565b6000806000606084860312156142d757600080fd5b60006142e58682870161418d565b93505060206142f68682870161418d565b9250506040614307868287016141e1565b9150509250925092565b6000806040838503121561432457600080fd5b60006143328582860161418d565b9250506020614343858286016141e1565b9150509250929050565b60006020828403121561435f57600080fd5b600061436d848285016141cc565b91505092915050565b60008060006060848603121561438b57600080fd5b6000614399868287016141f6565b93505060206143aa868287016141f6565b92505060406143bb868287016141f6565b9150509250925092565b60006143d183836143dd565b60208301905092915050565b6143e681614c14565b82525050565b6143f581614c14565b82525050565b600061440682614a83565b6144108185614aa6565b935061441b83614a73565b8060005b8381101561444c57815161443388826143c5565b975061443e83614a99565b92505060018101905061441f565b5085935050505092915050565b61446281614c38565b82525050565b61447181614c7b565b82525050565b600061448282614a8e565b61448c8185614ab7565b935061449c818560208601614c8d565b6144a581614d7f565b840191505092915050565b60006144bd602383614ab7565b91506144c882614d90565b604082019050919050565b60006144e0602283614ab7565b91506144eb82614ddf565b604082019050919050565b6000614503601b83614ab7565b915061450e82614e2e565b602082019050919050565b6000614526601083614ab7565b915061453182614e57565b602082019050919050565b6000614549602183614ab7565b915061455482614e80565b604082019050919050565b600061456c601883614ab7565b915061457782614ecf565b602082019050919050565b600061458f602083614ab7565b915061459a82614ef8565b602082019050919050565b60006145b2602983614ab7565b91506145bd82614f21565b604082019050919050565b60006145d5601a83614ab7565b91506145e082614f70565b602082019050919050565b60006145f8602583614ab7565b915061460382614f99565b604082019050919050565b600061461b602483614ab7565b915061462682614fe8565b604082019050919050565b600061463e601783614ab7565b915061464982615037565b602082019050919050565b6000614661600f83614ab7565b915061466c82615060565b602082019050919050565b6000614684601283614ab7565b915061468f82615089565b602082019050919050565b6146a381614c64565b82525050565b6146b281614c6e565b82525050565b60006020820190506146cd60008301846143ec565b92915050565b60006040820190506146e860008301856143ec565b6146f560208301846143ec565b9392505050565b600060608201905061471160008301866143ec565b61471e60208301856143ec565b61472b60408301846143ec565b949350505050565b600060408201905061474860008301856143ec565b614755602083018461469a565b9392505050565b600060c08201905061477160008301896143ec565b61477e602083018861469a565b61478b6040830187614468565b6147986060830186614468565b6147a560808301856143ec565b6147b260a083018461469a565b979650505050505050565b60006020820190506147d26000830184614459565b92915050565b60006040820190506147ed6000830185614459565b6147fa602083018461469a565b9392505050565b6000602082019050818103600083015261481b8184614477565b905092915050565b6000602082019050818103600083015261483c816144b0565b9050919050565b6000602082019050818103600083015261485c816144d3565b9050919050565b6000602082019050818103600083015261487c816144f6565b9050919050565b6000602082019050818103600083015261489c81614519565b9050919050565b600060208201905081810360008301526148bc8161453c565b9050919050565b600060208201905081810360008301526148dc8161455f565b9050919050565b600060208201905081810360008301526148fc81614582565b9050919050565b6000602082019050818103600083015261491c816145a5565b9050919050565b6000602082019050818103600083015261493c816145c8565b9050919050565b6000602082019050818103600083015261495c816145eb565b9050919050565b6000602082019050818103600083015261497c8161460e565b9050919050565b6000602082019050818103600083015261499c81614631565b9050919050565b600060208201905081810360008301526149bc81614654565b9050919050565b600060208201905081810360008301526149dc81614677565b9050919050565b60006020820190506149f8600083018461469a565b92915050565b600060a082019050614a13600083018861469a565b614a206020830187614468565b8181036040830152614a3281866143fb565b9050614a4160608301856143ec565b614a4e608083018461469a565b9695505050505050565b6000602082019050614a6d60008301846146a9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614ad382614c64565b9150614ade83614c64565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b1357614b12614cf2565b5b828201905092915050565b6000614b2982614c6e565b9150614b3483614c6e565b92508260ff03821115614b4a57614b49614cf2565b5b828201905092915050565b6000614b6082614c64565b9150614b6b83614c64565b925082614b7b57614b7a614d21565b5b828204905092915050565b6000614b9182614c64565b9150614b9c83614c64565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bd557614bd4614cf2565b5b828202905092915050565b6000614beb82614c64565b9150614bf683614c64565b925082821015614c0957614c08614cf2565b5b828203905092915050565b6000614c1f82614c44565b9050919050565b6000614c3182614c44565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c8682614c64565b9050919050565b60005b83811015614cab578082015181840152602081019050614c90565b83811115614cba576000848401525b50505050565b60006002820490506001821680614cd857607f821691505b60208210811415614cec57614ceb614d50565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416c726561647920766572696669656400000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f416c6c2070617274696573206d75737420636f6e73656e740000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f416c7265616479206465636c6172656420696e766573746f7273000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4e6f7420616e20496e766573746f720000000000000000000000000000000000600082015250565b7f506c65617365207374616b652066697273740000000000000000000000000000600082015250565b6150bb81614c14565b81146150c657600080fd5b50565b6150d281614c26565b81146150dd57600080fd5b50565b6150e981614c38565b81146150f457600080fd5b50565b61510081614c64565b811461510b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220acf19ae1863bcb556106bd6b7e483c6f025e9a6249e4e88996a3ecf5ab5a4a4b64736f6c63430008040033

Deployed Bytecode Sourcemap

4629:14748:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6923:9;6900:7;:19;6908:10;6900:19;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;4629:14748;;;;;7406:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8339:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7766:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17967:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8512:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14878:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7594:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14673:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15348:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18063:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15971:383;;;;;;;;;;;;;:::i;:::-;;18504:502;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19018:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15008:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7874:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18320:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18190:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3273:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7498:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8004:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15720:239;;;;;;;;;;;;;:::i;:::-;;17785:170;;;;;;;;;;;;;:::i;:::-;;16607:313;;;;;;;;;;;;;:::i;:::-;;8183:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17011:766;;;;;;;;;;;;;:::i;:::-;;14573:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16366:229;;;;;;;;;;;;;:::i;:::-;;7406:84;7443:13;7476:6;7469:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7406:84;:::o;8339:165::-;8416:4;8433:41;8442:12;:10;:12::i;:::-;8456:8;8466:7;8433:8;:41::i;:::-;8492:4;8485:11;;8339:165;;;;:::o;7766:100::-;7819:7;4764:23;7839:19;;7766:100;:::o;17967:84::-;3412:12;:10;:12::i;:::-;3401:23;;:7;;;;;;;;;;:23;;;:50;;;;3439:12;:10;:12::i;:::-;3428:23;;:7;;;;;;;;;;;:23;;;3401:50;3393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18029:14:::1;18040:2;18029:10;:14::i;:::-;17967:84:::0;:::o;8512:323::-;8613:4;8630:39;8640:7;8649:10;8661:7;8630:9;:39::i;:::-;8680:125;8689:7;8698:12;:10;:12::i;:::-;8712:92;8752:7;8712:92;;;;;;;;;;;;;;;;;:12;:21;8725:7;8712:21;;;;;;;;;;;;;;;:35;8734:12;:10;:12::i;:::-;8712:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;8680:8;:125::i;:::-;8823:4;8816:11;;8512:323;;;;;:::o;14878:118::-;14926:7;14953;:35;14969:17;;;;;;;;;;;14953:35;;;;;;;;;;;;;;;;14946:42;;14878:118;:::o;7594:84::-;7635:5;7660:10;;;;;;;;;;;7653:17;;7594:84;:::o;14673:193::-;14747:7;14767:16;14786:46;14825:6;14786:10;14797:12;:22;14810:8;14797:22;;;;;;;;;;;;;;;;;;;;;;;;;14786:34;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;:46;;;;:::i;:::-;14767:65;;14850:8;14843:15;;;14673:193;;;:::o;15348:360::-;6810:4;6772:42;;:20;:34;6793:12;:10;:12::i;:::-;6772:34;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;6764:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15473:4:::1;15447:30;;:8;:22;15456:12;:10;:12::i;:::-;15447:22;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;15439:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15550:4;15511:20;:36;15532:14;15511:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;15598:14;15565:16;:30;15582:12;:10;:12::i;:::-;15565:30;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;15654:15;;;;;;;;;;;15623:12;:28;15636:14;15623:28;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15699:1;15680:15;;:20;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15348:360:::0;:::o;18063:115::-;3412:12;:10;:12::i;:::-;3401:23;;:7;;;;;;;;;;:23;;;:50;;;;3439:12;:10;:12::i;:::-;3428:23;;:7;;;;;;;;;;;:23;;;3401:50;3393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18139:5:::1;18126:6;:10;18133:2;18126:10;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;18169:1;18155:10;;:15;;;;;;;:::i;:::-;;;;;;;;18063:115:::0;:::o;15971:383::-;6810:4;6772:42;;:20;:34;6793:12;:10;:12::i;:::-;6772:34;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;6764:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16036:8:::1;:22;16045:12;:10;:12::i;:::-;16036:22;;;;;;;;;;;;;;;;;;;;;;;;;16035:23;16027:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16118:10;;16093:7;:21;16101:12;:10;:12::i;:::-;16093:21;;;;;;;;;;;;;;;;:35;16090:256;;16169:4;16144:8;:22;16153:12;:10;:12::i;:::-;16144:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16193:54;16201:8;:22;16210:12;:10;:12::i;:::-;16201:22;;;;;;;;;;;;;;;;;;;;;;;;;16225:7;:21;16233:12;:10;:12::i;:::-;16225:21;;;;;;;;;;;;;;;;16193:54;;;;;;;:::i;:::-;;;;;;;;16090:256;;;16292:54;16300:8;:22;16309:12;:10;:12::i;:::-;16300:22;;;;;;;;;;;;;;;;;;;;;;;;;16324:7;:21;16332:12;:10;:12::i;:::-;16324:21;;;;;;;;;;;;;;;;16292:54;;;;;;;:::i;:::-;;;;;;;;16090:256;15971:383::o:0;18504:502::-;3412:12;:10;:12::i;:::-;3401:23;;:7;;;;;;;;;;:23;;;:50;;;;3439:12;:10;:12::i;:::-;3428:23;;:7;;;;;;;;;;;:23;;;3401:50;3393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18640:14:::1;;;;;;;;;;;18639:15;18631:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;18738:4;18696:20;:39;18717:17;18696:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18795:4;18753:20;:39;18774:17;18753:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18810:31;;;;;;;;18824:1;18810:31;;;;;;18827:1;18810:31;;;;;;18830:1;18810:31;;;;;;18833:1;18810:31;;;;;;18836:1;18810:31;;;;;;18839:1;18810:31;;;;::::0;:10:::1;:31;;;;;;;:::i;:::-;;18882:5;18852:8;:27;18861:17;18852:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18928:5;18898:8;:27;18907:17;18898:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18957:9;18944:10;:22;;;;18994:4;18977:14;;:21;;;;;;;;;;;;;;;;;;18504:502:::0;;;:::o;19018:356::-;3412:12;:10;:12::i;:::-;3401:23;;:7;;;;;;;;;;:23;;;:50;;;;3439:12;:10;:12::i;:::-;3428:23;;:7;;;;;;;;;;;:23;;;3401:50;3393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;19205:19:::1;19238:8;19205:42;;19358:8;19348:7;;:18;;;;;;;;;;;;;;;;;;3499:1;19018:356:::0;:::o;15008:236::-;15072:4;15129:13;15145:5;15129:21;;15164:6;:16;15171:8;15164:16;;;;;;;;;;;;;;;;;;;;;;;;;15161:49;;;15206:4;15195:15;;15161:49;15228:8;15221:15;;;15008:236;;;:::o;7874:122::-;7941:7;7968:10;:20;7979:8;7968:20;;;;;;;;;;;;;;;;7961:27;;7874:122;;;:::o;18320:172::-;3412:12;:10;:12::i;:::-;3401:23;;:7;;;;;;;;;;:23;;;:50;;;;3439:12;:10;:12::i;:::-;3428:23;;:7;;;;;;;;;;;:23;;;3401:50;3393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18419:11:::1;18404:12;;:26;;;;;;;;;;;;;;;;;;18480:4;18445:19;:32;18465:11;18445:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18320:172:::0;:::o;18190:118::-;18252:7;3412:12;:10;:12::i;:::-;3401:23;;:7;;;;;;;;;;:23;;;:50;;;;3439:12;:10;:12::i;:::-;3428:23;;:7;;;;;;;;;;;:23;;;3401:50;3393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18279:21:::1;18272:28;;18190:118:::0;:::o;3273:80::-;3311:7;3338;;;;;;;;;;;3331:14;;3273:80;:::o;7498:88::-;7537:13;7570:8;7563:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7498:88;:::o;8004:171::-;8084:4;8101:44;8111:12;:10;:12::i;:::-;8125:10;8137:7;8101:9;:44::i;:::-;8163:4;8156:11;;8004:171;;;;:::o;15720:239::-;6810:4;6772:42;;:20;:34;6793:12;:10;:12::i;:::-;6772:34;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;6764:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15781:16:::1;:30;15798:12;:10;:12::i;:::-;15781:30;;;;;;;;;;;;;;;;;;;;;;;;;:39;;:79;15821:10;15832:12;:26;15845:12;:10;:12::i;:::-;15832:26;;;;;;;;;;;;;;;;;;;;;;;;;15821:38;;;;;;;;;;;;;;;;;;;;;;;;;;15781:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15913:10;15924:12;:26;15937:12;:10;:12::i;:::-;15924:26;;;;;;;;;;;;;;;;;;;;;;;;;15913:38;;;;;;;;;;;;;;;;;;;;;;;;;;15871:10;15882:12;:26;15895:12;:10;:12::i;:::-;15882:26;;;;;;;;;;;;;;;;;;;;;;;;;15871:38;;;;;;;;;;;;;;;;;;;;;;;;;;:80;;;;;;;:::i;:::-;;;;;;;;15720:239::o:0;17785:170::-;3412:12;:10;:12::i;:::-;3401:23;;:7;;;;;;;;;;:23;;;:50;;;;3439:12;:10;:12::i;:::-;3428:23;;:7;;;;;;;;;;;:23;;;3401:50;3393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;17854:13:::1;;17842:9;:25;;;;17894:13;;17878;:29;;;;17923:24;17937:9;;17923:24;;;;;;:::i;:::-;;;;;;;;17785:170::o:0;16607:313::-;6810:4;6772:42;;:20;:34;6793:12;:10;:12::i;:::-;6772:34;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;6764:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16677:18:::1;;;;;;;;;;;:40;;;;;16699:18;;;;;;;;;;;16677:40;:59;;;;;16721:15;;;;;;;;;;;16677:59;16669:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;16776:16;:30;16793:12;:10;:12::i;:::-;16776:30;;;;;;;;;;;;;;;;;;;;;;;;;:39;;:62;16816:21;16776:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16870:5;16849:18;;:26;;;;;;;;;;;;;;;;;;16907:5;16886:18;;:26;;;;;;;;;;;;;;;;;;16607:313::o:0;8183:148::-;8266:7;8293:12;:20;8306:6;8293:20;;;;;;;;;;;;;;;:30;8314:8;8293:30;;;;;;;;;;;;;;;;8286:37;;8183:148;;;;:::o;17011:766::-;3412:12;:10;:12::i;:::-;3401:23;;:7;;;;;;;;;;:23;;;:50;;;;3439:12;:10;:12::i;:::-;3428:23;;:7;;;;;;;;;;;:23;;;3401:50;3393:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;17076:15:::1;;;;;;;;;;;17075:16;17067:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17129:35;17186:42;17129:100;;17260:16;17240:17;;:36;;;;;;;;;;;;;;;;;;17287:65;17304:4;17319:17;;;;;;;;;;;4764:23;17287:8;:65::i;:::-;17399:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17381:56;;;17446:4;17453:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17381:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17363:15;;:114;;;;;;;;;;;;;;;;;;17488:17;;;;;;;;;;;:33;;;17529:21;17560:4;17566:24;17584:4;17566:9;:24::i;:::-;17591:1;17593::::0;17595:7:::1;:5;:7::i;:::-;17603:15;17488:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17646:4;17630:13;;:20;;;;;;;;;;;;;;;;;;17679:4;17661:15;;:22;;;;;;;;;;;;;;;;;;17701:15;;;;;;;;;;;17694:31;;;17734:17;;;;;;;;;;;17754:14;17694:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3499:1;17011:766::o:0;14573:88::-;14616:7;14643:10;;14636:17;;14573:88;:::o;16366:229::-;6810:4;6772:42;;:20;:34;6793:12;:10;:12::i;:::-;6772:34;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;6764:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16461:1:::1;16431:12;:26;16444:12;:10;:12::i;:::-;16431:26;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;16428:74;;;16498:4;16477:18;;:25;;;;;;;;;;;;;;;;;;16428:74;16546:1;16516:12;:26;16529:12;:10;:12::i;:::-;16516:26;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;16513:74;;;16583:4;16562:18;;:25;;;;;;;;;;;;;;;;;;16513:74;16366:229::o:0;2218:246::-;2276:7;2305:1;2300;:6;2296:47;;;2330:1;2323:8;;;;2296:47;2353:9;2369:1;2365;:5;;;;:::i;:::-;2353:17;;2398:1;2393;2389;:5;;;;:::i;:::-;:10;2381:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2455:1;2448:8;;;2218:246;;;;;:::o;883:98::-;936:7;963:10;956:17;;883:98;:::o;9781:347::-;9895:1;9877:20;;:6;:20;;;;9869:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9977:1;9957:22;;:8;:22;;;;9949:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10062:7;10029:12;:20;10042:6;10029:20;;;;;;;;;;;;;;;:30;10050:8;10029:30;;;;;;;;;;;;;;;:40;;;;10102:8;10085:35;;10094:6;10085:35;;;10112:7;10085:35;;;;;;:::i;:::-;;;;;;;;9781:347;;;:::o;12617:149::-;12678:6;:16;12685:8;12678:16;;;;;;;;;;;;;;;;;;;;;;;;;12674:50;;12723:1;12709:10;;:15;;;;;;;:::i;:::-;;;;;;;;12674:50;12754:4;12735:6;:16;12742:8;12735:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12617:149;:::o;10136:1430::-;10255:1;10236:21;;:7;:21;;;;10228:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10340:1;10318:24;;:10;:24;;;;10310:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10411:1;10401:7;:11;10393:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10495:10;10508:28;10516:7;10525:10;10508:7;:28::i;:::-;10495:41;;10547:18;10568:26;10589:4;10568:26;;:16;10580:3;10568:7;:11;;:16;;;;:::i;:::-;:20;;:26;;;;:::i;:::-;10547:47;;10605:18;10626:23;10638:10;10626:7;:11;;:23;;;;:::i;:::-;10605:44;;10670:41;10680:10;10692:7;10701:9;10670;:41::i;:::-;10763:25;10777:10;10763:13;:25::i;:::-;10760:89;;;10835:13;;10811:21;10821:10;10811:9;:21::i;:::-;:37;10803:46;;;;;;10760:89;10869:22;10883:7;10869:13;:22::i;:::-;10866:65;;;10915:6;:15;10922:7;10915:15;;;;;;;;;;;;;;;;;;;;;;;;;10914:16;10906:25;;;;;;10866:65;11009:26;11015:7;11024:10;11009:5;:26::i;:::-;11005:174;;;11056:34;11070:7;11079:10;11056:13;:34::i;:::-;11052:87;;;11129:9;;11118:7;:20;;11110:29;;;;;;11052:87;11154:13;11159:7;11154:4;:13::i;:::-;11005:174;11221:32;11245:7;11221:10;:19;11232:7;11221:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;11199:10;:19;11210:7;11199:19;;;;;;;;;;;;;;;:54;;;;11289:38;11316:10;11289;:22;11300:10;11289:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;11264:10;:22;11275:10;11264:22;;;;;;;;;;;;;;;:63;;;;11366:41;11396:10;11366;:25;11385:4;11366:25;;;;;;;;;;;;;;;;:29;;:41;;;;:::i;:::-;11338:10;:25;11357:4;11338:25;;;;;;;;;;;;;;;:69;;;;11451:10;11433:41;;11442:7;11433:41;;;11463:10;11433:41;;;;;;:::i;:::-;;;;;;;;11485:7;;;;;;;;;;;:21;;;11507:7;11516:10;11485:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10136:1430;;;;;;:::o;2020:190::-;2106:7;2139:1;2134;:6;;2142:12;2126:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2166:9;2182:1;2178;:5;;;;:::i;:::-;2166:17;;2201:1;2194:8;;;2020:190;;;;;:::o;2472:132::-;2530:7;2557:39;2561:1;2564;2557:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2550:46;;2472:132;;;;:::o;12772:302::-;12842:5;12859:13;12877:19;:28;12897:7;12877:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;12909:19;:31;12929:10;12909:31;;;;;;;;;;;;;;;;;;;;;;;;;12877:63;12875:66;12859:82;;12956:8;12952:39;;12990:1;12979:8;;:12;;;;;;;;;;;;;;;;;;12952:39;13005:8;13002:38;;;13039:1;13028:8;;:12;;;;;;;;;;;;;;;;;;13002:38;13058:8;;;;;;;;;;;13051:15;;;12772:302;;;;:::o;1876:136::-;1934:7;1961:43;1965:1;1968;1961:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1954:50;;1876:136;;;;:::o;11572:1033::-;11682:15;;;;;;;;;;;11668:29;;:10;:29;;;:59;;;;11712:15;;;;;;;;;;;11701:26;;:7;:26;;;11668:59;11667:80;;;;;11732:15;;;;;;;;;;;11667:80;11664:934;;;11763:21;11787:7;;;;;;;;;;;:19;;;11807:10;11819:15;;;;;;;;;;;11836:7;11787:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11763:81;;11881:18;11902:7;;;;;;;;;;;:19;;;11922:7;11931:15;;;;;;;;;;;11948:7;11902:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11881:75;;11996:16;11993:296;;;12032:22;12043:10;12032;:22::i;:::-;12073:19;12084:7;12073:10;:19::i;:::-;12111:7;;;;;;;;;;;:17;;;12129:10;12141:7;12111:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12242:31;12253:10;12265:7;12242:31;;;;;;;:::i;:::-;;;;;;;;11993:296;12306:13;12303:284;;;12339:19;12350:7;12339:10;:19::i;:::-;12377;12388:7;12377:10;:19::i;:::-;12415:7;;;;;;;;;;;:17;;;12433:7;12442;12415:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12543:28;12554:7;12563;12543:28;;;;;;;:::i;:::-;;;;;;;;12303:284;11664:934;;;11572:1033;;;:::o;9604:169::-;9668:4;9706:15;;;;;;;;;;;9692:29;;:10;:29;;;;:73;;;;;9747:17;;;;;;;;;;;9725:40;;:10;:40;;;;9692:73;9685:80;;9604:169;;;:::o;9250:119::-;9311:4;9346:15;;;;;;;;;;;9335:26;;:7;:26;;;;9328:33;;9250:119;;;:::o;9075:167::-;9148:4;9183:7;:5;:7::i;:::-;9172:18;;:7;:18;;;;:43;;;;;9208:7;:5;:7::i;:::-;9194:21;;:10;:21;;;;9172:43;:62;;;;;9219:15;;;;;;;;;;;9172:62;9165:69;;9075:167;;;;:::o;9377:219::-;9458:4;9493:15;;;;;;;;;;;9482:26;;:7;:26;;;:70;;;;;9534:17;;;;;;;;;;;9512:40;;:10;:40;;;;9482:70;:106;;;;;9557:19;:31;9577:10;9557:31;;;;;;;;;;;;;;;;;;;;;;;;;9556:32;9482:106;9475:113;;9377:219;;;;:::o;13082:230::-;13132:21;13156:24;13174:4;13156:9;:24::i;:::-;13132:48;;13195:20;13207:7;13195:11;:20::i;:::-;13191:114;;;13232:32;13250:13;13232:17;:32::i;:::-;13279:14;:12;:14::i;:::-;13191:114;13082:230;;:::o;1689:179::-;1747:7;1767:9;1783:1;1779;:5;;;;:::i;:::-;1767:17;;1808:1;1803;:6;;1795:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1859:1;1852:8;;;1689:179;;;;:::o;2612:189::-;2698:7;2730:1;2726;:5;2733:12;2718:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2757:9;2773:1;2769;:5;;;;:::i;:::-;2757:17;;2792:1;2785:8;;;2612:189;;;;;:::o;8920:147::-;8979:4;9004:8;;;;;;;;;;;9003:9;:39;;;;;9027:15;;;;;;;;;;;9016:26;;:7;:26;;;;9003:39;:56;;;;;9046:13;;;;;;;;;;;9003:56;8996:63;;8920:147;;;:::o;13320:482::-;6674:4;6663:8;;:15;;;;;;;;;;;;;;;;;;13395:22:::1;13434:1;13420:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13395:41;;13466:4;13447:5;13453:1;13447:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;13493:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13482:5;13488:1;13482:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;13528:60;13545:4;13560:17;;;;;;;;;;;13580:7;13528:8;:60::i;:::-;13599:17;;;;;;;;;;;:68;;;13682:7;13704:1;13720:5;13748:4;13768:15;13599:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6689:1;6712:5:::0;6701:8;;:16;;;;;;;;;;;;;;;;;;13320:482;:::o;13814:660::-;13857:17;13877:58;13917:17;;13877:7;:35;13893:17;;;;;;;;;;;13877:35;;;;;;;;;;;;;;;;:39;;:58;;;;:::i;:::-;13857:78;;13946:22;13971:23;13992:1;13971:16;13985:1;13971:9;:13;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;13946:48;;14005:17;14046:14;;;;;;;;;;;14043:204;;;14087:29;14101:14;14087:9;:13;;:29;;;;:::i;:::-;14075:41;;14043:204;;;14147:19;;;;;;;;14161:1;14147:19;;;;;;14164:1;14147:19;;;;;:10;:19;;;;;;;:::i;:::-;;14198:1;14181:18;;14226:9;14214:21;;14043:204;14290:7;:35;14306:17;;;;;;;;;;;14290:35;;;;;;;;;;;;;;;;14270:17;:55;;;;14353:21;14372:1;14353:14;:18;;:21;;;;:::i;:::-;14336:10;14347:1;14336:13;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;14402:21;14421:1;14402:14;:18;;:21;;;;:::i;:::-;14385:10;14396:1;14385:13;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;14434:12;;;;;;;;;;;:21;;:32;14456:9;14434:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:660;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:407::-;1809:6;1817;1866:2;1854:9;1845:7;1841:23;1837:32;1834:2;;;1882:1;1879;1872:12;1834:2;1925:1;1950:53;1995:7;1986:6;1975:9;1971:22;1950:53;:::i;:::-;1940:63;;1896:117;2052:2;2078:53;2123:7;2114:6;2103:9;2099:22;2078:53;:::i;:::-;2068:63;;2023:118;1824:324;;;;;:::o;2154:552::-;2231:6;2239;2247;2296:2;2284:9;2275:7;2271:23;2267:32;2264:2;;;2312:1;2309;2302:12;2264:2;2355:1;2380:53;2425:7;2416:6;2405:9;2401:22;2380:53;:::i;:::-;2370:63;;2326:117;2482:2;2508:53;2553:7;2544:6;2533:9;2529:22;2508:53;:::i;:::-;2498:63;;2453:118;2610:2;2636:53;2681:7;2672:6;2661:9;2657:22;2636:53;:::i;:::-;2626:63;;2581:118;2254:452;;;;;:::o;2712:407::-;2780:6;2788;2837:2;2825:9;2816:7;2812:23;2808:32;2805:2;;;2853:1;2850;2843:12;2805:2;2896:1;2921:53;2966:7;2957:6;2946:9;2942:22;2921:53;:::i;:::-;2911:63;;2867:117;3023:2;3049:53;3094:7;3085:6;3074:9;3070:22;3049:53;:::i;:::-;3039:63;;2994:118;2795:324;;;;;:::o;3125:278::-;3192:6;3241:2;3229:9;3220:7;3216:23;3212:32;3209:2;;;3257:1;3254;3247:12;3209:2;3300:1;3325:61;3378:7;3369:6;3358:9;3354:22;3325:61;:::i;:::-;3315:71;;3271:125;3199:204;;;;:::o;3409:596::-;3497:6;3505;3513;3562:2;3550:9;3541:7;3537:23;3533:32;3530:2;;;3578:1;3575;3568:12;3530:2;3621:1;3646:64;3702:7;3693:6;3682:9;3678:22;3646:64;:::i;:::-;3636:74;;3592:128;3759:2;3785:64;3841:7;3832:6;3821:9;3817:22;3785:64;:::i;:::-;3775:74;;3730:129;3898:2;3924:64;3980:7;3971:6;3960:9;3956:22;3924:64;:::i;:::-;3914:74;;3869:129;3520:485;;;;;:::o;4011:179::-;4080:10;4101:46;4143:3;4135:6;4101:46;:::i;:::-;4179:4;4174:3;4170:14;4156:28;;4091:99;;;;:::o;4196:108::-;4273:24;4291:5;4273:24;:::i;:::-;4268:3;4261:37;4251:53;;:::o;4310:118::-;4397:24;4415:5;4397:24;:::i;:::-;4392:3;4385:37;4375:53;;:::o;4464:732::-;4583:3;4612:54;4660:5;4612:54;:::i;:::-;4682:86;4761:6;4756:3;4682:86;:::i;:::-;4675:93;;4792:56;4842:5;4792:56;:::i;:::-;4871:7;4902:1;4887:284;4912:6;4909:1;4906:13;4887:284;;;4988:6;4982:13;5015:63;5074:3;5059:13;5015:63;:::i;:::-;5008:70;;5101:60;5154:6;5101:60;:::i;:::-;5091:70;;4947:224;4934:1;4931;4927:9;4922:14;;4887:284;;;4891:14;5187:3;5180:10;;4588:608;;;;;;;:::o;5202:109::-;5283:21;5298:5;5283:21;:::i;:::-;5278:3;5271:34;5261:50;;:::o;5317:147::-;5412:45;5451:5;5412:45;:::i;:::-;5407:3;5400:58;5390:74;;:::o;5470:364::-;5558:3;5586:39;5619:5;5586:39;:::i;:::-;5641:71;5705:6;5700:3;5641:71;:::i;:::-;5634:78;;5721:52;5766:6;5761:3;5754:4;5747:5;5743:16;5721:52;:::i;:::-;5798:29;5820:6;5798:29;:::i;:::-;5793:3;5789:39;5782:46;;5562:272;;;;;:::o;5840:366::-;5982:3;6003:67;6067:2;6062:3;6003:67;:::i;:::-;5996:74;;6079:93;6168:3;6079:93;:::i;:::-;6197:2;6192:3;6188:12;6181:19;;5986:220;;;:::o;6212:366::-;6354:3;6375:67;6439:2;6434:3;6375:67;:::i;:::-;6368:74;;6451:93;6540:3;6451:93;:::i;:::-;6569:2;6564:3;6560:12;6553:19;;6358:220;;;:::o;6584:366::-;6726:3;6747:67;6811:2;6806:3;6747:67;:::i;:::-;6740:74;;6823:93;6912:3;6823:93;:::i;:::-;6941:2;6936:3;6932:12;6925:19;;6730:220;;;:::o;6956:366::-;7098:3;7119:67;7183:2;7178:3;7119:67;:::i;:::-;7112:74;;7195:93;7284:3;7195:93;:::i;:::-;7313:2;7308:3;7304:12;7297:19;;7102:220;;;:::o;7328:366::-;7470:3;7491:67;7555:2;7550:3;7491:67;:::i;:::-;7484:74;;7567:93;7656:3;7567:93;:::i;:::-;7685:2;7680:3;7676:12;7669:19;;7474:220;;;:::o;7700:366::-;7842:3;7863:67;7927:2;7922:3;7863:67;:::i;:::-;7856:74;;7939:93;8028:3;7939:93;:::i;:::-;8057:2;8052:3;8048:12;8041:19;;7846:220;;;:::o;8072:366::-;8214:3;8235:67;8299:2;8294:3;8235:67;:::i;:::-;8228:74;;8311:93;8400:3;8311:93;:::i;:::-;8429:2;8424:3;8420:12;8413:19;;8218:220;;;:::o;8444:366::-;8586:3;8607:67;8671:2;8666:3;8607:67;:::i;:::-;8600:74;;8683:93;8772:3;8683:93;:::i;:::-;8801:2;8796:3;8792:12;8785:19;;8590:220;;;:::o;8816:366::-;8958:3;8979:67;9043:2;9038:3;8979:67;:::i;:::-;8972:74;;9055:93;9144:3;9055:93;:::i;:::-;9173:2;9168:3;9164:12;9157:19;;8962:220;;;:::o;9188:366::-;9330:3;9351:67;9415:2;9410:3;9351:67;:::i;:::-;9344:74;;9427:93;9516:3;9427:93;:::i;:::-;9545:2;9540:3;9536:12;9529:19;;9334:220;;;:::o;9560:366::-;9702:3;9723:67;9787:2;9782:3;9723:67;:::i;:::-;9716:74;;9799:93;9888:3;9799:93;:::i;:::-;9917:2;9912:3;9908:12;9901:19;;9706:220;;;:::o;9932:366::-;10074:3;10095:67;10159:2;10154:3;10095:67;:::i;:::-;10088:74;;10171:93;10260:3;10171:93;:::i;:::-;10289:2;10284:3;10280:12;10273:19;;10078:220;;;:::o;10304:366::-;10446:3;10467:67;10531:2;10526:3;10467:67;:::i;:::-;10460:74;;10543:93;10632:3;10543:93;:::i;:::-;10661:2;10656:3;10652:12;10645:19;;10450:220;;;:::o;10676:366::-;10818:3;10839:67;10903:2;10898:3;10839:67;:::i;:::-;10832:74;;10915:93;11004:3;10915:93;:::i;:::-;11033:2;11028:3;11024:12;11017:19;;10822:220;;;:::o;11048:118::-;11135:24;11153:5;11135:24;:::i;:::-;11130:3;11123:37;11113:53;;:::o;11172:112::-;11255:22;11271:5;11255:22;:::i;:::-;11250:3;11243:35;11233:51;;:::o;11290:222::-;11383:4;11421:2;11410:9;11406:18;11398:26;;11434:71;11502:1;11491:9;11487:17;11478:6;11434:71;:::i;:::-;11388:124;;;;:::o;11518:332::-;11639:4;11677:2;11666:9;11662:18;11654:26;;11690:71;11758:1;11747:9;11743:17;11734:6;11690:71;:::i;:::-;11771:72;11839:2;11828:9;11824:18;11815:6;11771:72;:::i;:::-;11644:206;;;;;:::o;11856:442::-;12005:4;12043:2;12032:9;12028:18;12020:26;;12056:71;12124:1;12113:9;12109:17;12100:6;12056:71;:::i;:::-;12137:72;12205:2;12194:9;12190:18;12181:6;12137:72;:::i;:::-;12219;12287:2;12276:9;12272:18;12263:6;12219:72;:::i;:::-;12010:288;;;;;;:::o;12304:332::-;12425:4;12463:2;12452:9;12448:18;12440:26;;12476:71;12544:1;12533:9;12529:17;12520:6;12476:71;:::i;:::-;12557:72;12625:2;12614:9;12610:18;12601:6;12557:72;:::i;:::-;12430:206;;;;;:::o;12642:807::-;12891:4;12929:3;12918:9;12914:19;12906:27;;12943:71;13011:1;13000:9;12996:17;12987:6;12943:71;:::i;:::-;13024:72;13092:2;13081:9;13077:18;13068:6;13024:72;:::i;:::-;13106:80;13182:2;13171:9;13167:18;13158:6;13106:80;:::i;:::-;13196;13272:2;13261:9;13257:18;13248:6;13196:80;:::i;:::-;13286:73;13354:3;13343:9;13339:19;13330:6;13286:73;:::i;:::-;13369;13437:3;13426:9;13422:19;13413:6;13369:73;:::i;:::-;12896:553;;;;;;;;;:::o;13455:210::-;13542:4;13580:2;13569:9;13565:18;13557:26;;13593:65;13655:1;13644:9;13640:17;13631:6;13593:65;:::i;:::-;13547:118;;;;:::o;13671:320::-;13786:4;13824:2;13813:9;13809:18;13801:26;;13837:65;13899:1;13888:9;13884:17;13875:6;13837:65;:::i;:::-;13912:72;13980:2;13969:9;13965:18;13956:6;13912:72;:::i;:::-;13791:200;;;;;:::o;13997:313::-;14110:4;14148:2;14137:9;14133:18;14125:26;;14197:9;14191:4;14187:20;14183:1;14172:9;14168:17;14161:47;14225:78;14298:4;14289:6;14225:78;:::i;:::-;14217:86;;14115:195;;;;:::o;14316:419::-;14482:4;14520:2;14509:9;14505:18;14497:26;;14569:9;14563:4;14559:20;14555:1;14544:9;14540:17;14533:47;14597:131;14723:4;14597:131;:::i;:::-;14589:139;;14487:248;;;:::o;14741:419::-;14907:4;14945:2;14934:9;14930:18;14922:26;;14994:9;14988:4;14984:20;14980:1;14969:9;14965:17;14958:47;15022:131;15148:4;15022:131;:::i;:::-;15014:139;;14912:248;;;:::o;15166:419::-;15332:4;15370:2;15359:9;15355:18;15347:26;;15419:9;15413:4;15409:20;15405:1;15394:9;15390:17;15383:47;15447:131;15573:4;15447:131;:::i;:::-;15439:139;;15337:248;;;:::o;15591:419::-;15757:4;15795:2;15784:9;15780:18;15772:26;;15844:9;15838:4;15834:20;15830:1;15819:9;15815:17;15808:47;15872:131;15998:4;15872:131;:::i;:::-;15864:139;;15762:248;;;:::o;16016:419::-;16182:4;16220:2;16209:9;16205:18;16197:26;;16269:9;16263:4;16259:20;16255:1;16244:9;16240:17;16233:47;16297:131;16423:4;16297:131;:::i;:::-;16289:139;;16187:248;;;:::o;16441:419::-;16607:4;16645:2;16634:9;16630:18;16622:26;;16694:9;16688:4;16684:20;16680:1;16669:9;16665:17;16658:47;16722:131;16848:4;16722:131;:::i;:::-;16714:139;;16612:248;;;:::o;16866:419::-;17032:4;17070:2;17059:9;17055:18;17047:26;;17119:9;17113:4;17109:20;17105:1;17094:9;17090:17;17083:47;17147:131;17273:4;17147:131;:::i;:::-;17139:139;;17037:248;;;:::o;17291:419::-;17457:4;17495:2;17484:9;17480:18;17472:26;;17544:9;17538:4;17534:20;17530:1;17519:9;17515:17;17508:47;17572:131;17698:4;17572:131;:::i;:::-;17564:139;;17462:248;;;:::o;17716:419::-;17882:4;17920:2;17909:9;17905:18;17897:26;;17969:9;17963:4;17959:20;17955:1;17944:9;17940:17;17933:47;17997:131;18123:4;17997:131;:::i;:::-;17989:139;;17887:248;;;:::o;18141:419::-;18307:4;18345:2;18334:9;18330:18;18322:26;;18394:9;18388:4;18384:20;18380:1;18369:9;18365:17;18358:47;18422:131;18548:4;18422:131;:::i;:::-;18414:139;;18312:248;;;:::o;18566:419::-;18732:4;18770:2;18759:9;18755:18;18747:26;;18819:9;18813:4;18809:20;18805:1;18794:9;18790:17;18783:47;18847:131;18973:4;18847:131;:::i;:::-;18839:139;;18737:248;;;:::o;18991:419::-;19157:4;19195:2;19184:9;19180:18;19172:26;;19244:9;19238:4;19234:20;19230:1;19219:9;19215:17;19208:47;19272:131;19398:4;19272:131;:::i;:::-;19264:139;;19162:248;;;:::o;19416:419::-;19582:4;19620:2;19609:9;19605:18;19597:26;;19669:9;19663:4;19659:20;19655:1;19644:9;19640:17;19633:47;19697:131;19823:4;19697:131;:::i;:::-;19689:139;;19587:248;;;:::o;19841:419::-;20007:4;20045:2;20034:9;20030:18;20022:26;;20094:9;20088:4;20084:20;20080:1;20069:9;20065:17;20058:47;20122:131;20248:4;20122:131;:::i;:::-;20114:139;;20012:248;;;:::o;20266:222::-;20359:4;20397:2;20386:9;20382:18;20374:26;;20410:71;20478:1;20467:9;20463:17;20454:6;20410:71;:::i;:::-;20364:124;;;;:::o;20494:831::-;20757:4;20795:3;20784:9;20780:19;20772:27;;20809:71;20877:1;20866:9;20862:17;20853:6;20809:71;:::i;:::-;20890:80;20966:2;20955:9;20951:18;20942:6;20890:80;:::i;:::-;21017:9;21011:4;21007:20;21002:2;20991:9;20987:18;20980:48;21045:108;21148:4;21139:6;21045:108;:::i;:::-;21037:116;;21163:72;21231:2;21220:9;21216:18;21207:6;21163:72;:::i;:::-;21245:73;21313:3;21302:9;21298:19;21289:6;21245:73;:::i;:::-;20762:563;;;;;;;;:::o;21331:214::-;21420:4;21458:2;21447:9;21443:18;21435:26;;21471:67;21535:1;21524:9;21520:17;21511:6;21471:67;:::i;:::-;21425:120;;;;:::o;21551:132::-;21618:4;21641:3;21633:11;;21671:4;21666:3;21662:14;21654:22;;21623:60;;;:::o;21689:114::-;21756:6;21790:5;21784:12;21774:22;;21763:40;;;:::o;21809:99::-;21861:6;21895:5;21889:12;21879:22;;21868:40;;;:::o;21914:113::-;21984:4;22016;22011:3;22007:14;21999:22;;21989:38;;;:::o;22033:184::-;22132:11;22166:6;22161:3;22154:19;22206:4;22201:3;22197:14;22182:29;;22144:73;;;;:::o;22223:169::-;22307:11;22341:6;22336:3;22329:19;22381:4;22376:3;22372:14;22357:29;;22319:73;;;;:::o;22398:305::-;22438:3;22457:20;22475:1;22457:20;:::i;:::-;22452:25;;22491:20;22509:1;22491:20;:::i;:::-;22486:25;;22645:1;22577:66;22573:74;22570:1;22567:81;22564:2;;;22651:18;;:::i;:::-;22564:2;22695:1;22692;22688:9;22681:16;;22442:261;;;;:::o;22709:237::-;22747:3;22766:18;22782:1;22766:18;:::i;:::-;22761:23;;22798:18;22814:1;22798:18;:::i;:::-;22793:23;;22888:1;22882:4;22878:12;22875:1;22872:19;22869:2;;;22894:18;;:::i;:::-;22869:2;22938:1;22935;22931:9;22924:16;;22751:195;;;;:::o;22952:185::-;22992:1;23009:20;23027:1;23009:20;:::i;:::-;23004:25;;23043:20;23061:1;23043:20;:::i;:::-;23038:25;;23082:1;23072:2;;23087:18;;:::i;:::-;23072:2;23129:1;23126;23122:9;23117:14;;22994:143;;;;:::o;23143:348::-;23183:7;23206:20;23224:1;23206:20;:::i;:::-;23201:25;;23240:20;23258:1;23240:20;:::i;:::-;23235:25;;23428:1;23360:66;23356:74;23353:1;23350:81;23345:1;23338:9;23331:17;23327:105;23324:2;;;23435:18;;:::i;:::-;23324:2;23483:1;23480;23476:9;23465:20;;23191:300;;;;:::o;23497:191::-;23537:4;23557:20;23575:1;23557:20;:::i;:::-;23552:25;;23591:20;23609:1;23591:20;:::i;:::-;23586:25;;23630:1;23627;23624:8;23621:2;;;23635:18;;:::i;:::-;23621:2;23680:1;23677;23673:9;23665:17;;23542:146;;;;:::o;23694:96::-;23731:7;23760:24;23778:5;23760:24;:::i;:::-;23749:35;;23739:51;;;:::o;23796:104::-;23841:7;23870:24;23888:5;23870:24;:::i;:::-;23859:35;;23849:51;;;:::o;23906:90::-;23940:7;23983:5;23976:13;23969:21;23958:32;;23948:48;;;:::o;24002:126::-;24039:7;24079:42;24072:5;24068:54;24057:65;;24047:81;;;:::o;24134:77::-;24171:7;24200:5;24189:16;;24179:32;;;:::o;24217:86::-;24252:7;24292:4;24285:5;24281:16;24270:27;;24260:43;;;:::o;24309:121::-;24367:9;24400:24;24418:5;24400:24;:::i;:::-;24387:37;;24377:53;;;:::o;24436:307::-;24504:1;24514:113;24528:6;24525:1;24522:13;24514:113;;;24613:1;24608:3;24604:11;24598:18;24594:1;24589:3;24585:11;24578:39;24550:2;24547:1;24543:10;24538:15;;24514:113;;;24645:6;24642:1;24639:13;24636:2;;;24725:1;24716:6;24711:3;24707:16;24700:27;24636:2;24485:258;;;;:::o;24749:320::-;24793:6;24830:1;24824:4;24820:12;24810:22;;24877:1;24871:4;24867:12;24898:18;24888:2;;24954:4;24946:6;24942:17;24932:27;;24888:2;25016;25008:6;25005:14;24985:18;24982:38;24979:2;;;25035:18;;:::i;:::-;24979:2;24800:269;;;;:::o;25075:180::-;25123:77;25120:1;25113:88;25220:4;25217:1;25210:15;25244:4;25241:1;25234:15;25261:180;25309:77;25306:1;25299:88;25406:4;25403:1;25396:15;25430:4;25427:1;25420:15;25447:180;25495:77;25492:1;25485:88;25592:4;25589:1;25582:15;25616:4;25613:1;25606:15;25633:102;25674:6;25725:2;25721:7;25716:2;25709:5;25705:14;25701:28;25691:38;;25681:54;;;:::o;25741:222::-;25881:34;25877:1;25869:6;25865:14;25858:58;25950:5;25945:2;25937:6;25933:15;25926:30;25847:116;:::o;25969:221::-;26109:34;26105:1;26097:6;26093:14;26086:58;26178:4;26173:2;26165:6;26161:15;26154:29;26075:115;:::o;26196:177::-;26336:29;26332:1;26324:6;26320:14;26313:53;26302:71;:::o;26379:166::-;26519:18;26515:1;26507:6;26503:14;26496:42;26485:60;:::o;26551:220::-;26691:34;26687:1;26679:6;26675:14;26668:58;26760:3;26755:2;26747:6;26743:15;26736:28;26657:114;:::o;26777:174::-;26917:26;26913:1;26905:6;26901:14;26894:50;26883:68;:::o;26957:182::-;27097:34;27093:1;27085:6;27081:14;27074:58;27063:76;:::o;27145:228::-;27285:34;27281:1;27273:6;27269:14;27262:58;27354:11;27349:2;27341:6;27337:15;27330:36;27251:122;:::o;27379:176::-;27519:28;27515:1;27507:6;27503:14;27496:52;27485:70;:::o;27561:224::-;27701:34;27697:1;27689:6;27685:14;27678:58;27770:7;27765:2;27757:6;27753:15;27746:32;27667:118;:::o;27791:223::-;27931:34;27927:1;27919:6;27915:14;27908:58;28000:6;27995:2;27987:6;27983:15;27976:31;27897:117;:::o;28020:173::-;28160:25;28156:1;28148:6;28144:14;28137:49;28126:67;:::o;28199:165::-;28339:17;28335:1;28327:6;28323:14;28316:41;28305:59;:::o;28370:168::-;28510:20;28506:1;28498:6;28494:14;28487:44;28476:62;:::o;28544:122::-;28617:24;28635:5;28617:24;:::i;:::-;28610:5;28607:35;28597:2;;28656:1;28653;28646:12;28597:2;28587:79;:::o;28672:138::-;28753:32;28779:5;28753:32;:::i;:::-;28746:5;28743:43;28733:2;;28800:1;28797;28790:12;28733:2;28723:87;:::o;28816:116::-;28886:21;28901:5;28886:21;:::i;:::-;28879:5;28876:32;28866:2;;28922:1;28919;28912:12;28866:2;28856:76;:::o;28938:122::-;29011:24;29029:5;29011:24;:::i;:::-;29004:5;29001:35;28991:2;;29050:1;29047;29040:12;28991:2;28981:79;:::o

Swarm Source

ipfs://acf19ae1863bcb556106bd6b7e483c6f025e9a6249e4e88996a3ecf5ab5a4a4b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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