ETH Price: $2,311.71 (+0.36%)

Contract

0x912ce2D21bC6B525D2A57cb3472F89B2DEf65D74
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $2,311.71/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve128806322021-07-23 4:59:121152 days ago1627016352IN
0x912ce2D2...2DEf65D74
0 ETH0.000897119
Lucky Draw128681082021-07-21 6:08:571154 days ago1626847737IN
0x912ce2D2...2DEf65D74
0 ETH0.005473213
Approve128575532021-07-19 14:27:061155 days ago1626704826IN
0x912ce2D2...2DEf65D74
0 ETH0.0012748327
Approve128553262021-07-19 6:06:061156 days ago1626674766IN
0x912ce2D2...2DEf65D74
0 ETH0.0007082415
Lucky Draw128549752021-07-19 4:47:051156 days ago1626670025IN
0x912ce2D2...2DEf65D74
0 ETH0.0061318215
Lucky Draw128549702021-07-19 4:45:041156 days ago1626669904IN
0x912ce2D2...2DEf65D74
0 ETH0.0064309915
Approve128493032021-07-18 7:30:341157 days ago1626593434IN
0x912ce2D2...2DEf65D74
0 ETH0.0008753818.5400015
Approve128482072021-07-18 3:21:181157 days ago1626578478IN
0x912ce2D2...2DEf65D74
0 ETH0.0008026717
Lucky Draw128437642021-07-17 10:36:061158 days ago1626518166IN
0x912ce2D2...2DEf65D74
0 ETH0.0074087717
Lucky Draw128421642021-07-17 4:22:171158 days ago1626495737IN
0x912ce2D2...2DEf65D74
0 ETH0.0142162532
Approve128411322021-07-17 0:35:331158 days ago1626482133IN
0x912ce2D2...2DEf65D74
0 ETH0.0024080151
Approve128410882021-07-17 0:27:011158 days ago1626481621IN
0x912ce2D2...2DEf65D74
0 ETH0.0008194830
Approve128410812021-07-17 0:25:021158 days ago1626481502IN
0x912ce2D2...2DEf65D74
0 ETH0.0012748327
Approve128408922021-07-16 23:39:151158 days ago1626478755IN
0x912ce2D2...2DEf65D74
0 ETH0.0012276126.00000145
Approve128408302021-07-16 23:23:271158 days ago1626477807IN
0x912ce2D2...2DEf65D74
0 ETH0.001246526.4
Approve128406182021-07-16 22:41:051158 days ago1626475265IN
0x912ce2D2...2DEf65D74
0 ETH0.0011426224.2
Approve128403182021-07-16 21:37:341158 days ago1626471454IN
0x912ce2D2...2DEf65D74
0 ETH0.0010859623
Approve128401232021-07-16 20:58:041158 days ago1626469084IN
0x912ce2D2...2DEf65D74
0 ETH0.0016525635
Approve128400952021-07-16 20:51:421158 days ago1626468702IN
0x912ce2D2...2DEf65D74
0 ETH0.0017469937
Approve128400472021-07-16 20:37:141158 days ago1626467834IN
0x912ce2D2...2DEf65D74
0 ETH0.0015061931.9
Approve128400042021-07-16 20:26:211158 days ago1626467181IN
0x912ce2D2...2DEf65D74
0 ETH0.0014023129.7
Approve128399352021-07-16 20:07:511158 days ago1626466071IN
0x912ce2D2...2DEf65D74
0 ETH0.0011331824
Approve128398532021-07-16 19:49:031158 days ago1626464943IN
0x912ce2D2...2DEf65D74
0 ETH0.0011331824
Approve128398512021-07-16 19:48:031158 days ago1626464883IN
0x912ce2D2...2DEf65D74
0 ETH0.0013220428
Approve128398212021-07-16 19:41:541158 days ago1626464514IN
0x912ce2D2...2DEf65D74
0 ETH0.0012748327
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
130542762021-08-19 7:11:461125 days ago1629357106
0x912ce2D2...2DEf65D74
0.00095414 ETH
130542762021-08-19 7:11:461125 days ago1629357106
0x912ce2D2...2DEf65D74
0.00381658 ETH
130542762021-08-19 7:11:461125 days ago1629357106
0x912ce2D2...2DEf65D74
0.00477073 ETH
129896642021-08-09 7:50:041135 days ago1628495404
0x912ce2D2...2DEf65D74
0.00279161 ETH
129896642021-08-09 7:50:041135 days ago1628495404
0x912ce2D2...2DEf65D74
0.01116646 ETH
129896642021-08-09 7:50:041135 days ago1628495404
0x912ce2D2...2DEf65D74
0.01395807 ETH
129050132021-07-27 0:37:091148 days ago1627346229
0x912ce2D2...2DEf65D74
0.00151469 ETH
129050132021-07-27 0:37:091148 days ago1627346229
0x912ce2D2...2DEf65D74
0.00605878 ETH
129050132021-07-27 0:37:091148 days ago1627346229
0x912ce2D2...2DEf65D74
0.00757348 ETH
128779762021-07-22 19:07:521152 days ago1626980872
0x912ce2D2...2DEf65D74
0.00032156 ETH
128779762021-07-22 19:07:521152 days ago1626980872
0x912ce2D2...2DEf65D74
0.00128624 ETH
128779762021-07-22 19:07:521152 days ago1626980872
0x912ce2D2...2DEf65D74
0.0016078 ETH
128659862021-07-20 22:03:581154 days ago1626818638
0x912ce2D2...2DEf65D74
0.00222185 ETH
128659862021-07-20 22:03:581154 days ago1626818638
0x912ce2D2...2DEf65D74
0.00888742 ETH
128659862021-07-20 22:03:581154 days ago1626818638
0x912ce2D2...2DEf65D74
0.01110928 ETH
128553322021-07-19 6:07:301156 days ago1626674850
0x912ce2D2...2DEf65D74
0.00060817 ETH
128553322021-07-19 6:07:301156 days ago1626674850
0x912ce2D2...2DEf65D74
0.00243269 ETH
128553322021-07-19 6:07:301156 days ago1626674850
0x912ce2D2...2DEf65D74
0.00304087 ETH
128550942021-07-19 5:19:161156 days ago1626671956
0x912ce2D2...2DEf65D74
0.00029714 ETH
128550942021-07-19 5:19:161156 days ago1626671956
0x912ce2D2...2DEf65D74
0.00118858 ETH
128550942021-07-19 5:19:161156 days ago1626671956
0x912ce2D2...2DEf65D74
0.00148573 ETH
128493152021-07-18 7:32:531157 days ago1626593573
0x912ce2D2...2DEf65D74
0.00380169 ETH
128493152021-07-18 7:32:531157 days ago1626593573
0x912ce2D2...2DEf65D74
0.01520679 ETH
128493152021-07-18 7:32:531157 days ago1626593573
0x912ce2D2...2DEf65D74
0.01900848 ETH
128455722021-07-17 17:26:321157 days ago1626542792
0x912ce2D2...2DEf65D74
0.00117736 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PUFI

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-16
*/

/**
* PUMP FICTION
 * https://t.me/PuFiToken
 * pumpfictiontoken.com
 * twitter.com/PuFiToken
 * 
 * CHEESY MEME TOKEN LOADED WITH ACTIONS AND MEMES
 * 
 * TOKENOMICS:
 * 1,000,000,000,000 token supply
 * 15-second cooldown to sell after a buy, in order to limit bot behavior. NO OTHER COOLDOWNS, NO COOLDOWNS BETWEEN SELLS
 * No buy or sell token limits. Whales are welcome!
 * 12% total tax on buy
 * Fee on sells is dynamic, relative to price impact, minimum of 10% fee and maximum of 30% fee, with NO SELL LIMIT.
 * No team tokens, no presale
 * 
*/



//SPDX-License-Identifier: UNLICENSED

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

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

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

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

}  

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB) external view 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);
}

interface PUFI_LOTTERY_Interface {
    function sendLottery(address winner) external returns(bool);
}

contract PUFI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => User) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10**12 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = "PUMP FICTION | t.me/PuFiToken";
    string private constant _symbol = "PUFI";
    uint8 private constant _decimals = 18;
    uint256 private _taxFee = 2;
    uint256 private _teamFee = 10;
    uint256 private _feeRate = 5;
    uint256 private _feeMultiplier = 1000;
    uint256 private _launchTime;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _FeeAddress;
    address payable private _lotteryAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private _cooldownEnabled = true;
    bool private inSwap = false;
    bool private _useImpactFeeSetter = true;
    uint256 private _nextLotteryDraw;
    mapping (address => bool) private _lotteryWinners;
    address[] private _lotteryClaimed;
    address[] private _buyers;
    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }

    event CooldownEnabledUpdated(bool _cooldown);
    event FeeMultiplierUpdated(uint _multiplier);
    event FeeRateUpdated(uint _rate);
    event LotteryWinner(address _winnerAddress);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address payable FeeAddress) {
        _FeeAddress = FeeAddress;
        _rOwned[_FeeAddress] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[FeeAddress] = true;
        _isExcludedFromFee[_lotteryAddress] = true;
        emit Transfer(address(0), _FeeAddress, _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    function setFee(uint256 impactFee) private {
        uint256 _impactFee = 12;
        if(impactFee < 12) {
            _impactFee = 12;
        } else if(impactFee > 30) {
            _impactFee = 30;
        } else {
            _impactFee = impactFee;
        }
        if(_impactFee.mod(2) != 0) {
            _impactFee++;
        }
        _taxFee = (_impactFee.sub(10));
        _teamFee = 10;
    }

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

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

        if(from != _FeeAddress && to != _FeeAddress) {
            if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }

            // buy
            require(tradingOpen, "Trading not yet enabled.");
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                _taxFee = 2;
                _teamFee = 10;
                if(_cooldownEnabled) {
                    cooldown[to].sell = block.timestamp + (15 seconds);
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            // sell
            if(!inSwap && from != uniswapV2Pair && tradingOpen) {

                if(_cooldownEnabled) {
                    require(cooldown[from].sell < block.timestamp, "Your sell cooldown has not expired.");
                }

                if(_useImpactFeeSetter) {
                    uint256 feeBasis = amount.mul(_feeMultiplier);
                    feeBasis = feeBasis.div(balanceOf(uniswapV2Pair).add(amount));
                    setFee(feeBasis);
                }

                if(contractTokenBalance > 0) {
                    if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                        contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
                    }
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _FeeAddress.transfer(amount.mul(80).div(100));
        _lotteryAddress.transfer(amount.div(5));
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        _transferStandard(sender, recipient, amount);
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        if(_rOwned[recipient] == 0) _buyers.push(recipient);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function openTrading() external {
        require(uniswapV2Pair == address(0));
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
        tradingOpen = true;
    }

    function manualswap() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    // fallback in case contract is not releasing tokens fast enough
    function setFeeRate(uint256 rate) external {
        require(_msgSender() == _FeeAddress);
        require(rate < 51, "Rate can't exceed 50%");
        _feeRate = rate;
        emit FeeRateUpdated(_feeRate);
    }

    function setCooldownEnabled(bool onoff) external {
        require(_msgSender() == _FeeAddress);
        _cooldownEnabled = onoff;
        emit CooldownEnabledUpdated(_cooldownEnabled);
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function cooldownEnabled() public view returns (bool) {
        return _cooldownEnabled;
    }

    function timeToBuy(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].buy;
    }

    function timeToSell(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].sell;
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }
    
    function lotteryDriverAddress() public view returns(address) {
        return _lotteryAddress;
    }
    
    function setLotteryDriverAddress(address payable lottery) external {
        require(_msgSender() == _FeeAddress);
        _lotteryAddress = lottery;
    }
    
    function luckyDraw() public returns(address winnerAddress) {
        winnerAddress = address(0);
        require(_nextLotteryDraw < block.timestamp,"Try after 6 hours from last draw");
         uint256 minHolding = 2 * 10**9 * 10**18;
         uint256 rminHolding = minHolding.mul(_getRate());
         address[] memory eligibleHolders = new address[](_buyers.length);
         uint eligibleHoldersCount;
         for (uint256 i = 0; i < _buyers.length; i++) {
             if(_rOwned[_buyers[i]] >= rminHolding && !_lotteryWinners[_buyers[i]] && _buyers[i] != uniswapV2Pair){
                 eligibleHolders[eligibleHoldersCount];
                 eligibleHoldersCount++;
             }
         }
         if(eligibleHoldersCount > 0){
             uint luckyWinner = uint(keccak256(abi.encodePacked(block.timestamp, msg.sender, eligibleHoldersCount))) % eligibleHoldersCount;
             winnerAddress = _buyers[luckyWinner];
             _lotteryWinners[winnerAddress] = true;
             PUFI_LOTTERY_Interface(payable(_lotteryAddress)).sendLottery(winnerAddress);
             emit LotteryWinner(winnerAddress);
             _nextLotteryDraw = block.timestamp+(6 hours);
         }
        
        return winnerAddress;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"FeeAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_cooldown","type":"bool"}],"name":"CooldownEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"FeeMultiplierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"FeeRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_winnerAddress","type":"address"}],"name":"LotteryWinner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"lotteryDriverAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"luckyDraw","outputs":[{"internalType":"address","name":"winnerAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"lottery","type":"address"}],"name":"setLotteryDriverAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"timeToBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"timeToSell","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526c0c9f2c9cd04674edea4000000060001962000021919062000580565b60001962000030919062000507565b6007556002600955600a80556005600b556103e8600c55600954600e55600a54600f556001601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550348015620000b157600080fd5b5060405162004350380380620043508339818101604052810190620000d79190620004a7565b6000620000e96200045f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460026000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002466200046760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c0c9f2c9cd04674edea40000000604051620004509190620004ea565b60405180910390a35062000635565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620004a1816200061b565b92915050565b600060208284031215620004c057620004bf62000616565b5b6000620004d08482850162000490565b91505092915050565b620004e48162000576565b82525050565b6000602082019050620005016000830184620004d9565b92915050565b6000620005148262000576565b9150620005218362000576565b925082821015620005375762000536620005b8565b5b828203905092915050565b60006200054f8262000556565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200058d8262000576565b91506200059a8362000576565b925082620005ad57620005ac620005e7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b620006268162000542565b81146200063257600080fd5b50565b613d0b80620006456000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d1578063a9fc35a91161008a578063c9567bf911610064578063c9567bf914610527578063cf9c2e411461053e578063db92dbb614610569578063dd62ed3e1461059457610171565b8063a9fc35a9146104a8578063c361c58f146104e5578063c3c8cd801461051057610171565b806370a0823114610396578063715018a6146103d35780638da5cb5b146103ea57806395d89b4114610415578063a9059cbb14610440578063a985ceef1461047d57610171565b806345596e2e1161012357806345596e2e1461029c57806349bd5a5e146102c55780635932ead1146102f057806368a3a6a51461031957806369dffb45146103565780636fc3eaec1461037f57610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd1461020957806327f3a72a14610246578063313ce5671461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105d1565b604051610198919061331d565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612ebc565b61060e565b6040516101d59190613302565b60405180910390f35b3480156101ea57600080fd5b506101f361062c565b60405161020091906134df565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612e69565b610641565b60405161023d9190613302565b60405180910390f35b34801561025257600080fd5b5061025b61071a565b60405161026891906134df565b60405180910390f35b34801561027d57600080fd5b5061028661072a565b6040516102939190613554565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612f56565b610733565b005b3480156102d157600080fd5b506102da61081a565b6040516102e791906132be565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190612efc565b610840565b005b34801561032557600080fd5b50610340600480360381019061033b9190612da2565b610904565b60405161034d91906134df565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612dfc565b61095b565b005b34801561038b57600080fd5b50610394610a00565b005b3480156103a257600080fd5b506103bd60048036038101906103b89190612da2565b610a72565b6040516103ca91906134df565b60405180910390f35b3480156103df57600080fd5b506103e8610ac3565b005b3480156103f657600080fd5b506103ff610c16565b60405161040c91906132be565b60405180910390f35b34801561042157600080fd5b5061042a610c3f565b604051610437919061331d565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190612ebc565b610c7c565b6040516104749190613302565b60405180910390f35b34801561048957600080fd5b50610492610c9a565b60405161049f9190613302565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190612da2565b610cb1565b6040516104dc91906134df565b60405180910390f35b3480156104f157600080fd5b506104fa610d08565b60405161050791906132be565b60405180910390f35b34801561051c57600080fd5b50610525610d32565b005b34801561053357600080fd5b5061053c610dac565b005b34801561054a57600080fd5b5061055361107e565b60405161056091906132be565b60405180910390f35b34801561057557600080fd5b5061057e61152c565b60405161058b91906134df565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190612e29565b61155e565b6040516105c891906134df565b60405180910390f35b60606040518060400160405280601d81526020017f50554d502046494354494f4e207c20742e6d652f50754669546f6b656e000000815250905090565b600061062261061b6115e5565b84846115ed565b6001905092915050565b60006c0c9f2c9cd04674edea40000000905090565b600061064e8484846117b8565b61070f8461065a6115e5565b61070a85604051806060016040528060288152602001613cae60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106c06115e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fb49092919063ffffffff16565b6115ed565b600190509392505050565b600061072530610a72565b905090565b60006012905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107746115e5565b73ffffffffffffffffffffffffffffffffffffffff161461079457600080fd5b603381106107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce906133bf565b60405180910390fd5b80600b819055507f208f1b468d3d61f0f085e975bd9d04367c930d599642faad06695229f3eadcd8600b5460405161080f91906134df565b60405180910390a150565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108816115e5565b73ffffffffffffffffffffffffffffffffffffffff16146108a157600080fd5b80601360156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601360159054906101000a900460ff166040516108f99190613302565b60405180910390a150565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001544261095491906136a5565b9050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661099c6115e5565b73ffffffffffffffffffffffffffffffffffffffff16146109bc57600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a416115e5565b73ffffffffffffffffffffffffffffffffffffffff1614610a6157600080fd5b6000479050610a6f81612018565b50565b6000610abc600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612126565b9050919050565b610acb6115e5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f9061341f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5055464900000000000000000000000000000000000000000000000000000000815250905090565b6000610c90610c896115e5565b84846117b8565b6001905092915050565b6000601360159054906101000a900460ff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015442610d0191906136a5565b9050919050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d736115e5565b73ffffffffffffffffffffffffffffffffffffffff1614610d9357600080fd5b6000610d9e30610a72565b9050610da981612194565b50565b600073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0757600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9b30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166c0c9f2c9cd04674edea400000006115ed565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee157600080fd5b505afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f199190612dcf565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7b57600080fd5b505afa158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb39190612dcf565b6040518363ffffffff1660e01b8152600401610fd09291906132d9565b60206040518083038186803b158015610fe857600080fd5b505afa158015610ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110209190612dcf565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff02191690831515021790555050565b600042601454106110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb9061349f565b60405180910390fd5b60006b06765c793fa10079d0000000905060006110f16110e261241c565b8361244790919063ffffffff16565b9050600060178054905067ffffffffffffffff811115611114576111136138ba565b5b6040519080825280602002602001820160405280156111425781602001602082028036833780820191505090505b509050600080600090505b60178054905081101561134a578360026000601784815481106111735761117261388b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561126f575060156000601783815481106111fa576111f961388b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113075750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601782815481106112c3576112c261388b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156113375782828151811061131f5761131e61388b565b5b602002602001015150818061133390613785565b9250505b808061134290613785565b91505061114d565b5060008111156115255760008142338460405160200161136c93929190613281565b6040516020818303038152906040528051906020012060001c61138f91906137fc565b9050601781815481106113a5576113a461388b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1695506001601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368c4af07876040518263ffffffff1660e01b815260040161148591906132be565b602060405180830381600087803b15801561149f57600080fd5b505af11580156114b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d79190612f29565b507fcc6f1b19699a05581bacb850871e0e0d722ce614910418d2ffcf9cef969e11888660405161150791906132be565b60405180910390a16154604261151d91906135c4565b601481905550505b5050505090565b6000611559601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a72565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116549061347f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c49061337f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ab91906134df565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f9061345f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f9061333f565b60405180910390fd5b600081116118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061343f565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119875750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ef157601360159054906101000a900460ff1615611a8d57600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16611a8c576040518060600160405280600081526020016000815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601360149054906101000a900460ff16611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad3906134bf565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b875750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdd5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c5b576002600981905550600a8081905550601360159054906101000a900460ff1615611c5a57600f42611c1391906135c4565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b5b6000611c6630610a72565b9050601360169054906101000a900460ff16158015611cd35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ceb5750601360149054906101000a900460ff165b15611eef57601360159054906101000a900460ff1615611d8a5742600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d80906133df565b60405180910390fd5b5b601360179054906101000a900460ff1615611e14576000611db6600c548461244790919063ffffffff16565b9050611e07611df884611dea601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a72565b6124c290919063ffffffff16565b8261252090919063ffffffff16565b9050611e128161256a565b505b6000811115611ed557611e6f6064611e61600b54611e53601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a72565b61244790919063ffffffff16565b61252090919063ffffffff16565b811115611ecb57611ec86064611eba600b54611eac601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a72565b61244790919063ffffffff16565b61252090919063ffffffff16565b90505b611ed481612194565b5b60004790506000811115611eed57611eec47612018565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f985750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fa257600090505b611fae848484846125e8565b50505050565b6000838311158290611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff3919061331d565b60405180910390fd5b506000838561200b91906136a5565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61207b606461206d60508661244790919063ffffffff16565b61252090919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120a6573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120f760058461252090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612122573d6000803e3d6000fd5b5050565b600060075482111561216d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121649061335f565b60405180910390fd5b600061217761241c565b905061218c818461252090919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121cc576121cb6138ba565b5b6040519080825280602002602001820160405280156121fa5781602001602082028036833780820191505090505b50905030816000815181106122125761221161388b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122b457600080fd5b505afa1580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec9190612dcf565b81600181518110612300576122ff61388b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061236730601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ed565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123cb9594939291906134fa565b600060405180830381600087803b1580156123e557600080fd5b505af11580156123f9573d6000803e3d6000fd5b50505050506000601360166101000a81548160ff02191690831515021790555050565b6000806000612429612615565b91509150612440818361252090919063ffffffff16565b9250505090565b60008083141561245a57600090506124bc565b60008284612468919061364b565b9050828482612477919061361a565b146124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae906133ff565b60405180910390fd5b809150505b92915050565b60008082846124d191906135c4565b905083811015612516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250d9061339f565b60405180910390fd5b8091505092915050565b600061256283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612683565b905092915050565b6000600c9050600c82101561258257600c9050612599565b601e82111561259457601e9050612598565b8190505b5b60006125af6002836126e690919063ffffffff16565b146125c35780806125bf90613785565b9150505b6125d7600a8261273090919063ffffffff16565b600981905550600a80819055505050565b806125f6576125f561277a565b5b6126018484846127bd565b8061260f5761260e612a34565b5b50505050565b6000806000600754905060006c0c9f2c9cd04674edea4000000090506126536c0c9f2c9cd04674edea4000000060075461252090919063ffffffff16565b821015612676576007546c0c9f2c9cd04674edea4000000093509350505061267f565b81819350935050505b9091565b600080831182906126ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c1919061331d565b60405180910390fd5b50600083856126d9919061361a565b9050809150509392505050565b600061272883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612a48565b905092915050565b600061277283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fb4565b905092915050565b600060095414801561278e57506000600a54145b15612798576127bb565b600954600e81905550600a54600f8190555060006009819055506000600a819055505b565b6000806000806000806127cf87612aa6565b95509550955095509550955061282d86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561291c576017889080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61296e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ba81612b0e565b6129c48483612bcb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a2191906134df565b60405180910390a3505050505050505050565b600e54600981905550600f54600a81905550565b6000808314158290612a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a87919061331d565b60405180910390fd5b508284612a9d91906137fc565b90509392505050565b6000806000806000806000806000612ac38a600954600a54612c05565b9250925092506000612ad361241c565b90506000806000612ae68e878787612c9b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b1861241c565b90506000612b2f828461244790919063ffffffff16565b9050612b8381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612be08260075461273090919063ffffffff16565b600781905550612bfb816008546124c290919063ffffffff16565b6008819055505050565b600080600080612c316064612c23888a61244790919063ffffffff16565b61252090919063ffffffff16565b90506000612c5b6064612c4d888b61244790919063ffffffff16565b61252090919063ffffffff16565b90506000612c8482612c76858c61273090919063ffffffff16565b61273090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612cb4858961244790919063ffffffff16565b90506000612ccb868961244790919063ffffffff16565b90506000612ce2878961244790919063ffffffff16565b90506000612d0b82612cfd858761273090919063ffffffff16565b61273090919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081359050612d3381613c51565b92915050565b600081519050612d4881613c51565b92915050565b600081359050612d5d81613c68565b92915050565b600081359050612d7281613c7f565b92915050565b600081519050612d8781613c7f565b92915050565b600081359050612d9c81613c96565b92915050565b600060208284031215612db857612db76138e9565b5b6000612dc684828501612d24565b91505092915050565b600060208284031215612de557612de46138e9565b5b6000612df384828501612d39565b91505092915050565b600060208284031215612e1257612e116138e9565b5b6000612e2084828501612d4e565b91505092915050565b60008060408385031215612e4057612e3f6138e9565b5b6000612e4e85828601612d24565b9250506020612e5f85828601612d24565b9150509250929050565b600080600060608486031215612e8257612e816138e9565b5b6000612e9086828701612d24565b9350506020612ea186828701612d24565b9250506040612eb286828701612d8d565b9150509250925092565b60008060408385031215612ed357612ed26138e9565b5b6000612ee185828601612d24565b9250506020612ef285828601612d8d565b9150509250929050565b600060208284031215612f1257612f116138e9565b5b6000612f2084828501612d63565b91505092915050565b600060208284031215612f3f57612f3e6138e9565b5b6000612f4d84828501612d78565b91505092915050565b600060208284031215612f6c57612f6b6138e9565b5b6000612f7a84828501612d8d565b91505092915050565b6000612f8f8383612f9b565b60208301905092915050565b612fa4816136d9565b82525050565b612fb3816136d9565b82525050565b612fca612fc5826136d9565b6137ce565b82525050565b6000612fdb8261357f565b612fe581856135a2565b9350612ff08361356f565b8060005b838110156130215781516130088882612f83565b975061301383613595565b925050600181019050612ff4565b5085935050505092915050565b613037816136fd565b82525050565b61304681613740565b82525050565b60006130578261358a565b61306181856135b3565b9350613071818560208601613752565b61307a816138ee565b840191505092915050565b60006130926023836135b3565b915061309d8261390c565b604082019050919050565b60006130b5602a836135b3565b91506130c08261395b565b604082019050919050565b60006130d86022836135b3565b91506130e3826139aa565b604082019050919050565b60006130fb601b836135b3565b9150613106826139f9565b602082019050919050565b600061311e6015836135b3565b915061312982613a22565b602082019050919050565b60006131416023836135b3565b915061314c82613a4b565b604082019050919050565b60006131646021836135b3565b915061316f82613a9a565b604082019050919050565b60006131876020836135b3565b915061319282613ae9565b602082019050919050565b60006131aa6029836135b3565b91506131b582613b12565b604082019050919050565b60006131cd6025836135b3565b91506131d882613b61565b604082019050919050565b60006131f06024836135b3565b91506131fb82613bb0565b604082019050919050565b60006132136020836135b3565b915061321e82613bff565b602082019050919050565b60006132366018836135b3565b915061324182613c28565b602082019050919050565b61325581613729565b82525050565b61326c61326782613729565b6137f2565b82525050565b61327b81613733565b82525050565b600061328d828661325b565b60208201915061329d8285612fb9565b6014820191506132ad828461325b565b602082019150819050949350505050565b60006020820190506132d36000830184612faa565b92915050565b60006040820190506132ee6000830185612faa565b6132fb6020830184612faa565b9392505050565b6000602082019050613317600083018461302e565b92915050565b60006020820190508181036000830152613337818461304c565b905092915050565b6000602082019050818103600083015261335881613085565b9050919050565b60006020820190508181036000830152613378816130a8565b9050919050565b60006020820190508181036000830152613398816130cb565b9050919050565b600060208201905081810360008301526133b8816130ee565b9050919050565b600060208201905081810360008301526133d881613111565b9050919050565b600060208201905081810360008301526133f881613134565b9050919050565b6000602082019050818103600083015261341881613157565b9050919050565b600060208201905081810360008301526134388161317a565b9050919050565b600060208201905081810360008301526134588161319d565b9050919050565b60006020820190508181036000830152613478816131c0565b9050919050565b60006020820190508181036000830152613498816131e3565b9050919050565b600060208201905081810360008301526134b881613206565b9050919050565b600060208201905081810360008301526134d881613229565b9050919050565b60006020820190506134f4600083018461324c565b92915050565b600060a08201905061350f600083018861324c565b61351c602083018761303d565b818103604083015261352e8186612fd0565b905061353d6060830185612faa565b61354a608083018461324c565b9695505050505050565b60006020820190506135696000830184613272565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006135cf82613729565b91506135da83613729565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561360f5761360e61382d565b5b828201905092915050565b600061362582613729565b915061363083613729565b9250826136405761363f61385c565b5b828204905092915050565b600061365682613729565b915061366183613729565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561369a5761369961382d565b5b828202905092915050565b60006136b082613729565b91506136bb83613729565b9250828210156136ce576136cd61382d565b5b828203905092915050565b60006136e482613709565b9050919050565b60006136f682613709565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061374b82613729565b9050919050565b60005b83811015613770578082015181840152602081019050613755565b8381111561377f576000848401525b50505050565b600061379082613729565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137c3576137c261382d565b5b600182019050919050565b60006137d9826137e0565b9050919050565b60006137eb826138ff565b9050919050565b6000819050919050565b600061380782613729565b915061381283613729565b9250826138225761382161385c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f526174652063616e277420657863656564203530250000000000000000000000600082015250565b7f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f547279206166746572203620686f7572732066726f6d206c6173742064726177600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b613c5a816136d9565b8114613c6557600080fd5b50565b613c71816136eb565b8114613c7c57600080fd5b50565b613c88816136fd565b8114613c9357600080fd5b50565b613c9f81613729565b8114613caa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122093a84b3f5ff371cedf5dcca8363802e8d2d47a9756f3a9782224d1c3ffec99ca64736f6c6343000806003300000000000000000000000067f4021e037cb53c18861c8ea40d6e09ad616be7

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d1578063a9fc35a91161008a578063c9567bf911610064578063c9567bf914610527578063cf9c2e411461053e578063db92dbb614610569578063dd62ed3e1461059457610171565b8063a9fc35a9146104a8578063c361c58f146104e5578063c3c8cd801461051057610171565b806370a0823114610396578063715018a6146103d35780638da5cb5b146103ea57806395d89b4114610415578063a9059cbb14610440578063a985ceef1461047d57610171565b806345596e2e1161012357806345596e2e1461029c57806349bd5a5e146102c55780635932ead1146102f057806368a3a6a51461031957806369dffb45146103565780636fc3eaec1461037f57610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd1461020957806327f3a72a14610246578063313ce5671461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105d1565b604051610198919061331d565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612ebc565b61060e565b6040516101d59190613302565b60405180910390f35b3480156101ea57600080fd5b506101f361062c565b60405161020091906134df565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612e69565b610641565b60405161023d9190613302565b60405180910390f35b34801561025257600080fd5b5061025b61071a565b60405161026891906134df565b60405180910390f35b34801561027d57600080fd5b5061028661072a565b6040516102939190613554565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612f56565b610733565b005b3480156102d157600080fd5b506102da61081a565b6040516102e791906132be565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190612efc565b610840565b005b34801561032557600080fd5b50610340600480360381019061033b9190612da2565b610904565b60405161034d91906134df565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612dfc565b61095b565b005b34801561038b57600080fd5b50610394610a00565b005b3480156103a257600080fd5b506103bd60048036038101906103b89190612da2565b610a72565b6040516103ca91906134df565b60405180910390f35b3480156103df57600080fd5b506103e8610ac3565b005b3480156103f657600080fd5b506103ff610c16565b60405161040c91906132be565b60405180910390f35b34801561042157600080fd5b5061042a610c3f565b604051610437919061331d565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190612ebc565b610c7c565b6040516104749190613302565b60405180910390f35b34801561048957600080fd5b50610492610c9a565b60405161049f9190613302565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190612da2565b610cb1565b6040516104dc91906134df565b60405180910390f35b3480156104f157600080fd5b506104fa610d08565b60405161050791906132be565b60405180910390f35b34801561051c57600080fd5b50610525610d32565b005b34801561053357600080fd5b5061053c610dac565b005b34801561054a57600080fd5b5061055361107e565b60405161056091906132be565b60405180910390f35b34801561057557600080fd5b5061057e61152c565b60405161058b91906134df565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190612e29565b61155e565b6040516105c891906134df565b60405180910390f35b60606040518060400160405280601d81526020017f50554d502046494354494f4e207c20742e6d652f50754669546f6b656e000000815250905090565b600061062261061b6115e5565b84846115ed565b6001905092915050565b60006c0c9f2c9cd04674edea40000000905090565b600061064e8484846117b8565b61070f8461065a6115e5565b61070a85604051806060016040528060288152602001613cae60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106c06115e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fb49092919063ffffffff16565b6115ed565b600190509392505050565b600061072530610a72565b905090565b60006012905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107746115e5565b73ffffffffffffffffffffffffffffffffffffffff161461079457600080fd5b603381106107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce906133bf565b60405180910390fd5b80600b819055507f208f1b468d3d61f0f085e975bd9d04367c930d599642faad06695229f3eadcd8600b5460405161080f91906134df565b60405180910390a150565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108816115e5565b73ffffffffffffffffffffffffffffffffffffffff16146108a157600080fd5b80601360156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601360159054906101000a900460ff166040516108f99190613302565b60405180910390a150565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001544261095491906136a5565b9050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661099c6115e5565b73ffffffffffffffffffffffffffffffffffffffff16146109bc57600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a416115e5565b73ffffffffffffffffffffffffffffffffffffffff1614610a6157600080fd5b6000479050610a6f81612018565b50565b6000610abc600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612126565b9050919050565b610acb6115e5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f9061341f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5055464900000000000000000000000000000000000000000000000000000000815250905090565b6000610c90610c896115e5565b84846117b8565b6001905092915050565b6000601360159054906101000a900460ff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015442610d0191906136a5565b9050919050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d736115e5565b73ffffffffffffffffffffffffffffffffffffffff1614610d9357600080fd5b6000610d9e30610a72565b9050610da981612194565b50565b600073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0757600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9b30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166c0c9f2c9cd04674edea400000006115ed565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee157600080fd5b505afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f199190612dcf565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7b57600080fd5b505afa158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb39190612dcf565b6040518363ffffffff1660e01b8152600401610fd09291906132d9565b60206040518083038186803b158015610fe857600080fd5b505afa158015610ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110209190612dcf565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff02191690831515021790555050565b600042601454106110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb9061349f565b60405180910390fd5b60006b06765c793fa10079d0000000905060006110f16110e261241c565b8361244790919063ffffffff16565b9050600060178054905067ffffffffffffffff811115611114576111136138ba565b5b6040519080825280602002602001820160405280156111425781602001602082028036833780820191505090505b509050600080600090505b60178054905081101561134a578360026000601784815481106111735761117261388b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561126f575060156000601783815481106111fa576111f961388b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113075750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601782815481106112c3576112c261388b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156113375782828151811061131f5761131e61388b565b5b602002602001015150818061133390613785565b9250505b808061134290613785565b91505061114d565b5060008111156115255760008142338460405160200161136c93929190613281565b6040516020818303038152906040528051906020012060001c61138f91906137fc565b9050601781815481106113a5576113a461388b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1695506001601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368c4af07876040518263ffffffff1660e01b815260040161148591906132be565b602060405180830381600087803b15801561149f57600080fd5b505af11580156114b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d79190612f29565b507fcc6f1b19699a05581bacb850871e0e0d722ce614910418d2ffcf9cef969e11888660405161150791906132be565b60405180910390a16154604261151d91906135c4565b601481905550505b5050505090565b6000611559601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a72565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116549061347f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c49061337f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ab91906134df565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f9061345f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f9061333f565b60405180910390fd5b600081116118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061343f565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119875750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ef157601360159054906101000a900460ff1615611a8d57600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16611a8c576040518060600160405280600081526020016000815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601360149054906101000a900460ff16611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad3906134bf565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b875750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdd5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c5b576002600981905550600a8081905550601360159054906101000a900460ff1615611c5a57600f42611c1391906135c4565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b5b6000611c6630610a72565b9050601360169054906101000a900460ff16158015611cd35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ceb5750601360149054906101000a900460ff165b15611eef57601360159054906101000a900460ff1615611d8a5742600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d80906133df565b60405180910390fd5b5b601360179054906101000a900460ff1615611e14576000611db6600c548461244790919063ffffffff16565b9050611e07611df884611dea601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a72565b6124c290919063ffffffff16565b8261252090919063ffffffff16565b9050611e128161256a565b505b6000811115611ed557611e6f6064611e61600b54611e53601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a72565b61244790919063ffffffff16565b61252090919063ffffffff16565b811115611ecb57611ec86064611eba600b54611eac601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a72565b61244790919063ffffffff16565b61252090919063ffffffff16565b90505b611ed481612194565b5b60004790506000811115611eed57611eec47612018565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f985750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fa257600090505b611fae848484846125e8565b50505050565b6000838311158290611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff3919061331d565b60405180910390fd5b506000838561200b91906136a5565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61207b606461206d60508661244790919063ffffffff16565b61252090919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120a6573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120f760058461252090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612122573d6000803e3d6000fd5b5050565b600060075482111561216d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121649061335f565b60405180910390fd5b600061217761241c565b905061218c818461252090919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121cc576121cb6138ba565b5b6040519080825280602002602001820160405280156121fa5781602001602082028036833780820191505090505b50905030816000815181106122125761221161388b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122b457600080fd5b505afa1580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec9190612dcf565b81600181518110612300576122ff61388b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061236730601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ed565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123cb9594939291906134fa565b600060405180830381600087803b1580156123e557600080fd5b505af11580156123f9573d6000803e3d6000fd5b50505050506000601360166101000a81548160ff02191690831515021790555050565b6000806000612429612615565b91509150612440818361252090919063ffffffff16565b9250505090565b60008083141561245a57600090506124bc565b60008284612468919061364b565b9050828482612477919061361a565b146124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae906133ff565b60405180910390fd5b809150505b92915050565b60008082846124d191906135c4565b905083811015612516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250d9061339f565b60405180910390fd5b8091505092915050565b600061256283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612683565b905092915050565b6000600c9050600c82101561258257600c9050612599565b601e82111561259457601e9050612598565b8190505b5b60006125af6002836126e690919063ffffffff16565b146125c35780806125bf90613785565b9150505b6125d7600a8261273090919063ffffffff16565b600981905550600a80819055505050565b806125f6576125f561277a565b5b6126018484846127bd565b8061260f5761260e612a34565b5b50505050565b6000806000600754905060006c0c9f2c9cd04674edea4000000090506126536c0c9f2c9cd04674edea4000000060075461252090919063ffffffff16565b821015612676576007546c0c9f2c9cd04674edea4000000093509350505061267f565b81819350935050505b9091565b600080831182906126ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c1919061331d565b60405180910390fd5b50600083856126d9919061361a565b9050809150509392505050565b600061272883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612a48565b905092915050565b600061277283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fb4565b905092915050565b600060095414801561278e57506000600a54145b15612798576127bb565b600954600e81905550600a54600f8190555060006009819055506000600a819055505b565b6000806000806000806127cf87612aa6565b95509550955095509550955061282d86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561291c576017889080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61296e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ba81612b0e565b6129c48483612bcb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a2191906134df565b60405180910390a3505050505050505050565b600e54600981905550600f54600a81905550565b6000808314158290612a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a87919061331d565b60405180910390fd5b508284612a9d91906137fc565b90509392505050565b6000806000806000806000806000612ac38a600954600a54612c05565b9250925092506000612ad361241c565b90506000806000612ae68e878787612c9b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b1861241c565b90506000612b2f828461244790919063ffffffff16565b9050612b8381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124c290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612be08260075461273090919063ffffffff16565b600781905550612bfb816008546124c290919063ffffffff16565b6008819055505050565b600080600080612c316064612c23888a61244790919063ffffffff16565b61252090919063ffffffff16565b90506000612c5b6064612c4d888b61244790919063ffffffff16565b61252090919063ffffffff16565b90506000612c8482612c76858c61273090919063ffffffff16565b61273090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612cb4858961244790919063ffffffff16565b90506000612ccb868961244790919063ffffffff16565b90506000612ce2878961244790919063ffffffff16565b90506000612d0b82612cfd858761273090919063ffffffff16565b61273090919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081359050612d3381613c51565b92915050565b600081519050612d4881613c51565b92915050565b600081359050612d5d81613c68565b92915050565b600081359050612d7281613c7f565b92915050565b600081519050612d8781613c7f565b92915050565b600081359050612d9c81613c96565b92915050565b600060208284031215612db857612db76138e9565b5b6000612dc684828501612d24565b91505092915050565b600060208284031215612de557612de46138e9565b5b6000612df384828501612d39565b91505092915050565b600060208284031215612e1257612e116138e9565b5b6000612e2084828501612d4e565b91505092915050565b60008060408385031215612e4057612e3f6138e9565b5b6000612e4e85828601612d24565b9250506020612e5f85828601612d24565b9150509250929050565b600080600060608486031215612e8257612e816138e9565b5b6000612e9086828701612d24565b9350506020612ea186828701612d24565b9250506040612eb286828701612d8d565b9150509250925092565b60008060408385031215612ed357612ed26138e9565b5b6000612ee185828601612d24565b9250506020612ef285828601612d8d565b9150509250929050565b600060208284031215612f1257612f116138e9565b5b6000612f2084828501612d63565b91505092915050565b600060208284031215612f3f57612f3e6138e9565b5b6000612f4d84828501612d78565b91505092915050565b600060208284031215612f6c57612f6b6138e9565b5b6000612f7a84828501612d8d565b91505092915050565b6000612f8f8383612f9b565b60208301905092915050565b612fa4816136d9565b82525050565b612fb3816136d9565b82525050565b612fca612fc5826136d9565b6137ce565b82525050565b6000612fdb8261357f565b612fe581856135a2565b9350612ff08361356f565b8060005b838110156130215781516130088882612f83565b975061301383613595565b925050600181019050612ff4565b5085935050505092915050565b613037816136fd565b82525050565b61304681613740565b82525050565b60006130578261358a565b61306181856135b3565b9350613071818560208601613752565b61307a816138ee565b840191505092915050565b60006130926023836135b3565b915061309d8261390c565b604082019050919050565b60006130b5602a836135b3565b91506130c08261395b565b604082019050919050565b60006130d86022836135b3565b91506130e3826139aa565b604082019050919050565b60006130fb601b836135b3565b9150613106826139f9565b602082019050919050565b600061311e6015836135b3565b915061312982613a22565b602082019050919050565b60006131416023836135b3565b915061314c82613a4b565b604082019050919050565b60006131646021836135b3565b915061316f82613a9a565b604082019050919050565b60006131876020836135b3565b915061319282613ae9565b602082019050919050565b60006131aa6029836135b3565b91506131b582613b12565b604082019050919050565b60006131cd6025836135b3565b91506131d882613b61565b604082019050919050565b60006131f06024836135b3565b91506131fb82613bb0565b604082019050919050565b60006132136020836135b3565b915061321e82613bff565b602082019050919050565b60006132366018836135b3565b915061324182613c28565b602082019050919050565b61325581613729565b82525050565b61326c61326782613729565b6137f2565b82525050565b61327b81613733565b82525050565b600061328d828661325b565b60208201915061329d8285612fb9565b6014820191506132ad828461325b565b602082019150819050949350505050565b60006020820190506132d36000830184612faa565b92915050565b60006040820190506132ee6000830185612faa565b6132fb6020830184612faa565b9392505050565b6000602082019050613317600083018461302e565b92915050565b60006020820190508181036000830152613337818461304c565b905092915050565b6000602082019050818103600083015261335881613085565b9050919050565b60006020820190508181036000830152613378816130a8565b9050919050565b60006020820190508181036000830152613398816130cb565b9050919050565b600060208201905081810360008301526133b8816130ee565b9050919050565b600060208201905081810360008301526133d881613111565b9050919050565b600060208201905081810360008301526133f881613134565b9050919050565b6000602082019050818103600083015261341881613157565b9050919050565b600060208201905081810360008301526134388161317a565b9050919050565b600060208201905081810360008301526134588161319d565b9050919050565b60006020820190508181036000830152613478816131c0565b9050919050565b60006020820190508181036000830152613498816131e3565b9050919050565b600060208201905081810360008301526134b881613206565b9050919050565b600060208201905081810360008301526134d881613229565b9050919050565b60006020820190506134f4600083018461324c565b92915050565b600060a08201905061350f600083018861324c565b61351c602083018761303d565b818103604083015261352e8186612fd0565b905061353d6060830185612faa565b61354a608083018461324c565b9695505050505050565b60006020820190506135696000830184613272565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006135cf82613729565b91506135da83613729565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561360f5761360e61382d565b5b828201905092915050565b600061362582613729565b915061363083613729565b9250826136405761363f61385c565b5b828204905092915050565b600061365682613729565b915061366183613729565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561369a5761369961382d565b5b828202905092915050565b60006136b082613729565b91506136bb83613729565b9250828210156136ce576136cd61382d565b5b828203905092915050565b60006136e482613709565b9050919050565b60006136f682613709565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061374b82613729565b9050919050565b60005b83811015613770578082015181840152602081019050613755565b8381111561377f576000848401525b50505050565b600061379082613729565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137c3576137c261382d565b5b600182019050919050565b60006137d9826137e0565b9050919050565b60006137eb826138ff565b9050919050565b6000819050919050565b600061380782613729565b915061381283613729565b9250826138225761382161385c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f526174652063616e277420657863656564203530250000000000000000000000600082015250565b7f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f547279206166746572203620686f7572732066726f6d206c6173742064726177600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b613c5a816136d9565b8114613c6557600080fd5b50565b613c71816136eb565b8114613c7c57600080fd5b50565b613c88816136fd565b8114613c9357600080fd5b50565b613c9f81613729565b8114613caa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122093a84b3f5ff371cedf5dcca8363802e8d2d47a9756f3a9782224d1c3ffec99ca64736f6c63430008060033

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

00000000000000000000000067f4021e037cb53c18861c8ea40d6e09ad616be7

-----Decoded View---------------
Arg [0] : FeeAddress (address): 0x67f4021E037cB53C18861c8EA40D6E09Ad616BE7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000067f4021e037cb53c18861c8ea40d6e09ad616be7


Deployed Bytecode Sourcemap

4238:14395:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6508:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7360:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6785:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7529:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16497:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6694:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16068:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5380:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16294:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16709:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17202:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15800:190;;;;;;;;;;;;;:::i;:::-;;6888:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3483:148;;;;;;;;;;;;;:::i;:::-;;3269:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6599:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7034:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16605:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16841:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17088:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15597:191;;;;;;;;;;;;;:::i;:::-;;15128:461;;;;;;;;;;;;;:::i;:::-;;17372:1258;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16975:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7209:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6508:83;6545:13;6578:5;;;;;;;;;;;;;;;;;6571:12;;6508:83;:::o;7360:161::-;7435:4;7452:39;7461:12;:10;:12::i;:::-;7475:7;7484:6;7452:8;:39::i;:::-;7509:4;7502:11;;7360:161;;;;:::o;6785:95::-;6838:7;4690:15;6858:14;;6785:95;:::o;7529:313::-;7627:4;7644:36;7654:6;7662:9;7673:6;7644:9;:36::i;:::-;7691:121;7700:6;7708:12;:10;:12::i;:::-;7722:89;7760:6;7722:89;;;;;;;;;;;;;;;;;:11;:19;7734:6;7722:19;;;;;;;;;;;;;;;:33;7742:12;:10;:12::i;:::-;7722:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7691:8;:121::i;:::-;7830:4;7823:11;;7529:313;;;;;:::o;16497:100::-;16541:4;16565:24;16583:4;16565:9;:24::i;:::-;16558:31;;16497:100;:::o;6694:83::-;6735:5;4953:2;6753:16;;6694:83;:::o;16068:218::-;16146:11;;;;;;;;;;;16130:27;;:12;:10;:12::i;:::-;:27;;;16122:36;;;;;;16184:2;16177:4;:9;16169:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;16234:4;16223:8;:15;;;;16254:24;16269:8;;16254:24;;;;;;:::i;:::-;;;;;;;;16068:218;:::o;5380:28::-;;;;;;;;;;;;;:::o;16294:195::-;16378:11;;;;;;;;;;;16362:27;;:12;:10;:12::i;:::-;:27;;;16354:36;;;;;;16420:5;16401:16;;:24;;;;;;;;;;;;;;;;;;16441:40;16464:16;;;;;;;;;;;16441:40;;;;;;:::i;:::-;;;;;;;;16294:195;:::o;16709:124::-;16764:4;16806:8;:15;16815:5;16806:15;;;;;;;;;;;;;;;:19;;;16788:15;:37;;;;:::i;:::-;16781:44;;16709:124;;;:::o;17202:158::-;17304:11;;;;;;;;;;;17288:27;;:12;:10;:12::i;:::-;:27;;;17280:36;;;;;;17345:7;17327:15;;:25;;;;;;;;;;;;;;;;;;17202:158;:::o;15800:190::-;15866:11;;;;;;;;;;;15850:27;;:12;:10;:12::i;:::-;:27;;;15842:36;;;;;;15889:26;15918:21;15889:50;;15950:32;15963:18;15950:12;:32::i;:::-;15831:159;15800:190::o;6888:138::-;6954:7;6981:37;7001:7;:16;7009:7;7001:16;;;;;;;;;;;;;;;;6981:19;:37::i;:::-;6974:44;;6888:138;;;:::o;3483:148::-;3406:12;:10;:12::i;:::-;3396:22;;:6;;;;;;;;;;:22;;;3388:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3590:1:::1;3553:40;;3574:6;::::0;::::1;;;;;;;;3553:40;;;;;;;;;;;;3621:1;3604:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3483:148::o:0;3269:79::-;3307:7;3334:6;;;;;;;;;;;3327:13;;3269:79;:::o;6599:87::-;6638:13;6671:7;;;;;;;;;;;;;;;;;6664:14;;6599:87;:::o;7034:167::-;7112:4;7129:42;7139:12;:10;:12::i;:::-;7153:9;7164:6;7129:9;:42::i;:::-;7189:4;7182:11;;7034:167;;;;:::o;16605:96::-;16653:4;16677:16;;;;;;;;;;;16670:23;;16605:96;:::o;16841:126::-;16897:4;16939:8;:15;16948:5;16939:15;;;;;;;;;;;;;;;:20;;;16921:15;:38;;;;:::i;:::-;16914:45;;16841:126;;;:::o;17088:102::-;17140:7;17167:15;;;;;;;;;;;17160:22;;17088:102;:::o;15597:191::-;15663:11;;;;;;;;;;;15647:27;;:12;:10;:12::i;:::-;:27;;;15639:36;;;;;;15686:23;15712:24;15730:4;15712:9;:24::i;:::-;15686:50;;15747:33;15764:15;15747:16;:33::i;:::-;15628:160;15597:191::o;15128:461::-;15204:1;15179:27;;:13;;;;;;;;;;;:27;;;15171:36;;;;;;15218:35;15275:42;15218:100;;15347:16;15329:15;;:34;;;;;;;;;;;;;;;;;;15374:58;15391:4;15406:15;;;;;;;;;;;4690;15374:8;:58::i;:::-;15477:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15459:53;;;15521:4;15528:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15459:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15443:13;;:109;;;;;;;;;;;;;;;;;;15577:4;15563:11;;:18;;;;;;;;;;;;;;;;;;15160:429;15128:461::o;17372:1258::-;17408:21;17506:15;17487:16;;:34;17479:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17569:18;17590;17569:39;;17620:19;17642:26;17657:10;:8;:10::i;:::-;17642;:14;;:26;;;;:::i;:::-;17620:48;;17680:32;17729:7;:14;;;;17715:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17680:64;;17756:25;17798:9;17810:1;17798:13;;17793:290;17817:7;:14;;;;17813:1;:18;17793:290;;;17880:11;17857:7;:19;17865:7;17873:1;17865:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17857:19;;;;;;;;;;;;;;;;:34;;:66;;;;;17896:15;:27;17912:7;17920:1;17912:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17896:27;;;;;;;;;;;;;;;;;;;;;;;;;17895:28;17857:66;:97;;;;;17941:13;;;;;;;;;;;17927:27;;:7;17935:1;17927:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:27;;;;17857:97;17854:217;;;17975:15;17991:20;17975:37;;;;;;;;:::i;:::-;;;;;;;;;18032:22;;;;;:::i;:::-;;;;17854:217;17833:3;;;;;:::i;:::-;;;;17793:290;;;;18120:1;18097:20;:24;18094:488;;;18138:16;18244:20;18189:15;18206:10;18218:20;18172:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18162:78;;;;;;18157:84;;:107;;;;:::i;:::-;18138:126;;18296:7;18304:11;18296:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18280:36;;18365:4;18332:15;:30;18348:13;18332:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18416:15;;;;;;;;;;;18385:60;;;18446:13;18385:75;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18481:28;18495:13;18481:28;;;;;;:::i;:::-;;;;;;;;18561:7;18544:15;:25;;;;:::i;:::-;18525:16;:44;;;;18122:460;18094:488;18602:20;;;;17372:1258;:::o;16975:101::-;17020:4;17044:24;17054:13;;;;;;;;;;;17044:9;:24::i;:::-;17037:31;;16975:101;:::o;7209:143::-;7290:7;7317:11;:18;7329:5;7317:18;;;;;;;;;;;;;;;:27;7336:7;7317:27;;;;;;;;;;;;;;;;7310:34;;7209:143;;;;:::o;678:98::-;731:7;758:10;751:17;;678:98;:::o;8884:335::-;8994:1;8977:19;;:5;:19;;;;8969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9075:1;9056:21;;:7;:21;;;;9048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9157:6;9127:11;:18;9139:5;9127:18;;;;;;;;;;;;;;;:27;9146:7;9127:27;;;;;;;;;;;;;;;:36;;;;9195:7;9179:32;;9188:5;9179:32;;;9204:6;9179:32;;;;;;:::i;:::-;;;;;;;;8884:335;;;:::o;9227:2289::-;9331:1;9315:18;;:4;:18;;;;9307:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9408:1;9394:16;;:2;:16;;;;9386:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9478:1;9469:6;:10;9461:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9549:11;;;;;;;;;;;9541:19;;:4;:19;;;;:40;;;;;9570:11;;;;;;;;;;;9564:17;;:2;:17;;;;9541:40;9538:1774;;;9601:16;;;;;;;;;;;9598:168;;;9642:8;:20;9651:10;9642:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;9638:113;;9717:14;;;;;;;;9722:1;9717:14;;;;9724:1;9717:14;;;;9726:4;9717:14;;;;;9694:8;:20;9703:10;9694:20;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9638:113;9598:168;9810:11;;;;;;;;;;;9802:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9876:13;;;;;;;;;;;9868:21;;:4;:21;;;:55;;;;;9907:15;;;;;;;;;;;9893:30;;:2;:30;;;;9868:55;:82;;;;;9928:18;:22;9947:2;9928:22;;;;;;;;;;;;;;;;;;;;;;;;;9927:23;9868:82;9865:297;;;9981:1;9971:7;:11;;;;10012:2;10001:8;:13;;;;10036:16;;;;;;;;;;;10033:114;;;10116:10;10097:15;:30;;;;:::i;:::-;10077:8;:12;10086:2;10077:12;;;;;;;;;;;;;;;:17;;:50;;;;10033:114;9865:297;10176:28;10207:24;10225:4;10207:9;:24::i;:::-;10176:55;;10273:6;;;;;;;;;;;10272:7;:32;;;;;10291:13;;;;;;;;;;;10283:21;;:4;:21;;;;10272:32;:47;;;;;10308:11;;;;;;;;;;;10272:47;10269:1032;;;10345:16;;;;;;;;;;;10342:149;;;10416:15;10394:8;:14;10403:4;10394:14;;;;;;;;;;;;;;;:19;;;:37;10386:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10342:149;10514:19;;;;;;;;;;;10511:235;;;10558:16;10577:26;10588:14;;10577:6;:10;;:26;;;;:::i;:::-;10558:45;;10637:50;10650:36;10679:6;10650:24;10660:13;;;;;;;;;;;10650:9;:24::i;:::-;:28;;:36;;;;:::i;:::-;10637:8;:12;;:50;;;;:::i;:::-;10626:61;;10710:16;10717:8;10710:6;:16::i;:::-;10535:211;10511:235;10792:1;10769:20;:24;10766:328;;;10844:47;10887:3;10844:38;10873:8;;10844:24;10854:13;;;;;;;;;;;10844:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;10821:20;:70;10818:196;;;10943:47;10986:3;10943:38;10972:8;;10943:24;10953:13;;;;;;;;;;;10943:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;10920:70;;10818:196;11036:38;11053:20;11036:16;:38::i;:::-;10766:328;11112:26;11141:21;11112:50;;11205:1;11184:18;:22;11181:105;;;11231:35;11244:21;11231:12;:35::i;:::-;11181:105;10321:980;10269:1032;9583:1729;9538:1774;11322:12;11337:4;11322:19;;11357:18;:24;11376:4;11357:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11385:18;:22;11404:2;11385:22;;;;;;;;;;;;;;;;;;;;;;;;;11357:50;11354:96;;;11433:5;11423:15;;11354:96;11470:38;11485:4;11490:2;11493:6;11500:7;11470:14;:38::i;:::-;9296:2220;9227:2289;;;:::o;1815:190::-;1901:7;1934:1;1929;:6;;1937:12;1921:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1961:9;1977:1;1973;:5;;;;:::i;:::-;1961:17;;1996:1;1989:8;;;1815:190;;;;;:::o;12023:160::-;12080:11;;;;;;;;;;;:20;;:45;12101:23;12120:3;12101:14;12112:2;12101:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12080:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12136:15;;;;;;;;;;;:24;;:39;12161:13;12172:1;12161:6;:10;;:13;;;;:::i;:::-;12136:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12023:160;:::o;7850:254::-;7917:7;7956;;7945;:18;;7937:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8021:19;8044:10;:8;:10::i;:::-;8021:33;;8072:24;8084:11;8072:7;:11;;:24;;;;:::i;:::-;8065:31;;;7850:254;;;:::o;11524:483::-;6065:4;6056:6;;:13;;;;;;;;;;;;;;;;;;11602:21:::1;11640:1;11626:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11602:40;;11671:4;11653;11658:1;11653:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11697:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11687:4;11692:1;11687:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11730:62;11747:4;11762:15;;;;;;;;;;;11780:11;11730:8;:62::i;:::-;11803:15;;;;;;;;;;;:66;;;11884:11;11910:1;11926:4;11953;11973:15;11803:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11591:416;6101:5:::0;6092:6;;:14;;;;;;;;;;;;;;;;;;11524:483;:::o;13859:163::-;13900:7;13921:15;13938;13957:19;:17;:19::i;:::-;13920:56;;;;13994:20;14006:7;13994;:11;;:20;;;;:::i;:::-;13987:27;;;;13859:163;:::o;2013:245::-;2071:7;2099:1;2094;:6;2091:46;;;2124:1;2117:8;;;;2091:46;2147:9;2163:1;2159;:5;;;;:::i;:::-;2147:17;;2192:1;2187;2183;:5;;;;:::i;:::-;:10;2175:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2249:1;2242:8;;;2013:245;;;;;:::o;1484:179::-;1542:7;1562:9;1578:1;1574;:5;;;;:::i;:::-;1562:17;;1603:1;1598;:6;;1590:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1654:1;1647:8;;;1484:179;;;;:::o;2266:132::-;2324:7;2351:39;2355:1;2358;2351:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2344:46;;2266:132;;;;:::o;8457:419::-;8511:18;8532:2;8511:23;;8560:2;8548:9;:14;8545:183;;;8592:2;8579:15;;8545:183;;;8627:2;8615:9;:14;8612:116;;;8659:2;8646:15;;8612:116;;;8707:9;8694:22;;8612:116;8545:183;8762:1;8741:17;8756:1;8741:10;:14;;:17;;;;:::i;:::-;:22;8738:66;;8780:12;;;;;:::i;:::-;;;;8738:66;8825:18;8840:2;8825:10;:14;;:18;;;;:::i;:::-;8814:7;:30;;;;8866:2;8855:8;:13;;;;8500:376;8457:419;:::o;12195:263::-;12307:7;12303:40;;12329:14;:12;:14::i;:::-;12303:40;12354:44;12372:6;12380:9;12391:6;12354:17;:44::i;:::-;12413:7;12409:41;;12435:15;:13;:15::i;:::-;12409:41;12195:263;;;;:::o;14030:255::-;14080:7;14089;14109:15;14127:7;;14109:25;;14145:15;4690;14145:25;;14194:20;4690:15;14194:7;;:11;;:20;;;;:::i;:::-;14184:7;:30;14181:60;;;14224:7;;4690:15;14216:25;;;;;;;;14181:60;14260:7;14269;14252:25;;;;;;14030:255;;;:::o;2406:189::-;2492:7;2524:1;2520;:5;2527:12;2512:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2551:9;2567:1;2563;:5;;;;:::i;:::-;2551:17;;2586:1;2579:8;;;2406:189;;;;;:::o;2603:130::-;2661:7;2688:37;2692:1;2695;2688:37;;;;;;;;;;;;;;;;;:3;:37::i;:::-;2681:44;;2603:130;;;;:::o;1671:136::-;1729:7;1756:43;1760:1;1763;1756:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1749:50;;1671:136;;;;:::o;8112:210::-;8169:1;8158:7;;:12;:29;;;;;8186:1;8174:8;;:13;8158:29;8155:41;;;8189:7;;8155:41;8224:7;;8206:15;:25;;;;8261:8;;8242:16;:27;;;;8290:1;8280:7;:11;;;;8313:1;8302:8;:12;;;;8112:210;:::o;12466:550::-;12565:15;12582:23;12607:12;12621:23;12646:12;12660:13;12677:19;12688:7;12677:10;:19::i;:::-;12564:132;;;;;;;;;;;;12725:28;12745:7;12725;:15;12733:6;12725:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12707:7;:15;12715:6;12707:15;;;;;;;;;;;;;;;:46;;;;12789:1;12767:7;:18;12775:9;12767:18;;;;;;;;;;;;;;;;:23;12764:51;;;12792:7;12805:9;12792:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12764:51;12847:39;12870:15;12847:7;:18;12855:9;12847:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12826:7;:18;12834:9;12826:18;;;;;;;;;;;;;;;:60;;;;12898:16;12908:5;12898:9;:16::i;:::-;12925:23;12937:4;12943;12925:11;:23::i;:::-;12981:9;12964:44;;12973:6;12964:44;;;12992:15;12964:44;;;;;;:::i;:::-;;;;;;;;12553:463;;;;;;12466:550;;;:::o;8334:115::-;8388:15;;8378:7;:25;;;;8425:16;;8414:8;:27;;;;8334:115::o;2741:166::-;2827:7;2860:1;2855;:6;;2863:12;2847:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2898:1;2894;:5;;;;:::i;:::-;2887:12;;2741:166;;;;;:::o;13024:468::-;13083:7;13092;13101;13110;13119;13128;13149:23;13174:12;13188:13;13205:39;13217:7;13226;;13235:8;;13205:11;:39::i;:::-;13148:96;;;;;;13255:19;13278:10;:8;:10::i;:::-;13255:33;;13300:15;13317:23;13342:12;13358:46;13370:7;13379:4;13385:5;13392:11;13358;:46::i;:::-;13299:105;;;;;;13423:7;13432:15;13449:4;13455:15;13472:4;13478:5;13415:69;;;;;;;;;;;;;;;;;;;13024:468;;;;;;;:::o;14710:214::-;14763:19;14786:10;:8;:10::i;:::-;14763:33;;14807:13;14823:22;14833:11;14823:5;:9;;:22;;;;:::i;:::-;14807:38;;14883:33;14910:5;14883:7;:22;14899:4;14883:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14858:7;:22;14874:4;14858:22;;;;;;;;;;;;;;;:58;;;;14752:172;;14710:214;:::o;14932:147::-;15010:17;15022:4;15010:7;;:11;;:17;;;;:::i;:::-;15000:7;:27;;;;15051:20;15066:4;15051:10;;:14;;:20;;;;:::i;:::-;15038:10;:33;;;;14932:147;;:::o;13500:351::-;13593:7;13602;13611;13631:12;13646:28;13670:3;13646:19;13658:6;13646:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13631:43;;13685:13;13701:29;13726:3;13701:20;13713:7;13701;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13685:45;;13741:23;13767:28;13789:5;13767:17;13779:4;13767:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13741:54;;13814:15;13831:4;13837:5;13806:37;;;;;;;;;13500:351;;;;;;;:::o;14293:409::-;14403:7;14412;14421;14441:15;14459:24;14471:11;14459:7;:11;;:24;;;;:::i;:::-;14441:42;;14494:12;14509:21;14518:11;14509:4;:8;;:21;;;;:::i;:::-;14494:36;;14541:13;14557:22;14567:11;14557:5;:9;;:22;;;;:::i;:::-;14541:38;;14590:23;14616:28;14638:5;14616:17;14628:4;14616:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14590:54;;14663:7;14672:15;14689:4;14655:39;;;;;;;;;;14293:409;;;;;;;;:::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:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;661:77;;;;:::o;744:139::-;790:5;828:6;815:20;806:29;;844:33;871:5;844:33;:::i;:::-;796:87;;;;:::o;889:329::-;948:6;997:2;985:9;976:7;972:23;968:32;965:2;;;1003:79;;:::i;:::-;965:2;1123:1;1148:53;1193:7;1184:6;1173:9;1169:22;1148:53;:::i;:::-;1138:63;;1094:117;955:263;;;;:::o;1224:351::-;1294:6;1343:2;1331:9;1322:7;1318:23;1314:32;1311:2;;;1349:79;;:::i;:::-;1311:2;1469:1;1494:64;1550:7;1541:6;1530:9;1526:22;1494:64;:::i;:::-;1484:74;;1440:128;1301:274;;;;:::o;1581:345::-;1648:6;1697:2;1685:9;1676:7;1672:23;1668:32;1665:2;;;1703:79;;:::i;:::-;1665:2;1823:1;1848:61;1901:7;1892:6;1881:9;1877:22;1848:61;:::i;:::-;1838:71;;1794:125;1655:271;;;;:::o;1932:474::-;2000:6;2008;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2063:79;;:::i;:::-;2025:2;2183:1;2208:53;2253:7;2244:6;2233:9;2229:22;2208:53;:::i;:::-;2198:63;;2154:117;2310:2;2336:53;2381:7;2372:6;2361:9;2357:22;2336:53;:::i;:::-;2326:63;;2281:118;2015:391;;;;;:::o;2412:619::-;2489:6;2497;2505;2554:2;2542:9;2533:7;2529:23;2525:32;2522:2;;;2560:79;;:::i;:::-;2522:2;2680:1;2705:53;2750:7;2741:6;2730:9;2726:22;2705:53;:::i;:::-;2695:63;;2651:117;2807:2;2833:53;2878:7;2869:6;2858:9;2854:22;2833:53;:::i;:::-;2823:63;;2778:118;2935:2;2961:53;3006:7;2997:6;2986:9;2982:22;2961:53;:::i;:::-;2951:63;;2906:118;2512:519;;;;;:::o;3037:474::-;3105:6;3113;3162:2;3150:9;3141:7;3137:23;3133:32;3130:2;;;3168:79;;:::i;:::-;3130:2;3288:1;3313:53;3358:7;3349:6;3338:9;3334:22;3313:53;:::i;:::-;3303:63;;3259:117;3415:2;3441:53;3486:7;3477:6;3466:9;3462:22;3441:53;:::i;:::-;3431:63;;3386:118;3120:391;;;;;:::o;3517:323::-;3573:6;3622:2;3610:9;3601:7;3597:23;3593:32;3590:2;;;3628:79;;:::i;:::-;3590:2;3748:1;3773:50;3815:7;3806:6;3795:9;3791:22;3773:50;:::i;:::-;3763:60;;3719:114;3580:260;;;;:::o;3846:345::-;3913:6;3962:2;3950:9;3941:7;3937:23;3933:32;3930:2;;;3968:79;;:::i;:::-;3930:2;4088:1;4113:61;4166:7;4157:6;4146:9;4142:22;4113:61;:::i;:::-;4103:71;;4059:125;3920:271;;;;:::o;4197:329::-;4256:6;4305:2;4293:9;4284:7;4280:23;4276:32;4273:2;;;4311:79;;:::i;:::-;4273:2;4431:1;4456:53;4501:7;4492:6;4481:9;4477:22;4456:53;:::i;:::-;4446:63;;4402:117;4263:263;;;;:::o;4532:179::-;4601:10;4622:46;4664:3;4656:6;4622:46;:::i;:::-;4700:4;4695:3;4691:14;4677:28;;4612:99;;;;:::o;4717:108::-;4794:24;4812:5;4794:24;:::i;:::-;4789:3;4782:37;4772:53;;:::o;4831:118::-;4918:24;4936:5;4918:24;:::i;:::-;4913:3;4906:37;4896:53;;:::o;4955:157::-;5060:45;5080:24;5098:5;5080:24;:::i;:::-;5060:45;:::i;:::-;5055:3;5048:58;5038:74;;:::o;5148:732::-;5267:3;5296:54;5344:5;5296:54;:::i;:::-;5366:86;5445:6;5440:3;5366:86;:::i;:::-;5359:93;;5476:56;5526:5;5476:56;:::i;:::-;5555:7;5586:1;5571:284;5596:6;5593:1;5590:13;5571:284;;;5672:6;5666:13;5699:63;5758:3;5743:13;5699:63;:::i;:::-;5692:70;;5785:60;5838:6;5785:60;:::i;:::-;5775:70;;5631:224;5618:1;5615;5611:9;5606:14;;5571:284;;;5575:14;5871:3;5864:10;;5272:608;;;;;;;:::o;5886:109::-;5967:21;5982:5;5967:21;:::i;:::-;5962:3;5955:34;5945:50;;:::o;6001:147::-;6096:45;6135:5;6096:45;:::i;:::-;6091:3;6084:58;6074:74;;:::o;6154:364::-;6242:3;6270:39;6303:5;6270:39;:::i;:::-;6325:71;6389:6;6384:3;6325:71;:::i;:::-;6318:78;;6405:52;6450:6;6445:3;6438:4;6431:5;6427:16;6405:52;:::i;:::-;6482:29;6504:6;6482:29;:::i;:::-;6477:3;6473:39;6466:46;;6246:272;;;;;:::o;6524:366::-;6666:3;6687:67;6751:2;6746:3;6687:67;:::i;:::-;6680:74;;6763:93;6852:3;6763:93;:::i;:::-;6881:2;6876:3;6872:12;6865:19;;6670:220;;;:::o;6896:366::-;7038:3;7059:67;7123:2;7118:3;7059:67;:::i;:::-;7052:74;;7135:93;7224:3;7135:93;:::i;:::-;7253:2;7248:3;7244:12;7237:19;;7042:220;;;:::o;7268:366::-;7410:3;7431:67;7495:2;7490:3;7431:67;:::i;:::-;7424:74;;7507:93;7596:3;7507:93;:::i;:::-;7625:2;7620:3;7616:12;7609:19;;7414:220;;;:::o;7640:366::-;7782:3;7803:67;7867:2;7862:3;7803:67;:::i;:::-;7796:74;;7879:93;7968:3;7879:93;:::i;:::-;7997:2;7992:3;7988:12;7981:19;;7786:220;;;:::o;8012:366::-;8154:3;8175:67;8239:2;8234:3;8175:67;:::i;:::-;8168:74;;8251:93;8340:3;8251:93;:::i;:::-;8369:2;8364:3;8360:12;8353:19;;8158:220;;;:::o;8384:366::-;8526:3;8547:67;8611:2;8606:3;8547:67;:::i;:::-;8540:74;;8623:93;8712:3;8623:93;:::i;:::-;8741:2;8736:3;8732:12;8725:19;;8530:220;;;:::o;8756:366::-;8898:3;8919:67;8983:2;8978:3;8919:67;:::i;:::-;8912:74;;8995:93;9084:3;8995:93;:::i;:::-;9113:2;9108:3;9104:12;9097:19;;8902:220;;;:::o;9128:366::-;9270:3;9291:67;9355:2;9350:3;9291:67;:::i;:::-;9284:74;;9367:93;9456:3;9367:93;:::i;:::-;9485:2;9480:3;9476:12;9469:19;;9274:220;;;:::o;9500:366::-;9642:3;9663:67;9727:2;9722:3;9663:67;:::i;:::-;9656:74;;9739:93;9828:3;9739:93;:::i;:::-;9857:2;9852:3;9848:12;9841:19;;9646:220;;;:::o;9872:366::-;10014:3;10035:67;10099:2;10094:3;10035:67;:::i;:::-;10028:74;;10111:93;10200:3;10111:93;:::i;:::-;10229:2;10224:3;10220:12;10213:19;;10018:220;;;:::o;10244:366::-;10386:3;10407:67;10471:2;10466:3;10407:67;:::i;:::-;10400:74;;10483:93;10572:3;10483:93;:::i;:::-;10601:2;10596:3;10592:12;10585:19;;10390:220;;;:::o;10616:366::-;10758:3;10779:67;10843:2;10838:3;10779:67;:::i;:::-;10772:74;;10855:93;10944:3;10855:93;:::i;:::-;10973:2;10968:3;10964:12;10957:19;;10762:220;;;:::o;10988:366::-;11130:3;11151:67;11215:2;11210:3;11151:67;:::i;:::-;11144:74;;11227:93;11316:3;11227:93;:::i;:::-;11345:2;11340:3;11336:12;11329:19;;11134:220;;;:::o;11360:118::-;11447:24;11465:5;11447:24;:::i;:::-;11442:3;11435:37;11425:53;;:::o;11484:157::-;11589:45;11609:24;11627:5;11609:24;:::i;:::-;11589:45;:::i;:::-;11584:3;11577:58;11567:74;;:::o;11647:112::-;11730:22;11746:5;11730:22;:::i;:::-;11725:3;11718:35;11708:51;;:::o;11765:538::-;11933:3;11948:75;12019:3;12010:6;11948:75;:::i;:::-;12048:2;12043:3;12039:12;12032:19;;12061:75;12132:3;12123:6;12061:75;:::i;:::-;12161:2;12156:3;12152:12;12145:19;;12174:75;12245:3;12236:6;12174:75;:::i;:::-;12274:2;12269:3;12265:12;12258:19;;12294:3;12287:10;;11937:366;;;;;;:::o;12309:222::-;12402:4;12440:2;12429:9;12425:18;12417:26;;12453:71;12521:1;12510:9;12506:17;12497:6;12453:71;:::i;:::-;12407:124;;;;:::o;12537:332::-;12658:4;12696:2;12685:9;12681:18;12673:26;;12709:71;12777:1;12766:9;12762:17;12753:6;12709:71;:::i;:::-;12790:72;12858:2;12847:9;12843:18;12834:6;12790:72;:::i;:::-;12663:206;;;;;:::o;12875:210::-;12962:4;13000:2;12989:9;12985:18;12977:26;;13013:65;13075:1;13064:9;13060:17;13051:6;13013:65;:::i;:::-;12967:118;;;;:::o;13091:313::-;13204:4;13242:2;13231:9;13227:18;13219:26;;13291:9;13285:4;13281:20;13277:1;13266:9;13262:17;13255:47;13319:78;13392:4;13383:6;13319:78;:::i;:::-;13311:86;;13209:195;;;;:::o;13410:419::-;13576:4;13614:2;13603:9;13599:18;13591:26;;13663:9;13657:4;13653:20;13649:1;13638:9;13634:17;13627:47;13691:131;13817:4;13691:131;:::i;:::-;13683:139;;13581:248;;;:::o;13835:419::-;14001:4;14039:2;14028:9;14024:18;14016:26;;14088:9;14082:4;14078:20;14074:1;14063:9;14059:17;14052:47;14116:131;14242:4;14116:131;:::i;:::-;14108:139;;14006:248;;;:::o;14260:419::-;14426:4;14464:2;14453:9;14449:18;14441:26;;14513:9;14507:4;14503:20;14499:1;14488:9;14484:17;14477:47;14541:131;14667:4;14541:131;:::i;:::-;14533:139;;14431:248;;;:::o;14685:419::-;14851:4;14889:2;14878:9;14874:18;14866:26;;14938:9;14932:4;14928:20;14924:1;14913:9;14909:17;14902:47;14966:131;15092:4;14966:131;:::i;:::-;14958:139;;14856:248;;;:::o;15110:419::-;15276:4;15314:2;15303:9;15299:18;15291:26;;15363:9;15357:4;15353:20;15349:1;15338:9;15334:17;15327:47;15391:131;15517:4;15391:131;:::i;:::-;15383:139;;15281:248;;;:::o;15535:419::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15788:9;15782:4;15778:20;15774:1;15763:9;15759:17;15752:47;15816:131;15942:4;15816:131;:::i;:::-;15808:139;;15706:248;;;:::o;15960:419::-;16126:4;16164:2;16153:9;16149:18;16141:26;;16213:9;16207:4;16203:20;16199:1;16188:9;16184:17;16177:47;16241:131;16367:4;16241:131;:::i;:::-;16233:139;;16131:248;;;:::o;16385:419::-;16551:4;16589:2;16578:9;16574:18;16566:26;;16638:9;16632:4;16628:20;16624:1;16613:9;16609:17;16602:47;16666:131;16792:4;16666:131;:::i;:::-;16658:139;;16556:248;;;:::o;16810:419::-;16976:4;17014:2;17003:9;16999:18;16991:26;;17063:9;17057:4;17053:20;17049:1;17038:9;17034:17;17027:47;17091:131;17217:4;17091:131;:::i;:::-;17083:139;;16981:248;;;:::o;17235:419::-;17401:4;17439:2;17428:9;17424:18;17416:26;;17488:9;17482:4;17478:20;17474:1;17463:9;17459:17;17452:47;17516:131;17642:4;17516:131;:::i;:::-;17508:139;;17406:248;;;:::o;17660:419::-;17826:4;17864:2;17853:9;17849:18;17841:26;;17913:9;17907:4;17903:20;17899:1;17888:9;17884:17;17877:47;17941:131;18067:4;17941:131;:::i;:::-;17933:139;;17831:248;;;:::o;18085:419::-;18251:4;18289:2;18278:9;18274:18;18266:26;;18338:9;18332:4;18328:20;18324:1;18313:9;18309:17;18302:47;18366:131;18492:4;18366:131;:::i;:::-;18358:139;;18256:248;;;:::o;18510:419::-;18676:4;18714:2;18703:9;18699:18;18691:26;;18763:9;18757:4;18753:20;18749:1;18738:9;18734:17;18727:47;18791:131;18917:4;18791:131;:::i;:::-;18783:139;;18681:248;;;:::o;18935:222::-;19028:4;19066:2;19055:9;19051:18;19043:26;;19079:71;19147:1;19136:9;19132:17;19123:6;19079:71;:::i;:::-;19033:124;;;;:::o;19163:831::-;19426:4;19464:3;19453:9;19449:19;19441:27;;19478:71;19546:1;19535:9;19531:17;19522:6;19478:71;:::i;:::-;19559:80;19635:2;19624:9;19620:18;19611:6;19559:80;:::i;:::-;19686:9;19680:4;19676:20;19671:2;19660:9;19656:18;19649:48;19714:108;19817:4;19808:6;19714:108;:::i;:::-;19706:116;;19832:72;19900:2;19889:9;19885:18;19876:6;19832:72;:::i;:::-;19914:73;19982:3;19971:9;19967:19;19958:6;19914:73;:::i;:::-;19431:563;;;;;;;;:::o;20000:214::-;20089:4;20127:2;20116:9;20112:18;20104:26;;20140:67;20204:1;20193:9;20189:17;20180:6;20140:67;:::i;:::-;20094:120;;;;:::o;20301:132::-;20368:4;20391:3;20383:11;;20421:4;20416:3;20412:14;20404:22;;20373:60;;;:::o;20439:114::-;20506:6;20540:5;20534:12;20524:22;;20513:40;;;:::o;20559:99::-;20611:6;20645:5;20639:12;20629:22;;20618:40;;;:::o;20664:113::-;20734:4;20766;20761:3;20757:14;20749:22;;20739:38;;;:::o;20783:184::-;20882:11;20916:6;20911:3;20904:19;20956:4;20951:3;20947:14;20932:29;;20894:73;;;;:::o;20973:169::-;21057:11;21091:6;21086:3;21079:19;21131:4;21126:3;21122:14;21107:29;;21069:73;;;;:::o;21148:305::-;21188:3;21207:20;21225:1;21207:20;:::i;:::-;21202:25;;21241:20;21259:1;21241:20;:::i;:::-;21236:25;;21395:1;21327:66;21323:74;21320:1;21317:81;21314:2;;;21401:18;;:::i;:::-;21314:2;21445:1;21442;21438:9;21431:16;;21192:261;;;;:::o;21459:185::-;21499:1;21516:20;21534:1;21516:20;:::i;:::-;21511:25;;21550:20;21568:1;21550:20;:::i;:::-;21545:25;;21589:1;21579:2;;21594:18;;:::i;:::-;21579:2;21636:1;21633;21629:9;21624:14;;21501:143;;;;:::o;21650:348::-;21690:7;21713:20;21731:1;21713:20;:::i;:::-;21708:25;;21747:20;21765:1;21747:20;:::i;:::-;21742:25;;21935:1;21867:66;21863:74;21860:1;21857:81;21852:1;21845:9;21838:17;21834:105;21831:2;;;21942:18;;:::i;:::-;21831:2;21990:1;21987;21983:9;21972:20;;21698:300;;;;:::o;22004:191::-;22044:4;22064:20;22082:1;22064:20;:::i;:::-;22059:25;;22098:20;22116:1;22098:20;:::i;:::-;22093:25;;22137:1;22134;22131:8;22128:2;;;22142:18;;:::i;:::-;22128:2;22187:1;22184;22180:9;22172:17;;22049:146;;;;:::o;22201:96::-;22238:7;22267:24;22285:5;22267:24;:::i;:::-;22256:35;;22246:51;;;:::o;22303:104::-;22348:7;22377:24;22395:5;22377:24;:::i;:::-;22366:35;;22356:51;;;:::o;22413:90::-;22447:7;22490:5;22483:13;22476:21;22465:32;;22455:48;;;:::o;22509:126::-;22546:7;22586:42;22579:5;22575:54;22564:65;;22554:81;;;:::o;22641:77::-;22678:7;22707:5;22696:16;;22686:32;;;:::o;22724:86::-;22759:7;22799:4;22792:5;22788:16;22777:27;;22767:43;;;:::o;22816:121::-;22874:9;22907:24;22925:5;22907:24;:::i;:::-;22894:37;;22884:53;;;:::o;22943:307::-;23011:1;23021:113;23035:6;23032:1;23029:13;23021:113;;;23120:1;23115:3;23111:11;23105:18;23101:1;23096:3;23092:11;23085:39;23057:2;23054:1;23050:10;23045:15;;23021:113;;;23152:6;23149:1;23146:13;23143:2;;;23232:1;23223:6;23218:3;23214:16;23207:27;23143:2;22992:258;;;;:::o;23256:233::-;23295:3;23318:24;23336:5;23318:24;:::i;:::-;23309:33;;23364:66;23357:5;23354:77;23351:2;;;23434:18;;:::i;:::-;23351:2;23481:1;23474:5;23470:13;23463:20;;23299:190;;;:::o;23495:100::-;23534:7;23563:26;23583:5;23563:26;:::i;:::-;23552:37;;23542:53;;;:::o;23601:94::-;23640:7;23669:20;23683:5;23669:20;:::i;:::-;23658:31;;23648:47;;;:::o;23701:79::-;23740:7;23769:5;23758:16;;23748:32;;;:::o;23786:176::-;23818:1;23835:20;23853:1;23835:20;:::i;:::-;23830:25;;23869:20;23887:1;23869:20;:::i;:::-;23864:25;;23908:1;23898:2;;23913:18;;:::i;:::-;23898:2;23954:1;23951;23947:9;23942:14;;23820:142;;;;:::o;23968:180::-;24016:77;24013:1;24006:88;24113:4;24110:1;24103:15;24137:4;24134:1;24127:15;24154:180;24202:77;24199:1;24192:88;24299:4;24296:1;24289:15;24323:4;24320:1;24313:15;24340:180;24388:77;24385:1;24378:88;24485:4;24482:1;24475:15;24509:4;24506:1;24499:15;24526:180;24574:77;24571:1;24564:88;24671:4;24668:1;24661:15;24695:4;24692:1;24685:15;24835:117;24944:1;24941;24934:12;24958:102;24999:6;25050:2;25046:7;25041:2;25034:5;25030:14;25026:28;25016:38;;25006:54;;;:::o;25066:94::-;25099:8;25147:5;25143:2;25139:14;25118:35;;25108:52;;;:::o;25166:222::-;25306:34;25302:1;25294:6;25290:14;25283:58;25375:5;25370:2;25362:6;25358:15;25351:30;25272:116;:::o;25394:229::-;25534:34;25530:1;25522:6;25518:14;25511:58;25603:12;25598:2;25590:6;25586:15;25579:37;25500:123;:::o;25629:221::-;25769:34;25765:1;25757:6;25753:14;25746:58;25838:4;25833:2;25825:6;25821:15;25814:29;25735:115;:::o;25856:177::-;25996:29;25992:1;25984:6;25980:14;25973:53;25962:71;:::o;26039:171::-;26179:23;26175:1;26167:6;26163:14;26156:47;26145:65;:::o;26216:222::-;26356:34;26352:1;26344:6;26340:14;26333:58;26425:5;26420:2;26412:6;26408:15;26401:30;26322:116;:::o;26444:220::-;26584:34;26580:1;26572:6;26568:14;26561:58;26653:3;26648:2;26640:6;26636:15;26629:28;26550:114;:::o;26670:182::-;26810:34;26806:1;26798:6;26794:14;26787:58;26776:76;:::o;26858:228::-;26998:34;26994:1;26986:6;26982:14;26975:58;27067:11;27062:2;27054:6;27050:15;27043:36;26964:122;:::o;27092:224::-;27232:34;27228:1;27220:6;27216:14;27209:58;27301:7;27296:2;27288:6;27284:15;27277:32;27198:118;:::o;27322:223::-;27462:34;27458:1;27450:6;27446:14;27439:58;27531:6;27526:2;27518:6;27514:15;27507:31;27428:117;:::o;27551:182::-;27691:34;27687:1;27679:6;27675:14;27668:58;27657:76;:::o;27739:174::-;27879:26;27875:1;27867:6;27863:14;27856:50;27845:68;:::o;27919:122::-;27992:24;28010:5;27992:24;:::i;:::-;27985:5;27982:35;27972:2;;28031:1;28028;28021:12;27972:2;27962:79;:::o;28047:138::-;28128:32;28154:5;28128:32;:::i;:::-;28121:5;28118:43;28108:2;;28175:1;28172;28165:12;28108:2;28098:87;:::o;28191:116::-;28261:21;28276:5;28261:21;:::i;:::-;28254:5;28251:32;28241:2;;28297:1;28294;28287:12;28241:2;28231:76;:::o;28313:122::-;28386:24;28404:5;28386:24;:::i;:::-;28379:5;28376:35;28366:2;;28425:1;28422;28415:12;28366:2;28356:79;:::o

Swarm Source

ipfs://93a84b3f5ff371cedf5dcca8363802e8d2d47a9756f3a9782224d1c3ffec99ca

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.